module.exports = { root: true, extends: '@react-native', rules: { // React Native 'react-native/no-unused-styles': 'error', 'react-native/no-inline-styles': 'warn', 'react-native/no-color-literals': 'warn', 'react-native/no-raw-text': 'off', // TypeScript '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }], '@typescript-eslint/no-explicit-any': 'error', '@typescript-eslint/explicit-function-return-type': 'off', '@typescript-eslint/explicit-module-boundary-types': 'off', '@typescript-eslint/no-non-null-assertion': 'warn', '@typescript-eslint/no-unused-expressions': 'error', '@typescript-eslint/no-shadow': 'error', 'no-shadow': 'off', // Désactivé au profit de la version TypeScript // React/Hooks 'react-hooks/rules-of-hooks': 'error', 'react-hooks/exhaustive-deps': 'warn', 'react/no-unstable-nested-components': ['error', { allowAsProps: true }], 'react/jsx-no-bind': ['warn', { allowArrowFunctions: true }], 'react/no-array-index-key': 'error', // Code Quality 'no-console': ['warn', { allow: ['warn', 'error'] }], 'prefer-const': 'error', 'no-var': 'error', 'eqeqeq': ['error', 'always'], 'no-duplicate-imports': 'error', 'no-return-await': 'error', 'no-param-reassign': ['error', { props: false }], 'no-throw-literal': 'error', 'max-lines': ['error', { max: 600, skipBlankLines: true }], 'max-len': ['error', { code: 100, ignoreUrls: true, ignoreStrings: true, ignoreTemplateLiterals: true }], // Style 'arrow-body-style': ['error', 'as-needed'], 'object-shorthand': ['error', 'always'], 'prefer-template': 'error', 'prefer-destructuring': ['error', { array: false, object: true }], }, };