diff --git a/Makefile.js b/Makefile.js
index e60d1b952e1..970b1bc10ed 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}`);
}
/**
@@ -786,6 +811,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