-
Notifications
You must be signed in to change notification settings - Fork 1
/
.eslintrc.cjs
80 lines (80 loc) · 5.06 KB
/
.eslintrc.cjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
module.exports = {
root: true,
parser: '@typescript-eslint/parser',
env: {
node: true,
browser: true,
es2020: true
},
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended'
],
overrides: [
],
parserOptions: {
ecmaVersion: 2020,
sourceType: 'module',
project: ['./tsconfig.json']
},
plugins: [
'@typescript-eslint'
],
ignorePatterns: [
'**/{node_modules,dist,lib,out,bin}',
'**/generated/**/*',
'.eslintrc.js'
],
rules: {
// List of [ESLint rules](https://eslint.org/docs/rules/)
'arrow-parens': ['off', 'as-needed'], // do not force arrow function parentheses
'constructor-super': 'error', // checks the correct use of super() in sub-classes
'dot-notation': 'error', // obj.a instead of obj['a'] when possible
'eqeqeq': 'error', // ban '==', don't use 'smart' option!
'guard-for-in': 'error', // needs obj.hasOwnProperty(key) checks
'new-parens': 'error', // new Error() instead of new Error
'no-bitwise': 'error', // bitwise operators &, | can be confused with &&, ||
'no-caller': 'error', // ECMAScript deprecated arguments.caller and arguments.callee
'no-cond-assign': 'error', // assignments if (a = '1') are error-prone
'no-debugger': 'error', // disallow debugger; statements
'no-eval': 'error', // eval is considered unsafe
'no-inner-declarations': 'off', // we need to have 'namespace' functions when using TS 'export ='
'no-labels': 'error', // GOTO is only used in BASIC ;)
'no-multiple-empty-lines': ['error', { 'max': 1 }], // two or more empty lines need to be fused to one
'no-new-wrappers': 'error', // there is no reason to wrap primitve values
'no-throw-literal': 'error', // only throw Error but no objects {}
'no-trailing-spaces': 'error', // trim end of lines
'no-unsafe-finally': 'error', // safe try/catch/finally behavior
'no-var': 'error', // use const and let instead of var
'space-before-function-paren': ['error', { // space in function decl: f() vs async () => {}
'anonymous': 'never',
'asyncArrow': 'always',
'named': 'never'
}],
'semi': [2, 'always'], // Always use semicolons at end of statement
'quotes': [2, 'single', { 'avoidEscape': true }], // Prefer single quotes
'use-isnan': 'error', // isNaN(i) Number.isNaN(i) instead of i === NaN
// List of [@typescript-eslint rules](https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/eslint-plugin#supported-rules)
'@typescript-eslint/adjacent-overload-signatures': 'error', // grouping same method names
'@typescript-eslint/array-type': ['error', { // string[] instead of Array<string>
'default': 'array-simple'
}],
'@typescript-eslint/ban-types': 'error', // bans types like String in favor of string
'@typescript-eslint/indent': 'error', // consistent indentation
'@typescript-eslint/no-explicit-any': 'error', // don't use :any type
'@typescript-eslint/no-misused-new': 'error', // no constructors for interfaces or new for classes
'@typescript-eslint/no-namespace': 'off', // disallow the use of custom TypeScript modules and namespaces
'@typescript-eslint/no-non-null-assertion': 'off', // allow ! operator
"@typescript-eslint/parameter-properties": "error", // no property definitions in class constructors
'@typescript-eslint/no-unused-vars': ['error', { // disallow Unused Variables
'argsIgnorePattern': '^_'
}],
'@typescript-eslint/no-var-requires': 'error', // use import instead of require
'@typescript-eslint/prefer-for-of': 'error', // prefer for-of loop over arrays
'@typescript-eslint/prefer-namespace-keyword': 'error', // prefer namespace over module in TypeScript
'@typescript-eslint/triple-slash-reference': 'error', // ban /// <reference />, prefer imports
'@typescript-eslint/type-annotation-spacing': 'error', // consistent space around colon ':'
'@typescript-eslint/strict-boolean-expressions': 'error', // Disallow certain types in boolean expressions
'@typescript-eslint/no-unnecessary-condition': 'error' // Disallow conditionals where the type is always truthy or always falsy
}
}