e3922ea1f3
The codebase was incredibly inconsistent with the use of spacing around curly braces, e.g.: ``` // this? const a = {b: 1} // or? const a = { b: 1 } ``` This extended into import statements also. Google's styleguide is no spacing, so we're going with that.
122 lines
3.6 KiB
JavaScript
122 lines
3.6 KiB
JavaScript
module.exports = {
|
|
"root": true,
|
|
"env": {
|
|
"node": true,
|
|
"es6": true
|
|
},
|
|
|
|
"parser": "@typescript-eslint/parser",
|
|
|
|
"plugins": [
|
|
"mocha",
|
|
"@typescript-eslint"
|
|
],
|
|
|
|
"rules": {
|
|
// syntax preferences
|
|
"quotes": [2, "single", {
|
|
"avoidEscape": true,
|
|
"allowTemplateLiterals": true
|
|
}],
|
|
"semi": 2,
|
|
"no-extra-semi": 2,
|
|
"comma-style": [2, "last"],
|
|
"wrap-iife": [2, "inside"],
|
|
"spaced-comment": [2, "always", {
|
|
"markers": ["*"]
|
|
}],
|
|
"eqeqeq": [2],
|
|
"arrow-body-style": [2, "as-needed"],
|
|
"accessor-pairs": [2, {
|
|
"getWithoutSet": false,
|
|
"setWithoutGet": false
|
|
}],
|
|
"brace-style": [2, "1tbs", {"allowSingleLine": true}],
|
|
"curly": [2, "multi-or-nest", "consistent"],
|
|
"object-curly-spacing": [2, "never"],
|
|
"new-parens": 2,
|
|
"func-call-spacing": 2,
|
|
"arrow-parens": [2, "as-needed"],
|
|
"prefer-const": 2,
|
|
"quote-props": [2, "consistent"],
|
|
|
|
// anti-patterns
|
|
"no-var": 2,
|
|
"no-with": 2,
|
|
"no-multi-str": 2,
|
|
"no-caller": 2,
|
|
"no-implied-eval": 2,
|
|
"no-labels": 2,
|
|
"no-new-object": 2,
|
|
"no-octal-escape": 2,
|
|
"no-self-compare": 2,
|
|
"no-shadow-restricted-names": 2,
|
|
"no-cond-assign": 2,
|
|
"no-debugger": 2,
|
|
"no-dupe-keys": 2,
|
|
"no-duplicate-case": 2,
|
|
"no-empty-character-class": 2,
|
|
"no-unreachable": 2,
|
|
"no-unsafe-negation": 2,
|
|
"radix": 2,
|
|
"valid-typeof": 2,
|
|
"no-unused-vars": [2, { "args": "none", "vars": "local", "varsIgnorePattern": "([fx]?describe|[fx]?it|beforeAll|beforeEach|afterAll|afterEach)" }],
|
|
"no-implicit-globals": [2],
|
|
|
|
// es2015 features
|
|
"require-yield": 2,
|
|
"template-curly-spacing": [2, "never"],
|
|
|
|
// spacing details
|
|
"space-infix-ops": 2,
|
|
"space-in-parens": [2, "never"],
|
|
"space-before-function-paren": [2, "never"],
|
|
"no-whitespace-before-property": 2,
|
|
"keyword-spacing": [2, {
|
|
"overrides": {
|
|
"if": {"after": true},
|
|
"else": {"after": true},
|
|
"for": {"after": true},
|
|
"while": {"after": true},
|
|
"do": {"after": true},
|
|
"switch": {"after": true},
|
|
"return": {"after": true}
|
|
}
|
|
}],
|
|
"arrow-spacing": [2, {
|
|
"after": true,
|
|
"before": true
|
|
}],
|
|
|
|
// file whitespace
|
|
"no-multiple-empty-lines": [2, {"max": 2}],
|
|
"no-mixed-spaces-and-tabs": 2,
|
|
"no-trailing-spaces": 2,
|
|
"linebreak-style": [ process.platform === "win32" ? 0 : 2, "unix" ],
|
|
"indent": [2, 2, { "SwitchCase": 1, "CallExpression": {"arguments": 2}, "MemberExpression": 2 }],
|
|
"key-spacing": [2, {
|
|
"beforeColon": false
|
|
}],
|
|
|
|
// ensure we don't have any it.only or describe.only in prod
|
|
"mocha/no-exclusive-tests": "error"
|
|
},
|
|
"overrides": [
|
|
{
|
|
"files": ["*.ts"],
|
|
"extends": [
|
|
'plugin:@typescript-eslint/eslint-recommended',
|
|
'plugin:@typescript-eslint/recommended',
|
|
],
|
|
"rules": {
|
|
"no-unused-vars": 0,
|
|
"@typescript-eslint/no-unused-vars": 2,
|
|
"semi": 0,
|
|
"@typescript-eslint/semi": 2,
|
|
"@typescript-eslint/no-empty-function": 0,
|
|
"@typescript-eslint/no-use-before-define": 0
|
|
}
|
|
}
|
|
]
|
|
};
|