Files
advx/.eslintrc.js
rodrigo 5acec6b71e Lint errors
Signed-off-by: Rodrigo Martins <rodrigo.sousa.577@gmail.com>
2025-04-12 20:32:39 -03:00

111 lines
2.7 KiB
JavaScript

module.exports = {
root: true,
env: {
browser: true,
es2021: true,
node: true,
},
extends: [
"eslint:recommended",
"plugin:react/recommended",
"plugin:react-hooks/recommended",
"plugin:@typescript-eslint/recommended",
"plugin:jsx-a11y/recommended",
"plugin:import/errors",
"plugin:import/warnings",
"plugin:import/typescript",
"prettier",
],
parser: "@typescript-eslint/parser",
parserOptions: {
ecmaFeatures: {
jsx: true,
},
ecmaVersion: 2021,
sourceType: "module",
},
plugins: [
"react",
"react-hooks",
"@typescript-eslint",
"jsx-a11y",
"import",
"prettier",
],
settings: {
react: {
version: "detect",
},
"import/resolver": {
typescript: {},
node: {
extensions: [".js", ".jsx", ".ts", ".tsx"],
},
},
},
rules: {
// Regras essenciais para segurança e prevenção de erros
"no-console": ["warn", { allow: ["warn", "error", "info"] }],
"no-unused-vars": "off", // Desativado em favor da versão TypeScript
"@typescript-eslint/no-unused-vars": ["error", { argsIgnorePattern: "^_" }],
"no-undef": "error",
"no-var": "error",
"prefer-const": "error",
eqeqeq: ["error", "always"],
// Regras específicas do React
"react/prop-types": "off", // Desnecessário com TypeScript
"react/react-in-jsx-scope": "off", // Não necessário no React 17+
"react/jsx-uses-react": "off", // Não necessário no React 17+
"react/jsx-key": "error",
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn",
// Regras de acessibilidade
"jsx-a11y/anchor-is-valid": "warn",
// Estilo e formatação
"prettier/prettier": "warn",
// Regras específicas de segurança
"no-eval": "error",
"no-implied-eval": "error",
// Regras para evitar SQL injection (útil para código de backend)
"@typescript-eslint/no-explicit-any": "warn",
// Regras para importações
"import/no-unresolved": "error",
"import/named": "error",
"import/default": "error",
"import/namespace": "error",
"import/order": [
"warn",
{
groups: [
"builtin",
"external",
"internal",
"parent",
"sibling",
"index",
],
"newlines-between": "always",
alphabetize: { order: "asc", caseInsensitive: true },
},
],
},
overrides: [
// Regras específicas para arquivos de teste
{
files: ["**/*.test.ts", "**/*.test.tsx", "**/*.spec.ts", "**/*.spec.tsx"],
env: {
jest: true,
},
rules: {
"@typescript-eslint/no-explicit-any": "off",
},
},
],
};