UNPKG

eslint-config-decent

Version:
220 lines (214 loc) 6.02 kB
import type { ConfigWithExtends } from '@eslint/config-helpers'; const base: ConfigWithExtends = { rules: { 'array-callback-return': ['error', { allowImplicit: true }], 'block-scoped-var': 'error', 'callback-return': 'off', 'class-methods-use-this': 'off', 'default-case': ['error', { commentPattern: '^no default$' }], 'default-case-last': 'error', eqeqeq: ['error', 'smart'], 'func-names': 'error', 'func-style': [ 'error', 'declaration', { allowArrowFunctions: false, }, ], 'global-require': 'error', 'grouped-accessor-pairs': 'error', 'guard-for-in': 'error', 'id-length': [ 'error', { exceptions: ['_', '$', 'e', 'i', 'j', 'k', 'q', 't', 'x', 'y'], }, ], 'lines-around-directive': [ 'error', { before: 'always', after: 'always', }, ], 'handle-callback-err': ['error', '^.*err'], 'max-classes-per-file': ['error', 1], 'object-shorthand': [ 'error', 'always', { ignoreConstructors: false, avoidQuotes: true, avoidExplicitReturnArrows: true, }, ], 'one-var': ['error', 'never'], 'operator-assignment': ['error', 'always'], 'no-await-in-loop': 'error', 'no-bitwise': 'error', 'no-buffer-constructor': 'error', 'no-caller': 'error', 'no-cond-assign': ['error', 'always'], 'no-console': 'error', 'no-constructor-return': 'error', 'no-else-return': ['error', { allowElseIf: false }], 'no-empty-static-block': 'error', 'no-eval': 'error', 'no-extend-native': 'error', 'no-extra-bind': 'error', 'no-extra-label': 'error', 'no-inner-declarations': 'error', 'no-iterator': 'error', 'no-label-var': 'error', 'no-labels': ['error', { allowLoop: false, allowSwitch: false }], 'no-lone-blocks': 'error', 'no-lonely-if': 'error', 'no-multi-assign': ['error'], 'no-multi-str': 'error', 'no-negated-condition': 'error', 'no-nested-ternary': 'error', 'no-new-object': 'error', 'no-new-require': 'error', 'no-new-wrappers': 'error', 'no-octal-escape': 'error', 'no-path-concat': 'error', 'no-promise-executor-return': 'error', 'no-proto': 'error', 'no-restricted-exports': [ 'error', { restrictedNamedExports: [ 'default', // use `export default` to provide a default export 'then', // this will cause tons of confusion when your module is dynamically `import()`ed, and will break in most node ESM versions ], }, ], 'no-restricted-globals': [ 'error', { name: 'isFinite', message: 'Use Number.isFinite instead https://github.com/airbnb/javascript#standard-library--isfinite', }, { name: 'isNaN', message: 'Use Number.isNaN instead https://github.com/airbnb/javascript#standard-library--isnan', }, ], 'no-restricted-properties': [ 'error', { object: 'arguments', property: 'callee', message: 'arguments.callee is deprecated', }, { property: '__defineGetter__', message: 'Please use Object.defineProperty instead.', }, { property: '__defineSetter__', message: 'Please use Object.defineProperty instead.', }, ], 'no-restricted-syntax': ['error', 'DebuggerStatement', 'LabeledStatement', 'WithStatement'], 'no-return-assign': ['error', 'always'], 'no-self-compare': 'error', 'no-sequences': 'error', 'no-script-url': 'error', 'no-template-curly-in-string': 'error', 'no-undef-init': 'error', 'no-unneeded-ternary': ['error', { defaultAssignment: false }], 'no-unreachable-loop': [ 'error', { ignore: [], // WhileStatement, DoWhileStatement, ForStatement, ForInStatement, ForOfStatement }, ], 'no-unused-expressions': [ 'error', { allowShortCircuit: false, allowTernary: false, allowTaggedTemplates: false, }, ], 'no-useless-computed-key': 'error', 'no-useless-concat': 'error', 'no-useless-rename': 'error', 'no-useless-return': 'error', 'prefer-const': [ 'error', { destructuring: 'any', ignoreReadBeforeAssign: true, }, ], 'prefer-exponentiation-operator': 'off', 'prefer-numeric-literals': 'error', 'prefer-object-spread': 'error', 'prefer-regex-literals': [ 'error', { disallowRedundantWrapping: true, }, ], 'prefer-template': 'error', 'sort-imports': [ 'error', { ignoreCase: true, ignoreDeclarationSort: true, allowSeparatedGroups: true, }, ], 'symbol-description': 'error', 'unicode-bom': ['error', 'never'], 'vars-on-top': 'error', yoda: 'error', }, }; const cjsAndEsm: ConfigWithExtends = { rules: { curly: ['error', 'multi-line'], 'dot-notation': ['error', { allowKeywords: true }], 'getter-return': ['error', { allowImplicit: true }], 'no-array-constructor': 'error', 'no-empty-function': [ 'error', { allow: ['arrowFunctions', 'functions', 'methods'], }, ], 'no-new-func': 'error', 'no-new-symbol': 'error', 'no-return-await': 'error', 'no-shadow': 'error', 'no-undef': 'error', 'no-unexpected-multiline': 'error', 'no-use-before-define': ['error', { functions: true, classes: true, variables: true }], 'no-useless-constructor': 'error', 'no-var': 'error', 'prefer-arrow-callback': [ 'error', { allowNamedFunctions: false, allowUnboundThis: true, }, ], 'prefer-promise-reject-errors': ['error', { allowEmptyReject: true }], }, }; const cjs: ConfigWithExtends = { rules: { strict: ['error', 'global'], }, }; export const configs = { base, cjsAndEsm, cjs, }; export default { configs, };