{ "root": true, "parserOptions": { "ecmaVersion": 2017, "sourceType": "module", "ecmaFeatures": { "impliedStrict": true } }, "env": { "browser": true, "webextensions": true, "es6": true }, "extends": "eslint:recommended", "rules": { // basic rules "semi": 1, "semi-style": 2, "semi-spacing": 1, "camelcase": 2, "quotes": ["warn", "double", { "avoidEscape": true, "allowTemplateLiterals": false }], "brace-style": 2, "keyword-spacing": ["error", { "after": true }], // just to make sure (are defaults) "indent": ["error", 4], // allow console output for errors in browsers "no-console": 0, // technically required, because of CSP "no-eval": 2, "no-implied-eval": 2, // great new EcmaScript features "prefer-const": ["error", { "destructuring": "all" }], "no-var": 1, "prefer-arrow-callback": 1, "implicit-arrow-linebreak": 1, "arrow-parens": 1, "arrow-spacing": 1, "no-confusing-arrow": 1, "prefer-rest-params": 2, "prefer-spread": 2, "prefer-template": 1, "template-curly-spacing": 1, "symbol-description": 2, "object-shorthand": ["warn", "consistent-as-needed"], "prefer-promise-reject-errors": 2, /* "prefer-destructuring": 1, */ // https://github.com/eslint/eslint/issues/10250 "prefer-numeric-literals": 1, // additional rules "no-new-object": 2, "eqeqeq": ["error", "smart"], "curly": ["error", "all"], "dot-location": ["error", "property"], "dot-notation": 2, "no-array-constructor": 2, "no-throw-literal": 2, "no-self-compare": 2, "no-useless-call": 1, /* "no-use-before-define": 1, */ "consistent-return": 2, "spaced-comment": 1, "no-multi-spaces": 1, "no-new-wrappers": 2, "no-script-url": 2, "no-void": 1, "vars-on-top": 1, "yoda": ["error", "never"], /* "no-warning-comments": 1, */ // should be enabled later "require-await": 1, "require-jsdoc": ["error", { "require": { "FunctionDeclaration": true, "MethodDefinition": false, "ClassDeclaration": false, "ArrowFunctionExpression": false } }], "valid-jsdoc": ["error", { "prefer": { "return": "returns" }, "preferType": { "Boolean": "boolean", "Number": "number", "object": "Object", "String": "string", "HtmlElement": "HTMLElement" }, "requireReturnType": true, "matchDescription": ".+", "requireParamDescription": false, "requireReturnDescription": false }], "wrap-iife": ["error", "inside"], "no-loop-func": 2, "no-unused-expressions": 2, // "linebreak-style": 1, // cannot be used when contributing on Windows } }