Enforce getter and setter pairs in objects and classes
Enforce `return` statements in callbacks of array methods
Enforce the use of variables within the scope they are defined
Require `super()` calls in constructors
Enforce default clauses in switch statements to be last
Enforce dot notation whenever possible
Require the use of `===` and `!==`
Enforce "for" loop update clause moving the counter in the right direction
Enforce `return` statements in getters
Require constructor names to begin with a capital letter
Disallow the use of `alert`, `confirm`, and `prompt`
Disallow `Array` constructors
Disallow using an async function as a Promise executor
Disallow the use of `arguments.caller` or `arguments.callee`
Disallow lexical declarations in case clauses
Disallow reassigning class members
Disallow comparing against -0
Disallow assignment operators in conditional expressions
Disallow the use of `console`
Disallow reassigning `const` variables
Disallow expressions where the operation doesn't affect the value
Disallow constant expressions in conditions
Disallow control characters in regular expressions
Disallow the use of `debugger`
Disallow deleting variables
Disallow duplicate arguments in `function` definitions
Disallow duplicate class members
Disallow duplicate keys in object literals
Disallow duplicate case labels
Disallow empty block statements
Disallow empty character classes in regular expressions
Disallow empty destructuring patterns
Disallow the use of `eval()`
Disallow reassigning exceptions in `catch` clauses
Disallow extending native types
Disallow unnecessary calls to `.bind()`
Disallow unnecessary boolean casts
Disallow fallthrough of `case` statements
Disallow reassigning `function` declarations
Disallow assignments to native objects or read-only global variables
Disallow the use of `eval()`-like methods
Disallow assigning to imported bindings
Disallow invalid regular expression strings in `RegExp` constructors
Disallow irregular whitespace
Disallow the use of the `__iterator__` property
Disallow labeled statements
Disallow unnecessary nested blocks
Disallow literal numbers that lose precision
Disallow characters which are made with multiple code points in character class syntax
Disallow multiline strings
Disallow `new` operators outside of assignments or comparisons
Disallow `new` operators with the `Function` object
Disallow `new` operators with global non-constructor functions
Disallow `new` operators with the `String`, `Number`, and `Boolean` objects
Disallow calling global object properties as functions
Disallow calls to the `Object` constructor without an argument
Disallow octal literals
Disallow octal escape sequences in string literals
Disallow the use of the `__proto__` property
Disallow calling some `Object.prototype` methods directly on objects
Disallow variable redeclaration
Disallow multiple spaces in regular expressions
Disallow specified global variables
Disallow certain properties on certain objects
Disallow specified syntax
Disallow assignments where both sides are exactly the same
Disallow comparisons where both sides are exactly the same
Disallow comma operators
Disallow returning values from setters
Disallow identifiers from shadowing restricted names
Disallow sparse arrays
Disallow template literal placeholder syntax in regular strings
Disallow `this`/`super` before calling `super()` in constructors
Disallow throwing literals as exceptions
Disallow the use of undeclared variables unless mentioned in `/*global */` comments
Disallow initializing variables to `undefined`
Disallow confusing multiline expressions
Disallow unmodified loop conditions
Disallow ternary operators when simpler alternatives exist
Disallow unreachable code after `return`, `throw`, `continue`, and `break` statements
Disallow loops with a body that allows only one iteration
Disallow control flow statements in `finally` blocks
Disallow negating the left operand of relational operators
Disallow unused expressions
Disallow unused variables
Disallow the use of variables before they are defined
Disallow useless backreferences in regular expressions
Disallow unnecessary calls to `.call()` and `.apply()`
Disallow unnecessary `catch` clauses
Disallow unnecessary computed property keys in objects and classes
Disallow unnecessary constructors
Disallow renaming import, export, and destructured assignments to the same name
Disallow redundant return statements
Require `let` or `const` instead of `var`
Disallow `with` statements
Require or disallow method and property shorthand syntax for object literals
Enforce variables to be declared either together or separately in functions
Require using arrow functions for callbacks
Require `const` declarations for variables that are never reassigned after declared
Disallow the use of `Math.pow` in favor of the `**` operator
Disallow use of the `RegExp` constructor in favor of regular expression literals
Require rest parameters instead of `arguments`
Require spread operators instead of `.apply()`
Require template literals instead of string concatenation
Disallow async functions which have no `await` expression
Require generator functions to contain `yield`
Require symbol descriptions
Require or disallow Unicode byte order mark (BOM)
Require calls to `isNaN()` when checking for `NaN`
Enforce comparing `typeof` expressions against valid strings
Require `var` declarations be placed at the top of their containing scope
Require or disallow "Yoda" conditions
Disallow unused variables
Disallow unused variables
Disallow a `eslint-enable` comment for multiple `eslint-disable` comments
Disallow duplicate `eslint-disable` comments
Disallow `eslint-disable` comments without rule names
Disallow unused `eslint-enable` comments
Require error handling in callbacks
Disallow deprecated APIs
Disallow the assignment to `exports`
Disallow `new` operators with calls to `require`
Disallow string concatenation with `__dirname` and `__filename`
Disallow unsupported ECMAScript built-ins on the specified version
Enforce either `Buffer` or `require("buffer").Buffer`
Enforce either `process` or `require("process")`
Require that `process.exit()` expressions use the same code path as `throw`
Checks that `@access` tags have a valid value.
Reports invalid alignment of JSDoc block asterisks.
Ensures that parameter names in JSDoc match those in the function declaration.
Ensures that property names in JSDoc are not duplicated on the same block and that nested properties have defined roots.
Reports invalid types.
Expects specific tags to be empty of any content.
Reports an issue with any non-constructor function using `@implements`.
Controls how and whether jsdoc blocks can be expressed as single or multiple line blocks.
This rule reports defaults being used on the relevant portion of `@param` or `@default`.
Requires that all function parameters have names.
Requires that all `@typedef` and `@namespace` tags have `@property` when their type is a plain `object`, `Object`, or `PlainObject`.
Requires that each `@property` tag has a `description` value.
Requires that all function `@property` tags have names.
Requires a return statement in function body if a `@returns` tag is specified in jsdoc comment.
Requires that the `@returns` tag has a `description` value.
Requires a yield statement in function body if a `@yields` tag is specified in jsdoc comment.
Having line breaks styles to object, array and named imports
Having line breaks styles to object, array and named imports
Enforce Anthony's style of curly bracket
Newline after if
Fix duplication in imports
Prevent importing modules in `dist` folder
Prevent importing modules in `node_modules` folder by relative or absolute path
Enforce top-level functions to be declared with function keyword
Forbid the use of mutable exports with `var` or `let`.
Forbid a module from importing itself.
Forbid named default exports.
Forbid repeated import of the same module in multiple places.
Ensure all imports appear before other statements.
Forbid webpack loader syntax in imports.
Enforce a newline after import statements.
Enforce a specific parameter name in catch clauses.
Prefer consistent types when spreading a ternary in an array literal.
Enforce correct `Error` subclassing.
Enforce passing a `message` value when creating a built-in error.
Require escape sequences to use uppercase values.
Enforce the use of `new` for all builtins, except `String`, `Number`, `Boolean`, `Symbol` and `BigInt`.
Disallow using the `this` argument in array methods.
Enforce combining multiple `Array#push()` into one call.
Disallow using `await` in `Promise` method parameters.
Do not use leading/trailing space between `console.log` parameters.
Do not use a `for` loop that can be replaced with a `for-of` loop.
Enforce the use of Unicode escapes instead of hexadecimal escapes.
Require `Array.isArray()` instead of `instanceof Array`.
Prevent calling `EventTarget#removeEventListener()` with the result of an expression.
Disallow using `.length` as the `end` argument of `{Array,String,TypedArray}#slice()`.
Disallow `if` statements as the only statement in `if` blocks without `else`.
Disallow `new Array()`.
Enforce the use of `Buffer.from()` and `Buffer.alloc()` instead of the deprecated `new Buffer()`.
Disallow passing single-element arrays to `Promise` methods.
Disallow classes that only have static members.
Disallow awaiting non-promise values.
Disallow number literals with zero fractions or dangling dots.
Prefer `.addEventListener()` and `.removeEventListener()` over `on`-functions.
Prefer `.find(…)` and `.findLast(…)` over the first or last element from `.filter(…)`.
Prefer `.flatMap(…)` over `.map(…).flat()`.
Prefer `Array#{indexOf,lastIndexOf}()` over `Array#{findIndex,findLastIndex}()` when looking for the index of an item.
Prefer `.some(…)` over `.filter(…).length` check and `.{find,findLast,findIndex,findLastIndex}(…)`.
Prefer `.at()` method for index access and `String#charAt()`.
Prefer `Blob#arrayBuffer()` over `FileReader#readAsArrayBuffer(…)` and `Blob#text()` over `FileReader#readAsText(…)`.
Prefer `Date.now()` to get the number of milliseconds since the Unix Epoch.
Prefer `Node#append()` over `Node#appendChild()`.
Prefer using `.dataset` on DOM elements over calling attribute methods.
Prefer `childNode.remove()` over `parentNode.removeChild(childNode)`.
Prefer `.textContent` over `.innerText`.
Prefer `.includes()` over `.indexOf()`, `.lastIndexOf()`, and `Array#some()` when checking for existence or non-existence.
Prefer `KeyboardEvent#key` over `KeyboardEvent#keyCode`.
Enforce the use of `Math.trunc` instead of bitwise operators.
Prefer `.before()` over `.insertBefore()`, `.replaceWith()` over `.replaceChild()`, prefer one of `.before()`, `.after()`, `.append()` or `.prepend()` over `insertAdjacentText()` and `insertAdjacentElement()`.
Prefer modern `Math` APIs over legacy patterns.
Prefer negative index over `.length - index` when possible.
Prefer using the `node:` protocol when importing Node.js builtin modules.
Prefer `Number` static properties over global ones.
Prefer omitting the `catch` binding parameter.
Prefer borrowing methods from the prototype instead of the instance.
Prefer `.querySelector()` over `.getElementById()`, `.querySelectorAll()` over `.getElementsByClassName()` and `.getElementsByTagName()`.
Prefer `Reflect.apply()` over `Function#apply()`.
Prefer `String#replaceAll()` over regex searches with the global flag.
Prefer `String#slice()` over `String#substr()` and `String#substring()`.
Prefer `String#startsWith()` & `String#endsWith()` over `RegExp#test()`.
Prefer `String#trimStart()` / `String#trimEnd()` over `String#trimLeft()` / `String#trimRight()`.
Enforce throwing `TypeError` in type checking conditions.
Require `new` when creating an error.
Comment-as-command for one-off codemod with ESLint
Enforce sorted named imports.
Enforce sorted named exports.
Enforce sorted imports.
Enforce sorted exports.
Enforce sorted objects.
Disallow `@ts-<directive>` comments or require descriptions after directives
Enforce type definitions to consistently use either `interface` or `type`
Enforce consistent usage of type imports
Require explicit return types on functions and class methods
Enforce using a particular method signature syntax
Disallow generic `Array` constructors
Disallow duplicate class members
Disallow duplicate enum member values
Disallow using the `delete` operator on computed key expressions
Disallow accidentally using the "empty object" type
Disallow the `any` type
Disallow extra non-null assertions
Disallow classes used as namespaces
Enforce the use of top-level import type qualifier when an import only has specifiers with inline type qualifiers
Disallow `void` type outside of generic or return types
Enforce valid definition of `new` and `constructor`
Disallow TypeScript namespaces
Disallow non-null assertions in the left operand of a nullish coalescing operator
Disallow non-null assertions after an optional chain expression
Disallow non-null assertions using the `!` postfix operator
Disallow variable redeclaration
Disallow invocation of `require()`
Disallow aliasing `this`
Disallow unnecessary constraints on generic types
Disallow unsafe declaration merging
Disallow using the unsafe built-in Function type
Disallow unused expressions
Disallow unused variables
Disallow the use of variables before they are defined
Disallow unnecessary constructors
Disallow using confusing built-in primitive class wrappers
Enforce the use of `as const` over literal type
Require all enum members to be literal values
Require using `namespace` keyword over `module` keyword to declare custom TypeScript modules
Disallow certain triple slash directives in favor of ES6-style import declarations
Disallow two overloads that could be unified into one with a union or an optional/rest parameter
Enforce consistent spacing inside array brackets
Require parentheses around arrow function arguments
Enforce consistent spacing before and after the arrow in arrow functions
Disallow or enforce spaces inside of blocks after opening block and before closing block
Enforce consistent brace style for blocks
Require or disallow trailing commas
Enforce consistent spacing before and after commas