module.exports = { parser: '@typescript-eslint/parser', parserOptions: { tsconfigRootDir: __dirname, project: null, // hack for webstorm sourceType: 'module', }, plugins: [ '@typescript-eslint/eslint-plugin', 'sonarjs', 'unicorn', 'comments', 'jest', 'promise', 'security', 'no-secrets', 'simple-import-sort', ], extends: [ 'plugin:sonarjs/recommended', 'plugin:@typescript-eslint/recommended', 'plugin:security/recommended', '@jetbrains', '@jetbrains/eslint-config/node', 'plugin:security/recommended', 'plugin:eslint-comments/recommended', 'plugin:jest/recommended', 'plugin:jest/style', 'plugin:promise/recommended', 'plugin:unicorn/recommended', 'plugin:prettier/recommended', ], root: true, env: { node: true, jest: true, }, ignorePatterns: ['.eslintrc.js', 'dist/**/*', 'node_modules/**/*'], rules: { '@typescript-eslint/interface-name-prefix': 'off', '@typescript-eslint/explicit-function-return-type': 'off', '@typescript-eslint/explicit-module-boundary-types': 'off', quotes: ['error', 'single'], semi: ['error', 'always'], 'unicorn/prevent-abbreviations': [ 'error', { allowList: { e2e: true, }, }, ], 'no-magic-numbers': 'warn', 'no-shadow': 'off', '@typescript-eslint/no-shadow': 'error', 'no-multiple-empty-lines': 'error', 'prefer-template': 'error', 'prefer-spread': 'error', 'prefer-arrow-callback': 'error', 'no-var': 'error', 'object-curly-spacing': 'off', 'arrow-spacing': 'error', '@typescript-eslint/no-explicit-any': 'error', 'jest/no-disabled-tests': 'warn', 'jest/no-focused-tests': 'error', 'jest/no-identical-title': 'error', 'jest/prefer-to-have-length': 'warn', 'jest/valid-expect': 'error', 'jest/consistent-test-it': ['error', { fn: 'test' }], 'new-cap': 'off', 'comma-dangle': ['error', 'always-multiline'], 'no-unused-vars': 'off', '@typescript-eslint/no-unused-vars': ['error'], 'dot-notation': 'off', // TODO: enable 'no-use-before-define': 'off', "simple-import-sort/imports": "error", "simple-import-sort/exports": "error", }, };