{ "env": { "browser": true, "shared-node-browser": true, "node": true, "es6": true }, "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier", "plugin:prettier/recommended", "plugin:react-hooks/recommended", "plugin:import/errors", "plugin:import/warnings" ], "plugins": [ "@typescript-eslint", "react", "prettier", "react-hooks", "import", "@vitest", "eslint-plugin-react-compiler", "testing-library" ], "parser": "@typescript-eslint/parser", "parserOptions": { "ecmaVersion": 2018, "sourceType": "module", "ecmaFeatures": { "jsx": true } }, "rules": { "react-compiler/react-compiler": "warn", "eqeqeq": "error", "no-var": "error", "prefer-const": "error", "curly": ["warn", "multi-line", "consistent"], "no-console": "off", "import/extensions": ["error", "always"], "import/no-unresolved": ["error", { "commonjs": true, "amd": true }], "import/export": "error", "import/no-duplicates": ["error"], "@typescript-eslint/explicit-module-boundary-types": "off", "@typescript-eslint/no-unused-vars": [ "warn", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" } ], "@typescript-eslint/no-use-before-define": "off", "@typescript-eslint/no-empty-function": "off", "@typescript-eslint/no-explicit-any": "off", "import/namespace": "off", "import/named": "off", "import/order": [ "error", { "alphabetize": { "order": "asc", "caseInsensitive": true }, "groups": [ "builtin", "external", "internal", "parent", "sibling", "index", "object" ], "newlines-between": "never", "pathGroups": [ { "pattern": "react", "group": "builtin", "position": "before" } ], "pathGroupsExcludedImportTypes": ["builtin"] } ], "react/jsx-uses-react": "off", "react/react-in-jsx-scope": "off", "sort-imports": [ "error", { "ignoreDeclarationSort": true } ] }, "settings": { "react": { "version": "detect" }, "import/extensions": [".js", ".jsx", ".ts", ".tsx"], "import/parsers": { "@typescript-eslint/parser": [".js", ".jsx", ".ts", ".tsx"] }, "import/resolver": { "alias": { "extensions": [".js", ".jsx", ".ts", ".tsx"], "map": [ ["^jotai$", "./src/index.ts"], ["jotai", "./src"] ] } } }, "overrides": [ { "extends": [ "plugin:testing-library/react", "plugin:@vitest/legacy-recommended" ], "files": ["tests/**/*.ts", "tests/**/*.tsx"], "rules": { "import/extensions": ["error", "never"], "@typescript-eslint/no-unused-vars": "off", "@vitest/expect-expect": "off", "@vitest/consistent-test-it": [ "error", { "fn": "it", "withinDescribe": "it" } ] } }, { "files": ["./*.js"], "rules": { "@typescript-eslint/no-require-imports": "off" } } ]}