UNPKG

@tangany/eslint-config

Version:
347 lines (285 loc) 11.7 kB
import TSESLint from "typescript-eslint"; export default TSESLint.config( { rules: { // enforces getter/setter pairs in objects // https://eslint.org/docs/rules/accessor-pairs "accessor-pairs": "off", // enforces return statements in callbacks of array's methods // https://eslint.org/docs/rules/array-callback-return "array-callback-return": ["error", { allowImplicit: true }], // treat var statements as if they were block scoped // https://eslint.org/docs/rules/block-scoped-var "block-scoped-var": "error", // https://eslint.org/docs/latest/rules/camelcase camelcase: ["off", { properties: "never" }], // specify the maximum cyclomatic complexity allowed in a program // https://eslint.org/docs/rules/complexity complexity: ["off", 20], // enforce that class methods use "this" // https://eslint.org/docs/rules/class-methods-use-this "class-methods-use-this": [ "off", { exceptMethods: [], }, ], // require return statements to either always or never specify values // https://eslint.org/docs/rules/consistent-return "consistent-return": "error", // specify curly brace conventions for all control statements // https://eslint.org/docs/rules/curly curly: ["error", "multi-line"], // require default case in switch statements // https://eslint.org/docs/rules/default-case "default-case": ["error", { commentPattern: "^no default$" }], // Enforce default clauses in switch statements to be last // https://eslint.org/docs/rules/default-case-last "default-case-last": "error", // enforces consistent newlines before or after dots // https://eslint.org/docs/rules/dot-location "dot-location": ["error", "property"], // require the use of === and !== // https://eslint.org/docs/rules/eqeqeq eqeqeq: ["error", "always", { null: "ignore" }], // Require grouped accessor pairs in object literals and classes // https://eslint.org/docs/rules/grouped-accessor-pairs "grouped-accessor-pairs": "error", // make sure for-in loops have an if statement // https://eslint.org/docs/rules/guard-for-in "guard-for-in": "error", // https://eslint.org/docs/latest/rules/logical-assignment-operators "logical-assignment-operators": [ "error", "always", { enforceForIfStatements: true }, ], // enforce a maximum number of classes per file // https://eslint.org/docs/rules/max-classes-per-file "max-classes-per-file": "off", // disallow the use of alert, confirm, and prompt // https://eslint.org/docs/rules/no-alert "no-alert": "warn", // disallow use of arguments.caller or arguments.callee // https://eslint.org/docs/rules/no-caller "no-caller": "error", // Disallow returning value in constructor // https://eslint.org/docs/rules/no-constructor-return "no-constructor-return": "error", // disallow division operators explicitly at beginning of regular expression // https://eslint.org/docs/rules/no-div-regex "no-div-regex": "off", // disallow else after a return in an if // https://eslint.org/docs/rules/no-else-return "no-else-return": ["error", { allowElseIf: false }], // disallow comparisons to null without a type-checking operator // https://eslint.org/docs/rules/no-eq-null "no-eq-null": "off", // disallow use of eval() // https://eslint.org/docs/rules/no-eval "no-eval": "error", // disallow adding to native types // https://eslint.org/docs/rules/no-extend-native "no-extend-native": "error", // disallow unnecessary function binding // https://eslint.org/docs/rules/no-extra-bind "no-extra-bind": "error", // disallow Unnecessary Labels // https://eslint.org/docs/rules/no-extra-label "no-extra-label": "error", // disallow the use of leading or trailing decimal points in numeric literals // https://eslint.org/docs/rules/no-floating-decimal "no-floating-decimal": "error", // disallow implicit type conversions // https://eslint.org/docs/rules/no-implicit-coercion "no-implicit-coercion": [ "off", { boolean: false, number: true, string: true, allow: [], }, ], // disallow var and named functions in global scope // https://eslint.org/docs/rules/no-implicit-globals "no-implicit-globals": "off", // disallow usage of __iterator__ property // https://eslint.org/docs/rules/no-iterator "no-iterator": "error", // disallow use of labels for anything other than loops and switches // https://eslint.org/docs/rules/no-labels "no-labels": ["error", { allowLoop: false, allowSwitch: false }], // disallow unnecessary nested blocks // https://eslint.org/docs/rules/no-lone-blocks "no-lone-blocks": "error", // disallow use of multiple spaces // https://eslint.org/docs/rules/no-multi-spaces "no-multi-spaces": [ "error", { ignoreEOLComments: false, }, ], // disallow use of multiline strings // https://eslint.org/docs/rules/no-multi-str "no-multi-str": "error", // disallow use of new operator when not part of the assignment or comparison // https://eslint.org/docs/rules/no-new "no-new": "error", // https://eslint.org/docs/latest/rules/no-new-func "no-new-func": "error", // disallows creating new instances of String, Number, and Boolean // https://eslint.org/docs/rules/no-new-wrappers "no-new-wrappers": "error", // Disallow calls to the Object constructor without an argument // https://eslint.org/docs/latest/rules/no-object-constructor "no-object-constructor": "error", // disallow use of octal escape sequences in string literals, such as // var foo = 'Copyright \251'; // https://eslint.org/docs/rules/no-octal-escape "no-octal-escape": "error", // disallow reassignment of function parameters // disallow parameter object manipulation except for specific exclusions // rule: https://eslint.org/docs/rules/no-param-reassign.html "no-param-reassign": [ "warn", { props: true, ignorePropertyModificationsFor: [ "acc", // for reduce accumulators "accumulator", // for reduce accumulators "e", // for e.returnvalue "ctx", // for Koa routing "context", // for Koa routing "req", // for Express requests "request", // for Express requests "res", // for Express responses "response", // for Express responses "$scope", // for Angular 1 scopes "staticContext", // for ReactRouter context ], }, ], // disallow usage of __proto__ property // https://eslint.org/docs/rules/no-proto "no-proto": "error", // disallow certain object properties // https://eslint.org/docs/rules/no-restricted-properties "no-restricted-properties": [ "error", { object: "arguments", property: "callee", message: "arguments.callee is deprecated", }, { object: "global", property: "isFinite", message: "Please use Number.isFinite instead", }, { object: "self", property: "isFinite", message: "Please use Number.isFinite instead", }, { object: "window", property: "isFinite", message: "Please use Number.isFinite instead", }, { object: "global", property: "isNaN", message: "Please use Number.isNaN instead", }, { object: "self", property: "isNaN", message: "Please use Number.isNaN instead", }, { object: "window", property: "isNaN", message: "Please use Number.isNaN instead", }, { property: "__defineGetter__", message: "Please use Object.defineProperty instead.", }, { property: "__defineSetter__", message: "Please use Object.defineProperty instead.", }, { object: "Math", property: "pow", message: "Use the exponentiation operator (**) instead.", }, ], // disallow use of assignment in return statement // https://eslint.org/docs/rules/no-return-assign "no-return-assign": ["error", "always"], // disallow use of `javascript:` urls. // https://eslint.org/docs/rules/no-script-url "no-script-url": "error", // disallow comparisons where both sides are exactly the same // https://eslint.org/docs/rules/no-self-compare "no-self-compare": "error", // disallow use of comma operator // https://eslint.org/docs/rules/no-sequences "no-sequences": "error", // disallow unmodified conditions of loops // https://eslint.org/docs/rules/no-unmodified-loop-condition "no-unmodified-loop-condition": "off", // disallow unnecessary .call() and .apply() // https://eslint.org/docs/rules/no-useless-call "no-useless-call": "off", // disallow useless string concatenation // https://eslint.org/docs/rules/no-useless-concat "no-useless-concat": "error", // disallow redundant return; keywords // https://eslint.org/docs/rules/no-useless-return "no-useless-return": "error", // disallow use of void operator // https://eslint.org/docs/rules/no-void "no-void": "error", // disallow usage of configurable warning terms in comments: e.g. todo // https://eslint.org/docs/rules/no-warning-comments "no-warning-comments": [ "off", { terms: ["todo", "fixme", "xxx"], location: "start" }, ], // require using Error objects as Promise rejection reasons // https://eslint.org/docs/rules/prefer-promise-reject-errors "prefer-promise-reject-errors": ["error", { allowEmptyReject: true }], // Suggest using named capture group in regular expression // https://eslint.org/docs/rules/prefer-named-capture-group "prefer-named-capture-group": "off", // https://eslint.org/docs/latest/rules/prefer-object-has-own "prefer-object-has-own": "error", // https://eslint.org/docs/rules/prefer-regex-literals "prefer-regex-literals": [ "error", { disallowRedundantWrapping: true, }, ], // require use of the second argument for parseInt() // https://eslint.org/docs/rules/radix radix: "error", // Enforce the use of u flag on RegExp // https://eslint.org/docs/rules/require-unicode-regexp "require-unicode-regexp": "off", // requires to declare all vars on top of their containing scope // https://eslint.org/docs/rules/vars-on-top "vars-on-top": "error", // require immediate function invocation to be wrapped in parentheses // https://eslint.org/docs/rules/wrap-iife.html "wrap-iife": ["error", "outside", { functionPrototypeMethods: false }], // require or disallow Yoda conditions // https://eslint.org/docs/rules/yoda yoda: "error", }, }, );