UNPKG

3.8 kBJavaScriptView Raw
1module.exports = {
2 'root': true ,
3 'env': {
4 'browser': true ,
5 'es6': true ,
6 'node': true
7 } ,
8 'parserOptions': {
9 'ecmaVersion': 2020
10 } ,
11 'extends': [ 'eslint:recommended' ] ,
12 'rules': {
13
14 /*
15 Bad code -- detect anything that can be broken or lead to bugs
16 */
17
18
19
20 'strict': [ 'error' , 'global' ] ,
21 'unicode-bom': [ 'error' , 'never' ] ,
22 'radix': 'error' ,
23 'eqeqeq': 'error' ,
24 'consistent-return': 'off' ,
25 'valid-typeof': 'error' ,
26 'no-unneeded-ternary': 'error' ,
27 'no-unused-vars': 'warn' , // During development phase, it's boring to clean unused var since they can be used later
28 'no-lonely-if': 'error' ,
29 'no-nested-ternary': 'off' , // Now I use the streamlined ternary operator a lot
30 'no-shadow': 'warn' ,
31 'no-shadow-restricted-names': 'error' ,
32 'require-atomic-updates': 'off' , // check for possible race condition on assignment, interesting but too nitpicky
33
34
35
36 /*
37 Code preferences
38 */
39
40
41
42 'prefer-arrow-callback': 'error' ,
43 'prefer-spread': 'warn' ,
44 'prefer-rest-params': 'warn' ,
45 'no-control-regex': 'off' , // because thing like \x00 are considered like a control even if escaped...
46 'no-fallthrough': 'off' ,
47 'no-empty': [ 'error' , {
48 'allowEmptyCatch': true
49 } ] ,
50
51
52
53 /*
54 Coding styles -- cosmetic rules and opinionated preferences
55 */
56
57
58
59 // Indent & spaces (general)
60 'indent': [ 'error' , 'tab' , {
61 'SwitchCase': 1 ,
62 'MemberExpression': 1 ,
63 'flatTernaryExpressions': true
64 } ] ,
65 'newline-per-chained-call': [ 'error', {
66 'ignoreChainWithDepth': 2
67 } ] ,
68 'no-multi-spaces': 'off' ,
69 'block-spacing': 'error' ,
70 'comma-spacing': [ 'error' , {
71 'before': true ,
72 'after': true
73 } ] ,
74 'no-whitespace-before-property': 'error' ,
75 'space-before-blocks': 'error' ,
76 'space-before-function-paren': [ 'error' , {
77 'anonymous': 'never',
78 'named': 'never',
79 'asyncArrow': 'always'
80 } ] ,
81 'space-infix-ops': 'error' ,
82 'space-unary-ops': [ 'error' , {
83 'words': true ,
84 'nonwords': true ,
85 'overrides': {
86 '-': false ,
87 }
88 } ] ,
89 'space-in-parens': [ 'error' , 'always' , {
90 'exceptions': [ 'empty' ]
91 } ] ,
92 'no-trailing-spaces': 'error' ,
93 'switch-colon-spacing': [ 'error' , {
94 'after': true ,
95 'before': true
96 } ] ,
97 'arrow-spacing': 'error' ,
98 'rest-spread-spacing': [ 'error' , 'always' ] ,
99 /* Troublesome with commented line of code
100 'spaced-comment': [ 'error' , 'always' , {
101 'line': {
102 'markers': [ '/' ],
103 'exceptions': [ '-', '*', '/' ]
104 } ,
105 'block': {
106 'exceptions': [ '*' ] ,
107 'balanced': true
108 }
109 } ] ,
110 */
111
112
113 // Semi-colon
114 'semi': [ 'error' , 'always' ] ,
115 'semi-style': [ 'error' , 'last' ] ,
116 'semi-spacing': [ 'error' , {
117 'before': true ,
118 'after': true
119 } ] ,
120
121 // Objects
122 'key-spacing': [ 'error' , {
123 'beforeColon': false ,
124 'afterColon': true ,
125 'mode': 'strict'
126 } ] ,
127 'object-curly-newline': [ 'error' , {
128 'ObjectExpression' : {
129 'consistent': true ,
130 'minProperties': 4
131 } ,
132 'ObjectPattern' : {
133 // object destructuring assigment
134 'consistent': true ,
135 'minProperties': 8
136 }
137 } ] ,
138 'object-curly-spacing': [ 'error' , 'always' ] ,
139 'object-property-newline': [ 'error' , { 'allowMultiplePropertiesPerLine': true } ] ,
140
141
142 // Arrays
143 'array-bracket-newline': [ 'error' , 'consistent' ] ,
144 //'array-element-newline': [ 'error' , { 'multiline': true , 'minItems': 5 } ] ,
145 'array-bracket-spacing': [ 'error' , 'always' ],
146
147 'brace-style': [ 'error' , 'stroustrup' , {
148 'allowSingleLine': true
149 } ] ,
150
151
152 // Misc style
153 'no-else-return': 'warn' ,
154 'comma-dangle': [ 'error' , 'never' ] ,
155 'quotes': 'off' ,
156 'camelcase': 'warn' ,
157
158
159
160 /*
161 Method limitation
162 */
163
164
165
166 'no-console': 'off'
167 }
168} ;