123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408 |
- module.exports = {
- 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',
- // 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': ['error', {
- 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'], // multiline
- // 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',
- // https://eslint.org/docs/rules/default-param-last
- 'default-param-last': 'error',
- // encourages use of dot notation whenever possible
- // https://eslint.org/docs/rules/dot-notation
- 'dot-notation': ['error', { allowKeywords: true }],
- // 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',
- // enforce a maximum number of classes per file
- // https://eslint.org/docs/rules/max-classes-per-file
- 'max-classes-per-file': ['error', 1],
- // 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 lexical declarations in case/default clauses
- // https://eslint.org/docs/rules/no-case-declarations
- 'no-case-declarations': '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 empty functions, except for standalone funcs/arrows
- // https://eslint.org/docs/rules/no-empty-function
- 'no-empty-function': ['error', {
- allow: [
- 'arrowFunctions',
- 'functions',
- 'methods',
- ]
- }],
- // disallow empty destructuring patterns
- // https://eslint.org/docs/rules/no-empty-pattern
- 'no-empty-pattern': 'error',
- // 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 fallthrough of case statements
- // https://eslint.org/docs/rules/no-fallthrough
- 'no-fallthrough': '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 reassignments of native objects or read-only globals
- // https://eslint.org/docs/rules/no-global-assign
- 'no-global-assign': ['error', { exceptions: [] }],
- // deprecated in favor of no-global-assign
- // https://eslint.org/docs/rules/no-native-reassign
- 'no-native-reassign': 'off',
- // 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 use of eval()-like methods
- // https://eslint.org/docs/rules/no-implied-eval
- 'no-implied-eval': 'error',
- // disallow this keywords outside of classes or class-like objects
- // https://eslint.org/docs/rules/no-invalid-this
- 'no-invalid-this': '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 creation of functions within loops
- // https://eslint.org/docs/rules/no-loop-func
- 'no-loop-func': 'error',
- // disallow magic numbers
- // https://eslint.org/docs/rules/no-magic-numbers
- 'no-magic-numbers': ['off', {
- ignore: [],
- ignoreArrayIndexes: true,
- enforceConst: true,
- detectObjects: false,
- }],
- // 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',
- // disallow use of new operator for Function object
- // https://eslint.org/docs/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 \8 and \9 escape sequences in string literals
- // https://eslint.org/docs/rules/no-nonoctal-decimal-escape
- 'no-nonoctal-decimal-escape': 'error',
- // disallow use of (old style) octal literals
- // https://eslint.org/docs/rules/no-octal
- 'no-octal': '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': ['error', {
- 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 declaring the same variable more than once
- // https://eslint.org/docs/rules/no-redeclare
- 'no-redeclare': '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 redundant `return await`
- // https://eslint.org/docs/rules/no-return-await
- 'no-return-await': 'error',
- // disallow use of `javascript:` urls.
- // https://eslint.org/docs/rules/no-script-url
- 'no-script-url': 'error',
- // disallow self assignment
- // https://eslint.org/docs/rules/no-self-assign
- 'no-self-assign': ['error', {
- props: true,
- }],
- // 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',
- // restrict what can be thrown as an exception
- // https://eslint.org/docs/rules/no-throw-literal
- 'no-throw-literal': 'error',
- // disallow unmodified conditions of loops
- // https://eslint.org/docs/rules/no-unmodified-loop-condition
- 'no-unmodified-loop-condition': 'off',
- // disallow usage of expressions in statement position
- // https://eslint.org/docs/rules/no-unused-expressions
- 'no-unused-expressions': ['error', {
- allowShortCircuit: false,
- allowTernary: false,
- allowTaggedTemplates: false,
- }],
- // disallow unused labels
- // https://eslint.org/docs/rules/no-unused-labels
- 'no-unused-labels': 'error',
- // disallow unnecessary .call() and .apply()
- // https://eslint.org/docs/rules/no-useless-call
- 'no-useless-call': 'off',
- // Disallow unnecessary catch clauses
- // https://eslint.org/docs/rules/no-useless-catch
- 'no-useless-catch': 'error',
- // disallow useless string concatenation
- // https://eslint.org/docs/rules/no-useless-concat
- 'no-useless-concat': 'error',
- // disallow unnecessary string escaping
- // https://eslint.org/docs/rules/no-useless-escape
- 'no-useless-escape': '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' }],
- // disallow use of the with statement
- // https://eslint.org/docs/rules/no-with
- 'no-with': 'error',
- // 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/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',
- // require `await` in `async function` (note: this is a horrible rule that should never be used)
- // https://eslint.org/docs/rules/require-await
- 'require-await': 'off',
- // 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'
- }
- };
|