railbird-gql/.eslintrc.js
2024-01-05 19:19:45 -07:00

70 lines
2.4 KiB
JavaScript

module.exports = {
"settings": {
"react": {
"version": "detect",
},
},
"env": {
"browser": true,
"es2021": true,
"node": true,
},
"extends": "plugin:react/recommended",
"overrides": [
{
"env": {
"node": true,
},
"files": [
".eslintrc.{js,cjs}",
],
"parserOptions": {
"sourceType": "script",
},
},
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module",
},
"plugins": [
"@typescript-eslint",
"react",
"react-hooks",
"react-native",
],
"rules": {
// Enforce tab width of 4 spaces
"indent": ["error", 4, { "SwitchCase": 1 }],
// Best Practices
"eqeqeq": ["error", "always"], // Enforce '===' instead of '=='
"curly": "error", // Require curly braces for all control statements
"no-unused-vars": "warn", // Warn about variables that are declared but not used
// Stylistic Issues
"quotes": ["error", "double"], // Enforce double quotes
"semi": ["error", "always"], // Enforce semicolons at the end of statements
"no-multi-spaces": "error", // Disallow multiple spaces that are not used for indentation
"comma-dangle": ["error", "always-multiline"], // Require trailing commas for multiline
// React Specific
"react/jsx-filename-extension": [1, { "extensions": [".tsx"] }], // Allow jsx syntax in .tsx files
"react/react-in-jsx-scope": "off", // Not necessary with React 17+
"react/prop-types": "off", // Not needed with TypeScript
// React-Native Specific
"react-native/no-unused-styles": "warn", // Warn about unused styles
"react-native/split-platform-components": "warn", // Encourage splitting of React Native components into platform-specific files
// TypeScript Specific
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/no-unused-vars": ["warn", { "argsIgnorePattern": "^_" }], // Warn about variables that are declared but not used
// Hooks Specific
"react-hooks/rules-of-hooks": "error", // Checks rules of Hooks
"react-hooks/exhaustive-deps": "warn", // Checks effect dependencies
},
};