{ "env": { "browser": true, "node": true, "commonjs": false, "shared-node-browser": false, "es6": true, "worker": false, "amd": false, "mocha": true, "jasmine": false, "jest": false, "phantomjs": false, "protractor": false, "qunit": false, "jquery": false, "prototypejs": false, "shelljs": false, "meteor": false, "mongo": false, "applescript": false, "nashorn": false, "serviceworker": false, "atomtest": false, "embertest": false, "webextensions": false, "greasemonkey": false }, "root": true, "parser": "@typescript-eslint/parser", "extends": ["eslint:recommended", "plugin:mocha/recommended", "plugin:@typescript-eslint/recommended"], "plugins": ["@typescript-eslint", "mocha"], "parserOptions": { "sourceType": "module", "allowImportExportEverywhere": true, "ecmaVersion": 2021, "ecmaFeatures": { "impliedStrict": true } }, "rules": { // Enforcing "indent": ["error", 2, {"ignoredNodes": ["SwitchCase"]}], "block-spacing": ["error", "never"], // "keyword-spacing": ["error", {"before": true, "after": true}], // "no-multi-spaces": ["error"], "linebreak-style": ["error", "unix"], "quotes": ["error", "single"], "semi": ["error", "always"], "no-bitwise": ["error"], "camelcase": ["off"], "curly": ["error"], "eqeqeq": ["error"], "guard-for-in": ["error"], "wrap-iife": ["error"], "no-use-before-define": ["off"], "new-cap": ["error", { "newIsCapExceptionPattern": "Constructor$", "properties": false }], "no-caller": ["error"], "no-empty": ["error"], "no-new": ["error"], "no-plusplus": ["off"], "no-undef": ["error"], "no-unused-vars": ["off"], "max-params": ["error", 10], "max-depth": ["error", 5], "max-statements": ["error", 40], "complexity": ["error", 8], "max-len": ["error", {"code": 120, "comments": 140}], "no-var": ["off"], // Relaxing "no-debugger": ["error"], "no-eq-null": ["error"], "no-eval": ["error"], "no-iterator": ["error"], "no-loop-func": ["off"], "no-multi-str": ["error"], "require-yield": ["error"], "valid-typeof": ["error"], "no-proto": ["error"], "no-script-url": ["error"], "no-shadow": ["error"], "dot-notation": ["error"], "no-new-func": ["error"], "no-new-object": ["error"], "mocha/no-mocha-arrows": ["off"], "mocha/no-setup-in-describe": ["off"], "mocha/no-hooks-for-single-case": ["off"], "prefer-const": "off", // Required by TypeScript "no-empty-function": "off", // TypeScript "@typescript-eslint/no-unused-vars": "off", "@typescript-eslint/no-empty-function": ["error", {"allow": ["arrowFunctions", "methods", "asyncMethods"]}], "@typescript-eslint/ban-types": ["error", { "types": {"{}": false, "Function": false, "Object": false}, "extendDefaults": true }], "@typescript-eslint/no-namespace": "off", "@typescript-eslint/no-var-requires": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-shadow": "error" }, // Custom Globals "globals": { "require" : false, "module" : false, "Promise" : false, "GLOBAL" : false, "angular" : false, "moment" : false, "inject" : false, "config" : false, "spyOn" : false, "mock" : false, "expect" : false, "$" : false, "sinon" : false, "NodeJS" : true }, // additional predefined global variables "overrides": [ { "files": ["*.ts"], "rules": { "semi": "off", "no-shadow": "off", "no-undef": "off" } } ] }