117 строки
3.5 KiB
Plaintext
117 строки
3.5 KiB
Plaintext
{
|
|
"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"]
|
|
}
|
|
}
|
|
}
|
|
}
|