@lofty87/eslint-config
Version:
Lofty87 Project Code Convention (ESLint)
100 lines (99 loc) • 4.24 kB
JavaScript
module.exports = {
parser: '@typescript-eslint/parser',
parserOptions: {
project: './tsconfig.json',
},
plugins: [
'@typescript-eslint',
],
rules: {
'@typescript-eslint/adjacent-overload-signatures': 'error',
'@typescript-eslint/await-thenable': 'error',
'@typescript-eslint/block-spacing': [ 'error', 'always' ],
'@typescript-eslint/brace-style': [ 'error', '1tbs', { allowSingleLine: true } ],
'@typescript-eslint/comma-dangle': [ 'error', {
arrays: 'always-multiline',
objects: 'always-multiline',
imports: 'always-multiline',
exports: 'always-multiline',
functions: 'never',
enums: 'always-multiline',
generics: 'always-multiline',
tuples: 'always-multiline',
} ],
'@typescript-eslint/comma-spacing': [ 'error', { before: false, after: true } ],
'@typescript-eslint/dot-notation': 'off',
'@typescript-eslint/explicit-member-accessibility': 'off',
'@typescript-eslint/func-call-spacing': [ 'error', 'never' ],
'@typescript-eslint/indent': [ 'error', 2, {
ArrayExpression: 'first',
CallExpression: { arguments: 'first' },
ImportDeclaration: 'first',
MemberExpression: 0,
ObjectExpression: 'first',
SwitchCase: 1,
VariableDeclarator: 'first',
flatTernaryExpressions: true,
offsetTernaryExpressions: false,
outerIIFEBody: 1,
} ],
'@typescript-eslint/keyword-spacing': [ 'error', { before: true, after: true } ],
'@typescript-eslint/key-spacing': [ 'error', {
beforeColon: false,
afterColon: true,
mode: 'strict',
} ],
'@typescript-eslint/lines-between-class-members': [ 'error', { exceptAfterOverload: true } ],
'@typescript-eslint/member-delimiter-style': [ 'error', {
singleline: {
delimiter: 'semi',
requireLast: true,
},
multiline: {
delimiter: 'semi',
requireLast: true,
},
} ],
'@typescript-eslint/member-ordering': 'error',
'@typescript-eslint/method-signature-style': [ 'error', 'property' ],
'@typescript-eslint/naming-convention': 'off',
'@typescript-eslint/no-confusing-non-null-assertion': 'error',
'@typescript-eslint/no-dupe-class-members': 'error',
'@typescript-eslint/no-duplicate-enum-values': 'error',
'@typescript-eslint/no-duplicate-type-constituents': 'error',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-extra-non-null-assertion': 'error',
'@typescript-eslint/no-extra-semi': 'error',
'@typescript-eslint/no-inferrable-types': 'error',
'@typescript-eslint/no-misused-new': 'error',
'@typescript-eslint/no-misused-promises': [ 'error', {
checksConditionals: true,
checksVoidReturn: false,
checksSpreads: true,
} ],
'@typescript-eslint/no-non-null-asserted-nullish-coalescing': 'error',
'@typescript-eslint/no-throw-literal': 'error',
'@typescript-eslint/no-unnecessary-boolean-literal-compare': 'error',
'@typescript-eslint/no-unnecessary-condition': [ 'error', { allowConstantLoopConditions: true } ],
'@typescript-eslint/no-unnecessary-qualifier': 'error',
'@typescript-eslint/no-unnecessary-type-arguments': 'error',
'@typescript-eslint/no-unnecessary-type-assertion': 'error',
'@typescript-eslint/no-unnecessary-type-constraint': 'error',
'@typescript-eslint/no-unused-expressions': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/object-curly-spacing': [ 'error', 'always' ],
'@typescript-eslint/promise-function-async': 'off',
'@typescript-eslint/restrict-plus-operands': 'error',
'@typescript-eslint/semi': [ 'error', 'always' ],
'@typescript-eslint/sort-type-constituents': 'off',
'@typescript-eslint/space-before-blocks': 'error',
'@typescript-eslint/space-before-function-paren': [ 'error', {
anonymous: 'never',
named: 'never',
asyncArrow: 'always',
} ],
'@typescript-eslint/space-infix-ops': 'error',
'@typescript-eslint/type-annotation-spacing': 'error',
'@typescript-eslint/unified-signatures': 'error',
},
};