{ "extends": [ "amo", "plugin:amo/recommended" ], "plugins": ["testing-library"], "overrides": [ { //Enable eslint-plugin-testing-library rules only for test files. "files": ["**/tests/**/*.js"], "extends": ["plugin:testing-library/react"], "rules": {"testing-library/render-result-naming-convention": "off"} }, ], "globals": { "CLIENT_CONFIG": true, "document": true, "webpackIsomorphicTools": true, "ga": true, // https://flow.org/en/docs/types/utilities/#toc-objmap "$ObjMap": true, // https://flow.org/en/docs/types/utilities/#toc-propertytype "$PropertyType": true, // These are undocumented utilities that ship with Flow // https://github.com/facebook/flow/issues/875 "$ReadOnlyArray": true, "$Rest": true, "$Shape": true, "$Keys": true, "$Values": true, // See: https://github.com/facebook/flow/issues/1609 "SyntheticEvent": true, "SyntheticInputEvent": true, // See: https://github.com/facebook/flow/issues/5627 "TimeoutID": true, // Standard DOM globals: "Generator": true, "HTMLAnchorElement": true, "HTMLButtonElement": true, "HTMLElement": true, "HTMLInputElement": true, "HTMLSelectElement": true, "HTMLTextAreaElement": true, "Node": true, // This is used to send form data to the API. "FormData": true, // This is used to upload files in the browser. "File": true, "FileReader": true, "ProgressEvent": true, // Types that can be used with sendBeacon: "BodyInit": true, // This is used by api/index.js. "Response": true }, "parser": "@babel/eslint-parser", "rules": { // We omit `debug` because we don't turn that on by default. "amo/only-log-strings": ["error", { "methods": ["fatal", "info", "error", "warn"] }], "react/default-props-match-prop-types": "off", "react/function-component-definition": "off", "react/jsx-no-useless-fragment" : ["error", { allowExpressions: true }], "react/no-unstable-nested-components": ["error", { allowAsProps: true }], // This rule is disabled because it outputs a lot of false positives, see: // https://github.com/benmosher/eslint-plugin-import/issues/1343 "import/no-cycle": "off", // This rule is disabled because it outputs a lot of false positives, see: // https://github.com/import-js/eslint-plugin-import/issues/2181 "import/no-import-module-exports": "off", "jest/expect-expect": ["warn", { "assertFunctionNames": [ "expect", // Allow the use of `sinon` in test cases. "sinon.assert.*", "mock*.verify", // Allow our custom matcher. "matchingSagaAction", ], }], // This allows RTK's createSlice with the simple shorthand syntax. "no-param-reassign": ["error", { "props": true, "ignorePropertyModificationsFor": [ "state" ] }] }, "settings": { "import/core-modules": [ // This is a workaround for: https://github.com/benmosher/eslint-plugin-import/issues/793 "redux-saga/effects", ], "import/ignore": [ // Because of CommonJS incompatibility, we can't // check for bad imports in node_modules. "node_modules", // Ignore non-JS imports. "\\.gif$", "\\.jpeg$", "\\.jpg$", "\\.mp4$", "\\.png$", "\\.scss$", "\\.svg$", "\\.webm$" ], "import/resolver": { "node": { // This adds ./src for relative imports. "moduleDirectory": ["node_modules", "src"] } } } }