diff --git a/Makefile.js b/Makefile.js index bdd3aca75bc..cc7d76bf411 100644 --- a/Makefile.js +++ b/Makefile.js @@ -181,10 +181,14 @@ function generateFormatterExamples(formatterInfo, prereleaseVersion) { * @returns {void} */ function generateRuleIndexPage() { - const outputFile = "../website/_data/rules.yml", + const legacyWebsiteOutputFile = "../website/_data/rules.yml", + docsSiteOutputFile = "docs/src/_data/rules.json", + docsSiteMetaOutputFile = "docs/src/_data/rules_meta.json", ruleTypes = "conf/rule-type-list.json", ruleTypesData = JSON.parse(cat(path.resolve(ruleTypes))); + const meta = {}; + RULE_FILES .map(filename => [filename, path.basename(filename, ".js")]) .sort((a, b) => a[1].localeCompare(b[1])) @@ -193,6 +197,20 @@ function generateRuleIndexPage() { const basename = pair[1]; const rule = require(path.resolve(filename)); + /* + * Eleventy interprets the {{ }} in messages as being variables, + * which can cause an error if there's syntax it doesn't expect. + * Because we don't use this info in the website anyway, it's safer + * to just remove it. + * + * Also removing the schema because we don't need it. + */ + meta[basename] = { + ...rule.meta, + schema: void 0, + messages: void 0 + }; + if (rule.meta.deprecated) { ruleTypesData.deprecated.rules.push({ name: basename, @@ -219,9 +237,12 @@ function generateRuleIndexPage() { // `.rules` will be `undefined` if all rules in category are deprecated. ruleTypesData.types = ruleTypesData.types.filter(ruleType => !!ruleType.rules); - const output = yaml.dump(ruleTypesData, { sortKeys: true }); + JSON.stringify(ruleTypesData, null, 4).to(docsSiteOutputFile); + JSON.stringify(meta, null, 4).to(docsSiteMetaOutputFile); + + const legacyOutput = yaml.dump(ruleTypesData, { sortKeys: true }); - output.to(outputFile); + legacyOutput.to(legacyWebsiteOutputFile); } /** @@ -271,6 +292,10 @@ function generateRelease() { target.gensite(); generateBlogPost(releaseInfo); commitSiteToGit(`v${releaseInfo.version}`); + + echo("Updating commit with docs data"); + exec("git add docs/src/_data && git commit --amend --no-edit"); + exec(`git tag -a -f v${releaseInfo.version} -m ${releaseInfo.version}`); } /** @@ -782,6 +807,8 @@ target.gensite = function(prereleaseVersion) { echo("Done generating eslint.org"); }; +target.generateRuleIndexPage = generateRuleIndexPage; + target.webpack = function(mode = "none") { exec(`${getBinFile("webpack")} --mode=${mode} --output-path=${BUILD_DIR}`); }; diff --git a/docs/src/_data/rules.json b/docs/src/_data/rules.json index ce800095f3e..76430c547de 100644 --- a/docs/src/_data/rules.json +++ b/docs/src/_data/rules.json @@ -1,2098 +1,2105 @@ { - "deprecated": { - "description": "These rules have been deprecated in accordance with the deprecation policy, and replaced by newer rules:", - "name": "Deprecated", - "rules": [ - { - "name": "callback-return", - "replacedBy": [] - }, - { - "name": "global-require", - "replacedBy": [] - }, - { - "name": "handle-callback-err", - "replacedBy": [] - }, - { - "name": "id-blacklist", - "replacedBy": [ - "id-denylist" - ] - }, - { - "name": "indent-legacy", - "replacedBy": [ - "indent" - ] - }, - { - "name": "lines-around-directive", - "replacedBy": [ - "padding-line-between-statements" - ] - }, - { - "name": "newline-after-var", - "replacedBy": [ - "padding-line-between-statements" - ] - }, - { - "name": "newline-before-return", - "replacedBy": [ - "padding-line-between-statements" - ] - }, - { - "name": "no-buffer-constructor", - "replacedBy": [] - }, - { - "name": "no-catch-shadow", - "replacedBy": [ - "no-shadow" - ] - }, - { - "name": "no-mixed-requires", - "replacedBy": [] - }, - { - "name": "no-native-reassign", - "replacedBy": [ - "no-global-assign" - ] - }, - { - "name": "no-negated-in-lhs", - "replacedBy": [ - "no-unsafe-negation" - ] - }, - { - "name": "no-new-require", - "replacedBy": [] - }, - { - "name": "no-path-concat", - "replacedBy": [] - }, - { - "name": "no-process-env", - "replacedBy": [] - }, - { - "name": "no-process-exit", - "replacedBy": [] - }, - { - "name": "no-restricted-modules", - "replacedBy": [] - }, - { - "name": "no-spaced-func", - "replacedBy": [ - "func-call-spacing" - ] - }, - { - "name": "no-sync", - "replacedBy": [] - }, - { - "name": "prefer-reflect", - "replacedBy": [] - }, - { - "name": "require-jsdoc", - "replacedBy": [] - }, - { - "name": "valid-jsdoc", - "replacedBy": [] - } - ] - }, - "removed": { - "description": "These rules from older versions of ESLint (before the deprecation policy existed) have been replaced by newer rules:", - "name": "Removed", - "rules": [ - { - "removed": "generator-star", - "replacedBy": [ - "generator-star-spacing" - ] - }, - { - "removed": "global-strict", - "replacedBy": [ - "strict" - ] - }, - { - "removed": "no-arrow-condition", - "replacedBy": [ - "no-confusing-arrow", - "no-constant-condition" - ] - }, - { - "removed": "no-comma-dangle", - "replacedBy": [ - "comma-dangle" - ] - }, - { - "removed": "no-empty-class", - "replacedBy": [ - "no-empty-character-class" - ] - }, - { - "removed": "no-empty-label", - "replacedBy": [ - "no-labels" - ] - }, - { - "removed": "no-extra-strict", - "replacedBy": [ - "strict" - ] - }, - { - "removed": "no-reserved-keys", - "replacedBy": [ - "quote-props" - ] - }, - { - "removed": "no-space-before-semi", - "replacedBy": [ - "semi-spacing" - ] - }, - { - "removed": "no-wrap-func", - "replacedBy": [ - "no-extra-parens" - ] - }, - { - "removed": "space-after-function-name", - "replacedBy": [ - "space-before-function-paren" - ] - }, - { - "removed": "space-after-keywords", - "replacedBy": [ - "keyword-spacing" - ] - }, - { - "removed": "space-before-function-parentheses", - "replacedBy": [ - "space-before-function-paren" - ] - }, - { - "removed": "space-before-keywords", - "replacedBy": [ - "keyword-spacing" - ] - }, - { - "removed": "space-in-brackets", - "replacedBy": [ - "object-curly-spacing", - "array-bracket-spacing" - ] - }, - { - "removed": "space-return-throw-case", - "replacedBy": [ - "keyword-spacing" - ] - }, - { - "removed": "space-unary-word-ops", - "replacedBy": [ - "space-unary-ops" - ] - }, - { - "removed": "spaced-line-comment", - "replacedBy": [ - "spaced-comment" - ] - } - ] - }, - "types": [ - { - "description": "These rules relate to possible logic errors in code:", - "displayName": "Possible Problems", - "name": "problem", - "rules": [ - { - "description": "enforce `return` statements in callbacks of array methods", - "fixable": false, - "hasSuggestions": false, - "name": "array-callback-return", - "recommended": false - }, - { - "description": "require `super()` calls in constructors", - "fixable": false, - "hasSuggestions": false, - "name": "constructor-super", - "recommended": true - }, - { - "description": "enforce \"for\" loop update clause moving the counter in the right direction.", - "fixable": false, - "hasSuggestions": false, - "name": "for-direction", - "recommended": true - }, - { - "description": "enforce `return` statements in getters", - "fixable": false, - "hasSuggestions": false, - "name": "getter-return", - "recommended": true - }, - { - "description": "disallow using an async function as a Promise executor", - "fixable": false, - "hasSuggestions": false, - "name": "no-async-promise-executor", - "recommended": true - }, - { - "description": "disallow `await` inside of loops", - "fixable": false, - "hasSuggestions": false, - "name": "no-await-in-loop", - "recommended": false - }, - { - "description": "disallow reassigning class members", - "fixable": false, - "hasSuggestions": false, - "name": "no-class-assign", - "recommended": true - }, - { - "description": "disallow comparing against -0", - "fixable": false, - "hasSuggestions": false, - "name": "no-compare-neg-zero", - "recommended": true - }, - { - "description": "disallow assignment operators in conditional expressions", - "fixable": false, - "hasSuggestions": false, - "name": "no-cond-assign", - "recommended": true - }, - { - "description": "disallow reassigning `const` variables", - "fixable": false, - "hasSuggestions": false, - "name": "no-const-assign", - "recommended": true - }, - { - "description": "disallow constant expressions in conditions", - "fixable": false, - "hasSuggestions": false, - "name": "no-constant-condition", - "recommended": true - }, - { - "description": "disallow returning value from constructor", - "fixable": false, - "hasSuggestions": false, - "name": "no-constructor-return", - "recommended": false - }, - { - "description": "disallow control characters in regular expressions", - "fixable": false, - "hasSuggestions": false, - "name": "no-control-regex", - "recommended": true - }, - { - "description": "disallow the use of `debugger`", - "fixable": false, - "hasSuggestions": false, - "name": "no-debugger", - "recommended": true - }, - { - "description": "disallow duplicate arguments in `function` definitions", - "fixable": false, - "hasSuggestions": false, - "name": "no-dupe-args", - "recommended": true - }, - { - "description": "disallow duplicate class members", - "fixable": false, - "hasSuggestions": false, - "name": "no-dupe-class-members", - "recommended": true - }, - { - "description": "disallow duplicate conditions in if-else-if chains", - "fixable": false, - "hasSuggestions": false, - "name": "no-dupe-else-if", - "recommended": true - }, - { - "description": "disallow duplicate keys in object literals", - "fixable": false, - "hasSuggestions": false, - "name": "no-dupe-keys", - "recommended": true - }, - { - "description": "disallow duplicate case labels", - "fixable": false, - "hasSuggestions": false, - "name": "no-duplicate-case", - "recommended": true - }, - { - "description": "disallow duplicate module imports", - "fixable": false, - "hasSuggestions": false, - "name": "no-duplicate-imports", - "recommended": false - }, - { - "description": "disallow empty character classes in regular expressions", - "fixable": false, - "hasSuggestions": false, - "name": "no-empty-character-class", - "recommended": true - }, - { - "description": "disallow empty destructuring patterns", - "fixable": false, - "hasSuggestions": false, - "name": "no-empty-pattern", - "recommended": true - }, - { - "description": "disallow reassigning exceptions in `catch` clauses", - "fixable": false, - "hasSuggestions": false, - "name": "no-ex-assign", - "recommended": true - }, - { - "description": "disallow fallthrough of `case` statements", - "fixable": false, - "hasSuggestions": false, - "name": "no-fallthrough", - "recommended": true - }, - { - "description": "disallow reassigning `function` declarations", - "fixable": false, - "hasSuggestions": false, - "name": "no-func-assign", - "recommended": true - }, - { - "description": "disallow assigning to imported bindings", - "fixable": false, - "hasSuggestions": false, - "name": "no-import-assign", - "recommended": true - }, - { - "description": "disallow variable or `function` declarations in nested blocks", - "fixable": false, - "hasSuggestions": false, - "name": "no-inner-declarations", - "recommended": true - }, - { - "description": "disallow invalid regular expression strings in `RegExp` constructors", - "fixable": false, - "hasSuggestions": false, - "name": "no-invalid-regexp", - "recommended": true - }, - { - "description": "disallow irregular whitespace", - "fixable": false, - "hasSuggestions": false, - "name": "no-irregular-whitespace", - "recommended": true - }, - { - "description": "disallow literal numbers that lose precision", - "fixable": false, - "hasSuggestions": false, - "name": "no-loss-of-precision", - "recommended": true - }, - { - "description": "disallow characters which are made with multiple code points in character class syntax", - "fixable": false, - "hasSuggestions": false, - "name": "no-misleading-character-class", - "recommended": true - }, - { - "description": "disallow `new` operators with the `Symbol` object", - "fixable": false, - "hasSuggestions": false, - "name": "no-new-symbol", - "recommended": true - }, - { - "description": "disallow calling global object properties as functions", - "fixable": false, - "hasSuggestions": false, - "name": "no-obj-calls", - "recommended": true - }, - { - "description": "disallow returning values from Promise executor functions", - "fixable": false, - "hasSuggestions": false, - "name": "no-promise-executor-return", - "recommended": false - }, - { - "description": "disallow calling some `Object.prototype` methods directly on objects", - "fixable": false, - "hasSuggestions": false, - "name": "no-prototype-builtins", - "recommended": true - }, - { - "description": "disallow assignments where both sides are exactly the same", - "fixable": false, - "hasSuggestions": false, - "name": "no-self-assign", - "recommended": true - }, - { - "description": "disallow comparisons where both sides are exactly the same", - "fixable": false, - "hasSuggestions": false, - "name": "no-self-compare", - "recommended": false - }, - { - "description": "disallow returning values from setters", - "fixable": false, - "hasSuggestions": false, - "name": "no-setter-return", - "recommended": true - }, - { - "description": "disallow sparse arrays", - "fixable": false, - "hasSuggestions": false, - "name": "no-sparse-arrays", - "recommended": true - }, - { - "description": "disallow template literal placeholder syntax in regular strings", - "fixable": false, - "hasSuggestions": false, - "name": "no-template-curly-in-string", - "recommended": false - }, - { - "description": "disallow `this`/`super` before calling `super()` in constructors", - "fixable": false, - "hasSuggestions": false, - "name": "no-this-before-super", - "recommended": true - }, - { - "description": "disallow the use of undeclared variables unless mentioned in `/*global */` comments", - "fixable": false, - "hasSuggestions": false, - "name": "no-undef", - "recommended": true - }, - { - "description": "disallow confusing multiline expressions", - "fixable": false, - "hasSuggestions": false, - "name": "no-unexpected-multiline", - "recommended": true - }, - { - "description": "disallow unmodified loop conditions", - "fixable": false, - "hasSuggestions": false, - "name": "no-unmodified-loop-condition", - "recommended": false - }, - { - "description": "disallow unreachable code after `return`, `throw`, `continue`, and `break` statements", - "fixable": false, - "hasSuggestions": false, - "name": "no-unreachable", - "recommended": true - }, - { - "description": "disallow loops with a body that allows only one iteration", - "fixable": false, - "hasSuggestions": false, - "name": "no-unreachable-loop", - "recommended": false - }, - { - "description": "disallow control flow statements in `finally` blocks", - "fixable": false, - "hasSuggestions": false, - "name": "no-unsafe-finally", - "recommended": true - }, - { - "description": "disallow negating the left operand of relational operators", - "fixable": false, - "hasSuggestions": true, - "name": "no-unsafe-negation", - "recommended": true - }, - { - "description": "disallow use of optional chaining in contexts where the `undefined` value is not allowed", - "fixable": false, - "hasSuggestions": false, - "name": "no-unsafe-optional-chaining", - "recommended": true - }, - { - "description": "disallow unused private class members", - "fixable": false, - "hasSuggestions": false, - "name": "no-unused-private-class-members", - "recommended": false - }, - { - "description": "disallow unused variables", - "fixable": false, - "hasSuggestions": false, - "name": "no-unused-vars", - "recommended": true - }, - { - "description": "disallow the use of variables before they are defined", - "fixable": false, - "hasSuggestions": false, - "name": "no-use-before-define", - "recommended": false - }, - { - "description": "disallow useless backreferences in regular expressions", - "fixable": false, - "hasSuggestions": false, - "name": "no-useless-backreference", - "recommended": true - }, - { - "description": "disallow assignments that can lead to race conditions due to usage of `await` or `yield`", - "fixable": false, - "hasSuggestions": false, - "name": "require-atomic-updates", - "recommended": false - }, - { - "description": "require calls to `isNaN()` when checking for `NaN`", - "fixable": false, - "hasSuggestions": false, - "name": "use-isnan", - "recommended": true - }, - { - "description": "enforce comparing `typeof` expressions against valid strings", - "fixable": false, - "hasSuggestions": false, - "name": "valid-typeof", - "recommended": true - } - ] - }, - { - "description": "These rules suggest alternate ways of doing things:", - "displayName": "Suggestions", - "name": "suggestion", - "rules": [ - { - "description": "enforce getter and setter pairs in objects and classes", - "fixable": false, - "hasSuggestions": false, - "name": "accessor-pairs", - "recommended": false - }, - { - "description": "require braces around arrow function bodies", - "fixable": true, - "hasSuggestions": false, - "name": "arrow-body-style", - "recommended": false - }, - { - "description": "enforce the use of variables within the scope they are defined", - "fixable": false, - "hasSuggestions": false, - "name": "block-scoped-var", - "recommended": false - }, - { - "description": "enforce camelcase naming convention", - "fixable": false, - "hasSuggestions": false, - "name": "camelcase", - "recommended": false - }, - { - "description": "enforce or disallow capitalization of the first letter of a comment", - "fixable": true, - "hasSuggestions": false, - "name": "capitalized-comments", - "recommended": false - }, - { - "description": "enforce that class methods utilize `this`", - "fixable": false, - "hasSuggestions": false, - "name": "class-methods-use-this", - "recommended": false - }, - { - "description": "enforce a maximum cyclomatic complexity allowed in a program", - "fixable": false, - "hasSuggestions": false, - "name": "complexity", - "recommended": false - }, - { - "description": "require `return` statements to either always or never specify values", - "fixable": false, - "hasSuggestions": false, - "name": "consistent-return", - "recommended": false - }, - { - "description": "enforce consistent naming when capturing the current execution context", - "fixable": false, - "hasSuggestions": false, - "name": "consistent-this", - "recommended": false - }, - { - "description": "enforce consistent brace style for all control statements", - "fixable": true, - "hasSuggestions": false, - "name": "curly", - "recommended": false - }, - { - "description": "require `default` cases in `switch` statements", - "fixable": false, - "hasSuggestions": false, - "name": "default-case", - "recommended": false - }, - { - "description": "enforce default clauses in switch statements to be last", - "fixable": false, - "hasSuggestions": false, - "name": "default-case-last", - "recommended": false - }, - { - "description": "enforce default parameters to be last", - "fixable": false, - "hasSuggestions": false, - "name": "default-param-last", - "recommended": false - }, - { - "description": "enforce dot notation whenever possible", - "fixable": true, - "hasSuggestions": false, - "name": "dot-notation", - "recommended": false - }, - { - "description": "require the use of `===` and `!==`", - "fixable": true, - "hasSuggestions": false, - "name": "eqeqeq", - "recommended": false - }, - { - "description": "require function names to match the name of the variable or property to which they are assigned", - "fixable": false, - "hasSuggestions": false, - "name": "func-name-matching", - "recommended": false - }, - { - "description": "require or disallow named `function` expressions", - "fixable": false, - "hasSuggestions": false, - "name": "func-names", - "recommended": false - }, - { - "description": "enforce the consistent use of either `function` declarations or expressions", - "fixable": false, - "hasSuggestions": false, - "name": "func-style", - "recommended": false - }, - { - "description": "require grouped accessor pairs in object literals and classes", - "fixable": false, - "hasSuggestions": false, - "name": "grouped-accessor-pairs", - "recommended": false - }, - { - "description": "require `for-in` loops to include an `if` statement", - "fixable": false, - "hasSuggestions": false, - "name": "guard-for-in", - "recommended": false - }, - { - "description": "disallow specified identifiers", - "fixable": false, - "hasSuggestions": false, - "name": "id-denylist", - "recommended": false - }, - { - "description": "enforce minimum and maximum identifier lengths", - "fixable": false, - "hasSuggestions": false, - "name": "id-length", - "recommended": false - }, - { - "description": "require identifiers to match a specified regular expression", - "fixable": false, - "hasSuggestions": false, - "name": "id-match", - "recommended": false - }, - { - "description": "require or disallow initialization in variable declarations", - "fixable": false, - "hasSuggestions": false, - "name": "init-declarations", - "recommended": false - }, - { - "description": "enforce a maximum number of classes per file", - "fixable": false, - "hasSuggestions": false, - "name": "max-classes-per-file", - "recommended": false - }, - { - "description": "enforce a maximum depth that blocks can be nested", - "fixable": false, - "hasSuggestions": false, - "name": "max-depth", - "recommended": false - }, - { - "description": "enforce a maximum number of lines per file", - "fixable": false, - "hasSuggestions": false, - "name": "max-lines", - "recommended": false - }, - { - "description": "enforce a maximum number of lines of code in a function", - "fixable": false, - "hasSuggestions": false, - "name": "max-lines-per-function", - "recommended": false - }, - { - "description": "enforce a maximum depth that callbacks can be nested", - "fixable": false, - "hasSuggestions": false, - "name": "max-nested-callbacks", - "recommended": false - }, - { - "description": "enforce a maximum number of parameters in function definitions", - "fixable": false, - "hasSuggestions": false, - "name": "max-params", - "recommended": false - }, - { - "description": "enforce a maximum number of statements allowed in function blocks", - "fixable": false, - "hasSuggestions": false, - "name": "max-statements", - "recommended": false - }, - { - "description": "enforce a particular style for multiline comments", - "fixable": true, - "hasSuggestions": false, - "name": "multiline-comment-style", - "recommended": false - }, - { - "description": "require constructor names to begin with a capital letter", - "fixable": false, - "hasSuggestions": false, - "name": "new-cap", - "recommended": false - }, - { - "description": "disallow the use of `alert`, `confirm`, and `prompt`", - "fixable": false, - "hasSuggestions": false, - "name": "no-alert", - "recommended": false - }, - { - "description": "disallow `Array` constructors", - "fixable": false, - "hasSuggestions": false, - "name": "no-array-constructor", - "recommended": false - }, - { - "description": "disallow bitwise operators", - "fixable": false, - "hasSuggestions": false, - "name": "no-bitwise", - "recommended": false - }, - { - "description": "disallow the use of `arguments.caller` or `arguments.callee`", - "fixable": false, - "hasSuggestions": false, - "name": "no-caller", - "recommended": false - }, - { - "description": "disallow lexical declarations in case clauses", - "fixable": false, - "hasSuggestions": false, - "name": "no-case-declarations", - "recommended": true - }, - { - "description": "disallow arrow functions where they could be confused with comparisons", - "fixable": true, - "hasSuggestions": false, - "name": "no-confusing-arrow", - "recommended": false - }, - { - "description": "disallow the use of `console`", - "fixable": false, - "hasSuggestions": false, - "name": "no-console", - "recommended": false - }, - { - "description": "disallow `continue` statements", - "fixable": false, - "hasSuggestions": false, - "name": "no-continue", - "recommended": false - }, - { - "description": "disallow deleting variables", - "fixable": false, - "hasSuggestions": false, - "name": "no-delete-var", - "recommended": true - }, - { - "description": "disallow division operators explicitly at the beginning of regular expressions", - "fixable": true, - "hasSuggestions": false, - "name": "no-div-regex", - "recommended": false - }, - { - "description": "disallow `else` blocks after `return` statements in `if` statements", - "fixable": true, - "hasSuggestions": false, - "name": "no-else-return", - "recommended": false - }, - { - "description": "disallow empty block statements", - "fixable": false, - "hasSuggestions": false, - "name": "no-empty", - "recommended": true - }, - { - "description": "disallow empty functions", - "fixable": false, - "hasSuggestions": false, - "name": "no-empty-function", - "recommended": false - }, - { - "description": "disallow `null` comparisons without type-checking operators", - "fixable": false, - "hasSuggestions": false, - "name": "no-eq-null", - "recommended": false - }, - { - "description": "disallow the use of `eval()`", - "fixable": false, - "hasSuggestions": false, - "name": "no-eval", - "recommended": false - }, - { - "description": "disallow extending native types", - "fixable": false, - "hasSuggestions": false, - "name": "no-extend-native", - "recommended": false - }, - { - "description": "disallow unnecessary calls to `.bind()`", - "fixable": true, - "hasSuggestions": false, - "name": "no-extra-bind", - "recommended": false - }, - { - "description": "disallow unnecessary boolean casts", - "fixable": true, - "hasSuggestions": false, - "name": "no-extra-boolean-cast", - "recommended": true - }, - { - "description": "disallow unnecessary labels", - "fixable": true, - "hasSuggestions": false, - "name": "no-extra-label", - "recommended": false - }, - { - "description": "disallow unnecessary semicolons", - "fixable": true, - "hasSuggestions": false, - "name": "no-extra-semi", - "recommended": true - }, - { - "description": "disallow leading or trailing decimal points in numeric literals", - "fixable": true, - "hasSuggestions": false, - "name": "no-floating-decimal", - "recommended": false - }, - { - "description": "disallow assignments to native objects or read-only global variables", - "fixable": false, - "hasSuggestions": false, - "name": "no-global-assign", - "recommended": true - }, - { - "description": "disallow shorthand type conversions", - "fixable": true, - "hasSuggestions": false, - "name": "no-implicit-coercion", - "recommended": false - }, - { - "description": "disallow declarations in the global scope", - "fixable": false, - "hasSuggestions": false, - "name": "no-implicit-globals", - "recommended": false - }, - { - "description": "disallow the use of `eval()`-like methods", - "fixable": false, - "hasSuggestions": false, - "name": "no-implied-eval", - "recommended": false - }, - { - "description": "disallow inline comments after code", - "fixable": false, - "hasSuggestions": false, - "name": "no-inline-comments", - "recommended": false - }, - { - "description": "disallow `this` keywords outside of classes or class-like objects", - "fixable": false, - "hasSuggestions": false, - "name": "no-invalid-this", - "recommended": false - }, - { - "description": "disallow the use of the `__iterator__` property", - "fixable": false, - "hasSuggestions": false, - "name": "no-iterator", - "recommended": false - }, - { - "description": "disallow labels that share a name with a variable", - "fixable": false, - "hasSuggestions": false, - "name": "no-label-var", - "recommended": false - }, - { - "description": "disallow labeled statements", - "fixable": false, - "hasSuggestions": false, - "name": "no-labels", - "recommended": false - }, - { - "description": "disallow unnecessary nested blocks", - "fixable": false, - "hasSuggestions": false, - "name": "no-lone-blocks", - "recommended": false - }, - { - "description": "disallow `if` statements as the only statement in `else` blocks", - "fixable": true, - "hasSuggestions": false, - "name": "no-lonely-if", - "recommended": false - }, - { - "description": "disallow function declarations that contain unsafe references inside loop statements", - "fixable": false, - "hasSuggestions": false, - "name": "no-loop-func", - "recommended": false - }, - { - "description": "disallow magic numbers", - "fixable": false, - "hasSuggestions": false, - "name": "no-magic-numbers", - "recommended": false - }, - { - "description": "disallow mixed binary operators", - "fixable": false, - "hasSuggestions": false, - "name": "no-mixed-operators", - "recommended": false - }, - { - "description": "disallow use of chained assignment expressions", - "fixable": false, - "hasSuggestions": false, - "name": "no-multi-assign", - "recommended": false - }, - { - "description": "disallow multiline strings", - "fixable": false, - "hasSuggestions": false, - "name": "no-multi-str", - "recommended": false - }, - { - "description": "disallow negated conditions", - "fixable": false, - "hasSuggestions": false, - "name": "no-negated-condition", - "recommended": false - }, - { - "description": "disallow nested ternary expressions", - "fixable": false, - "hasSuggestions": false, - "name": "no-nested-ternary", - "recommended": false - }, - { - "description": "disallow `new` operators outside of assignments or comparisons", - "fixable": false, - "hasSuggestions": false, - "name": "no-new", - "recommended": false - }, - { - "description": "disallow `new` operators with the `Function` object", - "fixable": false, - "hasSuggestions": false, - "name": "no-new-func", - "recommended": false - }, - { - "description": "disallow `Object` constructors", - "fixable": false, - "hasSuggestions": false, - "name": "no-new-object", - "recommended": false - }, - { - "description": "disallow `new` operators with the `String`, `Number`, and `Boolean` objects", - "fixable": false, - "hasSuggestions": false, - "name": "no-new-wrappers", - "recommended": false - }, - { - "description": "disallow `\\8` and `\\9` escape sequences in string literals", - "fixable": false, - "hasSuggestions": true, - "name": "no-nonoctal-decimal-escape", - "recommended": true - }, - { - "description": "disallow octal literals", - "fixable": false, - "hasSuggestions": false, - "name": "no-octal", - "recommended": true - }, - { - "description": "disallow octal escape sequences in string literals", - "fixable": false, - "hasSuggestions": false, - "name": "no-octal-escape", - "recommended": false - }, - { - "description": "disallow reassigning `function` parameters", - "fixable": false, - "hasSuggestions": false, - "name": "no-param-reassign", - "recommended": false - }, - { - "description": "disallow the unary operators `++` and `--`", - "fixable": false, - "hasSuggestions": false, - "name": "no-plusplus", - "recommended": false - }, - { - "description": "disallow the use of the `__proto__` property", - "fixable": false, - "hasSuggestions": false, - "name": "no-proto", - "recommended": false - }, - { - "description": "disallow variable redeclaration", - "fixable": false, - "hasSuggestions": false, - "name": "no-redeclare", - "recommended": true - }, - { - "description": "disallow multiple spaces in regular expressions", - "fixable": true, - "hasSuggestions": false, - "name": "no-regex-spaces", - "recommended": true - }, - { - "description": "disallow specified names in exports", - "fixable": false, - "hasSuggestions": false, - "name": "no-restricted-exports", - "recommended": false - }, - { - "description": "disallow specified global variables", - "fixable": false, - "hasSuggestions": false, - "name": "no-restricted-globals", - "recommended": false - }, - { - "description": "disallow specified modules when loaded by `import`", - "fixable": false, - "hasSuggestions": false, - "name": "no-restricted-imports", - "recommended": false - }, - { - "description": "disallow certain properties on certain objects", - "fixable": false, - "hasSuggestions": false, - "name": "no-restricted-properties", - "recommended": false - }, - { - "description": "disallow specified syntax", - "fixable": false, - "hasSuggestions": false, - "name": "no-restricted-syntax", - "recommended": false - }, - { - "description": "disallow assignment operators in `return` statements", - "fixable": false, - "hasSuggestions": false, - "name": "no-return-assign", - "recommended": false - }, - { - "description": "disallow unnecessary `return await`", - "fixable": false, - "hasSuggestions": false, - "name": "no-return-await", - "recommended": false - }, - { - "description": "disallow `javascript:` urls", - "fixable": false, - "hasSuggestions": false, - "name": "no-script-url", - "recommended": false - }, - { - "description": "disallow comma operators", - "fixable": false, - "hasSuggestions": false, - "name": "no-sequences", - "recommended": false - }, - { - "description": "disallow variable declarations from shadowing variables declared in the outer scope", - "fixable": false, - "hasSuggestions": false, - "name": "no-shadow", - "recommended": false - }, - { - "description": "disallow identifiers from shadowing restricted names", - "fixable": false, - "hasSuggestions": false, - "name": "no-shadow-restricted-names", - "recommended": true - }, - { - "description": "disallow ternary operators", - "fixable": false, - "hasSuggestions": false, - "name": "no-ternary", - "recommended": false - }, - { - "description": "disallow throwing literals as exceptions", - "fixable": false, - "hasSuggestions": false, - "name": "no-throw-literal", - "recommended": false - }, - { - "description": "disallow initializing variables to `undefined`", - "fixable": true, - "hasSuggestions": false, - "name": "no-undef-init", - "recommended": false - }, - { - "description": "disallow the use of `undefined` as an identifier", - "fixable": false, - "hasSuggestions": false, - "name": "no-undefined", - "recommended": false - }, - { - "description": "disallow dangling underscores in identifiers", - "fixable": false, - "hasSuggestions": false, - "name": "no-underscore-dangle", - "recommended": false - }, - { - "description": "disallow ternary operators when simpler alternatives exist", - "fixable": true, - "hasSuggestions": false, - "name": "no-unneeded-ternary", - "recommended": false - }, - { - "description": "disallow unused expressions", - "fixable": false, - "hasSuggestions": false, - "name": "no-unused-expressions", - "recommended": false - }, - { - "description": "disallow unused labels", - "fixable": true, - "hasSuggestions": false, - "name": "no-unused-labels", - "recommended": true - }, - { - "description": "disallow unnecessary calls to `.call()` and `.apply()`", - "fixable": false, - "hasSuggestions": false, - "name": "no-useless-call", - "recommended": false - }, - { - "description": "disallow unnecessary `catch` clauses", - "fixable": false, - "hasSuggestions": false, - "name": "no-useless-catch", - "recommended": true - }, - { - "description": "disallow unnecessary computed property keys in objects and classes", - "fixable": true, - "hasSuggestions": false, - "name": "no-useless-computed-key", - "recommended": false - }, - { - "description": "disallow unnecessary concatenation of literals or template literals", - "fixable": false, - "hasSuggestions": false, - "name": "no-useless-concat", - "recommended": false - }, - { - "description": "disallow unnecessary constructors", - "fixable": false, - "hasSuggestions": false, - "name": "no-useless-constructor", - "recommended": false - }, - { - "description": "disallow unnecessary escape characters", - "fixable": false, - "hasSuggestions": true, - "name": "no-useless-escape", - "recommended": true - }, - { - "description": "disallow renaming import, export, and destructured assignments to the same name", - "fixable": true, - "hasSuggestions": false, - "name": "no-useless-rename", - "recommended": false - }, - { - "description": "disallow redundant return statements", - "fixable": true, - "hasSuggestions": false, - "name": "no-useless-return", - "recommended": false - }, - { - "description": "require `let` or `const` instead of `var`", - "fixable": true, - "hasSuggestions": false, - "name": "no-var", - "recommended": false - }, - { - "description": "disallow `void` operators", - "fixable": false, - "hasSuggestions": false, - "name": "no-void", - "recommended": false - }, - { - "description": "disallow specified warning terms in comments", - "fixable": false, - "hasSuggestions": false, - "name": "no-warning-comments", - "recommended": false - }, - { - "description": "disallow `with` statements", - "fixable": false, - "hasSuggestions": false, - "name": "no-with", - "recommended": true - }, - { - "description": "require or disallow method and property shorthand syntax for object literals", - "fixable": true, - "hasSuggestions": false, - "name": "object-shorthand", - "recommended": false - }, - { - "description": "enforce variables to be declared either together or separately in functions", - "fixable": true, - "hasSuggestions": false, - "name": "one-var", - "recommended": false - }, - { - "description": "require or disallow newlines around variable declarations", - "fixable": true, - "hasSuggestions": false, - "name": "one-var-declaration-per-line", - "recommended": false - }, - { - "description": "require or disallow assignment operator shorthand where possible", - "fixable": true, - "hasSuggestions": false, - "name": "operator-assignment", - "recommended": false - }, - { - "description": "require using arrow functions for callbacks", - "fixable": true, - "hasSuggestions": false, - "name": "prefer-arrow-callback", - "recommended": false - }, - { - "description": "require `const` declarations for variables that are never reassigned after declared", - "fixable": true, - "hasSuggestions": false, - "name": "prefer-const", - "recommended": false - }, - { - "description": "require destructuring from arrays and/or objects", - "fixable": true, - "hasSuggestions": false, - "name": "prefer-destructuring", - "recommended": false - }, - { - "description": "disallow the use of `Math.pow` in favor of the `**` operator", - "fixable": true, - "hasSuggestions": false, - "name": "prefer-exponentiation-operator", - "recommended": false - }, - { - "description": "enforce using named capture group in regular expression", - "fixable": false, - "hasSuggestions": false, - "name": "prefer-named-capture-group", - "recommended": false - }, - { - "description": "disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and hexadecimal literals", - "fixable": true, - "hasSuggestions": false, - "name": "prefer-numeric-literals", - "recommended": false - }, - { - "description": "disallow use of `Object.prototype.hasOwnProperty.call()` and prefer use of `Object.hasOwn()`", - "fixable": true, - "hasSuggestions": false, - "name": "prefer-object-has-own", - "recommended": false - }, - { - "description": "disallow using Object.assign with an object literal as the first argument and prefer the use of object spread instead.", - "fixable": true, - "hasSuggestions": false, - "name": "prefer-object-spread", - "recommended": false - }, - { - "description": "require using Error objects as Promise rejection reasons", - "fixable": false, - "hasSuggestions": false, - "name": "prefer-promise-reject-errors", - "recommended": false - }, - { - "description": "disallow use of the `RegExp` constructor in favor of regular expression literals", - "fixable": false, - "hasSuggestions": true, - "name": "prefer-regex-literals", - "recommended": false - }, - { - "description": "require rest parameters instead of `arguments`", - "fixable": false, - "hasSuggestions": false, - "name": "prefer-rest-params", - "recommended": false - }, - { - "description": "require spread operators instead of `.apply()`", - "fixable": false, - "hasSuggestions": false, - "name": "prefer-spread", - "recommended": false - }, - { - "description": "require template literals instead of string concatenation", - "fixable": true, - "hasSuggestions": false, - "name": "prefer-template", - "recommended": false - }, - { - "description": "require quotes around object literal property names", - "fixable": true, - "hasSuggestions": false, - "name": "quote-props", - "recommended": false - }, - { - "description": "enforce the consistent use of the radix argument when using `parseInt()`", - "fixable": false, - "hasSuggestions": true, - "name": "radix", - "recommended": false - }, - { - "description": "disallow async functions which have no `await` expression", - "fixable": false, - "hasSuggestions": false, - "name": "require-await", - "recommended": false - }, - { - "description": "enforce the use of `u` flag on RegExp", - "fixable": false, - "hasSuggestions": false, - "name": "require-unicode-regexp", - "recommended": false - }, - { - "description": "require generator functions to contain `yield`", - "fixable": false, - "hasSuggestions": false, - "name": "require-yield", - "recommended": true - }, - { - "description": "enforce sorted import declarations within modules", - "fixable": true, - "hasSuggestions": false, - "name": "sort-imports", - "recommended": false - }, - { - "description": "require object keys to be sorted", - "fixable": false, - "hasSuggestions": false, - "name": "sort-keys", - "recommended": false - }, - { - "description": "require variables within the same declaration block to be sorted", - "fixable": true, - "hasSuggestions": false, - "name": "sort-vars", - "recommended": false - }, - { - "description": "enforce consistent spacing after the `//` or `/*` in a comment", - "fixable": true, - "hasSuggestions": false, - "name": "spaced-comment", - "recommended": false - }, - { - "description": "require or disallow strict mode directives", - "fixable": true, - "hasSuggestions": false, - "name": "strict", - "recommended": false - }, - { - "description": "require symbol descriptions", - "fixable": false, - "hasSuggestions": false, - "name": "symbol-description", - "recommended": false - }, - { - "description": "require `var` declarations be placed at the top of their containing scope", - "fixable": false, - "hasSuggestions": false, - "name": "vars-on-top", - "recommended": false - }, - { - "description": "require or disallow \"Yoda\" conditions", - "fixable": true, - "hasSuggestions": false, - "name": "yoda", - "recommended": false + "types": [ + { + "name": "problem", + "displayName": "Possible Problems", + "description": "These rules relate to possible logic errors in code:", + "rules": [ + { + "name": "array-callback-return", + "description": "enforce `return` statements in callbacks of array methods", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "constructor-super", + "description": "require `super()` calls in constructors", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "for-direction", + "description": "enforce \"for\" loop update clause moving the counter in the right direction.", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "getter-return", + "description": "enforce `return` statements in getters", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-async-promise-executor", + "description": "disallow using an async function as a Promise executor", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-await-in-loop", + "description": "disallow `await` inside of loops", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-class-assign", + "description": "disallow reassigning class members", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-compare-neg-zero", + "description": "disallow comparing against -0", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-cond-assign", + "description": "disallow assignment operators in conditional expressions", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-const-assign", + "description": "disallow reassigning `const` variables", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-constant-binary-expression", + "description": "disallow expressions where the operation doesn't affect the value", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-constant-condition", + "description": "disallow constant expressions in conditions", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-constructor-return", + "description": "disallow returning value from constructor", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-control-regex", + "description": "disallow control characters in regular expressions", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-debugger", + "description": "disallow the use of `debugger`", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-dupe-args", + "description": "disallow duplicate arguments in `function` definitions", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-dupe-class-members", + "description": "disallow duplicate class members", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-dupe-else-if", + "description": "disallow duplicate conditions in if-else-if chains", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-dupe-keys", + "description": "disallow duplicate keys in object literals", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-duplicate-case", + "description": "disallow duplicate case labels", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-duplicate-imports", + "description": "disallow duplicate module imports", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-empty-character-class", + "description": "disallow empty character classes in regular expressions", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-empty-pattern", + "description": "disallow empty destructuring patterns", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-ex-assign", + "description": "disallow reassigning exceptions in `catch` clauses", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-fallthrough", + "description": "disallow fallthrough of `case` statements", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-func-assign", + "description": "disallow reassigning `function` declarations", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-import-assign", + "description": "disallow assigning to imported bindings", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-inner-declarations", + "description": "disallow variable or `function` declarations in nested blocks", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-invalid-regexp", + "description": "disallow invalid regular expression strings in `RegExp` constructors", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-irregular-whitespace", + "description": "disallow irregular whitespace", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-loss-of-precision", + "description": "disallow literal numbers that lose precision", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-misleading-character-class", + "description": "disallow characters which are made with multiple code points in character class syntax", + "recommended": true, + "fixable": false, + "hasSuggestions": true + }, + { + "name": "no-new-symbol", + "description": "disallow `new` operators with the `Symbol` object", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-obj-calls", + "description": "disallow calling global object properties as functions", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-promise-executor-return", + "description": "disallow returning values from Promise executor functions", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-prototype-builtins", + "description": "disallow calling some `Object.prototype` methods directly on objects", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-self-assign", + "description": "disallow assignments where both sides are exactly the same", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-self-compare", + "description": "disallow comparisons where both sides are exactly the same", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-setter-return", + "description": "disallow returning values from setters", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-sparse-arrays", + "description": "disallow sparse arrays", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-template-curly-in-string", + "description": "disallow template literal placeholder syntax in regular strings", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-this-before-super", + "description": "disallow `this`/`super` before calling `super()` in constructors", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-undef", + "description": "disallow the use of undeclared variables unless mentioned in `/*global */` comments", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-unexpected-multiline", + "description": "disallow confusing multiline expressions", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-unmodified-loop-condition", + "description": "disallow unmodified loop conditions", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-unreachable", + "description": "disallow unreachable code after `return`, `throw`, `continue`, and `break` statements", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-unreachable-loop", + "description": "disallow loops with a body that allows only one iteration", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-unsafe-finally", + "description": "disallow control flow statements in `finally` blocks", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-unsafe-negation", + "description": "disallow negating the left operand of relational operators", + "recommended": true, + "fixable": false, + "hasSuggestions": true + }, + { + "name": "no-unsafe-optional-chaining", + "description": "disallow use of optional chaining in contexts where the `undefined` value is not allowed", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-unused-private-class-members", + "description": "disallow unused private class members", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-unused-vars", + "description": "disallow unused variables", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-use-before-define", + "description": "disallow the use of variables before they are defined", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-useless-backreference", + "description": "disallow useless backreferences in regular expressions", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "require-atomic-updates", + "description": "disallow assignments that can lead to race conditions due to usage of `await` or `yield`", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "use-isnan", + "description": "require calls to `isNaN()` when checking for `NaN`", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "valid-typeof", + "description": "enforce comparing `typeof` expressions against valid strings", + "recommended": true, + "fixable": false, + "hasSuggestions": true + } + ] + }, + { + "name": "suggestion", + "displayName": "Suggestions", + "description": "These rules suggest alternate ways of doing things:", + "rules": [ + { + "name": "accessor-pairs", + "description": "enforce getter and setter pairs in objects and classes", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "arrow-body-style", + "description": "require braces around arrow function bodies", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "block-scoped-var", + "description": "enforce the use of variables within the scope they are defined", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "camelcase", + "description": "enforce camelcase naming convention", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "capitalized-comments", + "description": "enforce or disallow capitalization of the first letter of a comment", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "class-methods-use-this", + "description": "enforce that class methods utilize `this`", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "complexity", + "description": "enforce a maximum cyclomatic complexity allowed in a program", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "consistent-return", + "description": "require `return` statements to either always or never specify values", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "consistent-this", + "description": "enforce consistent naming when capturing the current execution context", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "curly", + "description": "enforce consistent brace style for all control statements", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "default-case", + "description": "require `default` cases in `switch` statements", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "default-case-last", + "description": "enforce default clauses in switch statements to be last", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "default-param-last", + "description": "enforce default parameters to be last", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "dot-notation", + "description": "enforce dot notation whenever possible", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "eqeqeq", + "description": "require the use of `===` and `!==`", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "func-name-matching", + "description": "require function names to match the name of the variable or property to which they are assigned", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "func-names", + "description": "require or disallow named `function` expressions", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "func-style", + "description": "enforce the consistent use of either `function` declarations or expressions", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "grouped-accessor-pairs", + "description": "require grouped accessor pairs in object literals and classes", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "guard-for-in", + "description": "require `for-in` loops to include an `if` statement", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "id-denylist", + "description": "disallow specified identifiers", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "id-length", + "description": "enforce minimum and maximum identifier lengths", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "id-match", + "description": "require identifiers to match a specified regular expression", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "init-declarations", + "description": "require or disallow initialization in variable declarations", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "max-classes-per-file", + "description": "enforce a maximum number of classes per file", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "max-depth", + "description": "enforce a maximum depth that blocks can be nested", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "max-lines", + "description": "enforce a maximum number of lines per file", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "max-lines-per-function", + "description": "enforce a maximum number of lines of code in a function", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "max-nested-callbacks", + "description": "enforce a maximum depth that callbacks can be nested", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "max-params", + "description": "enforce a maximum number of parameters in function definitions", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "max-statements", + "description": "enforce a maximum number of statements allowed in function blocks", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "multiline-comment-style", + "description": "enforce a particular style for multiline comments", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "new-cap", + "description": "require constructor names to begin with a capital letter", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-alert", + "description": "disallow the use of `alert`, `confirm`, and `prompt`", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-array-constructor", + "description": "disallow `Array` constructors", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-bitwise", + "description": "disallow bitwise operators", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-caller", + "description": "disallow the use of `arguments.caller` or `arguments.callee`", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-case-declarations", + "description": "disallow lexical declarations in case clauses", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-confusing-arrow", + "description": "disallow arrow functions where they could be confused with comparisons", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-console", + "description": "disallow the use of `console`", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-continue", + "description": "disallow `continue` statements", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-delete-var", + "description": "disallow deleting variables", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-div-regex", + "description": "disallow division operators explicitly at the beginning of regular expressions", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-else-return", + "description": "disallow `else` blocks after `return` statements in `if` statements", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-empty", + "description": "disallow empty block statements", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-empty-function", + "description": "disallow empty functions", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-eq-null", + "description": "disallow `null` comparisons without type-checking operators", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-eval", + "description": "disallow the use of `eval()`", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-extend-native", + "description": "disallow extending native types", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-extra-bind", + "description": "disallow unnecessary calls to `.bind()`", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-extra-boolean-cast", + "description": "disallow unnecessary boolean casts", + "recommended": true, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-extra-label", + "description": "disallow unnecessary labels", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-extra-semi", + "description": "disallow unnecessary semicolons", + "recommended": true, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-floating-decimal", + "description": "disallow leading or trailing decimal points in numeric literals", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-global-assign", + "description": "disallow assignments to native objects or read-only global variables", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-implicit-coercion", + "description": "disallow shorthand type conversions", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-implicit-globals", + "description": "disallow declarations in the global scope", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-implied-eval", + "description": "disallow the use of `eval()`-like methods", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-inline-comments", + "description": "disallow inline comments after code", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-invalid-this", + "description": "disallow use of `this` in contexts where the value of `this` is `undefined`", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-iterator", + "description": "disallow the use of the `__iterator__` property", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-label-var", + "description": "disallow labels that share a name with a variable", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-labels", + "description": "disallow labeled statements", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-lone-blocks", + "description": "disallow unnecessary nested blocks", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-lonely-if", + "description": "disallow `if` statements as the only statement in `else` blocks", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-loop-func", + "description": "disallow function declarations that contain unsafe references inside loop statements", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-magic-numbers", + "description": "disallow magic numbers", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-mixed-operators", + "description": "disallow mixed binary operators", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-multi-assign", + "description": "disallow use of chained assignment expressions", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-multi-str", + "description": "disallow multiline strings", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-negated-condition", + "description": "disallow negated conditions", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-nested-ternary", + "description": "disallow nested ternary expressions", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-new", + "description": "disallow `new` operators outside of assignments or comparisons", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-new-func", + "description": "disallow `new` operators with the `Function` object", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-new-object", + "description": "disallow `Object` constructors", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-new-wrappers", + "description": "disallow `new` operators with the `String`, `Number`, and `Boolean` objects", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-nonoctal-decimal-escape", + "description": "disallow `\\8` and `\\9` escape sequences in string literals", + "recommended": true, + "fixable": false, + "hasSuggestions": true + }, + { + "name": "no-octal", + "description": "disallow octal literals", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-octal-escape", + "description": "disallow octal escape sequences in string literals", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-param-reassign", + "description": "disallow reassigning `function` parameters", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-plusplus", + "description": "disallow the unary operators `++` and `--`", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-proto", + "description": "disallow the use of the `__proto__` property", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-redeclare", + "description": "disallow variable redeclaration", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-regex-spaces", + "description": "disallow multiple spaces in regular expressions", + "recommended": true, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-restricted-exports", + "description": "disallow specified names in exports", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-restricted-globals", + "description": "disallow specified global variables", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-restricted-imports", + "description": "disallow specified modules when loaded by `import`", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-restricted-properties", + "description": "disallow certain properties on certain objects", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-restricted-syntax", + "description": "disallow specified syntax", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-return-assign", + "description": "disallow assignment operators in `return` statements", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-return-await", + "description": "disallow unnecessary `return await`", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-script-url", + "description": "disallow `javascript:` urls", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-sequences", + "description": "disallow comma operators", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-shadow", + "description": "disallow variable declarations from shadowing variables declared in the outer scope", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-shadow-restricted-names", + "description": "disallow identifiers from shadowing restricted names", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-ternary", + "description": "disallow ternary operators", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-throw-literal", + "description": "disallow throwing literals as exceptions", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-undef-init", + "description": "disallow initializing variables to `undefined`", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-undefined", + "description": "disallow the use of `undefined` as an identifier", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-underscore-dangle", + "description": "disallow dangling underscores in identifiers", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-unneeded-ternary", + "description": "disallow ternary operators when simpler alternatives exist", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-unused-expressions", + "description": "disallow unused expressions", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-unused-labels", + "description": "disallow unused labels", + "recommended": true, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-useless-call", + "description": "disallow unnecessary calls to `.call()` and `.apply()`", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-useless-catch", + "description": "disallow unnecessary `catch` clauses", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-useless-computed-key", + "description": "disallow unnecessary computed property keys in objects and classes", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-useless-concat", + "description": "disallow unnecessary concatenation of literals or template literals", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-useless-constructor", + "description": "disallow unnecessary constructors", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-useless-escape", + "description": "disallow unnecessary escape characters", + "recommended": true, + "fixable": false, + "hasSuggestions": true + }, + { + "name": "no-useless-rename", + "description": "disallow renaming import, export, and destructured assignments to the same name", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-useless-return", + "description": "disallow redundant return statements", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-var", + "description": "require `let` or `const` instead of `var`", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-void", + "description": "disallow `void` operators", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-warning-comments", + "description": "disallow specified warning terms in comments", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-with", + "description": "disallow `with` statements", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "object-shorthand", + "description": "require or disallow method and property shorthand syntax for object literals", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "one-var", + "description": "enforce variables to be declared either together or separately in functions", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "one-var-declaration-per-line", + "description": "require or disallow newlines around variable declarations", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "operator-assignment", + "description": "require or disallow assignment operator shorthand where possible", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "prefer-arrow-callback", + "description": "require using arrow functions for callbacks", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "prefer-const", + "description": "require `const` declarations for variables that are never reassigned after declared", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "prefer-destructuring", + "description": "require destructuring from arrays and/or objects", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "prefer-exponentiation-operator", + "description": "disallow the use of `Math.pow` in favor of the `**` operator", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "prefer-named-capture-group", + "description": "enforce using named capture group in regular expression", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "prefer-numeric-literals", + "description": "disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and hexadecimal literals", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "prefer-object-has-own", + "description": "disallow use of `Object.prototype.hasOwnProperty.call()` and prefer use of `Object.hasOwn()`", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "prefer-object-spread", + "description": "disallow using Object.assign with an object literal as the first argument and prefer the use of object spread instead.", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "prefer-promise-reject-errors", + "description": "require using Error objects as Promise rejection reasons", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "prefer-regex-literals", + "description": "disallow use of the `RegExp` constructor in favor of regular expression literals", + "recommended": false, + "fixable": false, + "hasSuggestions": true + }, + { + "name": "prefer-rest-params", + "description": "require rest parameters instead of `arguments`", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "prefer-spread", + "description": "require spread operators instead of `.apply()`", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "prefer-template", + "description": "require template literals instead of string concatenation", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "quote-props", + "description": "require quotes around object literal property names", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "radix", + "description": "enforce the consistent use of the radix argument when using `parseInt()`", + "recommended": false, + "fixable": false, + "hasSuggestions": true + }, + { + "name": "require-await", + "description": "disallow async functions which have no `await` expression", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "require-unicode-regexp", + "description": "enforce the use of `u` flag on RegExp", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "require-yield", + "description": "require generator functions to contain `yield`", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "sort-imports", + "description": "enforce sorted import declarations within modules", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "sort-keys", + "description": "require object keys to be sorted", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "sort-vars", + "description": "require variables within the same declaration block to be sorted", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "spaced-comment", + "description": "enforce consistent spacing after the `//` or `/*` in a comment", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "strict", + "description": "require or disallow strict mode directives", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "symbol-description", + "description": "require symbol descriptions", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "vars-on-top", + "description": "require `var` declarations be placed at the top of their containing scope", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "yoda", + "description": "require or disallow \"Yoda\" conditions", + "recommended": false, + "fixable": true, + "hasSuggestions": false + } + ] + }, + { + "name": "layout", + "displayName": "Layout & Formatting", + "description": "These rules care about how the code looks rather than how it executes:", + "rules": [ + { + "name": "array-bracket-newline", + "description": "enforce linebreaks after opening and before closing array brackets", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "array-bracket-spacing", + "description": "enforce consistent spacing inside array brackets", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "array-element-newline", + "description": "enforce line breaks after each array element", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "arrow-parens", + "description": "require parentheses around arrow function arguments", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "arrow-spacing", + "description": "enforce consistent spacing before and after the arrow in arrow functions", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "block-spacing", + "description": "disallow or enforce spaces inside of blocks after opening block and before closing block", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "brace-style", + "description": "enforce consistent brace style for blocks", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "comma-dangle", + "description": "require or disallow trailing commas", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "comma-spacing", + "description": "enforce consistent spacing before and after commas", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "comma-style", + "description": "enforce consistent comma style", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "computed-property-spacing", + "description": "enforce consistent spacing inside computed property brackets", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "dot-location", + "description": "enforce consistent newlines before and after dots", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "eol-last", + "description": "require or disallow newline at the end of files", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "func-call-spacing", + "description": "require or disallow spacing between function identifiers and their invocations", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "function-call-argument-newline", + "description": "enforce line breaks between arguments of a function call", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "function-paren-newline", + "description": "enforce consistent line breaks inside function parentheses", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "generator-star-spacing", + "description": "enforce consistent spacing around `*` operators in generator functions", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "implicit-arrow-linebreak", + "description": "enforce the location of arrow function bodies", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "indent", + "description": "enforce consistent indentation", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "jsx-quotes", + "description": "enforce the consistent use of either double or single quotes in JSX attributes", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "key-spacing", + "description": "enforce consistent spacing between keys and values in object literal properties", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "keyword-spacing", + "description": "enforce consistent spacing before and after keywords", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "line-comment-position", + "description": "enforce position of line comments", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "linebreak-style", + "description": "enforce consistent linebreak style", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "lines-around-comment", + "description": "require empty lines around comments", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "lines-between-class-members", + "description": "require or disallow an empty line between class members", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "max-len", + "description": "enforce a maximum line length", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "max-statements-per-line", + "description": "enforce a maximum number of statements allowed per line", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "multiline-ternary", + "description": "enforce newlines between operands of ternary expressions", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "new-parens", + "description": "enforce or disallow parentheses when invoking a constructor with no arguments", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "newline-per-chained-call", + "description": "require a newline after each call in a method chain", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-extra-parens", + "description": "disallow unnecessary parentheses", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-mixed-spaces-and-tabs", + "description": "disallow mixed spaces and tabs for indentation", + "recommended": true, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-multi-spaces", + "description": "disallow multiple spaces", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-multiple-empty-lines", + "description": "disallow multiple empty lines", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-tabs", + "description": "disallow all tabs", + "recommended": false, + "fixable": false, + "hasSuggestions": false + }, + { + "name": "no-trailing-spaces", + "description": "disallow trailing whitespace at the end of lines", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "no-whitespace-before-property", + "description": "disallow whitespace before properties", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "nonblock-statement-body-position", + "description": "enforce the location of single-line statements", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "object-curly-newline", + "description": "enforce consistent line breaks after opening and before closing braces", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "object-curly-spacing", + "description": "enforce consistent spacing inside braces", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "object-property-newline", + "description": "enforce placing object properties on separate lines", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "operator-linebreak", + "description": "enforce consistent linebreak style for operators", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "padded-blocks", + "description": "require or disallow padding within blocks", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "padding-line-between-statements", + "description": "require or disallow padding lines between statements", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "quotes", + "description": "enforce the consistent use of either backticks, double, or single quotes", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "rest-spread-spacing", + "description": "enforce spacing between rest and spread operators and their expressions", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "semi", + "description": "require or disallow semicolons instead of ASI", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "semi-spacing", + "description": "enforce consistent spacing before and after semicolons", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "semi-style", + "description": "enforce location of semicolons", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "space-before-blocks", + "description": "enforce consistent spacing before blocks", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "space-before-function-paren", + "description": "enforce consistent spacing before `function` definition opening parenthesis", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "space-in-parens", + "description": "enforce consistent spacing inside parentheses", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "space-infix-ops", + "description": "require spacing around infix operators", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "space-unary-ops", + "description": "enforce consistent spacing before or after unary operators", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "switch-colon-spacing", + "description": "enforce spacing around colons of switch statements", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "template-curly-spacing", + "description": "require or disallow spacing around embedded expressions of template strings", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "template-tag-spacing", + "description": "require or disallow spacing between template tags and their literals", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "unicode-bom", + "description": "require or disallow Unicode byte order mark (BOM)", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "wrap-iife", + "description": "require parentheses around immediate `function` invocations", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "wrap-regex", + "description": "require parenthesis around regex literals", + "recommended": false, + "fixable": true, + "hasSuggestions": false + }, + { + "name": "yield-star-spacing", + "description": "require or disallow spacing around the `*` in `yield*` expressions", + "recommended": false, + "fixable": true, + "hasSuggestions": false + } + ] } - ] + ], + "deprecated": { + "name": "Deprecated", + "description": "These rules have been deprecated in accordance with the deprecation policy, and replaced by newer rules:", + "rules": [ + { + "name": "callback-return", + "replacedBy": [] + }, + { + "name": "global-require", + "replacedBy": [] + }, + { + "name": "handle-callback-err", + "replacedBy": [] + }, + { + "name": "id-blacklist", + "replacedBy": [ + "id-denylist" + ] + }, + { + "name": "indent-legacy", + "replacedBy": [ + "indent" + ] + }, + { + "name": "lines-around-directive", + "replacedBy": [ + "padding-line-between-statements" + ] + }, + { + "name": "newline-after-var", + "replacedBy": [ + "padding-line-between-statements" + ] + }, + { + "name": "newline-before-return", + "replacedBy": [ + "padding-line-between-statements" + ] + }, + { + "name": "no-buffer-constructor", + "replacedBy": [] + }, + { + "name": "no-catch-shadow", + "replacedBy": [ + "no-shadow" + ] + }, + { + "name": "no-mixed-requires", + "replacedBy": [] + }, + { + "name": "no-native-reassign", + "replacedBy": [ + "no-global-assign" + ] + }, + { + "name": "no-negated-in-lhs", + "replacedBy": [ + "no-unsafe-negation" + ] + }, + { + "name": "no-new-require", + "replacedBy": [] + }, + { + "name": "no-path-concat", + "replacedBy": [] + }, + { + "name": "no-process-env", + "replacedBy": [] + }, + { + "name": "no-process-exit", + "replacedBy": [] + }, + { + "name": "no-restricted-modules", + "replacedBy": [] + }, + { + "name": "no-spaced-func", + "replacedBy": [ + "func-call-spacing" + ] + }, + { + "name": "no-sync", + "replacedBy": [] + }, + { + "name": "prefer-reflect", + "replacedBy": [] + }, + { + "name": "require-jsdoc", + "replacedBy": [] + }, + { + "name": "valid-jsdoc", + "replacedBy": [] + } + ] }, - { - "description": "These rules care about how the code looks rather than how it executes:", - "displayName": "Layout & Formatting", - "name": "layout", - "rules": [ - { - "description": "enforce linebreaks after opening and before closing array brackets", - "fixable": true, - "hasSuggestions": false, - "name": "array-bracket-newline", - "recommended": false - }, - { - "description": "enforce consistent spacing inside array brackets", - "fixable": true, - "hasSuggestions": false, - "name": "array-bracket-spacing", - "recommended": false - }, - { - "description": "enforce line breaks after each array element", - "fixable": true, - "hasSuggestions": false, - "name": "array-element-newline", - "recommended": false - }, - { - "description": "require parentheses around arrow function arguments", - "fixable": true, - "hasSuggestions": false, - "name": "arrow-parens", - "recommended": false - }, - { - "description": "enforce consistent spacing before and after the arrow in arrow functions", - "fixable": true, - "hasSuggestions": false, - "name": "arrow-spacing", - "recommended": false - }, - { - "description": "disallow or enforce spaces inside of blocks after opening block and before closing block", - "fixable": true, - "hasSuggestions": false, - "name": "block-spacing", - "recommended": false - }, - { - "description": "enforce consistent brace style for blocks", - "fixable": true, - "hasSuggestions": false, - "name": "brace-style", - "recommended": false - }, - { - "description": "require or disallow trailing commas", - "fixable": true, - "hasSuggestions": false, - "name": "comma-dangle", - "recommended": false - }, - { - "description": "enforce consistent spacing before and after commas", - "fixable": true, - "hasSuggestions": false, - "name": "comma-spacing", - "recommended": false - }, - { - "description": "enforce consistent comma style", - "fixable": true, - "hasSuggestions": false, - "name": "comma-style", - "recommended": false - }, - { - "description": "enforce consistent spacing inside computed property brackets", - "fixable": true, - "hasSuggestions": false, - "name": "computed-property-spacing", - "recommended": false - }, - { - "description": "enforce consistent newlines before and after dots", - "fixable": true, - "hasSuggestions": false, - "name": "dot-location", - "recommended": false - }, - { - "description": "require or disallow newline at the end of files", - "fixable": true, - "hasSuggestions": false, - "name": "eol-last", - "recommended": false - }, - { - "description": "require or disallow spacing between function identifiers and their invocations", - "fixable": true, - "hasSuggestions": false, - "name": "func-call-spacing", - "recommended": false - }, - { - "description": "enforce line breaks between arguments of a function call", - "fixable": true, - "hasSuggestions": false, - "name": "function-call-argument-newline", - "recommended": false - }, - { - "description": "enforce consistent line breaks inside function parentheses", - "fixable": true, - "hasSuggestions": false, - "name": "function-paren-newline", - "recommended": false - }, - { - "description": "enforce consistent spacing around `*` operators in generator functions", - "fixable": true, - "hasSuggestions": false, - "name": "generator-star-spacing", - "recommended": false - }, - { - "description": "enforce the location of arrow function bodies", - "fixable": true, - "hasSuggestions": false, - "name": "implicit-arrow-linebreak", - "recommended": false - }, - { - "description": "enforce consistent indentation", - "fixable": true, - "hasSuggestions": false, - "name": "indent", - "recommended": false - }, - { - "description": "enforce the consistent use of either double or single quotes in JSX attributes", - "fixable": true, - "hasSuggestions": false, - "name": "jsx-quotes", - "recommended": false - }, - { - "description": "enforce consistent spacing between keys and values in object literal properties", - "fixable": true, - "hasSuggestions": false, - "name": "key-spacing", - "recommended": false - }, - { - "description": "enforce consistent spacing before and after keywords", - "fixable": true, - "hasSuggestions": false, - "name": "keyword-spacing", - "recommended": false - }, - { - "description": "enforce position of line comments", - "fixable": false, - "hasSuggestions": false, - "name": "line-comment-position", - "recommended": false - }, - { - "description": "enforce consistent linebreak style", - "fixable": true, - "hasSuggestions": false, - "name": "linebreak-style", - "recommended": false - }, - { - "description": "require empty lines around comments", - "fixable": true, - "hasSuggestions": false, - "name": "lines-around-comment", - "recommended": false - }, - { - "description": "require or disallow an empty line between class members", - "fixable": true, - "hasSuggestions": false, - "name": "lines-between-class-members", - "recommended": false - }, - { - "description": "enforce a maximum line length", - "fixable": false, - "hasSuggestions": false, - "name": "max-len", - "recommended": false - }, - { - "description": "enforce a maximum number of statements allowed per line", - "fixable": false, - "hasSuggestions": false, - "name": "max-statements-per-line", - "recommended": false - }, - { - "description": "enforce newlines between operands of ternary expressions", - "fixable": true, - "hasSuggestions": false, - "name": "multiline-ternary", - "recommended": false - }, - { - "description": "enforce or disallow parentheses when invoking a constructor with no arguments", - "fixable": true, - "hasSuggestions": false, - "name": "new-parens", - "recommended": false - }, - { - "description": "require a newline after each call in a method chain", - "fixable": true, - "hasSuggestions": false, - "name": "newline-per-chained-call", - "recommended": false - }, - { - "description": "disallow unnecessary parentheses", - "fixable": true, - "hasSuggestions": false, - "name": "no-extra-parens", - "recommended": false - }, - { - "description": "disallow mixed spaces and tabs for indentation", - "fixable": false, - "hasSuggestions": false, - "name": "no-mixed-spaces-and-tabs", - "recommended": true - }, - { - "description": "disallow multiple spaces", - "fixable": true, - "hasSuggestions": false, - "name": "no-multi-spaces", - "recommended": false - }, - { - "description": "disallow multiple empty lines", - "fixable": true, - "hasSuggestions": false, - "name": "no-multiple-empty-lines", - "recommended": false - }, - { - "description": "disallow all tabs", - "fixable": false, - "hasSuggestions": false, - "name": "no-tabs", - "recommended": false - }, - { - "description": "disallow trailing whitespace at the end of lines", - "fixable": true, - "hasSuggestions": false, - "name": "no-trailing-spaces", - "recommended": false - }, - { - "description": "disallow whitespace before properties", - "fixable": true, - "hasSuggestions": false, - "name": "no-whitespace-before-property", - "recommended": false - }, - { - "description": "enforce the location of single-line statements", - "fixable": true, - "hasSuggestions": false, - "name": "nonblock-statement-body-position", - "recommended": false - }, - { - "description": "enforce consistent line breaks after opening and before closing braces", - "fixable": true, - "hasSuggestions": false, - "name": "object-curly-newline", - "recommended": false - }, - { - "description": "enforce consistent spacing inside braces", - "fixable": true, - "hasSuggestions": false, - "name": "object-curly-spacing", - "recommended": false - }, - { - "description": "enforce placing object properties on separate lines", - "fixable": true, - "hasSuggestions": false, - "name": "object-property-newline", - "recommended": false - }, - { - "description": "enforce consistent linebreak style for operators", - "fixable": true, - "hasSuggestions": false, - "name": "operator-linebreak", - "recommended": false - }, - { - "description": "require or disallow padding within blocks", - "fixable": true, - "hasSuggestions": false, - "name": "padded-blocks", - "recommended": false - }, - { - "description": "require or disallow padding lines between statements", - "fixable": true, - "hasSuggestions": false, - "name": "padding-line-between-statements", - "recommended": false - }, - { - "description": "enforce the consistent use of either backticks, double, or single quotes", - "fixable": true, - "hasSuggestions": false, - "name": "quotes", - "recommended": false - }, - { - "description": "enforce spacing between rest and spread operators and their expressions", - "fixable": true, - "hasSuggestions": false, - "name": "rest-spread-spacing", - "recommended": false - }, - { - "description": "require or disallow semicolons instead of ASI", - "fixable": true, - "hasSuggestions": false, - "name": "semi", - "recommended": false - }, - { - "description": "enforce consistent spacing before and after semicolons", - "fixable": true, - "hasSuggestions": false, - "name": "semi-spacing", - "recommended": false - }, - { - "description": "enforce location of semicolons", - "fixable": true, - "hasSuggestions": false, - "name": "semi-style", - "recommended": false - }, - { - "description": "enforce consistent spacing before blocks", - "fixable": true, - "hasSuggestions": false, - "name": "space-before-blocks", - "recommended": false - }, - { - "description": "enforce consistent spacing before `function` definition opening parenthesis", - "fixable": true, - "hasSuggestions": false, - "name": "space-before-function-paren", - "recommended": false - }, - { - "description": "enforce consistent spacing inside parentheses", - "fixable": true, - "hasSuggestions": false, - "name": "space-in-parens", - "recommended": false - }, - { - "description": "require spacing around infix operators", - "fixable": true, - "hasSuggestions": false, - "name": "space-infix-ops", - "recommended": false - }, - { - "description": "enforce consistent spacing before or after unary operators", - "fixable": true, - "hasSuggestions": false, - "name": "space-unary-ops", - "recommended": false - }, - { - "description": "enforce spacing around colons of switch statements", - "fixable": true, - "hasSuggestions": false, - "name": "switch-colon-spacing", - "recommended": false - }, - { - "description": "require or disallow spacing around embedded expressions of template strings", - "fixable": true, - "hasSuggestions": false, - "name": "template-curly-spacing", - "recommended": false - }, - { - "description": "require or disallow spacing between template tags and their literals", - "fixable": true, - "hasSuggestions": false, - "name": "template-tag-spacing", - "recommended": false - }, - { - "description": "require or disallow Unicode byte order mark (BOM)", - "fixable": true, - "hasSuggestions": false, - "name": "unicode-bom", - "recommended": false - }, - { - "description": "require parentheses around immediate `function` invocations", - "fixable": true, - "hasSuggestions": false, - "name": "wrap-iife", - "recommended": false - }, - { - "description": "require parenthesis around regex literals", - "fixable": true, - "hasSuggestions": false, - "name": "wrap-regex", - "recommended": false - }, - { - "description": "require or disallow spacing around the `*` in `yield*` expressions", - "fixable": true, - "hasSuggestions": false, - "name": "yield-star-spacing", - "recommended": false - } - ] + "removed": { + "name": "Removed", + "description": "These rules from older versions of ESLint (before the deprecation policy existed) have been replaced by newer rules:", + "rules": [ + { + "removed": "generator-star", + "replacedBy": [ + "generator-star-spacing" + ] + }, + { + "removed": "global-strict", + "replacedBy": [ + "strict" + ] + }, + { + "removed": "no-arrow-condition", + "replacedBy": [ + "no-confusing-arrow", + "no-constant-condition" + ] + }, + { + "removed": "no-comma-dangle", + "replacedBy": [ + "comma-dangle" + ] + }, + { + "removed": "no-empty-class", + "replacedBy": [ + "no-empty-character-class" + ] + }, + { + "removed": "no-empty-label", + "replacedBy": [ + "no-labels" + ] + }, + { + "removed": "no-extra-strict", + "replacedBy": [ + "strict" + ] + }, + { + "removed": "no-reserved-keys", + "replacedBy": [ + "quote-props" + ] + }, + { + "removed": "no-space-before-semi", + "replacedBy": [ + "semi-spacing" + ] + }, + { + "removed": "no-wrap-func", + "replacedBy": [ + "no-extra-parens" + ] + }, + { + "removed": "space-after-function-name", + "replacedBy": [ + "space-before-function-paren" + ] + }, + { + "removed": "space-after-keywords", + "replacedBy": [ + "keyword-spacing" + ] + }, + { + "removed": "space-before-function-parentheses", + "replacedBy": [ + "space-before-function-paren" + ] + }, + { + "removed": "space-before-keywords", + "replacedBy": [ + "keyword-spacing" + ] + }, + { + "removed": "space-in-brackets", + "replacedBy": [ + "object-curly-spacing", + "array-bracket-spacing" + ] + }, + { + "removed": "space-return-throw-case", + "replacedBy": [ + "keyword-spacing" + ] + }, + { + "removed": "space-unary-word-ops", + "replacedBy": [ + "space-unary-ops" + ] + }, + { + "removed": "spaced-line-comment", + "replacedBy": [ + "spaced-comment" + ] + } + ] } - ] -} +} \ No newline at end of file diff --git a/docs/src/_data/rules_meta.json b/docs/src/_data/rules_meta.json new file mode 100644 index 00000000000..7984e561278 --- /dev/null +++ b/docs/src/_data/rules_meta.json @@ -0,0 +1,2487 @@ +{ + "accessor-pairs": { + "type": "suggestion", + "docs": { + "description": "enforce getter and setter pairs in objects and classes", + "recommended": false, + "url": "https://eslint.org/docs/rules/accessor-pairs" + } + }, + "array-bracket-newline": { + "type": "layout", + "docs": { + "description": "enforce linebreaks after opening and before closing array brackets", + "recommended": false, + "url": "https://eslint.org/docs/rules/array-bracket-newline" + }, + "fixable": "whitespace" + }, + "array-bracket-spacing": { + "type": "layout", + "docs": { + "description": "enforce consistent spacing inside array brackets", + "recommended": false, + "url": "https://eslint.org/docs/rules/array-bracket-spacing" + }, + "fixable": "whitespace" + }, + "array-callback-return": { + "type": "problem", + "docs": { + "description": "enforce `return` statements in callbacks of array methods", + "recommended": false, + "url": "https://eslint.org/docs/rules/array-callback-return" + } + }, + "array-element-newline": { + "type": "layout", + "docs": { + "description": "enforce line breaks after each array element", + "recommended": false, + "url": "https://eslint.org/docs/rules/array-element-newline" + }, + "fixable": "whitespace" + }, + "arrow-body-style": { + "type": "suggestion", + "docs": { + "description": "require braces around arrow function bodies", + "recommended": false, + "url": "https://eslint.org/docs/rules/arrow-body-style" + }, + "fixable": "code" + }, + "arrow-parens": { + "type": "layout", + "docs": { + "description": "require parentheses around arrow function arguments", + "recommended": false, + "url": "https://eslint.org/docs/rules/arrow-parens" + }, + "fixable": "code" + }, + "arrow-spacing": { + "type": "layout", + "docs": { + "description": "enforce consistent spacing before and after the arrow in arrow functions", + "recommended": false, + "url": "https://eslint.org/docs/rules/arrow-spacing" + }, + "fixable": "whitespace" + }, + "block-scoped-var": { + "type": "suggestion", + "docs": { + "description": "enforce the use of variables within the scope they are defined", + "recommended": false, + "url": "https://eslint.org/docs/rules/block-scoped-var" + } + }, + "block-spacing": { + "type": "layout", + "docs": { + "description": "disallow or enforce spaces inside of blocks after opening block and before closing block", + "recommended": false, + "url": "https://eslint.org/docs/rules/block-spacing" + }, + "fixable": "whitespace" + }, + "brace-style": { + "type": "layout", + "docs": { + "description": "enforce consistent brace style for blocks", + "recommended": false, + "url": "https://eslint.org/docs/rules/brace-style" + }, + "fixable": "whitespace" + }, + "callback-return": { + "deprecated": true, + "replacedBy": [], + "type": "suggestion", + "docs": { + "description": "require `return` statements after callbacks", + "recommended": false, + "url": "https://eslint.org/docs/rules/callback-return" + } + }, + "camelcase": { + "type": "suggestion", + "docs": { + "description": "enforce camelcase naming convention", + "recommended": false, + "url": "https://eslint.org/docs/rules/camelcase" + } + }, + "capitalized-comments": { + "type": "suggestion", + "docs": { + "description": "enforce or disallow capitalization of the first letter of a comment", + "recommended": false, + "url": "https://eslint.org/docs/rules/capitalized-comments" + }, + "fixable": "code" + }, + "class-methods-use-this": { + "type": "suggestion", + "docs": { + "description": "enforce that class methods utilize `this`", + "recommended": false, + "url": "https://eslint.org/docs/rules/class-methods-use-this" + } + }, + "comma-dangle": { + "type": "layout", + "docs": { + "description": "require or disallow trailing commas", + "recommended": false, + "url": "https://eslint.org/docs/rules/comma-dangle" + }, + "fixable": "code" + }, + "comma-spacing": { + "type": "layout", + "docs": { + "description": "enforce consistent spacing before and after commas", + "recommended": false, + "url": "https://eslint.org/docs/rules/comma-spacing" + }, + "fixable": "whitespace" + }, + "comma-style": { + "type": "layout", + "docs": { + "description": "enforce consistent comma style", + "recommended": false, + "url": "https://eslint.org/docs/rules/comma-style" + }, + "fixable": "code" + }, + "complexity": { + "type": "suggestion", + "docs": { + "description": "enforce a maximum cyclomatic complexity allowed in a program", + "recommended": false, + "url": "https://eslint.org/docs/rules/complexity" + } + }, + "computed-property-spacing": { + "type": "layout", + "docs": { + "description": "enforce consistent spacing inside computed property brackets", + "recommended": false, + "url": "https://eslint.org/docs/rules/computed-property-spacing" + }, + "fixable": "whitespace" + }, + "consistent-return": { + "type": "suggestion", + "docs": { + "description": "require `return` statements to either always or never specify values", + "recommended": false, + "url": "https://eslint.org/docs/rules/consistent-return" + } + }, + "consistent-this": { + "type": "suggestion", + "docs": { + "description": "enforce consistent naming when capturing the current execution context", + "recommended": false, + "url": "https://eslint.org/docs/rules/consistent-this" + } + }, + "constructor-super": { + "type": "problem", + "docs": { + "description": "require `super()` calls in constructors", + "recommended": true, + "url": "https://eslint.org/docs/rules/constructor-super" + } + }, + "curly": { + "type": "suggestion", + "docs": { + "description": "enforce consistent brace style for all control statements", + "recommended": false, + "url": "https://eslint.org/docs/rules/curly" + }, + "fixable": "code" + }, + "default-case": { + "type": "suggestion", + "docs": { + "description": "require `default` cases in `switch` statements", + "recommended": false, + "url": "https://eslint.org/docs/rules/default-case" + } + }, + "default-case-last": { + "type": "suggestion", + "docs": { + "description": "enforce default clauses in switch statements to be last", + "recommended": false, + "url": "https://eslint.org/docs/rules/default-case-last" + } + }, + "default-param-last": { + "type": "suggestion", + "docs": { + "description": "enforce default parameters to be last", + "recommended": false, + "url": "https://eslint.org/docs/rules/default-param-last" + } + }, + "dot-location": { + "type": "layout", + "docs": { + "description": "enforce consistent newlines before and after dots", + "recommended": false, + "url": "https://eslint.org/docs/rules/dot-location" + }, + "fixable": "code" + }, + "dot-notation": { + "type": "suggestion", + "docs": { + "description": "enforce dot notation whenever possible", + "recommended": false, + "url": "https://eslint.org/docs/rules/dot-notation" + }, + "fixable": "code" + }, + "eol-last": { + "type": "layout", + "docs": { + "description": "require or disallow newline at the end of files", + "recommended": false, + "url": "https://eslint.org/docs/rules/eol-last" + }, + "fixable": "whitespace" + }, + "eqeqeq": { + "type": "suggestion", + "docs": { + "description": "require the use of `===` and `!==`", + "recommended": false, + "url": "https://eslint.org/docs/rules/eqeqeq" + }, + "fixable": "code" + }, + "for-direction": { + "type": "problem", + "docs": { + "description": "enforce \"for\" loop update clause moving the counter in the right direction.", + "recommended": true, + "url": "https://eslint.org/docs/rules/for-direction" + }, + "fixable": null + }, + "func-call-spacing": { + "type": "layout", + "docs": { + "description": "require or disallow spacing between function identifiers and their invocations", + "recommended": false, + "url": "https://eslint.org/docs/rules/func-call-spacing" + }, + "fixable": "whitespace" + }, + "func-name-matching": { + "type": "suggestion", + "docs": { + "description": "require function names to match the name of the variable or property to which they are assigned", + "recommended": false, + "url": "https://eslint.org/docs/rules/func-name-matching" + } + }, + "func-names": { + "type": "suggestion", + "docs": { + "description": "require or disallow named `function` expressions", + "recommended": false, + "url": "https://eslint.org/docs/rules/func-names" + } + }, + "func-style": { + "type": "suggestion", + "docs": { + "description": "enforce the consistent use of either `function` declarations or expressions", + "recommended": false, + "url": "https://eslint.org/docs/rules/func-style" + } + }, + "function-call-argument-newline": { + "type": "layout", + "docs": { + "description": "enforce line breaks between arguments of a function call", + "recommended": false, + "url": "https://eslint.org/docs/rules/function-call-argument-newline" + }, + "fixable": "whitespace" + }, + "function-paren-newline": { + "type": "layout", + "docs": { + "description": "enforce consistent line breaks inside function parentheses", + "recommended": false, + "url": "https://eslint.org/docs/rules/function-paren-newline" + }, + "fixable": "whitespace" + }, + "generator-star-spacing": { + "type": "layout", + "docs": { + "description": "enforce consistent spacing around `*` operators in generator functions", + "recommended": false, + "url": "https://eslint.org/docs/rules/generator-star-spacing" + }, + "fixable": "whitespace" + }, + "getter-return": { + "type": "problem", + "docs": { + "description": "enforce `return` statements in getters", + "recommended": true, + "url": "https://eslint.org/docs/rules/getter-return" + }, + "fixable": null + }, + "global-require": { + "deprecated": true, + "replacedBy": [], + "type": "suggestion", + "docs": { + "description": "require `require()` calls to be placed at top-level module scope", + "recommended": false, + "url": "https://eslint.org/docs/rules/global-require" + } + }, + "grouped-accessor-pairs": { + "type": "suggestion", + "docs": { + "description": "require grouped accessor pairs in object literals and classes", + "recommended": false, + "url": "https://eslint.org/docs/rules/grouped-accessor-pairs" + } + }, + "guard-for-in": { + "type": "suggestion", + "docs": { + "description": "require `for-in` loops to include an `if` statement", + "recommended": false, + "url": "https://eslint.org/docs/rules/guard-for-in" + } + }, + "handle-callback-err": { + "deprecated": true, + "replacedBy": [], + "type": "suggestion", + "docs": { + "description": "require error handling in callbacks", + "recommended": false, + "url": "https://eslint.org/docs/rules/handle-callback-err" + } + }, + "id-blacklist": { + "deprecated": true, + "replacedBy": [ + "id-denylist" + ], + "type": "suggestion", + "docs": { + "description": "disallow specified identifiers", + "recommended": false, + "url": "https://eslint.org/docs/rules/id-blacklist" + } + }, + "id-denylist": { + "type": "suggestion", + "docs": { + "description": "disallow specified identifiers", + "recommended": false, + "url": "https://eslint.org/docs/rules/id-denylist" + } + }, + "id-length": { + "type": "suggestion", + "docs": { + "description": "enforce minimum and maximum identifier lengths", + "recommended": false, + "url": "https://eslint.org/docs/rules/id-length" + } + }, + "id-match": { + "type": "suggestion", + "docs": { + "description": "require identifiers to match a specified regular expression", + "recommended": false, + "url": "https://eslint.org/docs/rules/id-match" + } + }, + "implicit-arrow-linebreak": { + "type": "layout", + "docs": { + "description": "enforce the location of arrow function bodies", + "recommended": false, + "url": "https://eslint.org/docs/rules/implicit-arrow-linebreak" + }, + "fixable": "whitespace" + }, + "indent": { + "type": "layout", + "docs": { + "description": "enforce consistent indentation", + "recommended": false, + "url": "https://eslint.org/docs/rules/indent" + }, + "fixable": "whitespace" + }, + "indent-legacy": { + "type": "layout", + "docs": { + "description": "enforce consistent indentation", + "recommended": false, + "url": "https://eslint.org/docs/rules/indent-legacy" + }, + "deprecated": true, + "replacedBy": [ + "indent" + ], + "fixable": "whitespace" + }, + "init-declarations": { + "type": "suggestion", + "docs": { + "description": "require or disallow initialization in variable declarations", + "recommended": false, + "url": "https://eslint.org/docs/rules/init-declarations" + } + }, + "jsx-quotes": { + "type": "layout", + "docs": { + "description": "enforce the consistent use of either double or single quotes in JSX attributes", + "recommended": false, + "url": "https://eslint.org/docs/rules/jsx-quotes" + }, + "fixable": "whitespace" + }, + "key-spacing": { + "type": "layout", + "docs": { + "description": "enforce consistent spacing between keys and values in object literal properties", + "recommended": false, + "url": "https://eslint.org/docs/rules/key-spacing" + }, + "fixable": "whitespace" + }, + "keyword-spacing": { + "type": "layout", + "docs": { + "description": "enforce consistent spacing before and after keywords", + "recommended": false, + "url": "https://eslint.org/docs/rules/keyword-spacing" + }, + "fixable": "whitespace" + }, + "line-comment-position": { + "type": "layout", + "docs": { + "description": "enforce position of line comments", + "recommended": false, + "url": "https://eslint.org/docs/rules/line-comment-position" + } + }, + "linebreak-style": { + "type": "layout", + "docs": { + "description": "enforce consistent linebreak style", + "recommended": false, + "url": "https://eslint.org/docs/rules/linebreak-style" + }, + "fixable": "whitespace" + }, + "lines-around-comment": { + "type": "layout", + "docs": { + "description": "require empty lines around comments", + "recommended": false, + "url": "https://eslint.org/docs/rules/lines-around-comment" + }, + "fixable": "whitespace" + }, + "lines-around-directive": { + "type": "layout", + "docs": { + "description": "require or disallow newlines around directives", + "recommended": false, + "url": "https://eslint.org/docs/rules/lines-around-directive" + }, + "fixable": "whitespace", + "deprecated": true, + "replacedBy": [ + "padding-line-between-statements" + ] + }, + "lines-between-class-members": { + "type": "layout", + "docs": { + "description": "require or disallow an empty line between class members", + "recommended": false, + "url": "https://eslint.org/docs/rules/lines-between-class-members" + }, + "fixable": "whitespace" + }, + "max-classes-per-file": { + "type": "suggestion", + "docs": { + "description": "enforce a maximum number of classes per file", + "recommended": false, + "url": "https://eslint.org/docs/rules/max-classes-per-file" + } + }, + "max-depth": { + "type": "suggestion", + "docs": { + "description": "enforce a maximum depth that blocks can be nested", + "recommended": false, + "url": "https://eslint.org/docs/rules/max-depth" + } + }, + "max-len": { + "type": "layout", + "docs": { + "description": "enforce a maximum line length", + "recommended": false, + "url": "https://eslint.org/docs/rules/max-len" + } + }, + "max-lines": { + "type": "suggestion", + "docs": { + "description": "enforce a maximum number of lines per file", + "recommended": false, + "url": "https://eslint.org/docs/rules/max-lines" + } + }, + "max-lines-per-function": { + "type": "suggestion", + "docs": { + "description": "enforce a maximum number of lines of code in a function", + "recommended": false, + "url": "https://eslint.org/docs/rules/max-lines-per-function" + } + }, + "max-nested-callbacks": { + "type": "suggestion", + "docs": { + "description": "enforce a maximum depth that callbacks can be nested", + "recommended": false, + "url": "https://eslint.org/docs/rules/max-nested-callbacks" + } + }, + "max-params": { + "type": "suggestion", + "docs": { + "description": "enforce a maximum number of parameters in function definitions", + "recommended": false, + "url": "https://eslint.org/docs/rules/max-params" + } + }, + "max-statements": { + "type": "suggestion", + "docs": { + "description": "enforce a maximum number of statements allowed in function blocks", + "recommended": false, + "url": "https://eslint.org/docs/rules/max-statements" + } + }, + "max-statements-per-line": { + "type": "layout", + "docs": { + "description": "enforce a maximum number of statements allowed per line", + "recommended": false, + "url": "https://eslint.org/docs/rules/max-statements-per-line" + } + }, + "multiline-comment-style": { + "type": "suggestion", + "docs": { + "description": "enforce a particular style for multiline comments", + "recommended": false, + "url": "https://eslint.org/docs/rules/multiline-comment-style" + }, + "fixable": "whitespace" + }, + "multiline-ternary": { + "type": "layout", + "docs": { + "description": "enforce newlines between operands of ternary expressions", + "recommended": false, + "url": "https://eslint.org/docs/rules/multiline-ternary" + }, + "fixable": "whitespace" + }, + "new-cap": { + "type": "suggestion", + "docs": { + "description": "require constructor names to begin with a capital letter", + "recommended": false, + "url": "https://eslint.org/docs/rules/new-cap" + } + }, + "new-parens": { + "type": "layout", + "docs": { + "description": "enforce or disallow parentheses when invoking a constructor with no arguments", + "recommended": false, + "url": "https://eslint.org/docs/rules/new-parens" + }, + "fixable": "code" + }, + "newline-after-var": { + "type": "layout", + "docs": { + "description": "require or disallow an empty line after variable declarations", + "recommended": false, + "url": "https://eslint.org/docs/rules/newline-after-var" + }, + "fixable": "whitespace", + "deprecated": true, + "replacedBy": [ + "padding-line-between-statements" + ] + }, + "newline-before-return": { + "type": "layout", + "docs": { + "description": "require an empty line before `return` statements", + "recommended": false, + "url": "https://eslint.org/docs/rules/newline-before-return" + }, + "fixable": "whitespace", + "deprecated": true, + "replacedBy": [ + "padding-line-between-statements" + ] + }, + "newline-per-chained-call": { + "type": "layout", + "docs": { + "description": "require a newline after each call in a method chain", + "recommended": false, + "url": "https://eslint.org/docs/rules/newline-per-chained-call" + }, + "fixable": "whitespace" + }, + "no-alert": { + "type": "suggestion", + "docs": { + "description": "disallow the use of `alert`, `confirm`, and `prompt`", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-alert" + } + }, + "no-array-constructor": { + "type": "suggestion", + "docs": { + "description": "disallow `Array` constructors", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-array-constructor" + } + }, + "no-async-promise-executor": { + "type": "problem", + "docs": { + "description": "disallow using an async function as a Promise executor", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-async-promise-executor" + }, + "fixable": null + }, + "no-await-in-loop": { + "type": "problem", + "docs": { + "description": "disallow `await` inside of loops", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-await-in-loop" + } + }, + "no-bitwise": { + "type": "suggestion", + "docs": { + "description": "disallow bitwise operators", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-bitwise" + } + }, + "no-buffer-constructor": { + "deprecated": true, + "replacedBy": [], + "type": "problem", + "docs": { + "description": "disallow use of the `Buffer()` constructor", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-buffer-constructor" + } + }, + "no-caller": { + "type": "suggestion", + "docs": { + "description": "disallow the use of `arguments.caller` or `arguments.callee`", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-caller" + } + }, + "no-case-declarations": { + "type": "suggestion", + "docs": { + "description": "disallow lexical declarations in case clauses", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-case-declarations" + } + }, + "no-catch-shadow": { + "type": "suggestion", + "docs": { + "description": "disallow `catch` clause parameters from shadowing variables in the outer scope", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-catch-shadow" + }, + "replacedBy": [ + "no-shadow" + ], + "deprecated": true + }, + "no-class-assign": { + "type": "problem", + "docs": { + "description": "disallow reassigning class members", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-class-assign" + } + }, + "no-compare-neg-zero": { + "type": "problem", + "docs": { + "description": "disallow comparing against -0", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-compare-neg-zero" + }, + "fixable": null + }, + "no-cond-assign": { + "type": "problem", + "docs": { + "description": "disallow assignment operators in conditional expressions", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-cond-assign" + } + }, + "no-confusing-arrow": { + "type": "suggestion", + "docs": { + "description": "disallow arrow functions where they could be confused with comparisons", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-confusing-arrow" + }, + "fixable": "code" + }, + "no-console": { + "type": "suggestion", + "docs": { + "description": "disallow the use of `console`", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-console" + } + }, + "no-const-assign": { + "type": "problem", + "docs": { + "description": "disallow reassigning `const` variables", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-const-assign" + } + }, + "no-constant-binary-expression": { + "type": "problem", + "docs": { + "description": "disallow expressions where the operation doesn't affect the value", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-constant-binary-expression" + } + }, + "no-constant-condition": { + "type": "problem", + "docs": { + "description": "disallow constant expressions in conditions", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-constant-condition" + } + }, + "no-constructor-return": { + "type": "problem", + "docs": { + "description": "disallow returning value from constructor", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-constructor-return" + }, + "fixable": null + }, + "no-continue": { + "type": "suggestion", + "docs": { + "description": "disallow `continue` statements", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-continue" + } + }, + "no-control-regex": { + "type": "problem", + "docs": { + "description": "disallow control characters in regular expressions", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-control-regex" + } + }, + "no-debugger": { + "type": "problem", + "docs": { + "description": "disallow the use of `debugger`", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-debugger" + }, + "fixable": null + }, + "no-delete-var": { + "type": "suggestion", + "docs": { + "description": "disallow deleting variables", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-delete-var" + } + }, + "no-div-regex": { + "type": "suggestion", + "docs": { + "description": "disallow division operators explicitly at the beginning of regular expressions", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-div-regex" + }, + "fixable": "code" + }, + "no-dupe-args": { + "type": "problem", + "docs": { + "description": "disallow duplicate arguments in `function` definitions", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-dupe-args" + } + }, + "no-dupe-class-members": { + "type": "problem", + "docs": { + "description": "disallow duplicate class members", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-dupe-class-members" + } + }, + "no-dupe-else-if": { + "type": "problem", + "docs": { + "description": "disallow duplicate conditions in if-else-if chains", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-dupe-else-if" + } + }, + "no-dupe-keys": { + "type": "problem", + "docs": { + "description": "disallow duplicate keys in object literals", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-dupe-keys" + } + }, + "no-duplicate-case": { + "type": "problem", + "docs": { + "description": "disallow duplicate case labels", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-duplicate-case" + } + }, + "no-duplicate-imports": { + "type": "problem", + "docs": { + "description": "disallow duplicate module imports", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-duplicate-imports" + } + }, + "no-else-return": { + "type": "suggestion", + "docs": { + "description": "disallow `else` blocks after `return` statements in `if` statements", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-else-return" + }, + "fixable": "code" + }, + "no-empty": { + "type": "suggestion", + "docs": { + "description": "disallow empty block statements", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-empty" + } + }, + "no-empty-character-class": { + "type": "problem", + "docs": { + "description": "disallow empty character classes in regular expressions", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-empty-character-class" + } + }, + "no-empty-function": { + "type": "suggestion", + "docs": { + "description": "disallow empty functions", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-empty-function" + } + }, + "no-empty-pattern": { + "type": "problem", + "docs": { + "description": "disallow empty destructuring patterns", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-empty-pattern" + } + }, + "no-eq-null": { + "type": "suggestion", + "docs": { + "description": "disallow `null` comparisons without type-checking operators", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-eq-null" + } + }, + "no-eval": { + "type": "suggestion", + "docs": { + "description": "disallow the use of `eval()`", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-eval" + } + }, + "no-ex-assign": { + "type": "problem", + "docs": { + "description": "disallow reassigning exceptions in `catch` clauses", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-ex-assign" + } + }, + "no-extend-native": { + "type": "suggestion", + "docs": { + "description": "disallow extending native types", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-extend-native" + } + }, + "no-extra-bind": { + "type": "suggestion", + "docs": { + "description": "disallow unnecessary calls to `.bind()`", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-extra-bind" + }, + "fixable": "code" + }, + "no-extra-boolean-cast": { + "type": "suggestion", + "docs": { + "description": "disallow unnecessary boolean casts", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-extra-boolean-cast" + }, + "fixable": "code" + }, + "no-extra-label": { + "type": "suggestion", + "docs": { + "description": "disallow unnecessary labels", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-extra-label" + }, + "fixable": "code" + }, + "no-extra-parens": { + "type": "layout", + "docs": { + "description": "disallow unnecessary parentheses", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-extra-parens" + }, + "fixable": "code" + }, + "no-extra-semi": { + "type": "suggestion", + "docs": { + "description": "disallow unnecessary semicolons", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-extra-semi" + }, + "fixable": "code" + }, + "no-fallthrough": { + "type": "problem", + "docs": { + "description": "disallow fallthrough of `case` statements", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-fallthrough" + } + }, + "no-floating-decimal": { + "type": "suggestion", + "docs": { + "description": "disallow leading or trailing decimal points in numeric literals", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-floating-decimal" + }, + "fixable": "code" + }, + "no-func-assign": { + "type": "problem", + "docs": { + "description": "disallow reassigning `function` declarations", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-func-assign" + } + }, + "no-global-assign": { + "type": "suggestion", + "docs": { + "description": "disallow assignments to native objects or read-only global variables", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-global-assign" + } + }, + "no-implicit-coercion": { + "type": "suggestion", + "docs": { + "description": "disallow shorthand type conversions", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-implicit-coercion" + }, + "fixable": "code" + }, + "no-implicit-globals": { + "type": "suggestion", + "docs": { + "description": "disallow declarations in the global scope", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-implicit-globals" + } + }, + "no-implied-eval": { + "type": "suggestion", + "docs": { + "description": "disallow the use of `eval()`-like methods", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-implied-eval" + } + }, + "no-import-assign": { + "type": "problem", + "docs": { + "description": "disallow assigning to imported bindings", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-import-assign" + } + }, + "no-inline-comments": { + "type": "suggestion", + "docs": { + "description": "disallow inline comments after code", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-inline-comments" + } + }, + "no-inner-declarations": { + "type": "problem", + "docs": { + "description": "disallow variable or `function` declarations in nested blocks", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-inner-declarations" + } + }, + "no-invalid-regexp": { + "type": "problem", + "docs": { + "description": "disallow invalid regular expression strings in `RegExp` constructors", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-invalid-regexp" + } + }, + "no-invalid-this": { + "type": "suggestion", + "docs": { + "description": "disallow use of `this` in contexts where the value of `this` is `undefined`", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-invalid-this" + } + }, + "no-irregular-whitespace": { + "type": "problem", + "docs": { + "description": "disallow irregular whitespace", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-irregular-whitespace" + } + }, + "no-iterator": { + "type": "suggestion", + "docs": { + "description": "disallow the use of the `__iterator__` property", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-iterator" + } + }, + "no-label-var": { + "type": "suggestion", + "docs": { + "description": "disallow labels that share a name with a variable", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-label-var" + } + }, + "no-labels": { + "type": "suggestion", + "docs": { + "description": "disallow labeled statements", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-labels" + } + }, + "no-lone-blocks": { + "type": "suggestion", + "docs": { + "description": "disallow unnecessary nested blocks", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-lone-blocks" + } + }, + "no-lonely-if": { + "type": "suggestion", + "docs": { + "description": "disallow `if` statements as the only statement in `else` blocks", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-lonely-if" + }, + "fixable": "code" + }, + "no-loop-func": { + "type": "suggestion", + "docs": { + "description": "disallow function declarations that contain unsafe references inside loop statements", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-loop-func" + } + }, + "no-loss-of-precision": { + "type": "problem", + "docs": { + "description": "disallow literal numbers that lose precision", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-loss-of-precision" + } + }, + "no-magic-numbers": { + "type": "suggestion", + "docs": { + "description": "disallow magic numbers", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-magic-numbers" + } + }, + "no-misleading-character-class": { + "type": "problem", + "docs": { + "description": "disallow characters which are made with multiple code points in character class syntax", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-misleading-character-class" + }, + "hasSuggestions": true + }, + "no-mixed-operators": { + "type": "suggestion", + "docs": { + "description": "disallow mixed binary operators", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-mixed-operators" + } + }, + "no-mixed-requires": { + "deprecated": true, + "replacedBy": [], + "type": "suggestion", + "docs": { + "description": "disallow `require` calls to be mixed with regular variable declarations", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-mixed-requires" + } + }, + "no-mixed-spaces-and-tabs": { + "type": "layout", + "docs": { + "description": "disallow mixed spaces and tabs for indentation", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-mixed-spaces-and-tabs" + } + }, + "no-multi-assign": { + "type": "suggestion", + "docs": { + "description": "disallow use of chained assignment expressions", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-multi-assign" + } + }, + "no-multi-spaces": { + "type": "layout", + "docs": { + "description": "disallow multiple spaces", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-multi-spaces" + }, + "fixable": "whitespace" + }, + "no-multi-str": { + "type": "suggestion", + "docs": { + "description": "disallow multiline strings", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-multi-str" + } + }, + "no-multiple-empty-lines": { + "type": "layout", + "docs": { + "description": "disallow multiple empty lines", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-multiple-empty-lines" + }, + "fixable": "whitespace" + }, + "no-native-reassign": { + "type": "suggestion", + "docs": { + "description": "disallow assignments to native objects or read-only global variables", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-native-reassign" + }, + "deprecated": true, + "replacedBy": [ + "no-global-assign" + ] + }, + "no-negated-condition": { + "type": "suggestion", + "docs": { + "description": "disallow negated conditions", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-negated-condition" + } + }, + "no-negated-in-lhs": { + "type": "problem", + "docs": { + "description": "disallow negating the left operand in `in` expressions", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-negated-in-lhs" + }, + "replacedBy": [ + "no-unsafe-negation" + ], + "deprecated": true + }, + "no-nested-ternary": { + "type": "suggestion", + "docs": { + "description": "disallow nested ternary expressions", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-nested-ternary" + } + }, + "no-new": { + "type": "suggestion", + "docs": { + "description": "disallow `new` operators outside of assignments or comparisons", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-new" + } + }, + "no-new-func": { + "type": "suggestion", + "docs": { + "description": "disallow `new` operators with the `Function` object", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-new-func" + } + }, + "no-new-object": { + "type": "suggestion", + "docs": { + "description": "disallow `Object` constructors", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-new-object" + } + }, + "no-new-require": { + "deprecated": true, + "replacedBy": [], + "type": "suggestion", + "docs": { + "description": "disallow `new` operators with calls to `require`", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-new-require" + } + }, + "no-new-symbol": { + "type": "problem", + "docs": { + "description": "disallow `new` operators with the `Symbol` object", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-new-symbol" + } + }, + "no-new-wrappers": { + "type": "suggestion", + "docs": { + "description": "disallow `new` operators with the `String`, `Number`, and `Boolean` objects", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-new-wrappers" + } + }, + "no-nonoctal-decimal-escape": { + "type": "suggestion", + "docs": { + "description": "disallow `\\8` and `\\9` escape sequences in string literals", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-nonoctal-decimal-escape" + }, + "hasSuggestions": true + }, + "no-obj-calls": { + "type": "problem", + "docs": { + "description": "disallow calling global object properties as functions", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-obj-calls" + } + }, + "no-octal": { + "type": "suggestion", + "docs": { + "description": "disallow octal literals", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-octal" + } + }, + "no-octal-escape": { + "type": "suggestion", + "docs": { + "description": "disallow octal escape sequences in string literals", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-octal-escape" + } + }, + "no-param-reassign": { + "type": "suggestion", + "docs": { + "description": "disallow reassigning `function` parameters", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-param-reassign" + } + }, + "no-path-concat": { + "deprecated": true, + "replacedBy": [], + "type": "suggestion", + "docs": { + "description": "disallow string concatenation with `__dirname` and `__filename`", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-path-concat" + } + }, + "no-plusplus": { + "type": "suggestion", + "docs": { + "description": "disallow the unary operators `++` and `--`", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-plusplus" + } + }, + "no-process-env": { + "deprecated": true, + "replacedBy": [], + "type": "suggestion", + "docs": { + "description": "disallow the use of `process.env`", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-process-env" + } + }, + "no-process-exit": { + "deprecated": true, + "replacedBy": [], + "type": "suggestion", + "docs": { + "description": "disallow the use of `process.exit()`", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-process-exit" + } + }, + "no-promise-executor-return": { + "type": "problem", + "docs": { + "description": "disallow returning values from Promise executor functions", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-promise-executor-return" + } + }, + "no-proto": { + "type": "suggestion", + "docs": { + "description": "disallow the use of the `__proto__` property", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-proto" + } + }, + "no-prototype-builtins": { + "type": "problem", + "docs": { + "description": "disallow calling some `Object.prototype` methods directly on objects", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-prototype-builtins" + } + }, + "no-redeclare": { + "type": "suggestion", + "docs": { + "description": "disallow variable redeclaration", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-redeclare" + } + }, + "no-regex-spaces": { + "type": "suggestion", + "docs": { + "description": "disallow multiple spaces in regular expressions", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-regex-spaces" + }, + "fixable": "code" + }, + "no-restricted-exports": { + "type": "suggestion", + "docs": { + "description": "disallow specified names in exports", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-restricted-exports" + } + }, + "no-restricted-globals": { + "type": "suggestion", + "docs": { + "description": "disallow specified global variables", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-restricted-globals" + } + }, + "no-restricted-imports": { + "type": "suggestion", + "docs": { + "description": "disallow specified modules when loaded by `import`", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-restricted-imports" + } + }, + "no-restricted-modules": { + "deprecated": true, + "replacedBy": [], + "type": "suggestion", + "docs": { + "description": "disallow specified modules when loaded by `require`", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-restricted-modules" + } + }, + "no-restricted-properties": { + "type": "suggestion", + "docs": { + "description": "disallow certain properties on certain objects", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-restricted-properties" + } + }, + "no-restricted-syntax": { + "type": "suggestion", + "docs": { + "description": "disallow specified syntax", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-restricted-syntax" + } + }, + "no-return-assign": { + "type": "suggestion", + "docs": { + "description": "disallow assignment operators in `return` statements", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-return-assign" + } + }, + "no-return-await": { + "type": "suggestion", + "docs": { + "description": "disallow unnecessary `return await`", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-return-await" + }, + "fixable": null + }, + "no-script-url": { + "type": "suggestion", + "docs": { + "description": "disallow `javascript:` urls", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-script-url" + } + }, + "no-self-assign": { + "type": "problem", + "docs": { + "description": "disallow assignments where both sides are exactly the same", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-self-assign" + } + }, + "no-self-compare": { + "type": "problem", + "docs": { + "description": "disallow comparisons where both sides are exactly the same", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-self-compare" + } + }, + "no-sequences": { + "type": "suggestion", + "docs": { + "description": "disallow comma operators", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-sequences" + } + }, + "no-setter-return": { + "type": "problem", + "docs": { + "description": "disallow returning values from setters", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-setter-return" + } + }, + "no-shadow": { + "type": "suggestion", + "docs": { + "description": "disallow variable declarations from shadowing variables declared in the outer scope", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-shadow" + } + }, + "no-shadow-restricted-names": { + "type": "suggestion", + "docs": { + "description": "disallow identifiers from shadowing restricted names", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-shadow-restricted-names" + } + }, + "no-spaced-func": { + "type": "layout", + "docs": { + "description": "disallow spacing between function identifiers and their applications (deprecated)", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-spaced-func" + }, + "deprecated": true, + "replacedBy": [ + "func-call-spacing" + ], + "fixable": "whitespace" + }, + "no-sparse-arrays": { + "type": "problem", + "docs": { + "description": "disallow sparse arrays", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-sparse-arrays" + } + }, + "no-sync": { + "deprecated": true, + "replacedBy": [], + "type": "suggestion", + "docs": { + "description": "disallow synchronous methods", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-sync" + } + }, + "no-tabs": { + "type": "layout", + "docs": { + "description": "disallow all tabs", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-tabs" + } + }, + "no-template-curly-in-string": { + "type": "problem", + "docs": { + "description": "disallow template literal placeholder syntax in regular strings", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-template-curly-in-string" + } + }, + "no-ternary": { + "type": "suggestion", + "docs": { + "description": "disallow ternary operators", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-ternary" + } + }, + "no-this-before-super": { + "type": "problem", + "docs": { + "description": "disallow `this`/`super` before calling `super()` in constructors", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-this-before-super" + } + }, + "no-throw-literal": { + "type": "suggestion", + "docs": { + "description": "disallow throwing literals as exceptions", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-throw-literal" + } + }, + "no-trailing-spaces": { + "type": "layout", + "docs": { + "description": "disallow trailing whitespace at the end of lines", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-trailing-spaces" + }, + "fixable": "whitespace" + }, + "no-undef": { + "type": "problem", + "docs": { + "description": "disallow the use of undeclared variables unless mentioned in `/*global */` comments", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-undef" + } + }, + "no-undef-init": { + "type": "suggestion", + "docs": { + "description": "disallow initializing variables to `undefined`", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-undef-init" + }, + "fixable": "code" + }, + "no-undefined": { + "type": "suggestion", + "docs": { + "description": "disallow the use of `undefined` as an identifier", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-undefined" + } + }, + "no-underscore-dangle": { + "type": "suggestion", + "docs": { + "description": "disallow dangling underscores in identifiers", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-underscore-dangle" + } + }, + "no-unexpected-multiline": { + "type": "problem", + "docs": { + "description": "disallow confusing multiline expressions", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-unexpected-multiline" + } + }, + "no-unmodified-loop-condition": { + "type": "problem", + "docs": { + "description": "disallow unmodified loop conditions", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-unmodified-loop-condition" + } + }, + "no-unneeded-ternary": { + "type": "suggestion", + "docs": { + "description": "disallow ternary operators when simpler alternatives exist", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-unneeded-ternary" + }, + "fixable": "code" + }, + "no-unreachable": { + "type": "problem", + "docs": { + "description": "disallow unreachable code after `return`, `throw`, `continue`, and `break` statements", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-unreachable" + } + }, + "no-unreachable-loop": { + "type": "problem", + "docs": { + "description": "disallow loops with a body that allows only one iteration", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-unreachable-loop" + } + }, + "no-unsafe-finally": { + "type": "problem", + "docs": { + "description": "disallow control flow statements in `finally` blocks", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-unsafe-finally" + } + }, + "no-unsafe-negation": { + "type": "problem", + "docs": { + "description": "disallow negating the left operand of relational operators", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-unsafe-negation" + }, + "hasSuggestions": true, + "fixable": null + }, + "no-unsafe-optional-chaining": { + "type": "problem", + "docs": { + "description": "disallow use of optional chaining in contexts where the `undefined` value is not allowed", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-unsafe-optional-chaining" + }, + "fixable": null + }, + "no-unused-expressions": { + "type": "suggestion", + "docs": { + "description": "disallow unused expressions", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-unused-expressions" + } + }, + "no-unused-labels": { + "type": "suggestion", + "docs": { + "description": "disallow unused labels", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-unused-labels" + }, + "fixable": "code" + }, + "no-unused-private-class-members": { + "type": "problem", + "docs": { + "description": "disallow unused private class members", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-unused-private-class-members" + } + }, + "no-unused-vars": { + "type": "problem", + "docs": { + "description": "disallow unused variables", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-unused-vars" + } + }, + "no-use-before-define": { + "type": "problem", + "docs": { + "description": "disallow the use of variables before they are defined", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-use-before-define" + } + }, + "no-useless-backreference": { + "type": "problem", + "docs": { + "description": "disallow useless backreferences in regular expressions", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-useless-backreference" + } + }, + "no-useless-call": { + "type": "suggestion", + "docs": { + "description": "disallow unnecessary calls to `.call()` and `.apply()`", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-useless-call" + } + }, + "no-useless-catch": { + "type": "suggestion", + "docs": { + "description": "disallow unnecessary `catch` clauses", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-useless-catch" + } + }, + "no-useless-computed-key": { + "type": "suggestion", + "docs": { + "description": "disallow unnecessary computed property keys in objects and classes", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-useless-computed-key" + }, + "fixable": "code" + }, + "no-useless-concat": { + "type": "suggestion", + "docs": { + "description": "disallow unnecessary concatenation of literals or template literals", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-useless-concat" + } + }, + "no-useless-constructor": { + "type": "suggestion", + "docs": { + "description": "disallow unnecessary constructors", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-useless-constructor" + } + }, + "no-useless-escape": { + "type": "suggestion", + "docs": { + "description": "disallow unnecessary escape characters", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-useless-escape" + }, + "hasSuggestions": true + }, + "no-useless-rename": { + "type": "suggestion", + "docs": { + "description": "disallow renaming import, export, and destructured assignments to the same name", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-useless-rename" + }, + "fixable": "code" + }, + "no-useless-return": { + "type": "suggestion", + "docs": { + "description": "disallow redundant return statements", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-useless-return" + }, + "fixable": "code" + }, + "no-var": { + "type": "suggestion", + "docs": { + "description": "require `let` or `const` instead of `var`", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-var" + }, + "fixable": "code" + }, + "no-void": { + "type": "suggestion", + "docs": { + "description": "disallow `void` operators", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-void" + } + }, + "no-warning-comments": { + "type": "suggestion", + "docs": { + "description": "disallow specified warning terms in comments", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-warning-comments" + } + }, + "no-whitespace-before-property": { + "type": "layout", + "docs": { + "description": "disallow whitespace before properties", + "recommended": false, + "url": "https://eslint.org/docs/rules/no-whitespace-before-property" + }, + "fixable": "whitespace" + }, + "no-with": { + "type": "suggestion", + "docs": { + "description": "disallow `with` statements", + "recommended": true, + "url": "https://eslint.org/docs/rules/no-with" + } + }, + "nonblock-statement-body-position": { + "type": "layout", + "docs": { + "description": "enforce the location of single-line statements", + "recommended": false, + "url": "https://eslint.org/docs/rules/nonblock-statement-body-position" + }, + "fixable": "whitespace" + }, + "object-curly-newline": { + "type": "layout", + "docs": { + "description": "enforce consistent line breaks after opening and before closing braces", + "recommended": false, + "url": "https://eslint.org/docs/rules/object-curly-newline" + }, + "fixable": "whitespace" + }, + "object-curly-spacing": { + "type": "layout", + "docs": { + "description": "enforce consistent spacing inside braces", + "recommended": false, + "url": "https://eslint.org/docs/rules/object-curly-spacing" + }, + "fixable": "whitespace" + }, + "object-property-newline": { + "type": "layout", + "docs": { + "description": "enforce placing object properties on separate lines", + "recommended": false, + "url": "https://eslint.org/docs/rules/object-property-newline" + }, + "fixable": "whitespace" + }, + "object-shorthand": { + "type": "suggestion", + "docs": { + "description": "require or disallow method and property shorthand syntax for object literals", + "recommended": false, + "url": "https://eslint.org/docs/rules/object-shorthand" + }, + "fixable": "code" + }, + "one-var": { + "type": "suggestion", + "docs": { + "description": "enforce variables to be declared either together or separately in functions", + "recommended": false, + "url": "https://eslint.org/docs/rules/one-var" + }, + "fixable": "code" + }, + "one-var-declaration-per-line": { + "type": "suggestion", + "docs": { + "description": "require or disallow newlines around variable declarations", + "recommended": false, + "url": "https://eslint.org/docs/rules/one-var-declaration-per-line" + }, + "fixable": "whitespace" + }, + "operator-assignment": { + "type": "suggestion", + "docs": { + "description": "require or disallow assignment operator shorthand where possible", + "recommended": false, + "url": "https://eslint.org/docs/rules/operator-assignment" + }, + "fixable": "code" + }, + "operator-linebreak": { + "type": "layout", + "docs": { + "description": "enforce consistent linebreak style for operators", + "recommended": false, + "url": "https://eslint.org/docs/rules/operator-linebreak" + }, + "fixable": "code" + }, + "padded-blocks": { + "type": "layout", + "docs": { + "description": "require or disallow padding within blocks", + "recommended": false, + "url": "https://eslint.org/docs/rules/padded-blocks" + }, + "fixable": "whitespace" + }, + "padding-line-between-statements": { + "type": "layout", + "docs": { + "description": "require or disallow padding lines between statements", + "recommended": false, + "url": "https://eslint.org/docs/rules/padding-line-between-statements" + }, + "fixable": "whitespace" + }, + "prefer-arrow-callback": { + "type": "suggestion", + "docs": { + "description": "require using arrow functions for callbacks", + "recommended": false, + "url": "https://eslint.org/docs/rules/prefer-arrow-callback" + }, + "fixable": "code" + }, + "prefer-const": { + "type": "suggestion", + "docs": { + "description": "require `const` declarations for variables that are never reassigned after declared", + "recommended": false, + "url": "https://eslint.org/docs/rules/prefer-const" + }, + "fixable": "code" + }, + "prefer-destructuring": { + "type": "suggestion", + "docs": { + "description": "require destructuring from arrays and/or objects", + "recommended": false, + "url": "https://eslint.org/docs/rules/prefer-destructuring" + }, + "fixable": "code" + }, + "prefer-exponentiation-operator": { + "type": "suggestion", + "docs": { + "description": "disallow the use of `Math.pow` in favor of the `**` operator", + "recommended": false, + "url": "https://eslint.org/docs/rules/prefer-exponentiation-operator" + }, + "fixable": "code" + }, + "prefer-named-capture-group": { + "type": "suggestion", + "docs": { + "description": "enforce using named capture group in regular expression", + "recommended": false, + "url": "https://eslint.org/docs/rules/prefer-named-capture-group" + } + }, + "prefer-numeric-literals": { + "type": "suggestion", + "docs": { + "description": "disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and hexadecimal literals", + "recommended": false, + "url": "https://eslint.org/docs/rules/prefer-numeric-literals" + }, + "fixable": "code" + }, + "prefer-object-has-own": { + "type": "suggestion", + "docs": { + "description": "disallow use of `Object.prototype.hasOwnProperty.call()` and prefer use of `Object.hasOwn()`", + "recommended": false, + "url": "https://eslint.org/docs/rules/prefer-object-has-own" + }, + "fixable": "code" + }, + "prefer-object-spread": { + "type": "suggestion", + "docs": { + "description": "disallow using Object.assign with an object literal as the first argument and prefer the use of object spread instead.", + "recommended": false, + "url": "https://eslint.org/docs/rules/prefer-object-spread" + }, + "fixable": "code" + }, + "prefer-promise-reject-errors": { + "type": "suggestion", + "docs": { + "description": "require using Error objects as Promise rejection reasons", + "recommended": false, + "url": "https://eslint.org/docs/rules/prefer-promise-reject-errors" + }, + "fixable": null + }, + "prefer-reflect": { + "type": "suggestion", + "docs": { + "description": "require `Reflect` methods where applicable", + "recommended": false, + "url": "https://eslint.org/docs/rules/prefer-reflect" + }, + "deprecated": true, + "replacedBy": [] + }, + "prefer-regex-literals": { + "type": "suggestion", + "docs": { + "description": "disallow use of the `RegExp` constructor in favor of regular expression literals", + "recommended": false, + "url": "https://eslint.org/docs/rules/prefer-regex-literals" + }, + "hasSuggestions": true + }, + "prefer-rest-params": { + "type": "suggestion", + "docs": { + "description": "require rest parameters instead of `arguments`", + "recommended": false, + "url": "https://eslint.org/docs/rules/prefer-rest-params" + } + }, + "prefer-spread": { + "type": "suggestion", + "docs": { + "description": "require spread operators instead of `.apply()`", + "recommended": false, + "url": "https://eslint.org/docs/rules/prefer-spread" + }, + "fixable": null + }, + "prefer-template": { + "type": "suggestion", + "docs": { + "description": "require template literals instead of string concatenation", + "recommended": false, + "url": "https://eslint.org/docs/rules/prefer-template" + }, + "fixable": "code" + }, + "quote-props": { + "type": "suggestion", + "docs": { + "description": "require quotes around object literal property names", + "recommended": false, + "url": "https://eslint.org/docs/rules/quote-props" + }, + "fixable": "code" + }, + "quotes": { + "type": "layout", + "docs": { + "description": "enforce the consistent use of either backticks, double, or single quotes", + "recommended": false, + "url": "https://eslint.org/docs/rules/quotes" + }, + "fixable": "code" + }, + "radix": { + "type": "suggestion", + "docs": { + "description": "enforce the consistent use of the radix argument when using `parseInt()`", + "recommended": false, + "url": "https://eslint.org/docs/rules/radix" + }, + "hasSuggestions": true + }, + "require-atomic-updates": { + "type": "problem", + "docs": { + "description": "disallow assignments that can lead to race conditions due to usage of `await` or `yield`", + "recommended": false, + "url": "https://eslint.org/docs/rules/require-atomic-updates" + }, + "fixable": null + }, + "require-await": { + "type": "suggestion", + "docs": { + "description": "disallow async functions which have no `await` expression", + "recommended": false, + "url": "https://eslint.org/docs/rules/require-await" + } + }, + "require-jsdoc": { + "type": "suggestion", + "docs": { + "description": "require JSDoc comments", + "recommended": false, + "url": "https://eslint.org/docs/rules/require-jsdoc" + }, + "deprecated": true, + "replacedBy": [] + }, + "require-unicode-regexp": { + "type": "suggestion", + "docs": { + "description": "enforce the use of `u` flag on RegExp", + "recommended": false, + "url": "https://eslint.org/docs/rules/require-unicode-regexp" + } + }, + "require-yield": { + "type": "suggestion", + "docs": { + "description": "require generator functions to contain `yield`", + "recommended": true, + "url": "https://eslint.org/docs/rules/require-yield" + } + }, + "rest-spread-spacing": { + "type": "layout", + "docs": { + "description": "enforce spacing between rest and spread operators and their expressions", + "recommended": false, + "url": "https://eslint.org/docs/rules/rest-spread-spacing" + }, + "fixable": "whitespace" + }, + "semi": { + "type": "layout", + "docs": { + "description": "require or disallow semicolons instead of ASI", + "recommended": false, + "url": "https://eslint.org/docs/rules/semi" + }, + "fixable": "code" + }, + "semi-spacing": { + "type": "layout", + "docs": { + "description": "enforce consistent spacing before and after semicolons", + "recommended": false, + "url": "https://eslint.org/docs/rules/semi-spacing" + }, + "fixable": "whitespace" + }, + "semi-style": { + "type": "layout", + "docs": { + "description": "enforce location of semicolons", + "recommended": false, + "url": "https://eslint.org/docs/rules/semi-style" + }, + "fixable": "whitespace" + }, + "sort-imports": { + "type": "suggestion", + "docs": { + "description": "enforce sorted import declarations within modules", + "recommended": false, + "url": "https://eslint.org/docs/rules/sort-imports" + }, + "fixable": "code" + }, + "sort-keys": { + "type": "suggestion", + "docs": { + "description": "require object keys to be sorted", + "recommended": false, + "url": "https://eslint.org/docs/rules/sort-keys" + } + }, + "sort-vars": { + "type": "suggestion", + "docs": { + "description": "require variables within the same declaration block to be sorted", + "recommended": false, + "url": "https://eslint.org/docs/rules/sort-vars" + }, + "fixable": "code" + }, + "space-before-blocks": { + "type": "layout", + "docs": { + "description": "enforce consistent spacing before blocks", + "recommended": false, + "url": "https://eslint.org/docs/rules/space-before-blocks" + }, + "fixable": "whitespace" + }, + "space-before-function-paren": { + "type": "layout", + "docs": { + "description": "enforce consistent spacing before `function` definition opening parenthesis", + "recommended": false, + "url": "https://eslint.org/docs/rules/space-before-function-paren" + }, + "fixable": "whitespace" + }, + "space-in-parens": { + "type": "layout", + "docs": { + "description": "enforce consistent spacing inside parentheses", + "recommended": false, + "url": "https://eslint.org/docs/rules/space-in-parens" + }, + "fixable": "whitespace" + }, + "space-infix-ops": { + "type": "layout", + "docs": { + "description": "require spacing around infix operators", + "recommended": false, + "url": "https://eslint.org/docs/rules/space-infix-ops" + }, + "fixable": "whitespace" + }, + "space-unary-ops": { + "type": "layout", + "docs": { + "description": "enforce consistent spacing before or after unary operators", + "recommended": false, + "url": "https://eslint.org/docs/rules/space-unary-ops" + }, + "fixable": "whitespace" + }, + "spaced-comment": { + "type": "suggestion", + "docs": { + "description": "enforce consistent spacing after the `//` or `/*` in a comment", + "recommended": false, + "url": "https://eslint.org/docs/rules/spaced-comment" + }, + "fixable": "whitespace" + }, + "strict": { + "type": "suggestion", + "docs": { + "description": "require or disallow strict mode directives", + "recommended": false, + "url": "https://eslint.org/docs/rules/strict" + }, + "fixable": "code" + }, + "switch-colon-spacing": { + "type": "layout", + "docs": { + "description": "enforce spacing around colons of switch statements", + "recommended": false, + "url": "https://eslint.org/docs/rules/switch-colon-spacing" + }, + "fixable": "whitespace" + }, + "symbol-description": { + "type": "suggestion", + "docs": { + "description": "require symbol descriptions", + "recommended": false, + "url": "https://eslint.org/docs/rules/symbol-description" + }, + "fixable": null + }, + "template-curly-spacing": { + "type": "layout", + "docs": { + "description": "require or disallow spacing around embedded expressions of template strings", + "recommended": false, + "url": "https://eslint.org/docs/rules/template-curly-spacing" + }, + "fixable": "whitespace" + }, + "template-tag-spacing": { + "type": "layout", + "docs": { + "description": "require or disallow spacing between template tags and their literals", + "recommended": false, + "url": "https://eslint.org/docs/rules/template-tag-spacing" + }, + "fixable": "whitespace" + }, + "unicode-bom": { + "type": "layout", + "docs": { + "description": "require or disallow Unicode byte order mark (BOM)", + "recommended": false, + "url": "https://eslint.org/docs/rules/unicode-bom" + }, + "fixable": "whitespace" + }, + "use-isnan": { + "type": "problem", + "docs": { + "description": "require calls to `isNaN()` when checking for `NaN`", + "recommended": true, + "url": "https://eslint.org/docs/rules/use-isnan" + } + }, + "valid-jsdoc": { + "type": "suggestion", + "docs": { + "description": "enforce valid JSDoc comments", + "recommended": false, + "url": "https://eslint.org/docs/rules/valid-jsdoc" + }, + "fixable": "code", + "deprecated": true, + "replacedBy": [] + }, + "valid-typeof": { + "type": "problem", + "docs": { + "description": "enforce comparing `typeof` expressions against valid strings", + "recommended": true, + "url": "https://eslint.org/docs/rules/valid-typeof" + }, + "hasSuggestions": true + }, + "vars-on-top": { + "type": "suggestion", + "docs": { + "description": "require `var` declarations be placed at the top of their containing scope", + "recommended": false, + "url": "https://eslint.org/docs/rules/vars-on-top" + } + }, + "wrap-iife": { + "type": "layout", + "docs": { + "description": "require parentheses around immediate `function` invocations", + "recommended": false, + "url": "https://eslint.org/docs/rules/wrap-iife" + }, + "fixable": "code" + }, + "wrap-regex": { + "type": "layout", + "docs": { + "description": "require parenthesis around regex literals", + "recommended": false, + "url": "https://eslint.org/docs/rules/wrap-regex" + }, + "fixable": "code" + }, + "yield-star-spacing": { + "type": "layout", + "docs": { + "description": "require or disallow spacing around the `*` in `yield*` expressions", + "recommended": false, + "url": "https://eslint.org/docs/rules/yield-star-spacing" + }, + "fixable": "whitespace" + }, + "yoda": { + "type": "suggestion", + "docs": { + "description": "require or disallow \"Yoda\" conditions", + "recommended": false, + "url": "https://eslint.org/docs/rules/yoda" + }, + "fixable": "code" + } +} \ No newline at end of file diff --git a/docs/src/_includes/components/rule-categories.macro.html b/docs/src/_includes/components/rule-categories.macro.html index bdccc0fe40e..d8531c2b579 100644 --- a/docs/src/_includes/components/rule-categories.macro.html +++ b/docs/src/_includes/components/rule-categories.macro.html @@ -1,19 +1,19 @@ {%- macro ruleCategories(params) -%} -
+
{%- if params.recommended == true -%}
Recommended

- if the "extends": "eslint:recommended" property in a configuration file enables the rule + The "extends": "eslint:recommended" property in a configuration file enables this rule

{%- endif -%} - {%- if params.fixable == true -%} + {%- if params.fixable -%}
🛠 Fixable

- if some problems reported by the rule are automatically fixable by the --fix command line option + Some problems reported by this rule are automatically fixable by the --fix command line option

{%- endif -%} @@ -21,7 +21,7 @@
💡 hasSuggestions

- if some problems reported by the rule are manually fixable by editor suggestions + Some problems reported by this rule are manually fixable by editor suggestions

{%- endif -%} diff --git a/docs/src/_includes/layouts/doc.html b/docs/src/_includes/layouts/doc.html index 608d68cfcfc..ce012a8a38d 100644 --- a/docs/src/_includes/layouts/doc.html +++ b/docs/src/_includes/layouts/doc.html @@ -3,6 +3,7 @@ --- {% include "partials/docs-header.html" %} +{% from 'components/rule-categories.macro.html' import ruleCategories %}
@@ -12,8 +13,10 @@ {% include 'components/docs-index.html' %}
- {# Add in related rules and further reading sections to content so TOC is accurate #} + {# Add in various sections to content so TOC is accurate #} {% set all_content = content %} + {% set rule_meta = rules_meta[title] %} + {% if related_rules %} {% set related_rules_content %} @@ -34,7 +37,7 @@

Further Reading

{% set all_content = [all_content, further_reading_content] | join %} {% endif %} - {% if rule_type %} + {% if rule_meta %} {% set resources_content %}

Resources

    @@ -49,7 +52,17 @@

    Resources

    {{ title }}

    + {% if rule_meta %} +

    {{ rule_meta.docs.description | markdown | safe }}

    + {{ ruleCategories({ + recommended: rule_meta.docs.recommended, + fixable: rule_meta.fixable, + hasSuggestions: rule_meta.hasSuggestions + }) }} + {% endif %} + {% include 'components/docs-toc.html' %} + {{ all_content | safe }}
    diff --git a/docs/src/pages/rules.md b/docs/src/pages/rules.md index 22ce383f2eb..2edf31a446b 100644 --- a/docs/src/pages/rules.md +++ b/docs/src/pages/rules.md @@ -15,6 +15,7 @@ eleventyNavigation: Rules in ESLint are grouped by type to help you understand their purpose. Each rule has emojis denoting: {{ ruleCategories({ + index: true, recommended: true, fixable: true, hasSuggestions: true