module.exports = { root: true, env: { node: true, }, parser: '@typescript-eslint/parser', parserOptions: { ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features sourceType: 'module', // Allows for the use of imports }, plugins: ['@typescript-eslint', 'prettier'], extends: [ 'plugin:@typescript-eslint/eslint-recommended', 'prettier/@typescript-eslint', ], ignorePatterns: ['dist/', 'node_modules/'], rules: { // 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', // 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'array-callback-return': 'error', complexity: ['error', { max: 5 }], 'max-lines-per-function': ['error', { max: 35 }], 'max-nested-callbacks': ['error', 3], 'max-depth': ['error', 4], 'max-statements': ['error', 15, { ignoreTopLevelFunctions: true }], 'consistent-return': 'error', eqeqeq: ['error', 'always'], 'no-implicit-coercion': 'error', 'no-invalid-this': 'error', 'no-new-wrappers': 'error', 'no-return-assign': 'error', 'no-return-await': 'error', 'no-sequences': 'error', 'no-throw-literal': 'error', 'no-unused-expressions': 'error', 'no-useless-catch': 'error', 'no-useless-escape': 'error', '@typescript-eslint/no-unused-vars': [ 'error', { argsIgnorePattern: '^_', ignoreRestSiblings: true, caughtErrors: 'none', }, ], 'no-useless-return': 'error', 'prefer-promise-reject-errors': 'error', 'require-await': 'error', yoda: 'error', camelcase: 'error', 'no-mixed-operators': 'error', 'prefer-const': 'error', 'prefer-template': 'error', 'template-curly-spacing': ['error', 'never'], 'func-names': ['error', 'always'], 'padding-line-between-statements': [ 'error', { blankLine: 'always', prev: '*', next: 'return' }, ], 'arrow-parens': [2, 'as-needed'], '@typescript-eslint/no-unused-vars': [ 'warn', { argsIgnorePattern: '^_', ignoreRestSiblings: true, caughtErrors: 'none', }, ], 'array-callback-return': 'error', complexity: ['error', { max: 5 }], 'max-lines-per-function': ['error', { max: 45 }], 'max-lines-per-function': ['warn', { max: 35 }], 'max-nested-callbacks': ['error', 3], 'max-depth': ['error', 4], 'max-statements': ['error', 12, { ignoreTopLevelFunctions: true }], 'consistent-return': 'error', eqeqeq: ['error', 'always'], 'no-implicit-coercion': 'error', 'no-invalid-this': 'error', 'no-new-wrappers': 'error', 'no-return-assign': 'error', 'no-return-await': 'error', 'no-sequences': 'error', 'no-throw-literal': 'error', 'no-unused-expressions': 'warn', 'no-useless-catch': 'error', 'no-useless-escape': 'error', 'no-useless-return': 'error', 'prefer-promise-reject-errors': 'error', 'require-await': 'error', yoda: 'error', camelcase: 'error', 'no-mixed-operators': 'error', 'prefer-const': 'error', 'prefer-template': 'error', 'template-curly-spacing': ['error', 'never'], 'func-names': ['error', 'always'], 'padding-line-between-statements': [ 'warn', { blankLine: 'always', prev: ['const', 'let', 'var'], next: '*', }, { blankLine: 'any', prev: ['const', 'let', 'var'], next: ['const', 'let', 'var'], }, { blankLine: 'always', prev: '*', next: 'return' }, ], // 'arrow-parens': [2, 'as-needed', { requireForBlockBody: true }], // 'implicit-arrow-linebreak': ['error', 'below'], /* */ 'arrow-parens': [2, 'as-needed'], }, }