module.exports = { root: true, env: { browser: true, es2020: true }, extends: [ 'eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:react-hooks/recommended', 'plugin:deprecation/recommended', ], parser: '@typescript-eslint/parser', parserOptions: { ecmaVersion: 'latest', sourceType: 'module', project: 'tsconfig.json', }, plugins: ['react-refresh', 'simple-import-sort'], rules: { 'comma-dangle': [ 'error', { 'arrays': 'always-multiline', 'objects': 'always-multiline', 'imports': 'always-multiline', 'exports': 'always-multiline', 'functions': 'never', }, ], 'semi': ['error', 'always'], 'semi-spacing': ['error', { 'after': true, 'before': false }], 'semi-style': ['error', 'last'], 'no-extra-semi': 'error', 'no-unexpected-multiline': 'error', 'no-unreachable': 'error', 'no-irregular-whitespace': ['error', { 'skipTemplates': true }], 'react-refresh/only-export-components': 'warn', 'simple-import-sort/imports': [ 'error', { groups: [ // Side effect imports. ['^\\u0000'], // Node.js builtins. [`^(${require('module').builtinModules.join('|')})(/|$)`], // Packages. `react` related packages come first. ['^react', '^\\w', '^@\\w'], // Type [`^(@@types)(/.*|$)`], // Internal packages. [ `^(~)(/.*|$)`, ], // Parent imports. Put `..` last. ['^\\.\\.(?!/?$)', '^\\.\\./?$'], // Other relative imports. Put same-folder imports and `.` last. ['^\\./(?=.*/)(?!/?$)', '^\\.(?!/?$)', '^\\./?$'], // Style imports. ['^.+\\.s?css$'], ], }, ], '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-non-null-assertion': 'off', '@typescript-eslint/strict-boolean-expressions': [ 'error', { allowString: false, allowNumber: false, allowNullableObject: false, }, ], }, }