diff options
Diffstat (limited to '.eslintrc.json')
-rw-r--r-- | .eslintrc.json | 101 |
1 files changed, 97 insertions, 4 deletions
diff --git a/.eslintrc.json b/.eslintrc.json index 0e3b939a..fcc6995b 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,8 +1,16 @@ { + "root": true, "extends": "eslint:recommended", "parserOptions": { - "ecmaVersion": 8 + "ecmaVersion": 8, + "sourceType": "script" }, + "env": { + "browser": true, + "es2017": true, + "webextensions": true + }, + "plugins": ["no-unsanitized"], "ignorePatterns": [ "/ext/mixed/lib/", "/ext/bg/js/templates.js" @@ -13,16 +21,101 @@ "curly": ["error", "all"], "dot-notation": "error", "eqeqeq": "error", + "func-names": ["error", "always"], "no-case-declarations": "error", "no-const-assign": "error", "no-constant-condition": "off", - "no-undef": "off", + "no-global-assign": "error", + "no-param-reassign": "off", + "no-prototype-builtins": "error", + "no-shadow": ["error", {"builtinGlobals": false}], + "no-undef": "error", + "no-unneeded-ternary": "error", "no-unused-vars": ["error", {"vars": "local", "args": "after-used", "argsIgnorePattern": "^_", "caughtErrors": "none"}], + "no-unused-expressions": "error", "no-var": "error", "prefer-const": ["error", {"destructuring": "all"}], "quote-props": ["error", "consistent"], "quotes": ["error", "single", "avoid-escape"], "require-atomic-updates": "off", - "semi": "error" - } + "semi": "error", + + // Whitespace rules + "brace-style": ["error", "1tbs", {"allowSingleLine": true}], + "indent": ["error", 4, {"SwitchCase": 1, "MemberExpression": 1, "flatTernaryExpressions": true, "ignoredNodes": ["ConditionalExpression"]}], + "object-curly-newline": "error", + "padded-blocks": ["error", "never"], + + "array-bracket-spacing": ["error", "never"], + "arrow-spacing": ["error", {"before": true, "after": true}], + "block-spacing": ["error", "always"], + "comma-spacing": ["error", { "before": false, "after": true }], + "computed-property-spacing": ["error", "never"], + "func-call-spacing": ["error", "never"], + "generator-star-spacing": ["error", "before"], + "key-spacing": ["error", {"beforeColon": false, "afterColon": true, "mode": "strict"}], + "keyword-spacing": ["error", {"before": true, "after": true}], + "no-trailing-spaces": "error", + "no-whitespace-before-property": "error", + "object-curly-spacing": ["error", "never"], + "rest-spread-spacing": ["error", "never"], + "semi-spacing": ["error", {"before": false, "after": true}], + "space-in-parens": ["error", "never"], + "space-unary-ops": "error", + "spaced-comment": ["error", "always", {"markers": ["global"]}], + "switch-colon-spacing": ["error", {"after": true, "before": false}], + "template-curly-spacing": ["error", "never"], + "template-tag-spacing": ["error", "never"], + + // Extensions + "no-unsanitized/method": "error", + "no-unsanitized/property": "error" + }, + "overrides": [ + { + "files": ["*.js"], + "excludedFiles": ["ext/mixed/js/core.js"], + "globals": { + "yomichan": "readonly", + "errorToJson": "readonly", + "jsonToError": "readonly", + "logError": "readonly", + "isObject": "readonly", + "hasOwn": "readonly", + "toIterable": "readonly", + "stringReverse": "readonly", + "promiseTimeout": "readonly", + "stringReplaceAsync": "readonly", + "parseUrl": "readonly", + "EventDispatcher": "readonly", + "EventListenerCollection": "readonly", + "EXTENSION_IS_BROWSER_EDGE": "readonly" + } + }, + { + "files": ["ext/mixed/js/core.js"], + "globals": { + "chrome": "writable" + } + }, + { + "files": ["ext/bg/js/settings/*.js"], + "env": { + "jquery": true + } + }, + { + "files": ["test/**/*.js"], + "parserOptions": { + "ecmaVersion": 8, + "sourceType": "module" + }, + "env": { + "browser": false, + "es2017": true, + "node": true, + "webextensions": false + } + } + ] } |