module.exports = { root: true, env: { node: true }, parser: '@typescript-eslint/parser', plugins: [ '@typescript-eslint', ], extends: [ 'eslint:recommended', // 'plugin:@typescript-eslint/eslint-recommended', 'plugin:@typescript-eslint/recommended', ], rules: { '@typescript-eslint/naming-convention': [ 'error', { 'selector': 'variable', 'format': ['camelCase', 'UPPER_CASE', 'PascalCase'], 'leadingUnderscore': 'allow' }, { 'selector': 'typeLike', 'format': ['PascalCase'] } ], '@typescript-eslint/indent': [ 'error', 2 ], '@typescript-eslint/prefer-namespace-keyword': 'error', '@typescript-eslint/quotes': [ 'error', 'single', { 'avoidEscape': true } ], '@typescript-eslint/semi': [ 'error', 'never' ], '@typescript-eslint/type-annotation-spacing': 'error', '@typescript-eslint/member-delimiter-style': [ 'error', { 'multiline': { 'delimiter': 'comma', 'requireLast': false }, 'singleline': { 'delimiter': 'comma', 'requireLast': false } } ], '@typescript-eslint/no-unused-vars': [ 'warn', { 'vars': 'all', 'args': 'all', 'varsIgnorePattern': '^\_.*$', 'argsIgnorePattern': '^\_.*$', } ], '@typescript-eslint/no-extra-parens': 'error', '@typescript-eslint/brace-style': 'error', '@typescript-eslint/no-use-before-define': 'off', '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/explicit-function-return-type': 'off', '@typescript-eslint/no-namespace': 'off', '@typescript-eslint/no-inferrable-types': 'off', '@typescript-eslint/no-empty-function': 'off', '@typescript-eslint/no-empty-interface': 'off', 'no-null/no-null': 'off', 'no-useless-escape': 'off', 'no-trailing-spaces': 'error', 'no-var': 'error', 'prefer-const': 'error', 'spaced-comment': 'error', 'object-curly-spacing': ['error', 'always'], 'space-in-parens': ['error', 'never'], 'array-bracket-spacing': ['error', 'never'], 'space-before-function-paren': [ 'error', { 'named': 'never', 'anonymous': 'always', 'asyncArrow': 'always' } ], '@typescript-eslint/no-var-requires': 'off' } }