@sheplu/eslint-config-eslint
Version:
Opinionated ESLint rules and config for consistent, high-quality code with zero setup.
589 lines (588 loc) • 10.7 kB
JavaScript
/* eslint-disable id-length, no-magic-numbers */
export const eslintSuggestionsRules = {
rules: {
'accessor-pairs': [
'error',
{
enforceForClassMembers: true,
enforceForTSTypes: true,
getWithoutSet: true,
setWithoutGet: true,
},
],
'arrow-body-style': [
'error',
'as-needed',
{
requireReturnForObjectLiteral: true,
},
],
'block-scoped-var': [ 'error' ],
'camelcase': [
'error',
{
allow: [],
ignoreDestructuring: false,
ignoreGlobals: false,
ignoreImports: false,
properties: 'always',
},
],
'capitalized-comments': [
'error',
'always',
{
ignoreConsecutiveComments: false,
ignoreInlineComments: false,
ignorePattern: 'slint',
},
],
'class-methods-use-this': [
'error',
{
enforceForClassFields: true,
exceptMethods: [],
ignoreClassesWithImplements: 'public-fields',
ignoreOverrideMethods: false,
},
],
'complexity': [
'error',
{
max: 15,
variant: 'modified',
},
],
'consistent-return': [
'error',
{
treatUndefinedAsUnspecified: true,
},
],
'consistent-this': [ 'error', 'that' ],
'curly': [ 'error', 'all' ],
'default-case': [
'error',
{
commentPattern: '',
},
],
'default-case-last': [ 'error' ],
'default-param-last': [ 'error' ],
'dot-notation': [
'error',
{
allowKeywords: false,
allowPattern: '',
},
],
'eqeqeq': [ 'error', 'always' ],
'func-name-matching': [ 'error', 'never' ],
'func-names': [
'error',
'always',
{
generators: 'always',
},
],
'func-style': [
'error',
'declaration',
{
allowArrowFunctions: false,
allowTypeAnnotation: true,
overrides: {
namedExports: 'declaration',
},
},
],
'grouped-accessor-pairs': [
'error',
'getBeforeSet',
{
enforceForTSTypes: true,
},
],
'guard-for-in': [ 'error' ],
'id-denylist': [
'error',
'data',
'err',
'e',
'cb',
'callback',
],
'id-length': [
'error',
{
exceptionPatterns: [],
exceptions: [ 'js' ],
max: 25,
min: 3,
properties: 'always',
},
],
'id-match': [ 'off' ],
'init-declarations': [ 'error', 'always' ],
'logical-assignment-operators': [
'error',
'always',
{
enforceForIfStatements: true,
},
],
'max-classes-per-file': [
'error',
{
ignoreExpressions: false,
max: 2,
},
],
'max-depth': [
'error',
{
max: 3,
},
],
'max-lines': [
'error',
{
max: 800,
skipBlankLines: true,
skipComments: true,
},
],
'max-lines-per-function': [
'error',
{
IIFEs: true,
max: 40,
skipBlankLines: true,
skipComments: true,
},
],
'max-nested-callbacks': [
'error',
{
max: 3,
},
],
'max-params': [
'error',
{
countVoidThis: true,
max: 4,
},
],
'max-statements': [
'error',
15,
{
ignoreTopLevelFunctions: false,
},
],
'new-cap': [
'error',
{
capIsNew: true,
capIsNewExceptionPattern: '',
capIsNewExceptions: [],
newIsCap: true,
newIsCapExceptionPattern: '',
newIsCapExceptions: [],
properties: true,
},
],
'no-alert': [ 'error' ],
'no-array-constructor': [ 'error' ],
'no-bitwise': [
'error',
{
allow: [],
int32Hint: true,
},
],
'no-caller': [ 'error' ],
'no-case-declarations': [ 'error' ],
'no-console': [ 'error' ],
'no-continue': [ 'error' ],
'no-delete-var': [ 'error' ],
'no-div-regex': [ 'error' ],
'no-else-return': [
'error',
{
allowElseIf: true,
},
],
'no-empty': [
'error',
{
allowEmptyCatch: false,
},
],
'no-empty-function': [
'error',
{
allow: [],
},
],
'no-empty-static-block': [ 'error' ],
'no-eq-null': [ 'error' ],
'no-eval': [
'error',
{
allowIndirect: false,
},
],
'no-extend-native': [
'error',
{
exceptions: [],
},
],
'no-extra-bind': [ 'error' ],
'no-extra-boolean-cast': [
'error',
{
enforceForInnerExpressions: true,
},
],
'no-extra-label': [ 'error' ],
'no-global-assign': [
'error',
{
exceptions: [],
},
],
'no-implicit-coercion': [
'error',
{
'allow': [],
'boolean': true,
'disallowTemplateShorthand': true,
'number': true,
'string': true,
},
],
'no-implicit-globals': [
'error',
{
lexicalBindings: true,
},
],
'no-implied-eval': [ 'error' ],
'no-inline-comments': [
'error',
{
ignorePattern: 'slint',
},
],
'no-invalid-this': [
'error',
{
capIsConstructor: true,
},
],
'no-iterator': [ 'error' ],
'no-label-var': [ 'error' ],
'no-labels': [ 'error' ],
'no-lone-blocks': [ 'error' ],
'no-lonely-if': [ 'error' ],
'no-loop-func': [ 'error' ],
'no-magic-numbers': [
'error',
{
detectObjects: true,
enforceConst: true,
ignore: [],
ignoreArrayIndexes: false,
ignoreClassFieldInitialValues: false,
ignoreDefaultValues: false,
ignoreEnums: false,
ignoreNumericLiteralTypes: false,
ignoreReadonlyClassProperties: false,
ignoreTypeIndexes: false,
},
],
'no-multi-assign': [
'error',
{
ignoreNonDeclaration: false,
},
],
'no-multi-str': [ 'error' ],
'no-negated-condition': [ 'error' ],
'no-nested-ternary': [ 'error' ],
'no-new': [ 'error' ],
'no-new-func': [ 'error' ],
'no-new-wrappers': [ 'error' ],
'no-nonoctal-decimal-escape': [ 'error' ],
'no-object-constructor': [ 'error' ],
'no-octal': [ 'error' ],
'no-octal-escape': [ 'error' ],
'no-param-reassign': [
'error',
{
ignorePropertyModificationsFor: [],
ignorePropertyModificationsForRegex: [],
props: true,
},
],
'no-plusplus': [
'error',
{
allowForLoopAfterthoughts: false,
},
],
'no-proto': [ 'error' ],
'no-redeclare': [
'error',
{
builtinGlobals: true,
},
],
'no-regex-spaces': [ 'error' ],
'no-restricted-exports': [
'error',
{
restrictDefaultExports: {
defaultFrom: true,
direct: true,
named: true,
namedFrom: true,
namespaceFrom: true,
},
restrictedNamedExports: [],
restrictedNamedExportsPattern: '',
},
],
'no-restricted-globals': [
'error',
{
checkGlobalObject: true,
globalObjects: [],
globals: [],
},
],
'no-restricted-imports': [ 'error' ],
'no-restricted-properties': [ 'error' ],
'no-restricted-syntax': [ 'error' ],
'no-return-assign': [ 'error', 'always' ],
'no-script-url': [ 'error' ],
'no-sequences': [
'error',
{
allowInParentheses: false,
},
],
'no-shadow': [
'error',
{
allow: [],
builtinGlobals: true,
hoist: 'all',
ignoreFunctionTypeParameterNameValueShadow: false,
ignoreOnInitialization: false,
ignoreTypeValueShadow: false,
},
],
'no-shadow-restricted-names': [
'error',
{
reportGlobalThis: true,
},
],
'no-ternary': [ 'error' ],
'no-throw-literal': [ 'error' ],
'no-undef-init': [ 'error' ],
'no-undefined': [ 'error' ],
'no-underscore-dangle': [
'error',
{
allow: [],
allowAfterSuper: false,
allowAfterThis: false,
allowAfterThisConstructor: false,
allowFunctionParams: false,
allowInArrayDestructuring: false,
allowInObjectDestructuring: false,
enforceInClassFields: true,
enforceInMethodNames: true,
},
],
'no-unneeded-ternary': [
'error',
{
defaultAssignment: false,
},
],
'no-unused-expressions': [
'error',
{
allowShortCircuit: false,
allowTaggedTemplates: false,
allowTernary: false,
enforceForJSX: true,
ignoreDirectives: false,
},
],
'no-unused-labels': [ 'error' ],
'no-useless-call': [ 'error' ],
'no-useless-catch': [ 'error' ],
'no-useless-computed-key': [
'error',
{
enforceForClassMembers: true,
},
],
'no-useless-concat': [ 'error' ],
'no-useless-constructor': [ 'error' ],
'no-useless-escape': [ 'error' ],
'no-useless-rename': [
'error',
{
ignoreDestructuring: false,
ignoreExport: false,
ignoreImport: false,
},
],
'no-useless-return': [ 'error' ],
'no-var': [ 'error' ],
'no-void': [
'error',
{
allowAsStatement: false,
},
],
'no-warning-comments': [
'error',
{
decoration: [ '@' ],
location: 'start',
terms: [ 'todo', 'fixme' ],
},
],
'no-with': [ 'error' ],
'object-shorthand': [ 'error', 'consistent-as-needed' ],
'one-var': [
'error',
{
'awaitUsing': 'never',
'const': 'never',
'let': 'never',
'separateRequires': true,
'using': 'never',
'var': 'never',
},
],
'operator-assignment': [ 'error', 'never' ],
'prefer-arrow-callback': [
'error',
{
allowNamedFunctions: false,
allowUnboundThis: false,
},
],
'prefer-const': [
'error',
{
destructuring: 'any',
ignoreReadBeforeAssign: true,
},
],
'prefer-destructuring': [
'error',
{
AssignmentExpression: {
array: true,
object: true,
},
VariableDeclarator: {
array: true,
object: true,
},
},
{
enforceForRenamedProperties: true,
},
],
'prefer-exponentiation-operator': [ 'error' ],
'prefer-named-capture-group': [ 'error' ],
'prefer-numeric-literals': [ 'error' ],
'prefer-object-has-own': [ 'error' ],
'prefer-object-spread': [ 'error' ],
'prefer-promise-reject-errors': [
'error',
{
allowEmptyReject: false,
},
],
'prefer-regex-literals': [
'error',
{
disallowRedundantWrapping: true,
},
],
'prefer-rest-params': [ 'error' ],
'prefer-spread': [ 'error' ],
'prefer-template': [ 'error' ],
'preserve-caught-error': [
'error',
{
requireCatchParameter: true,
},
],
'radix': [ 'error', 'always' ],
'require-await': [ 'error' ],
'require-unicode-regexp': [
'error',
{
requireFlag: 'v',
},
],
'require-yield': [ 'error' ],
'sort-imports': [
'error',
{
allowSeparatedGroups: false,
ignoreCase: false,
ignoreDeclarationSort: false,
ignoreMemberSort: false,
memberSyntaxSortOrder: [
'none',
'all',
'multiple',
'single',
],
},
],
'sort-keys': [
'error',
'asc',
{
allowLineSeparatedGroups: false,
caseSensitive: true,
ignoreComputedKeys: false,
minKeys: 2,
natural: true,
},
],
'sort-vars': [
'error',
{
ignoreCase: false,
},
],
'strict': [ 'error', 'safe' ],
'symbol-description': [ 'error' ],
'vars-on-top': [ 'error' ],
'yoda': [
'error',
'never',
{
exceptRange: false,
onlyEquality: false,
},
],
},
};