@@ -18,12 +18,104 @@ export default tseslint.config(
1818 "react-refresh" : reactRefresh ,
1919 } ,
2020 rules : {
21+ // Regras existentes do seu projeto
2122 ...reactHooks . configs . recommended . rules ,
2223 "react-refresh/only-export-components" : [
2324 "warn" ,
2425 { allowConstantExport : true } ,
2526 ] ,
26- "@typescript-eslint/no-unused-vars" : "off" ,
27+
28+ // === AIRBNB STYLE GUIDE RULES ===
29+
30+ // Formatting
31+ "indent" : [ "error" , 2 , { SwitchCase : 1 } ] ,
32+ "quotes" : [ "error" , "single" , { avoidEscape : true } ] ,
33+ "semi" : [ "error" , "always" ] ,
34+ "comma-dangle" : [ "error" , "always-multiline" ] ,
35+ "object-curly-spacing" : [ "error" , "always" ] ,
36+ "array-bracket-spacing" : [ "error" , "never" ] ,
37+ "computed-property-spacing" : [ "error" , "never" ] ,
38+ "space-in-parens" : [ "error" , "never" ] ,
39+ "no-trailing-spaces" : "error" ,
40+ "eol-last" : [ "error" , "always" ] ,
41+ "no-multiple-empty-lines" : [ "error" , { max : 1 , maxEOF : 0 } ] ,
42+ "comma-spacing" : [ "error" , { before : false , after : true } ] ,
43+ "key-spacing" : [ "error" , { beforeColon : false , afterColon : true } ] ,
44+ "keyword-spacing" : [ "error" , { before : true , after : true } ] ,
45+ "space-before-blocks" : "error" ,
46+ "space-infix-ops" : "error" ,
47+ "space-unary-ops" : [ "error" , { words : true , nonwords : false } ] ,
48+ "spaced-comment" : [ "error" , "always" ] ,
49+
50+ // Function spacing
51+ "space-before-function-paren" : [ "error" , {
52+ anonymous : "always" ,
53+ named : "never" ,
54+ asyncArrow : "always"
55+ } ] ,
56+ "function-paren-newline" : [ "error" , "multiline-arguments" ] ,
57+
58+ // Braces and blocks
59+ "brace-style" : [ "error" , "1tbs" , { allowSingleLine : true } ] ,
60+ "curly" : [ "error" , "multi-line" , "consistent" ] ,
61+ "nonblock-statement-body-position" : [ "error" , "beside" ] ,
62+
63+ // Variable declarations
64+ "no-var" : "error" ,
65+ "prefer-const" : [ "error" , { destructuring : "any" } ] ,
66+ "one-var" : [ "error" , "never" ] ,
67+ "no-unused-vars" : "off" ,
68+ "@typescript-eslint/no-unused-vars" : [ "error" , {
69+ argsIgnorePattern : "^_" ,
70+ varsIgnorePattern : "^_" ,
71+ caughtErrorsIgnorePattern : "^_"
72+ } ] ,
73+
74+ // Arrow functions
75+ "prefer-arrow-callback" : [ "error" , { allowNamedFunctions : false } ] ,
76+ "arrow-spacing" : "error" ,
77+ "arrow-parens" : [ "error" , "as-needed" ] ,
78+
79+ // Objects and arrays
80+ "object-shorthand" : [ "error" , "always" ] ,
81+ "quote-props" : [ "error" , "as-needed" ] ,
82+ "no-duplicate-imports" : "error" ,
83+
84+ // Best practices
85+ "eqeqeq" : [ "error" , "always" , { null : "ignore" } ] ,
86+ "no-eval" : "error" ,
87+ "no-implied-eval" : "error" ,
88+ "no-new-func" : "error" ,
89+ "no-console" : "warn" ,
90+ "no-debugger" : "error" ,
91+ "no-alert" : "warn" ,
92+ "radix" : "error" ,
93+ "yoda" : "error" ,
94+
95+ // Naming conventions
96+ "camelcase" : [ "error" , {
97+ properties : "never" ,
98+ ignoreDestructuring : false ,
99+ ignoreImports : false ,
100+ ignoreGlobals : false
101+ } ] ,
102+
103+ // TypeScript specific
104+ "@typescript-eslint/explicit-function-return-type" : "off" ,
105+ "@typescript-eslint/explicit-module-boundary-types" : "off" ,
106+ "@typescript-eslint/no-explicit-any" : "warn" ,
107+ "@typescript-eslint/prefer-nullish-coalescing" : "error" ,
108+ "@typescript-eslint/prefer-optional-chain" : "error" ,
109+ "@typescript-eslint/no-non-null-assertion" : "warn" ,
110+
111+ // Imports organization
112+ "sort-imports" : [ "error" , {
113+ ignoreCase : false ,
114+ ignoreDeclarationSort : true ,
115+ ignoreMemberSort : false ,
116+ memberSyntaxSortOrder : [ "none" , "all" , "multiple" , "single" ] ,
117+ allowSeparatedGroups : true ,
118+ } ] ,
27119 } ,
28120 }
29- ) ;
121+ ) ;
0 commit comments