Enforce getter and setter pairs in objects and classes
Enforce `return` statements in callbacks of array methods
Require braces around arrow function bodies
Enforce the use of variables within the scope they are defined
Require `super()` calls in constructors
Enforce consistent brace style for all control statements
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
Enforce minimum and maximum identifier lengths
logical-assignment-operators
Require or disallow logical assignment operator shorthand
Enforce a maximum number of classes per file
Enforce a maximum depth that blocks can be nested
Enforce a maximum number of lines per file
Enforce a maximum number of lines of code in a function
Require constructor names to begin with a capital letter
Disallow the use of `alert`, `confirm`, and `prompt`
Disallow `Array` constructors
no-async-promise-executor
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`, `using`, and `await using` variables
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 `else` blocks after `return` statements in `if` statements
Disallow empty block statements
Disallow empty character classes in regular expressions
Disallow empty destructuring patterns
Disallow empty static blocks
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 inline comments after code
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 `if` statements as the only statement in `else` blocks
Disallow literal numbers that lose precision
no-misleading-character-class
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
no-new-native-nonconstructor
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 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 assignment operators in `return` statements
Disallow assignments where both sides are exactly the same
Disallow comparisons where both sides are exactly the same
Disallow returning values from setters
Disallow variable declarations from shadowing variables declared in the outer scope
no-shadow-restricted-names
Disallow identifiers from shadowing restricted names
no-template-curly-in-string
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
no-unmodified-loop-condition
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
no-unsafe-optional-chaining
Disallow use of optional chaining in contexts where the `undefined` value is not allowed
Disallow unused expressions
no-unused-private-class-members
Disallow unused private class members
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
Require destructuring from arrays and/or objects
prefer-exponentiation-operator
Disallow the use of `Math.pow` in favor of the `**` operator
prefer-promise-reject-errors
Require using Error objects as Promise rejection reasons
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
Require or disallow strict mode directives
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
comment-length / limit-single-line-comments
Reflows single-line comments to ensure that blocks never exceed the configured length
eslint-comments / disable-enable-pair
Require a `eslint-enable` comment for every `eslint-disable` comment
eslint-comments / no-aggregating-enable
Disallow a `eslint-enable` comment for multiple `eslint-disable` comments
eslint-comments / no-duplicate-disable
Disallow duplicate `eslint-disable` comments
eslint-comments / no-unlimited-disable
Disallow `eslint-disable` comments without rule names
eslint-comments / no-unused-enable
Disallow unused `eslint-enable` comments
eslint-comments / require-description
Require include descriptions in ESLint directive-comments
style / array-bracket-newline
Enforce linebreaks after opening and before closing array brackets
style / array-bracket-spacing
Enforce consistent spacing inside array brackets
style / array-element-newline
Enforce line breaks after each array element
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
Enforce consistent comma style
style / computed-property-spacing
Enforce consistent spacing inside computed property brackets
Enforce consistent newlines before and after dots
Require or disallow newline at the end of files
Require or disallow spacing between function identifiers and their invocations
style / function-call-argument-newline
Enforce line breaks between arguments of a function call
style / function-call-spacing
Require or disallow spacing between function identifiers and their invocations
style / function-paren-newline
Enforce consistent line breaks inside function parentheses
style / generator-star-spacing
Enforce consistent spacing around `*` operators in generator functions
style / implicit-arrow-linebreak
Enforce the location of arrow function bodies
Enforce consistent indentation
Indentation for binary operators
style / jsx-child-element-spacing
Enforce or disallow spaces inside of curly braces in JSX attributes and expressions
style / jsx-closing-bracket-location
Enforce closing bracket location in JSX
style / jsx-closing-tag-location
Enforce closing tag location for multiline JSX
style / jsx-curly-brace-presence
Disallow unnecessary JSX expressions when literals alone are sufficient or enforce JSX expressions on literals in JSX children or attributes
Enforce consistent linebreaks in curly braces in JSX attributes and expressions
Enforce or disallow spaces inside of curly braces in JSX attributes and expressions
Enforce or disallow spaces around equal signs in JSX attributes
style / jsx-first-prop-new-line
Enforce proper position of the first property in JSX
style / jsx-function-call-newline
Enforce line breaks before and after JSX elements when they are used as arguments to a function.
Enforce props indentation in JSX
style / jsx-max-props-per-line
Enforce maximum of props on a single line in JSX
Require or prevent a new line after jsx elements and expressions.
style / jsx-one-expression-per-line
Require one JSX element per line
style / jsx-props-no-multi-spaces
Disallow multiple spaces between inline JSX props
Enforce the consistent use of either double or single quotes in JSX attributes
style / jsx-self-closing-comp
Disallow extra closing tags for components without children
Enforce props alphabetical sorting
Enforce whitespace in and around the JSX opening and closing brackets
style / jsx-wrap-multilines
Disallow missing parentheses around multiline JSX
Enforce consistent spacing between property names and type annotations in types and interfaces
Enforce consistent spacing before and after keywords
Enforce consistent linebreak style
style / lines-around-comment
Require empty lines around comments
style / lines-between-class-members
Require or disallow an empty line between class members
Enforce a maximum line length
style / max-statements-per-line
Enforce a maximum number of statements allowed per line
style / member-delimiter-style
Require a specific member delimiter style for interfaces and type literals
style / multiline-comment-style
Enforce a particular style for multiline comments
Enforce newlines between operands of ternary expressions
Enforce or disallow parentheses when invoking a constructor with no arguments
style / newline-per-chained-call
Require a newline after each call in a method chain
Disallow arrow functions where they could be confused with comparisons
Disallow unnecessary parentheses
Disallow unnecessary semicolons
style / no-floating-decimal
Disallow leading or trailing decimal points in numeric literals
Disallow mixed binary operators
style / no-mixed-spaces-and-tabs
Disallow mixed spaces and tabs for indentation
style / no-multiple-empty-lines
Disallow multiple empty lines
Disallow trailing whitespace at the end of lines
style / no-whitespace-before-property
Disallow whitespace before properties
style / nonblock-statement-body-position
Enforce the location of single-line statements
style / object-curly-newline
Enforce consistent line breaks after opening and before closing braces
style / object-curly-spacing
Enforce consistent spacing inside braces
style / object-property-newline
Enforce placing object properties on separate lines
style / one-var-declaration-per-line
Require or disallow newlines around variable declarations
Enforce consistent linebreak style for operators
Require or disallow padding within blocks
style / padding-line-between-statements
Require or disallow padding lines between statements
Require quotes around object literal, type literal, interfaces and enums property names
Enforce the consistent use of either backticks, double, or single quotes
style / rest-spread-spacing
Enforce spacing between rest and spread operators and their expressions
Require or disallow semicolons instead of ASI
Enforce consistent spacing before and after semicolons
Enforce location of semicolons
style / space-before-blocks
Enforce consistent spacing before blocks
style / space-before-function-paren
Enforce consistent spacing before function parenthesis
Enforce consistent spacing inside parentheses
Require spacing around infix operators
Enforce consistent spacing before or after unary operators
Enforce consistent spacing after the `//` or `/*` in a comment
style / switch-colon-spacing
Enforce spacing around colons of switch statements
style / template-curly-spacing
Require or disallow spacing around embedded expressions of template strings
style / template-tag-spacing
Require or disallow spacing between template tags and their literals
style / type-annotation-spacing
Require consistent spacing around type annotations
style / type-generic-spacing
Enforces consistent spacing inside TypeScript type generics
style / type-named-tuple-spacing
Expect space before the type declaration in the named tuple
Require parentheses around immediate `function` invocations
Require parenthesis around regex literals
Require or disallow spacing around the `*` in `yield*` expressions
antfu / consistent-list-newline
Having line breaks styles to object, array and named imports
Fix duplication in imports
Prevent importing modules in `dist` folder
antfu / no-import-node-modules-by-path
Prevent importing modules in `node_modules` folder by relative or absolute path
Prevent using top-level await
Enforce top-level functions to be declared with function keyword
Ensure all imports appear before other statements.
import / newline-after-import
Enforce a newline after import statements.
Forbid repeated import of the same module in multiple places.
import / no-mutable-exports
Forbid the use of mutable exports with `var` or `let`.
Forbid named default exports.
package-json / no-empty-fields
Reports on unnecessary empty arrays and objects.
package-json / no-redundant-files
Prevents adding unnecessary / redundant files.
package-json / order-properties
Package properties must be declared in standard order
package-json / require-author
Requires the `author` property to be present.
package-json / require-description
Requires the `description` property to be present.
package-json / require-files
Requires the `files` property to be present.
package-json / require-keywords
Requires the `keywords` property to be present.
package-json / require-name
Requires the `name` property to be present.
package-json / require-type
Requires the `type` property to be present.
package-json / require-types
Requires the `types` property to be present.
package-json / require-version
Requires the `version` property to be present.
package-json / repository-shorthand
Enforce either object or shorthand declaration for repository.
package-json / sort-collections
Selected collections must be in a consistent order (lexicographical for most; lifecycle-aware for scripts).
package-json / unique-dependencies
Checks a dependency isn't specified more than once (i.e. in `dependencies` and `devDependencies`)
package-json / valid-author
Enforce that the `author` property is valid.
package-json / valid-bundleDependencies
Enforce that the `bundleDependencies` (also: `bundledDependencies`) property is valid.
package-json / valid-config
Enforce that the `config` property is valid.
Enforce that the `cpu` property is valid.
package-json / valid-directories
Enforce that the `directories` property is valid.
package-json / valid-exports
Enforce that the `exports` property is valid.
package-json / valid-license
Enforce that the `license` property is valid.
package-json / valid-scripts
Enforce that the `scripts` property is valid.
Enforce that the `type` property is valid.
Enforce that the `bin` property is valid.
Enforce that package names are valid npm package names
package-json / valid-package-definition
Enforce that package.json has all properties required by the npm spec
package-json / valid-repository-directory
Enforce that if repository directory is specified, it matches the path to the package.json file
package-json / valid-version
Enforce that package versions are valid semver specifiers
better-max-params / better-max-params
Set a max param number for your constructors, functions, methods etc.
de-morgan / no-negated-conjunction
Transforms the negation of a conjunction !(A && B) into the equivalent !A || !B according to De Morgan’s law
de-morgan / no-negated-disjunction
Transforms the negation of a disjunction !(A || B) into the equivalent !A && !B according to De Morgan’s law
unused-imports / no-unused-vars
Disallow unused variables
unused-imports / no-unused-imports
Disallow unused variables
Enforce consistent param names and ordering when creating new promises.
Disallow wrapping values in `Promise.resolve` or `Promise.reject` when not needed.
Require returning inside each `then()` to create readable and reusable Promise chains.
Enforce the use of `catch()` on un-returned promises.
promise / prefer-await-to-callbacks
Prefer `async`/`await` to the callback pattern.
promise / prefer-await-to-then
Prefer `await` to `then()`/`catch()`/`finally()` for reading Promise values.
Require creating a `Promise` constructor before using it in an ES5 environment.
promise / no-callback-in-promise
Disallow calling `cb()` inside of a `then()` (use [util.callbackify][] instead).
promise / no-promise-in-callback
Disallow using promises inside of callbacks.
Disallow nested `then()` or `catch()` statements.
Disallow creating `new` promises outside of utility libs (use [util.promisify][] instead).
Disallow calling `new` on a Promise static method.
promise / no-return-in-finally
Disallow return statements in `finally()`.
promise / no-multiple-resolved
Disallow creating new promises with paths that resolve multiple times.
shopify / prefer-class-properties
Prefer class properties to assignment of literals in constructors.
shopify / prefer-early-return
Prefer early returns over full-body conditional wrapping in function declarations.
shopify / prefer-module-scope-constants
Prefer that screaming snake case variables always be defined using `const`, and always appear at module scope.
shopify / react-hooks-strict-return
Restrict the number of returned items from React hooks.
shopify / strict-component-boundaries
Prevent module imports between components.
shopify / typescript-prefer-singular-enums
Prefer singular TypeScript enums.
Sections of code should not be commented out
sonar / elseif-without-else
"if ... else if" constructs should end with "else" clauses
Increment (++) and decrement (--) operators should not be used in a method call or mixed with other operators in an expression
Mergeable "if" statements should be combined
sonar / no-redundant-boolean
Boolean literals should not be used in comparisons
sonar / prefer-single-boolean-return
Return of boolean expressions should not be wrapped into an "if-then-else" statement
Track uses of "FIXME" tags
Track uses of "TODO" tags
sonar / no-duplicate-string
String literals should not be duplicated
sonar / no-parameter-reassignment
Initial values of parameters, caught exceptions, and loop variables should not be ignored
A "while" loop should be used instead of a "for" loop
sonar / public-static-readonly
Public "static" fields should be read-only
"switch" statements should not have too many "case" clauses
sonar / prefer-immediate-return
Local variables should not be declared and then immediately returned or thrown
sonar / no-identical-expressions
Identical expressions should not be used on both sides of a binary operator
"switch" statements should not be nested
sonar / constructor-for-side-effects
Objects should not be created to be dropped immediately without being used
Unused assignments should be removed
sonar / no-identical-conditions
"if/else if" chains and "switch" cases should not have the same condition
sonar / no-duplicated-branches
Two branches in a conditional structure should not have exactly the same implementation
sonar / no-inverted-boolean-check
Boolean checks should not be inverted
sonar / misplaced-loop-counter
"for" loop increment clauses should modify the loops' counters
sonar / no-useless-increment
Values should not be uselessly incremented
Return values from functions without side effects should not be ignored
sonar / prefer-object-literal
Object literal syntax should be used
sonar / no-gratuitous-expressions
Boolean expressions should not be gratuitous
"catch" clauses should do more than rethrow
sonar / non-existent-operator
Non-existent operators '=+', '=-' and '=!' should not be used
sonar / file-name-differ-from-class
Default export names and file names should match
sonar / no-nested-conditional
Ternary operators should not be nested
sonar / destructuring-assignment-syntax
Destructuring syntax should be used for assignments
Jump statements should not be redundant
sonar / no-use-of-empty-return-value
The return value of void functions should not be used
sonar / cognitive-complexity
Cognitive Complexity of functions should not be too high
"super()" should be invoked appropriately
sonar / no-all-duplicated-branches
All branches in a conditional structure should not have exactly the same implementation
Errors should not be created without being thrown
sonar / no-unused-collection
Collection contents should be used
sonar / no-element-overwrite
Collection elements should not be replaced unconditionally
sonar / no-identical-functions
Functions should not have identical implementations
sonar / no-empty-collection
Empty collections should not be accessed or iterated
Type aliases should be used
sonar / no-nested-template-literals
Template literals should not be nested
sonar / prefer-promise-shorthand
Shorthand promises should be used
sonar / no-redundant-optional
Optional property declarations should not use both '?' and 'undefined' syntax
Optional boolean parameters should have default value
Promise rejections should not be caught by "try" blocks
sonar / no-async-constructor
Constructors should not contain asynchronous operations
ts / adjacent-overload-signatures
Require that function overload signatures be consecutive
Require consistently using either `T[]` or `Array<T>` for arrays
Disallow awaiting a value that is not a Thenable
Disallow `@ts-<directive>` comments or require descriptions after directives
ts / consistent-generic-constructors
Enforce specifying generic type arguments on type annotation or constructor name of a constructor call
ts / consistent-indexed-object-style
Require or disallow the `Record` type
ts / consistent-type-assertions
Enforce consistent usage of type assertions
ts / consistent-type-definitions
Enforce type definitions to consistently use either `interface` or `type`
ts / consistent-type-imports
Enforce consistent usage of type imports
Enforce default parameters to be last
Enforce dot notation whenever possible
ts / explicit-function-return-type
Require explicit return types on functions and class methods
ts / explicit-member-accessibility
Require explicit accessibility modifiers on class properties and methods
ts / method-signature-style
Enforce using a particular method signature syntax
Disallow generic `Array` constructors
ts / no-confusing-non-null-assertion
Disallow non-null assertion in locations that may be confusing
ts / no-confusing-void-expression
Require expressions of type void to appear in statement position
Disallow duplicate class members
ts / no-duplicate-enum-values
Disallow duplicate enum member values
ts / no-duplicate-type-constituents
Disallow duplicate constituents of union or intersection types
Disallow using the `delete` operator on computed key expressions
Disallow accidentally using the "empty object" type
ts / no-extra-non-null-assertion
Disallow extra non-null assertions
Disallow classes used as namespaces
Require Promise-like statements to be handled appropriately
Disallow iterating over an array with a for-in loop
Disallow the use of `eval()`-like functions
ts / no-import-type-side-effects
Enforce the use of top-level import type qualifier when an import only has specifiers with inline type qualifiers
Disallow explicit type declarations for variables or parameters initialized to a number, string, or boolean
Disallow `void` type outside of generic or return types
ts / no-meaningless-void-operator
Disallow the `void` operator except when used to discard a value
Enforce valid definition of `new` and `constructor`
Disallow Promises in places not designed to handle them
Disallow enums from having both number and string members
Disallow TypeScript namespaces
ts / no-non-null-asserted-nullish-coalescing
Disallow non-null assertions in the left operand of a nullish coalescing operator
ts / no-non-null-asserted-optional-chain
Disallow non-null assertions after an optional chain expression
Disallow non-null assertions using the `!` postfix operator
Disallow variable redeclaration
ts / no-redundant-type-constituents
Disallow members of unions and intersections that do nothing or override type information
Disallow invocation of `require()`
Disallow variable declarations from shadowing variables declared in the outer scope
ts / no-unnecessary-boolean-literal-compare
Disallow unnecessary equality comparisons against boolean literals
ts / no-unnecessary-condition
Disallow conditionals where the type is always truthy or always falsy
ts / no-unnecessary-parameter-property-assignment
Disallow unnecessary assignment of constructor property parameter
ts / no-unnecessary-qualifier
Disallow unnecessary namespace qualifiers
ts / no-unnecessary-template-expression
Disallow unnecessary template expressions
ts / no-unnecessary-type-arguments
Disallow type arguments that are equal to the default
ts / no-unnecessary-type-assertion
Disallow type assertions that do not change the type of an expression
ts / no-unnecessary-type-constraint
Disallow unnecessary constraints on generic types
ts / no-unnecessary-type-parameters
Disallow type parameters that aren't used multiple times
Disallow calling a function with a value with type `any`
Disallow assigning a value with type `any` to variables and properties
Disallow calling a value with type `any`
ts / no-unsafe-declaration-merging
Disallow unsafe declaration merging
ts / no-unsafe-enum-comparison
Disallow comparing an enum value with a non-enum value
ts / no-unsafe-function-type
Disallow using the unsafe built-in Function type
ts / no-unsafe-member-access
Disallow member access on a value with type `any`
Disallow returning a value with type `any` from a function
Require unary negation to take a number
Disallow unused expressions
Disallow unused variables
Disallow the use of variables before they are defined
ts / no-useless-constructor
Disallow unnecessary constructors
ts / no-wrapper-object-types
Disallow using confusing built-in primitive class wrappers
ts / non-nullable-type-assertion-style
Enforce non-null assertions over explicit type assertions
Disallow throwing non-`Error` values as exceptions
Enforce the use of `as const` over literal type
Require destructuring from arrays and/or objects
Enforce the use of Array.prototype.find() over Array.prototype.filter() followed by [0] when looking for a single result
Enforce the use of `for-of` loop over the standard `for` loop where possible
Enforce using function types instead of interfaces with call signatures
Enforce `includes` method over `indexOf` method
ts / prefer-literal-enum-member
Require all enum members to be literal values
ts / prefer-namespace-keyword
Require using `namespace` keyword over `module` keyword to declare custom TypeScript modules
ts / prefer-nullish-coalescing
Enforce using the nullish coalescing operator instead of logical assignments or chaining
Enforce using concise optional chain expressions instead of chained logical ands, negated logical ors, or empty objects
ts / prefer-promise-reject-errors
Require using Error objects as Promise rejection reasons
Require private members to be marked as `readonly` if they're never modified outside of the constructor
ts / prefer-reduce-type-parameter
Enforce using type parameter when calling `Array#reduce` instead of using a type assertion
ts / prefer-return-this-type
Enforce that `this` is used when only `this` type is returned
ts / promise-function-async
Require any function or method that returns a Promise to be marked async
ts / restrict-plus-operands
Require both operands of addition to be the same type and be `bigint`, `number`, or `string`
ts / restrict-template-expressions
Enforce template literal expressions to be of `string` type
Enforce consistent awaiting of returned promises
ts / strict-boolean-expressions
Disallow certain types in boolean expressions
ts / switch-exhaustiveness-check
Require switch-case statements to be exhaustive
ts / triple-slash-reference
Disallow certain triple slash directives in favor of ES6-style import declarations
Enforce unbound methods are called with their expected scope
Disallow two overloads that could be unified into one with a union or an optional/rest parameter
ts / use-unknown-in-catch-callback-variable
Enforce typing arguments in Promise rejection callbacks as `unknown`
erasable-syntax-only / enums
Avoid using TypeScript's enums.
erasable-syntax-only / import-aliases
Avoid using TypeScript's import aliases.
erasable-syntax-only / namespaces
Avoid using TypeScript's namespaces.
erasable-syntax-only / parameter-properties
Avoid using TypeScript's class parameter properties.
Enforce a specific parameter name in catch clauses.
unicorn / consistent-destructuring
Use destructured variables over properties.
unicorn / consistent-function-scoping
Move function definitions to the highest possible scope.
unicorn / empty-brace-spaces
Enforce no spaces between braces.
Enforce passing a `message` value when creating a built-in error.
Enforce a case style for filenames.
unicorn / no-array-for-each
Prefer `for…of` over the `forEach` method.
unicorn / no-await-expression-member
Disallow member access from await expression.
Do not use a `for` loop that can be replaced with a `for-of` loop.
unicorn / no-keyword-prefix
Disallow identifiers starting with `new` or `class`.
Disallow `if` statements as the only statement in `if` blocks without `else`.
unicorn / no-negated-condition
Disallow negated conditions.
unicorn / no-negation-in-equality-check
Disallow negated expression in equality check.
unicorn / no-nested-ternary
Disallow nested ternary expressions.
unicorn / no-object-as-default-parameter
Disallow the use of objects as default parameters.
unicorn / no-static-only-class
Disallow classes that only have static members.
unicorn / no-unreadable-array-destructuring
Disallow unreadable array destructuring.
unicorn / no-unused-properties
Disallow unused object properties.
unicorn / no-useless-promise-resolve-reject
Disallow returning/yielding `Promise.resolve/reject()` in async functions or promise callbacks
unicorn / no-useless-spread
Disallow unnecessary spread.
unicorn / no-useless-undefined
Disallow useless `undefined`.
unicorn / number-literal-case
Enforce proper case for numeric literals.
unicorn / prefer-default-parameters
Prefer default parameters over reassignment.
unicorn / prefer-export-from
Prefer `export…from` when re-exporting.
Prefer `.includes()` over `.indexOf()`, `.lastIndexOf()`, and `Array#some()` when checking for existence or non-existence.
unicorn / prefer-logical-operator-over-ternary
Prefer using a logical operator over a ternary.
unicorn / prefer-math-min-max
Prefer `Math.min()` and `Math.max()` over ternaries for simple comparisons.
unicorn / prefer-optional-catch-binding
Prefer omitting the `catch` binding parameter.
Prefer `Set#has()` over `Array#includes()` when checking for existence or non-existence.
unicorn / prefer-single-call
Enforce combining multiple `Array#push()`, `Element#classList.{add,remove}()`, and `importScripts()` into one call.
Prefer `switch` over multiple `else-if`.
Prefer ternary expressions over simple `if-else` statements.
unicorn / prevent-abbreviations
unicorn / switch-case-braces
Enforce consistent brace style for `case` clauses.
Fix whitespace-insensitive template indentation.
Require `new` when creating an error.
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.
jsdoc / check-property-names
Ensures that property names in JSDoc are not duplicated on the same block and that nested properties have defined roots.
jsdoc / convert-to-jsdoc-comments
Converts non-JSDoc comments preceding or following nodes into JSDoc ones
Expects specific tags to be empty of any content.
jsdoc / implements-on-classes
Reports an issue with any non-constructor function using `@implements`.
This rule reports doc comments that only restate their attached name.
Controls how and whether jsdoc blocks can be expressed as single or multiple line blocks.
jsdoc / no-blank-block-descriptions
Detects and removes extra lines of a blank block description
Removes empty blocks with nothing but possibly line breaks
This rule reports defaults being used on the relevant portion of `@param` or `@default`.
Prevents use of multiple asterisks at the beginning of lines.
This rule reports types being used on `@param` or `@returns`.
jsdoc / require-asterisk-prefix
Requires that each JSDoc line starts with an `*`.
jsdoc / require-description
Requires that all functions have a description.
jsdoc / require-description-complete-sentence
Requires that block description, explicit `@description`, and `@param`/`@returns` tag descriptions are written in complete sentences.
jsdoc / require-hyphen-before-param-description
Requires a hyphen before the `@param` description.
Requires that all function parameters are documented.
jsdoc / require-param-description
Requires that each `@param` tag has a `description` value.
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`.
jsdoc / require-property-description
Requires that each `@property` tag has a `description` value.
jsdoc / require-property-name
Requires that all function `@property` tags have names.
Requires that returns are documented.
jsdoc / require-returns-check
Requires a return statement in function body if a `@returns` tag is specified in jsdoc comment.
jsdoc / require-returns-description
Requires that the `@returns` tag has a `description` value.
Requires template tags for each generic type parameter
jsdoc / require-yields-check
Requires a yield statement in function body if a `@yields` tag is specified in jsdoc comment.
Sorts tags by a specified sequence according to tag name.
eslint-plugin / consistent-output
Enforce consistent use of `output` assertions in rule tests
eslint-plugin / fixer-return
Require fixer functions to return a fix
eslint-plugin / meta-property-ordering
Enforce the order of meta properties
eslint-plugin / no-deprecated-context-methods
Disallow usage of deprecated methods on rule context objects
eslint-plugin / no-deprecated-report-api
Disallow the version of `context.report()` with multiple arguments
eslint-plugin / no-identical-tests
eslint-plugin / no-meta-replaced-by
Disallow using the `meta.replacedBy` rule property
eslint-plugin / no-meta-schema-default
Disallow rules `meta.schema` properties to include defaults
eslint-plugin / no-missing-message-ids
Disallow `messageId`s that are missing from `meta.messages`
eslint-plugin / no-missing-placeholders
Disallow missing placeholders in rule report messages
eslint-plugin / no-only-tests
Disallow the test case property `only`
eslint-plugin / no-property-in-node
Disallow using `in` to narrow node types instead of looking at properties
eslint-plugin / no-unused-message-ids
Disallow unused `messageId`s in `meta.messages`
eslint-plugin / no-unused-placeholders
Disallow unused placeholders in rule report messages
eslint-plugin / no-useless-token-range
Disallow unnecessary calls to `sourceCode.getFirstToken()` and `sourceCode.getLastToken()`
eslint-plugin / prefer-message-ids
Require using `messageId` instead of `message` or `desc` to report rule violations
eslint-plugin / prefer-object-rule
Disallow function-style rules
eslint-plugin / prefer-output-null
Disallow invalid RuleTester test cases where the `output` matches the `code`
eslint-plugin / prefer-placeholders
Require using placeholders for dynamic report messages
eslint-plugin / prefer-replace-text
Require using `replaceText()` instead of `replaceTextRange()`
eslint-plugin / report-message-format
Enforce a consistent format for rule report messages
eslint-plugin / require-meta-default-options
Require only rules with options to implement a `meta.defaultOptions` property
eslint-plugin / require-meta-docs-description
Require rules to implement a `meta.docs.description` property with the correct format
eslint-plugin / require-meta-docs-recommended
Require rules to implement a `meta.docs.recommended` property
eslint-plugin / require-meta-docs-url
Require rules to implement a `meta.docs.url` property
eslint-plugin / require-meta-fixable
Require rules to implement a `meta.fixable` property
eslint-plugin / require-meta-has-suggestions
Require suggestable rules to implement a `meta.hasSuggestions` property
eslint-plugin / require-meta-schema-description
Require rules `meta.schema` properties to include descriptions
eslint-plugin / require-meta-schema
Require rules to implement a `meta.schema` property
eslint-plugin / require-meta-type
Require rules to implement a `meta.type` property
eslint-plugin / test-case-property-ordering
Require the properties of a test case to be placed in a consistent order
eslint-plugin / test-case-shorthand-strings
Enforce consistent usage of shorthand strings for test cases with no options
Enforces the use of lua truthiness
roblox / misleading-lua-tuple-checks
Disallow the use of LuaTuple in conditional expressions
Disallow values of type `any`. Use `unknown` instead
Disallow usage of pairs() and ipairs() with Array<T>
Disallow merging enum declarations
roblox / no-export-assignment-let
Disallow using `export =` on a let variable
Disallow iterating with a for-in loop
roblox / no-function-expression-name
Disallow the use of function expression names
Disallow getters and setters
Enforce the use of `.` instead of `:` for method calls
roblox / no-invalid-identifier
Disallow the use of Luau reserved keywords as identifiers
roblox / no-namespace-merging
Disallow merging namespace declarations
Disallow usage of the `null` keyword
Enforce DataType math methods over operators
Disallow .new() on objects without a .new() method
roblox / no-preceding-spread-element
Disallow spread elements not last in a list of arguments
roblox / no-private-identifier
Disallow the use of private identifiers (`#`)
roblox / no-unsupported-syntax
Disallow unsupported syntax in roblox-ts
roblox / no-user-defined-lua-tuple
Disallow usage of LuaTuple type keyword and $tuple() calls
Disallow using `typeof` to check for value types
roblox / prefer-get-players
Enforces the use of Players.GetPlayers() instead of Players.GetChildren()
roblox / prefer-task-library
Enforce use of task library alternatives
Enforce use of .size() instead of .length or .size property
sentinel / explicit-size-check
Enforce explicitly comparing the `size` property of a value
sentinel / prefer-math-min-max
Require `math.min()` and `math.max()` over ternaries for simple comparisons
Use stylua to format lua files
arrow-style / arrow-return-style
Enforce consistent arrow function return style based on length, multiline expressions, JSX usage, and export context
arrow-style / no-export-default-arrow
Disallow anonymous arrow functions as export default declarations
perfectionist / sort-variable-declarations
Enforce sorted variable declarations.
perfectionist / sort-intersection-types
Enforce sorted intersection types.
perfectionist / sort-heritage-clauses
Enforce sorted heritage clauses.
perfectionist / sort-array-includes
Enforce sorted arrays before include method.
perfectionist / sort-named-imports
Enforce sorted named imports.
perfectionist / sort-object-types
Enforce sorted object types.
perfectionist / sort-union-types
Enforce sorted union types.
perfectionist / sort-switch-case
Enforce sorted switch cases.
perfectionist / sort-decorators
Enforce sorted decorators.
perfectionist / sort-interfaces
Enforce sorted interface properties.
perfectionist / sort-jsx-props
Enforce sorted JSX props.
perfectionist / sort-modules
perfectionist / sort-classes
perfectionist / sort-imports
perfectionist / sort-exports
perfectionist / sort-objects
Enforce sorted TypeScript enums.
Enforce sorted Map elements.
Enforce `test` and `it` usage conventions
Enforce assertion to be made in a test body
Enforces a maximum number assertion calls in a test body
Enforces a maximum depth to nested describe calls
test / no-commented-out-tests
Disallow commented out tests
test / no-conditional-expect
Disallow calling `expect` conditionally
test / no-conditional-in-test
Disallow conditional logic in tests
Disallow using a callback in asynchronous tests and hooks
Disallow duplicate setup and teardown hooks
Disallow using `exports` in files containing tests
Disallow identical titles
test / no-standalone-expect
Disallow using `expect` outside of `it` or `test` blocks
Require using `.only` and `.skip` over `f` and `x`
test / no-test-return-statement
Disallow explicitly returning from tests
test / no-untyped-mock-factory
Disallow using `jest.mock()` factories without an explicit type parameter
Enforce padding around Jest functions
Suggest using `toBeCalledWith()` or `toHaveBeenCalledWith()`
test / prefer-comparison-matcher
Suggest using the built-in comparison matchers
Prefer using `.each` rather than manual loops
test / prefer-ending-with-an-expect
Prefer having the last statement in a test be an assertion
test / prefer-equality-matcher
Suggest using the built-in equality matchers
test / prefer-hooks-in-order
Prefer having hooks in a consistent order
test / prefer-lowercase-title
Enforce lowercase test names
test / prefer-mock-promise-shorthand
Prefer mock resolved/rejected shorthands for promises
Suggest using `toStrictEqual()`
Suggest using `toBe()` for primitive literals
Suggest using `toContain()`
test / prefer-to-have-length
Suggest using `toHaveLength()`
Suggest using `test.todo`
Require setup and teardown code to be within a hook
test / require-to-throw-message
Require a message for `toThrow()`
test / require-top-level-describe
Require test cases and hooks to be inside a `describe` block
Enforce unbound methods are called with their expected scope
test / valid-describe-callback
Enforce valid `describe()` callback
test / valid-expect-in-promise
Require promises that have expectations in their chain to be valid
Enforce valid `expect()` usage
react / avoid-shorthand-boolean
Enforces explicit boolean values for boolean attributes.
react / avoid-shorthand-fragment
Enforces explicit `<Fragment>` components instead of the shorthand `<>` or `</>` syntax.
react / no-access-state-in-setstate
Disallow accessing `this.state` inside `setState` calls.
Disallow an item's index in the array as its key.
Disallow `Children.count`.
react / no-children-for-each
Disallow 'Children.forEach'.
Disallow `Children.only`.
Disallow passing `children` as a prop.
react / no-children-to-array
Disallow `Children.toArray`.
Disallow class components except for error boundaries.
react / no-comment-textnodes
Prevents comments from being inserted as text nodes.
react / no-complex-conditional-rendering
Disallow complex conditional rendering in JSX expressions.
react / no-component-will-mount
Replace usages of `componentWillMount` with `UNSAFE_componentWillMount`.
react / no-component-will-receive-props
Replace usages of `componentWillReceiveProps` with `UNSAFE_componentWillReceiveProps`.
react / no-component-will-update
Replace usages of `componentWillUpdate` with `UNSAFE_componentWillUpdate`.
Disallow `createRef` in function components.
Disallow `defaultProps` property in favor of ES6 default parameters.
react / no-direct-mutation-state
Disallow direct mutation of `this.state`.
Disallow duplicate `key` on elements in the same array or a list of `children`.
Replaces usages of `forwardRef` with passing `ref` as a prop.
Prevents `key` from not being explicitly specified (e.g. spreading `key` from objects).
react / no-leaked-conditional-rendering
Prevents problematic leaked values from being rendered.
react / no-missing-component-display-name
Enforces that all components have a `displayName` which can be used in devtools.
react / no-missing-context-display-name
Enforces that all contexts have a `displayName` which can be used in devtools.
Disallow missing `key` on items in list rendering.
react / no-misused-capture-owner-stack
Prevents incorrect usage of `captureOwnerStack`.
react / no-nested-component-definitions
Disallow nesting component definitions inside other components.
react / no-nested-lazy-component-declarations
Disallow nesting lazy component declarations inside other components.
Disallow `propTypes` in favor of TypeScript or another type-checking solution.
react / no-redundant-should-component-update
Disallow `shouldComponentUpdate` when extending `React.PureComponent`.
react / no-set-state-in-component-did-mount
Disallow calling `this.setState` in `componentDidMount` outside of functions, such as callbacks.
react / no-set-state-in-component-did-update
Disallow calling `this.setState` in `componentDidUpdate` outside of functions, such as callbacks.
react / no-set-state-in-component-will-update
Disallows calling `this.setState` in `componentWillUpdate` outside of functions, such as callbacks.
Replaces string refs with callback refs.
react / no-unsafe-component-will-mount
Warns the usage of `UNSAFE_componentWillMount` in class components.
react / no-unsafe-component-will-receive-props
Warns the usage of `UNSAFE_componentWillReceiveProps` in class components.
react / no-unsafe-component-will-update
Warns the usage of `UNSAFE_componentWillUpdate` in class components.
react / no-unstable-context-value
Prevents non-stable values (i.e. object literals) from being used as a value for `Context.Provider`.
react / no-unstable-default-props
Prevents using referential-type values as default props in object destructuring.
react / no-unused-class-component-members
Warns unused class component methods and properties.
Warns unused class component state.
Replaces usages of `useContext` with `use`.
react / no-useless-forward-ref
Disallow useless `forwardRef` calls on components that don't use `ref`s.
react / no-useless-fragment
Disallow useless fragment elements.
react / prefer-destructuring-assignment
Enforces destructuring assignment for component props and context.
react / prefer-react-namespace-import
Enforces React is imported via a namespace import.
react / prefer-read-only-props
Enforces read-only props in components.
react / prefer-shorthand-boolean
Enforces shorthand syntax for boolean attributes.
react / prefer-shorthand-fragment
Enforces shorthand syntax for fragments.
react / jsx-no-duplicate-props
Disallow duplicate props in JSX elements.
Disallow undefined variables in JSX.
Marks React variables as used when JSX is used.
Marks variables used in JSX elements as used.
react / ensure-forward-ref-using-ref
Disallow useless `forwardRef` calls on components that don't use `ref`s.
react-hooks-extra / no-direct-set-state-in-use-effect
Disallow direct calls to the `set` function of `useState` in `useEffect`.
react-hooks-extra / no-direct-set-state-in-use-layout-effect
Disallow direct calls to the `set` function of `useState` in `useLayoutEffect`.
react-hooks-extra / no-unnecessary-use-callback
Disallow unnecessary usage of `useCallback`.
react-hooks-extra / no-unnecessary-use-memo
Disallow unnecessary usage of `useMemo`.
react-hooks-extra / no-unnecessary-use-prefix
Enforces that a function with the `use` prefix should use at least one Hook inside of it.
react-hooks-extra / prefer-use-state-lazy-initialization
Enforces function calls made inside `useState` to be wrapped in an `initializer function`.
react-hooks-roblox / rules-of-hooks
Enforces the Rules of Hooks
react-hooks-roblox / exhaustive-deps
Verifies the list of dependencies for Hooks like useEffect and similar
react-naming-convention / context-name
Enforces context name to be a valid component name with the suffix `Context`.
react-naming-convention / filename-extension
Enforces consistent file naming conventions.
react-naming-convention / use-state
Enforces destructuring and symmetric naming of `useState` hook value and setter.
jsonc / array-bracket-spacing
Disallow or enforce spaces inside of brackets
Require or disallow trailing commas
Enforce consistent comma style
Enforce consistent indentation
Enforce consistent spacing between keys and values in object literal properties
jsonc / no-binary-expression
Disallow binary expression
jsonc / no-binary-numeric-literals
Disallow binary numeric literals
Disallow duplicate keys in object literals
jsonc / no-escape-sequence-in-identifier
Disallow escape sequences in identifiers.
jsonc / no-floating-decimal
Disallow leading or trailing decimal points in numeric literals
jsonc / no-hexadecimal-numeric-literals
Disallow hexadecimal numeric literals
Disallow multiline strings
Disallow number property keys
jsonc / no-numeric-separators
Disallow numeric separators
Disallow octal escape sequences in string literals
jsonc / no-octal-numeric-literals
Disallow octal numeric literals
Disallow legacy octal literals
Disallow parentheses around the expression
jsonc / no-template-literals
Disallow template literals
jsonc / no-unicode-codepoint-escapes
Disallow Unicode code point escape sequences.
Disallow unnecessary escape usage
jsonc / object-curly-newline
Enforce consistent line breaks inside braces
jsonc / object-curly-spacing
Enforce consistent spacing inside braces
jsonc / object-property-newline
Enforce placing object properties on separate lines
Require quotes around object literal property names
Enforce use of double or single quotes
Require object keys to be sorted
Disallow spaces after unary operators
Disallow invalid number for JSON
pnpm / json-enforce-catalog
Enforce using "catalog:" in `package.json`
Enforce using valid catalog in `package.json`
pnpm / json-prefer-workspace-settings
Prefer having pnpm settings in `pnpm-workspace.yaml` instead of `package.json`. This requires pnpm v10.6+, see https://github.com/orgs/pnpm/discussions/9037.
pnpm / yaml-no-unused-catalog-item
Disallow unused catalogs in `pnpm-workspace.yaml`
pnpm / yaml-no-duplicate-catalog-item
Disallow duplicate catalog items in `pnpm-workspace.yaml`
yaml / block-mapping-colon-indicator-newline
Enforce consistent line breaks after `:` indicator
yaml / block-mapping-question-indicator-newline
Enforce consistent line breaks after `?` indicator
Require or disallow block style mappings.
yaml / block-sequence-hyphen-indicator-newline
Enforce consistent line breaks after `-` indicator
Require or disallow block style sequences.
Enforce YAML file extension
yaml / flow-mapping-curly-newline
Enforce consistent line breaks inside braces
yaml / flow-mapping-curly-spacing
Enforce consistent spacing inside braces
yaml / flow-sequence-bracket-newline
Enforce linebreaks after opening and before closing flow sequence brackets
yaml / flow-sequence-bracket-spacing
Enforce consistent spacing inside flow sequence brackets
Enforce consistent spacing between keys and values in mapping pairs
Disallow empty mapping keys
yaml / no-empty-sequence-entry
Disallow empty sequence entries
yaml / no-irregular-whitespace
Disallow irregular whitespace
Disallow tabs for indentation.
Disallow trailing zeros for floats
Require or disallow plain style scalar.
Require mapping keys to be sorted
Enforce consistent spacing after the `#` in a comment
toml / array-bracket-newline
Enforce linebreaks after opening and before closing array brackets
toml / array-bracket-spacing
Enforce consistent spacing inside array brackets
toml / array-element-newline
Enforce line breaks between array elements
Enforce consistent comma style in array
Enforce consistent indentation
toml / inline-table-curly-spacing
Enforce consistent spacing inside braces
Enforce consistent spacing between keys and values in key/value pairs
Disallow defining pair keys out-of-order
Disallow spacing around infix operators
toml / no-unreadable-number-separator
Disallow number separators that to not enhance readability.
toml / padding-line-between-pairs
Require or disallow padding lines between pairs
toml / padding-line-between-tables
Require or disallow padding lines between tables
toml / precision-of-fractional-seconds
Disallow precision of fractional seconds greater than the specified value.
toml / precision-of-integer
Disallow precision of integer greater than the specified value.
Require or disallow quotes around keys
Enforce consistent spacing after the `#` in a comment
toml / table-bracket-spacing
Enforce consistent spacing inside table brackets
Disallow defining tables out-of-order
markdown / fenced-code-language
Require languages for fenced code blocks
markdown / heading-increment
Enforce heading levels increment by one
markdown / no-duplicate-definitions
Disallow duplicate definitions
markdown / no-duplicate-headings
Disallow duplicate headings in the same document
markdown / no-empty-definitions
Disallow empty definitions
markdown / no-invalid-label-refs
Disallow invalid label references
markdown / no-missing-atx-heading-space
Disallow headings without a space after the hash characters
markdown / no-missing-label-refs
Disallow missing label references
markdown / no-missing-link-fragments
Disallow link fragments that do not reference valid headings
Disallow multiple H1 headings in the same document
markdown / no-reversed-media-syntax
Disallow reversed link and image syntax
markdown / no-unused-definitions
Disallow unused definitions
markdown / require-alt-text
Require alternative text for images
markdown / table-column-count
Disallow data rows in a GitHub Flavored Markdown table from having more cells than the header row