import { Linter } from "../index"; export interface BestPractices extends Linter.RulesRecord { /** * Rule to enforce getter and setter pairs in objects. * * @since 0.22.0 * @see https://eslint.org/docs/rules/accessor-pairs */ "accessor-pairs": Linter.RuleEntry< [ Partial<{ /** * @default true */ setWithoutGet: boolean; /** * @default false */ getWithoutSet: boolean; }>, ] >; /** * Rule to enforce `return` statements in callbacks of array methods. * * @since 2.0.0-alpha-1 * @see https://eslint.org/docs/rules/array-callback-return */ "array-callback-return": Linter.RuleEntry< [ Partial<{ /** * @default false */ allowImplicit: boolean; }>, ] >; /** * Rule to enforce the use of variables within the scope they are defined. * * @since 0.1.0 * @see https://eslint.org/docs/rules/block-scoped-var */ "block-scoped-var": Linter.RuleEntry<[]>; /** * Rule to enforce that class methods utilize `this`. * * @since 3.4.0 * @see https://eslint.org/docs/rules/class-methods-use-this */ "class-methods-use-this": Linter.RuleEntry< [ Partial<{ exceptMethods: string[]; }>, ] >; /** * Rule to enforce a maximum cyclomatic complexity allowed in a program. * * @since 0.0.9 * @see https://eslint.org/docs/rules/complexity */ complexity: Linter.RuleEntry< [ | Partial<{ /** * @default 20 */ max: number; /** * @deprecated * @default 20 */ maximum: number; }> | number, ] >; /** * Rule to require `return` statements to either always or never specify values. * * @since 0.4.0 * @see https://eslint.org/docs/rules/consistent-return */ "consistent-return": Linter.RuleEntry< [ Partial<{ /** * @default false */ treatUndefinedAsUnspecified: boolean; }>, ] >; /** * Rule to enforce consistent brace style for all control statements. * * @since 0.0.2 * @see https://eslint.org/docs/rules/curly */ curly: Linter.RuleEntry<["all" | "multi" | "multi-line" | "multi-or-nest" | "consistent"]>; /** * Rule to require `default` cases in `switch` statements. * * @since 0.6.0 * @see https://eslint.org/docs/rules/default-case */ "default-case": Linter.RuleEntry< [ Partial<{ /** * @default '^no default$' */ commentPattern: string; }>, ] >; /** * Rule to enforce consistent newlines before and after dots. * * @since 0.21.0 * @see https://eslint.org/docs/rules/dot-location */ "dot-location": Linter.RuleEntry<["object" | "property"]>; /** * Rule to enforce dot notation whenever possible. * * @since 0.0.7 * @see https://eslint.org/docs/rules/dot-notation */ "dot-notation": Linter.RuleEntry< [ Partial<{ /** * @default true */ allowKeywords: boolean; allowPattern: string; }>, ] >; /** * Rule to require the use of `===` and `!==`. * * @since 0.0.2 * @see https://eslint.org/docs/rules/eqeqeq */ eqeqeq: | Linter.RuleEntry< [ "always", Partial<{ /** * @default 'always' */ null: "always" | "never" | "ignore"; }>, ] > | Linter.RuleEntry<["smart" | "allow-null"]>; /** * Rule to require `for-in` loops to include an `if` statement. * * @since 0.0.6 * @see https://eslint.org/docs/rules/guard-for-in */ "guard-for-in": Linter.RuleEntry<[]>; /** * Rule to enforce a maximum number of classes per file. * * @since 5.0.0-alpha.3 * @see https://eslint.org/docs/rules/max-classes-per-file */ "max-classes-per-file": Linter.RuleEntry<[number]>; /** * Rule to disallow the use of `alert`, `confirm`, and `prompt`. * * @since 0.0.5 * @see https://eslint.org/docs/rules/no-alert */ "no-alert": Linter.RuleEntry<[]>; /** * Rule to disallow the use of `arguments.caller` or `arguments.callee`. * * @since 0.0.6 * @see https://eslint.org/docs/rules/no-caller */ "no-caller": Linter.RuleEntry<[]>; /** * Rule to disallow lexical declarations in case clauses. * * @remarks * Recommended by ESLint, the rule was enabled in `eslint:recommended`. * * @since 1.9.0 * @see https://eslint.org/docs/rules/no-case-declarations */ "no-case-declarations": Linter.RuleEntry<[]>; /** * Rule to disallow division operators explicitly at the beginning of regular expressions. * * @since 0.1.0 * @see https://eslint.org/docs/rules/no-div-regex */ "no-div-regex": Linter.RuleEntry<[]>; /** * Rule to disallow `else` blocks after `return` statements in `if` statements. * * @since 0.0.9 * @see https://eslint.org/docs/rules/no-else-return */ "no-else-return": Linter.RuleEntry< [ Partial<{ /** * @default true */ allowElseIf: boolean; }>, ] >; /** * Rule to disallow empty functions. * * @since 2.0.0 * @see https://eslint.org/docs/rules/no-empty-function */ "no-empty-function": Linter.RuleEntry< [ Partial<{ /** * @default [] */ allow: Array< | "functions" | "arrowFunctions" | "generatorFunctions" | "methods" | "generatorMethods" | "getters" | "setters" | "constructors" >; }>, ] >; /** * Rule to disallow empty destructuring patterns. * * @remarks * Recommended by ESLint, the rule was enabled in `eslint:recommended`. * * @since 1.7.0 * @see https://eslint.org/docs/rules/no-empty-pattern */ "no-empty-pattern": Linter.RuleEntry<[]>; /** * Rule to disallow `null` comparisons without type-checking operators. * * @since 0.0.9 * @see https://eslint.org/docs/rules/no-eq-null */ "no-eq-null": Linter.RuleEntry<[]>; /** * Rule to disallow the use of `eval()`. * * @since 0.0.2 * @see https://eslint.org/docs/rules/no-eval */ "no-eval": Linter.RuleEntry< [ Partial<{ /** * @default false */ allowIndirect: boolean; }>, ] >; /** * Rule to disallow extending native types. * * @since 0.1.4 * @see https://eslint.org/docs/rules/no-extend-native */ "no-extend-native": Linter.RuleEntry< [ Partial<{ exceptions: string[]; }>, ] >; /** * Rule to disallow unnecessary calls to `.bind()`. * * @since 0.8.0 * @see https://eslint.org/docs/rules/no-extra-bind */ "no-extra-bind": Linter.RuleEntry<[]>; /** * Rule to disallow unnecessary labels. * * @since 2.0.0-rc.0 * @see https://eslint.org/docs/rules/no-extra-label */ "no-extra-label": Linter.RuleEntry<[]>; /** * Rule to disallow fallthrough of `case` statements. * * @remarks * Recommended by ESLint, the rule was enabled in `eslint:recommended`. * * @since 0.0.7 * @see https://eslint.org/docs/rules/no-fallthrough */ "no-fallthrough": Linter.RuleEntry< [ Partial<{ /** * @default 'falls?\s?through' */ commentPattern: string; }>, ] >; /** * Rule to disallow leading or trailing decimal points in numeric literals. * * @since 0.0.6 * @see https://eslint.org/docs/rules/no-floating-decimal */ "no-floating-decimal": Linter.RuleEntry<[]>; /** * Rule to disallow assignments to native objects or read-only global variables. * * @remarks * Recommended by ESLint, the rule was enabled in `eslint:recommended`. * * @since 3.3.0 * @see https://eslint.org/docs/rules/no-global-assign */ "no-global-assign": Linter.RuleEntry< [ Partial<{ exceptions: string[]; }>, ] >; /** * Rule to disallow shorthand type conversions. * * @since 1.0.0-rc-2 * @see https://eslint.org/docs/rules/no-implicit-coercion */ "no-implicit-coercion": Linter.RuleEntry< [ Partial<{ /** * @default true */ boolean: boolean; /** * @default true */ number: boolean; /** * @default true */ string: boolean; /** * @default [] */ allow: Array<"~" | "!!" | "+" | "*">; }>, ] >; /** * Rule to disallow variable and `function` declarations in the global scope. * * @since 2.0.0-alpha-1 * @see https://eslint.org/docs/rules/no-implicit-globals */ "no-implicit-globals": Linter.RuleEntry<[]>; /** * Rule to disallow the use of `eval()`-like methods. * * @since 0.0.7 * @see https://eslint.org/docs/rules/no-implied-eval */ "no-implied-eval": Linter.RuleEntry<[]>; /** * Rule to disallow `this` keywords outside of classes or class-like objects. * * @since 1.0.0-rc-2 * @see https://eslint.org/docs/rules/no-invalid-this */ "no-invalid-this": Linter.RuleEntry<[]>; /** * Rule to disallow the use of the `__iterator__` property. * * @since 0.0.9 * @see https://eslint.org/docs/rules/no-iterator */ "no-iterator": Linter.RuleEntry<[]>; /** * Rule to disallow labeled statements. * * @since 0.4.0 * @see https://eslint.org/docs/rules/no-labels */ "no-labels": Linter.RuleEntry< [ Partial<{ /** * @default false */ allowLoop: boolean; /** * @default false */ allowSwitch: boolean; }>, ] >; /** * Rule to disallow unnecessary nested blocks. * * @since 0.4.0 * @see https://eslint.org/docs/rules/no-lone-blocks */ "no-lone-blocks": Linter.RuleEntry<[]>; /** * Rule to disallow function declarations that contain unsafe references inside loop statements. * * @since 0.0.9 * @see https://eslint.org/docs/rules/no-loop-func */ "no-loop-func": Linter.RuleEntry<[]>; /** * Rule to disallow magic numbers. * * @since 1.7.0 * @see https://eslint.org/docs/rules/no-magic-numbers */ "no-magic-numbers": Linter.RuleEntry< [ Partial<{ /** * @default [] */ ignore: number[]; /** * @default false */ ignoreArrayIndexes: boolean; /** * @default false */ enforceConst: boolean; /** * @default false */ detectObjects: boolean; }>, ] >; /** * Rule to disallow multiple spaces. * * @since 0.9.0 * @see https://eslint.org/docs/rules/no-multi-spaces */ "no-multi-spaces": Linter.RuleEntry< [ Partial<{ /** * @default false */ ignoreEOLComments: boolean; /** * @default { Property: true } */ exceptions: Record; }>, ] >; /** * Rule to disallow multiline strings. * * @since 0.0.9 * @see https://eslint.org/docs/rules/no-multi-str */ "no-multi-str": Linter.RuleEntry<[]>; /** * Rule to disallow `new` operators outside of assignments or comparisons. * * @since 0.0.7 * @see https://eslint.org/docs/rules/no-new */ "no-new": Linter.RuleEntry<[]>; /** * Rule to disallow `new` operators with the `Function` object. * * @since 0.0.7 * @see https://eslint.org/docs/rules/no-new-func */ "no-new-func": Linter.RuleEntry<[]>; /** * Rule to disallow `new` operators with the `String`, `Number`, and `Boolean` objects. * * @since 0.0.6 * @see https://eslint.org/docs/rules/no-new-wrappers */ "no-new-wrappers": Linter.RuleEntry<[]>; /** * Rule to disallow octal literals. * * @remarks * Recommended by ESLint, the rule was enabled in `eslint:recommended`. * * @since 0.0.6 * @see https://eslint.org/docs/rules/no-octal */ "no-octal": Linter.RuleEntry<[]>; /** * Rule to disallow octal escape sequences in string literals. * * @since 0.0.9 * @see https://eslint.org/docs/rules/no-octal-escape */ "no-octal-escape": Linter.RuleEntry<[]>; /** * Rule to disallow reassigning `function` parameters. * * @since 0.18.0 * @see https://eslint.org/docs/rules/no-param-reassign */ "no-param-reassign": Linter.RuleEntry< [ Partial<{ /** * @default false */ props: boolean; /** * @default [] */ ignorePropertyModificationsFor: string[]; }>, ] >; /** * Rule to disallow the use of the `__proto__` property. * * @since 0.0.9 * @see https://eslint.org/docs/rules/no-proto */ "no-proto": Linter.RuleEntry<[]>; /** * Rule to disallow variable redeclaration. * * @remarks * Recommended by ESLint, the rule was enabled in `eslint:recommended`. * * @since 0.0.9 * @see https://eslint.org/docs/rules/no-redeclare */ "no-redeclare": Linter.RuleEntry< [ Partial<{ /** * @default true */ builtinGlobals: boolean; }>, ] >; /** * Rule to disallow certain properties on certain objects. * * @since 3.5.0 * @see https://eslint.org/docs/rules/no-restricted-properties */ "no-restricted-properties": Linter.RuleEntry< [ ...Array< | { object: string; property?: string; message?: string; } | { property: string; message?: string; } > ] >; /** * Rule to disallow assignment operators in `return` statements. * * @since 0.0.9 * @see https://eslint.org/docs/rules/no-return-assign */ "no-return-assign": Linter.RuleEntry<["except-parens" | "always"]>; /** * Rule to disallow unnecessary `return await`. * * @since 3.10.0 * @see https://eslint.org/docs/rules/no-return-await */ "no-return-await": Linter.RuleEntry<[]>; /** * Rule to disallow `javascript:` urls. * * @since 0.0.9 * @see https://eslint.org/docs/rules/no-script-url */ "no-script-url": Linter.RuleEntry<[]>; /** * Rule to disallow assignments where both sides are exactly the same. * * @remarks * Recommended by ESLint, the rule was enabled in `eslint:recommended`. * * @since 2.0.0-rc.0 * @see https://eslint.org/docs/rules/no-self-assign */ "no-self-assign": Linter.RuleEntry<[]>; /** * Rule to disallow comparisons where both sides are exactly the same. * * @since 0.0.9 * @see https://eslint.org/docs/rules/no-self-compare */ "no-self-compare": Linter.RuleEntry<[]>; /** * Rule to disallow comma operators. * * @since 0.5.1 * @see https://eslint.org/docs/rules/no-sequences */ "no-sequences": Linter.RuleEntry<[]>; /** * Rule to disallow throwing literals as exceptions. * * @since 0.15.0 * @see https://eslint.org/docs/rules/no-throw-literal */ "no-throw-literal": Linter.RuleEntry<[]>; /** * Rule to disallow unmodified loop conditions. * * @since 2.0.0-alpha-2 * @see https://eslint.org/docs/rules/no-unmodified-loop-condition */ "no-unmodified-loop-condition": Linter.RuleEntry<[]>; /** * Rule to disallow unused expressions. * * @since 0.1.0 * @see https://eslint.org/docs/rules/no-unused-expressions */ "no-unused-expressions": Linter.RuleEntry< [ Partial<{ /** * @default false */ allowShortCircuit: boolean; /** * @default false */ allowTernary: boolean; /** * @default false */ allowTaggedTemplates: boolean; }>, ] >; /** * Rule to disallow unused labels. * * @remarks * Recommended by ESLint, the rule was enabled in `eslint:recommended`. * * @since 2.0.0-rc.0 * @see https://eslint.org/docs/rules/no-unused-labels */ "no-unused-labels": Linter.RuleEntry<[]>; /** * Rule to disallow unnecessary calls to `.call()` and `.apply()`. * * @since 1.0.0-rc-1 * @see https://eslint.org/docs/rules/no-useless-call */ "no-useless-call": Linter.RuleEntry<[]>; /** * Rule to disallow unnecessary `catch` clauses. * * @remarks * Recommended by ESLint, the rule was enabled in `eslint:recommended`. * * @since 5.11.0 * @see https://eslint.org/docs/rules/no-useless-catch */ "no-useless-catch": Linter.RuleEntry<[]>; /** * Rule to disallow unnecessary concatenation of literals or template literals. * * @since 1.3.0 * @see https://eslint.org/docs/rules/no-useless-concat */ "no-useless-concat": Linter.RuleEntry<[]>; /** * Rule to disallow unnecessary escape characters. * * @remarks * Recommended by ESLint, the rule was enabled in `eslint:recommended`. * * @since 2.5.0 * @see https://eslint.org/docs/rules/no-useless-escape */ "no-useless-escape": Linter.RuleEntry<[]>; /** * Rule to disallow redundant return statements. * * @since 3.9.0 * @see https://eslint.org/docs/rules/no-useless-return */ "no-useless-return": Linter.RuleEntry<[]>; /** * Rule to disallow `void` operators. * * @since 0.8.0 * @see https://eslint.org/docs/rules/no-void */ "no-void": Linter.RuleEntry<[]>; /** * Rule to disallow specified warning terms in comments. * * @since 0.4.4 * @see https://eslint.org/docs/rules/no-warning-comments */ "no-warning-comments": Linter.RuleEntry< [ { /** * @default ["todo", "fixme", "xxx"] */ terms: string[]; /** * @default 'start' */ location: "start" | "anywhere"; }, ] >; /** * Rule to disallow `with` statements. * * @remarks * Recommended by ESLint, the rule was enabled in `eslint:recommended`. * * @since 0.0.2 * @see https://eslint.org/docs/rules/no-with */ "no-with": Linter.RuleEntry<[]>; /** * Rule to enforce using named capture group in regular expression. * * @since 5.15.0 * @see https://eslint.org/docs/rules/prefer-named-capture-group */ "prefer-named-capture-group": Linter.RuleEntry<[]>; /** * Rule to require using Error objects as Promise rejection reasons. * * @since 3.14.0 * @see https://eslint.org/docs/rules/prefer-promise-reject-errors */ "prefer-promise-reject-errors": Linter.RuleEntry< [ Partial<{ /** * @default false */ allowEmptyReject: boolean; }>, ] >; /** * Rule to enforce the consistent use of the radix argument when using `parseInt()`. * * @since 0.0.7 * @see https://eslint.org/docs/rules/radix */ radix: Linter.RuleEntry<["always" | "as-needed"]>; /** * Rule to disallow async functions which have no `await` expression. * * @since 3.11.0 * @see https://eslint.org/docs/rules/require-await */ "require-await": Linter.RuleEntry<[]>; /** * Rule to enforce the use of `u` flag on RegExp. * * @since 5.3.0 * @see https://eslint.org/docs/rules/require-unicode-regexp */ "require-unicode-regexp": Linter.RuleEntry<[]>; /** * Rule to require `var` declarations be placed at the top of their containing scope. * * @since 0.8.0 * @see https://eslint.org/docs/rules/vars-on-top */ "vars-on-top": Linter.RuleEntry<[]>; /** * Rule to require parentheses around immediate `function` invocations. * * @since 0.0.9 * @see https://eslint.org/docs/rules/wrap-iife */ "wrap-iife": Linter.RuleEntry< [ "outside" | "inside" | "any", Partial<{ /** * @default false */ functionPrototypeMethods: boolean; }>, ] >; /** * Rule to require or disallow “Yoda” conditions. * * @since 0.7.1 * @see https://eslint.org/docs/rules/yoda */ yoda: | Linter.RuleEntry< [ "never", Partial<{ exceptRange: boolean; onlyEquality: boolean; }>, ] > | Linter.RuleEntry<["always"]>; }