213 lines
6.6 KiB
Plaintext
213 lines
6.6 KiB
Plaintext
{
|
|
"root": true,
|
|
"env": {
|
|
"browser": true,
|
|
"es6": true,
|
|
"node": true,
|
|
"webextensions": true
|
|
},
|
|
"ignorePatterns": [
|
|
"*.html",
|
|
"tsconfig.json"
|
|
],
|
|
"extends": [
|
|
"eslint:recommended",
|
|
"plugin:react/recommended",
|
|
"plugin:react-hooks/recommended",
|
|
"airbnb-base",
|
|
"airbnb/rules/react",
|
|
"airbnb-typescript",
|
|
"prettier"
|
|
],
|
|
"plugins": [
|
|
"import",
|
|
"jsdoc",
|
|
"react-prefer-function-component"
|
|
],
|
|
"globals": {
|
|
"Atomics": "readonly",
|
|
"SharedArrayBuffer": "readonly",
|
|
"debugger": true,
|
|
"browser": true,
|
|
"context": true,
|
|
"JSX": true
|
|
},
|
|
"parser": "@typescript-eslint/parser",
|
|
"parserOptions": {
|
|
"project": "./tsconfig.json",
|
|
"ecmaVersion": 2022,
|
|
"sourceType": "module",
|
|
"ecmaFeatures": {
|
|
"jsx": true,
|
|
"modules": true,
|
|
"experimentalObjectRestSpread": true
|
|
}
|
|
},
|
|
"settings": {
|
|
"react": {
|
|
"version": "detect"
|
|
},
|
|
"jsdoc": {
|
|
"mode": "typescript"
|
|
},
|
|
"import/parsers": {
|
|
"@typescript-eslint/parser": [
|
|
".ts",
|
|
".tsx"
|
|
]
|
|
},
|
|
"import/resolver": {
|
|
"typescript": {
|
|
"alwaysTryTypes": true,
|
|
"project": "./tsconfig.json"
|
|
}
|
|
}
|
|
},
|
|
"rules": {
|
|
"prefer-const": [
|
|
"off",
|
|
{
|
|
"destructuring": "any",
|
|
"ignoreReadBeforeAssign": false
|
|
}
|
|
],
|
|
"no-inner-declarations": "off",
|
|
"sort-imports": "off",
|
|
"no-case-declarations": "off",
|
|
"no-unreachable": "warn",
|
|
"no-constant-condition": "error",
|
|
"space-before-function-paren": "off",
|
|
"no-undef": "off",
|
|
"no-return-await": "off",
|
|
"@typescript-eslint/return-await": "off",
|
|
"@typescript-eslint/no-shadow": [
|
|
"off"
|
|
],
|
|
"@typescript-eslint/no-use-before-define": [
|
|
"off"
|
|
],
|
|
"class-methods-use-this": "off",
|
|
"react-hooks/exhaustive-deps": "warn",
|
|
"@typescript-eslint/lines-between-class-members": "off",
|
|
"no-param-reassign": [
|
|
"error",
|
|
{
|
|
"props": false
|
|
}
|
|
],
|
|
"no-console": "off",
|
|
"consistent-return": "off",
|
|
"react/destructuring-assignment": "off",
|
|
"import/prefer-default-export": "off",
|
|
"no-promise-executor-return": "off",
|
|
"import/no-cycle": "off",
|
|
"import/no-extraneous-dependencies": "off",
|
|
"react/jsx-props-no-spreading": "off",
|
|
"keyword-spacing": [
|
|
"error",
|
|
{
|
|
"before": true,
|
|
"after": true
|
|
}
|
|
],
|
|
"no-continue": "off",
|
|
"space-before-blocks": [
|
|
"error",
|
|
{
|
|
"functions": "always",
|
|
"keywords": "always",
|
|
"classes": "always"
|
|
}
|
|
],
|
|
"react/jsx-filename-extension": [
|
|
1,
|
|
{
|
|
"extensions": [
|
|
".tsx"
|
|
]
|
|
}
|
|
],
|
|
"react/no-deprecated": "warn",
|
|
"react/prop-types": "off",
|
|
"react-prefer-function-component/react-prefer-function-component": [
|
|
"warn",
|
|
{
|
|
"allowComponentDidCatch": false
|
|
}
|
|
],
|
|
"react/function-component-definition": "off",
|
|
"react/button-has-type": "off",
|
|
"jsdoc/require-param-type": "off",
|
|
"jsdoc/require-returns-type": "off",
|
|
"jsdoc/newline-after-description": "off",
|
|
"react/require-default-props": "off",
|
|
"jsdoc/require-jsdoc": [
|
|
"warn",
|
|
{
|
|
"enableFixer": false,
|
|
"publicOnly": true,
|
|
"checkConstructors": false,
|
|
"require": {
|
|
"ArrowFunctionExpression": true,
|
|
"ClassDeclaration": true,
|
|
"ClassExpression": true,
|
|
"FunctionExpression": true
|
|
},
|
|
"contexts": [
|
|
"MethodDefinition:not([key.name=\"componentDidMount\"]):not([key.name=\"render\"])",
|
|
"ArrowFunctionExpression",
|
|
"ClassDeclaration",
|
|
"ClassExpression",
|
|
"ClassProperty:not([key.name=\"state\"]):not([key.name=\"componentDidMount\"])",
|
|
"FunctionDeclaration",
|
|
"FunctionExpression",
|
|
"TSDeclareFunction",
|
|
"TSEnumDeclaration",
|
|
"TSInterfaceDeclaration",
|
|
"TSMethodSignature",
|
|
"TSModuleDeclaration",
|
|
"TSTypeAliasDeclaration"
|
|
]
|
|
}
|
|
],
|
|
"@typescript-eslint/no-explicit-any": "off",
|
|
"@typescript-eslint/no-unused-vars": "warn",
|
|
"@typescript-eslint/naming-convention": "off",
|
|
"@typescript-eslint/space-before-function-paren": "off",
|
|
"@typescript-eslint/ban-ts-comment": "off",
|
|
"@typescript-eslint/no-empty-interface": "warn",
|
|
"import/no-restricted-paths": [
|
|
"error",
|
|
{
|
|
"zones": [
|
|
{
|
|
"target": "./src/background",
|
|
"from": "./src/views",
|
|
"message": "You cannot import into the `background` directory from the `views` directory (i.e. content script files) because it will break the build!"
|
|
},
|
|
{
|
|
"target": "./src/views",
|
|
"from": "./src/background",
|
|
"message": "You cannot import into the `views` directory from the `background` directory (i.e. background script files) because it will break the build!"
|
|
},
|
|
{
|
|
"target": "./src/shared",
|
|
"from": "./",
|
|
"except": [
|
|
"./src/shared",
|
|
"./node_modules"
|
|
],
|
|
"message": "You cannot import into `shared` from an external directory."
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"no-restricted-syntax": [
|
|
"error",
|
|
"ForInStatement",
|
|
"LabeledStatement",
|
|
"WithStatement"
|
|
]
|
|
}
|
|
}
|