You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
361 lines
12 KiB
361 lines
12 KiB
module.exports = { |
|
rules: { |
|
// enforces getter/setter pairs in objects |
|
'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 |
|
'block-scoped-var': 'error', |
|
|
|
// specify the maximum cyclomatic complexity allowed in a program |
|
complexity: ['off', 11], |
|
|
|
// 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 |
|
'consistent-return': 'error', |
|
|
|
// specify curly brace conventions for all control statements |
|
curly: ['error', 'multi-line'], // multiline |
|
|
|
// require default case in switch statements |
|
'default-case': ['error', { commentPattern: '^no default$' }], |
|
|
|
// Enforce default clauses in switch statements to be last |
|
// https://eslint.org/docs/rules/default-case-last |
|
// TODO: enable, semver-minor, when eslint v7 is required (which is a major) |
|
'default-case-last': 'off', |
|
|
|
// https://eslint.org/docs/rules/default-param-last |
|
// TODO: enable, semver-minor, when eslint v6.4 is required (which is a major) |
|
'default-param-last': 'off', |
|
|
|
// encourages use of dot notation whenever possible |
|
'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 |
|
// TODO: enable in next major, altho the guide forbids getters/setters anyways |
|
'grouped-accessor-pairs': 'off', |
|
|
|
// make sure for-in loops have an if statement |
|
'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 |
|
'no-alert': 'warn', |
|
|
|
// disallow use of arguments.caller or arguments.callee |
|
'no-caller': 'error', |
|
|
|
// disallow lexical declarations in case/default clauses |
|
// https://eslint.org/docs/rules/no-case-declarations.html |
|
'no-case-declarations': 'error', |
|
|
|
// Disallow returning value in constructor |
|
// https://eslint.org/docs/rules/no-constructor-return |
|
// TODO: enable, semver-major |
|
'no-constructor-return': 'off', |
|
|
|
// 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 |
|
'no-eq-null': 'off', |
|
|
|
// disallow use of eval() |
|
'no-eval': 'error', |
|
|
|
// disallow adding to native types |
|
'no-extend-native': 'error', |
|
|
|
// disallow unnecessary function binding |
|
'no-extra-bind': 'error', |
|
|
|
// disallow Unnecessary Labels |
|
// https://eslint.org/docs/rules/no-extra-label |
|
'no-extra-label': 'error', |
|
|
|
// disallow fallthrough of case statements |
|
'no-fallthrough': 'error', |
|
|
|
// disallow the use of leading or trailing decimal points in numeric literals |
|
'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 |
|
'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 |
|
'no-implied-eval': 'error', |
|
|
|
// disallow this keywords outside of classes or class-like objects |
|
'no-invalid-this': 'off', |
|
|
|
// disallow usage of __iterator__ property |
|
'no-iterator': 'error', |
|
|
|
// disallow use of labels for anything other then loops and switches |
|
'no-labels': ['error', { allowLoop: false, allowSwitch: false }], |
|
|
|
// disallow unnecessary nested blocks |
|
'no-lone-blocks': 'error', |
|
|
|
// disallow creation of functions within loops |
|
'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 |
|
'no-multi-spaces': ['error', { |
|
ignoreEOLComments: false, |
|
}], |
|
|
|
// disallow use of multiline strings |
|
'no-multi-str': 'error', |
|
|
|
// disallow use of new operator when not part of the assignment or comparison |
|
'no-new': 'error', |
|
|
|
// disallow use of new operator for Function object |
|
'no-new-func': 'error', |
|
|
|
// disallows creating new instances of String, Number, and Boolean |
|
'no-new-wrappers': 'error', |
|
|
|
// disallow use of (old style) octal literals |
|
'no-octal': 'error', |
|
|
|
// disallow use of octal escape sequences in string literals, such as |
|
// var foo = 'Copyright \251'; |
|
'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 |
|
'no-proto': 'error', |
|
|
|
// disallow declaring the same variable more then once |
|
'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 |
|
'no-return-assign': ['error', 'always'], |
|
|
|
// disallow redundant `return await` |
|
'no-return-await': 'error', |
|
|
|
// disallow use of `javascript:` urls. |
|
'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 |
|
'no-self-compare': 'error', |
|
|
|
// disallow use of comma operator |
|
'no-sequences': 'error', |
|
|
|
// restrict what can be thrown as an exception |
|
'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 |
|
'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() |
|
'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 |
|
'no-warning-comments': ['off', { terms: ['todo', 'fixme', 'xxx'], location: 'start' }], |
|
|
|
// disallow use of the with statement |
|
'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 |
|
// TODO; enable, semver-minor, once eslint v6.4 is required (which is a major) |
|
'prefer-regex-literals': 'off', |
|
|
|
// require use of the second argument for parseInt() |
|
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 |
|
'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 |
|
yoda: 'error' |
|
} |
|
};
|
|
|