{ "plugins": [ "react", "prettier", "@typescript-eslint", "eslint-comments", "lodash", "import" ], "extends": [ "eslint:recommended", "plugin:react/recommended", "plugin:prettier/recommended", "plugin:eslint-comments/recommended" ], "parser": "@typescript-eslint/parser", "parserOptions": { "sourceType": "module", "ecmaFeatures": { "jsx": true, "impliedStrict": true, "experimentalObjectRestSpread": true }, "allowImportExportEverywhere": true, "project": [ "./tsconfig.eslint.json" ] }, "env": { "es6": true, "browser": true, "node": true }, "settings": { "react": { "version": "detect" }, "import/resolver": { "typescript": {} }, "import/internal-regex": "^(electron|react)$" }, "rules": { "func-names": [ "error", "as-needed" ], "no-shadow": "error", "no-extra-semi": 0, "react/prop-types": 0, "react/react-in-jsx-scope": 0, "react/no-unescaped-entities": 0, "react/jsx-no-target-blank": 0, "react/no-string-refs": 0, "prettier/prettier": [ "error", { "printWidth": 120, "tabWidth": 2, "singleQuote": true, "trailingComma": "none", "bracketSpacing": false, "semi": true, "useTabs": false, "bracketSameLine": false } ], "eslint-comments/no-unused-disable": "error", "react/no-unknown-property":[ "error", { "ignore": [ "jsx", "global" ] } ] }, "overrides": [ { "files": [ "**.ts", "**.tsx" ], "extends": [ "plugin:@typescript-eslint/recommended", "plugin:@typescript-eslint/recommended-requiring-type-checking", "prettier" ], "rules": { "@typescript-eslint/explicit-function-return-type": "off", "@typescript-eslint/explicit-module-boundary-types": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-non-null-assertion": "off", "@typescript-eslint/prefer-optional-chain": "error", "@typescript-eslint/ban-types": "off", "no-shadow": "off", "@typescript-eslint/no-shadow": ["error"], "@typescript-eslint/no-unsafe-assignment": "off", "@typescript-eslint/no-unsafe-member-access": "off", "@typescript-eslint/restrict-template-expressions": "off", "@typescript-eslint/consistent-type-imports": [ "error", { "disallowTypeAnnotations": false } ], "lodash/prop-shorthand": [ "error", "always" ], "lodash/import-scope": [ "error", "method" ], "lodash/collection-return": "error", "lodash/collection-method-value": "error", "import/no-extraneous-dependencies": "error", "import/no-anonymous-default-export": "error", "import/order": [ "error", { "groups": [ "builtin", "internal", "external", "parent", "sibling", "index" ], "newlines-between": "always", "alphabetize": { "order": "asc", "orderImportKind": "desc", "caseInsensitive": true } } ] } }, { "extends": [ "plugin:jsonc/recommended-with-json", "plugin:json-schema-validator/recommended" ], "files": [ "*.json" ], "parser": "jsonc-eslint-parser", "plugins": [ "jsonc", "json-schema-validator" ], "rules": { "jsonc/array-element-newline": [ "error", "consistent" ], "jsonc/array-bracket-newline": [ "error", "consistent" ], "jsonc/indent": [ "error", 2 ], "prettier/prettier": "off", "json-schema-validator/no-invalid": "error" } } ] }