module.exports = { env: { browser: true, es2021: true }, extends: [ 'only-warn', 'plugin:react/recommended', 'standard-with-typescript' ], parser: '@typescript-eslint/parser', parserOptions: { ecmaFeatures: { jsx: true }, ecmaVersion: 'latest', sourceType: 'module', project: './tsconfig.json' }, plugins: [ 'react', 'react-hooks', '@typescript-eslint' ], rules: { 'prefer-arrow-callback': 'error', 'func-style': ['error', 'declaration'], 'space-before-function-paren': ['error', 'never'], // Import/export 'import/no-default-export': 'error', // Typescript overload indent: 'off', semi: 'off', "camelcase": "off", 'no-unused-vars': 'off', // Typescript '@typescript-eslint/space-before-function-paren': ['error', 'never'], '@typescript-eslint/indent': ['warn', 2, {SwitchCase: 1}], '@typescript-eslint/semi': ['warn', 'always'], '@typescript-eslint/no-unused-vars': 'error', '@typescript-eslint/ban-types': ['error'], '@typescript-eslint/no-floating-promises': 'off', // disabled cuz troublesome for SweetAlert since they never reject "@typescript-eslint/naming-convention": [ "error", { "selector": "default", "format": ["camelCase"] }, { 'selector': 'function', 'format': ['PascalCase'] }, { "selector": "variable", "format": ["camelCase", "UPPER_CASE"] }, { "selector": "parameter", "format": ["camelCase"], "leadingUnderscore": "allow" }, { 'selector': ['enumMember', 'enum'], 'format': ['PascalCase'] }, { "selector": "memberLike", "modifiers": ["private"], "format": ["camelCase"], "leadingUnderscore": "require" }, { "selector": ['typeLike'], "format": ["PascalCase"], } ], // React 'react-hooks/rules-of-hooks': 'error', // Checks rules of Hooks 'react-hooks/exhaustive-deps': 'warn' // Checks effect dependencies } };