{ "rules": { "strict": [2, "never"], "no-undef": 2, "no-var": 1, "no-unused-vars": [ "error", { "vars": "all", "args": "none", "varsIgnorePattern": "^_.+", "ignoreRestSiblings": true } ], "no-empty": [1, { "allowEmptyCatch": true }], "curly": [1, "all"], "eqeqeq": [1, "smart"], "import/no-default-export": 2, "import/no-commonjs": 1, "import/order": [ "error", { "pathGroups": [ { "pattern": "react", "group": "builtin", "position": "before" }, { "pattern": "metabase/**", "group": "internal" }, { "pattern": "metabase/**/components", "group": "internal", "position": "before" }, { "pattern": "__**", "group": "internal", "position": "before" }, { "pattern": "metabase-lib/**", "group": "internal", "position": "after" } ], "groups": [ "builtin", "external", "internal", "parent", "sibling", "index", "object" ] } ], "no-console": [2, { "allow": ["warn", "error"] }], "react/no-is-mounted": 2, "react/prefer-es6-class": 2, "react/display-name": 1, "react/prop-types": 2, "react/no-did-mount-set-state": 0, "react/no-did-update-set-state": 0, "react/no-find-dom-node": 0, "react/no-children-prop": 2, "react/no-string-refs": 2, "react/no-unescaped-entities": 2, "react/jsx-no-target-blank": 2, "react/jsx-key": 2, "react/forbid-component-props": [2, { "forbid": ["sx"] }], "react-hooks/exhaustive-deps": [ "warn", { "additionalHooks": "(useSyncedQueryString|useSafeAsyncFunction)" } ], "prefer-const": [1, { "destructuring": "all" }], "no-useless-escape": 0, "no-only-tests/no-only-tests": [ "error", { "block": [ "describe", "it", "context", "test", "tape", "fixture", "serial", "Feature", "Scenario", "Given", "And", "When", "Then", "describeWithSnowplow", "describeEE" ] } ], "complexity": ["error", { "max": 54 }] }, "globals": { "before": true, "cy": true, "Cypress": true }, "env": { "browser": true, "es6": true, "commonjs": true, "jest": true, "jest/globals": true }, "parser": "babel-eslint", "plugins": ["react", "no-only-tests"], "extends": [ "eslint:recommended", "plugin:react/recommended", "plugin:react/jsx-runtime", "plugin:react-hooks/recommended", "plugin:import/errors", "plugin:import/warnings" ], "settings": { "import/internal-regex": "^metabase/|^metabase-lib/", "import/resolver": "webpack", "import/ignore": ["\\.css$"], "react": { "version": "detect" } }, "parserOptions": { "ecmaFeatures": { "legacyDecorators": true } }, "overrides": [ { "extends": ["plugin:@typescript-eslint/recommended"], "files": ["*.ts", "*.tsx"], "parser": "@typescript-eslint/parser", "plugins": ["@typescript-eslint"], "rules": { "prefer-rest-params": "off", "@typescript-eslint/explicit-module-boundary-types": "off", "@typescript-eslint/no-inferrable-types": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-this-alias": "off", "no-unused-vars": "off", "@typescript-eslint/no-unused-vars": [ "error", { "vars": "all", "args": "none", "varsIgnorePattern": "^_.+", "ignoreRestSiblings": true, "destructuredArrayIgnorePattern": "^_" } ] } }, { "extends": [ "plugin:jest/recommended", "plugin:jest-dom/recommended", "plugin:testing-library/react" ], "plugins": ["jest", "jest-dom", "testing-library"], "files": [ "*.unit.spec.ts", "*.unit.spec.tsx", "*.unit.spec.js", "*.unit.spec.jsx" ], "rules": { "jest/valid-title": ["error", { "ignoreTypeOfDescribeName": true }] } } ] }