Skip to content

Commit 3296b72

Browse files
Configure majority of undecided ESLint rules (#1544)
* Configure majority of undecided ESLint rules * Address @mjmahone review comment
1 parent e720baa commit 3296b72

File tree

3 files changed

+51
-45
lines changed

3 files changed

+51
-45
lines changed

.eslintrc.yml

Lines changed: 46 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,16 @@ rules:
7171
flowtype/use-flow-type: error
7272
flowtype/valid-syntax: off
7373

74+
##################################################
75+
# ESLint builtin rules list based on `v5.6.0`
76+
##################################################
77+
7478
# Possible Errors
7579
# https://eslint.org/docs/rules/#possible-errors
7680

7781
for-direction: error
7882
getter-return: error
79-
#no-async-promise-executor: undecided
83+
no-async-promise-executor: error
8084
no-await-in-loop: error
8185
no-compare-neg-zero: error
8286
no-cond-assign: error
@@ -97,28 +101,28 @@ rules:
97101
no-inner-declarations: [error, functions]
98102
no-invalid-regexp: error
99103
no-irregular-whitespace: error
100-
#no-misleading-character-class: undecided
104+
no-misleading-character-class: error
101105
no-obj-calls: error
102106
#no-prototype-builtins: undecided
103107
no-regex-spaces: error
104108
no-sparse-arrays: error
105-
#no-template-curly-in-string: undecided
109+
no-template-curly-in-string: error
106110
no-unexpected-multiline: off
107111
no-unreachable: error
108112
no-unsafe-finally: error
109113
no-unsafe-negation: error
110-
#require-atomic-updates: undecided
114+
require-atomic-updates: error
111115
use-isnan: error
112116
valid-jsdoc: off
113117
valid-typeof: error
114118

115119
# Best Practices
116120
# https://eslint.org/docs/rules/#best-practices
117121

118-
#accessor-pairs: undecided
119-
#array-callback-return: undecided
122+
accessor-pairs: error
123+
array-callback-return: [error, { allowImplicit: true }]
120124
block-scoped-var: off
121-
#class-methods-use-this: undecided
125+
class-methods-use-this: off
122126
complexity: off
123127
consistent-return: off
124128
curly: [error, all]
@@ -127,32 +131,32 @@ rules:
127131
dot-notation: off
128132
eqeqeq: [error, smart]
129133
guard-for-in: error
130-
#max-classes-per-file: undecided
134+
max-classes-per-file: off
131135
no-alert: error
132136
no-caller: error
133137
# TODO: recommended rule but disable due to errors in existing code
134138
# no-case-declarations: error
135139
no-div-regex: error
136140
no-else-return: error
137-
#no-empty-function: undecided
141+
no-empty-function: off
138142
no-empty-pattern: error
139143
no-eq-null: off
140144
no-eval: error
141145
no-extend-native: error
142146
no-extra-bind: error
143-
#no-extra-label: undecided
147+
no-extra-label: error
144148
no-fallthrough: error
145149
no-floating-decimal: off
146150
no-global-assign: error
147151
no-implicit-coercion: error
148-
#no-implicit-globals: undecided
152+
no-implicit-globals: off
149153
no-implied-eval: error
150154
no-invalid-this: off
151155
no-iterator: error
152156
no-labels: [error, {allowLoop: true}]
153157
no-lone-blocks: error
154158
no-loop-func: off
155-
#no-magic-numbers: undecided
159+
no-magic-numbers: off
156160
no-multi-spaces: off
157161
no-multi-str: error
158162
no-new: error
@@ -163,19 +167,19 @@ rules:
163167
no-param-reassign: error
164168
no-proto: error
165169
no-redeclare: error
166-
#no-restricted-properties: undecided
170+
no-restricted-properties: off
167171
no-return-assign: error
168-
#no-return-await: undecided
172+
no-return-await: error
169173
no-script-url: error
170174
no-self-assign: error
171175
no-self-compare: off
172176
no-sequences: off
173177
no-throw-literal: error
174-
#no-unmodified-loop-condition: undecided
178+
no-unmodified-loop-condition: error
175179
no-unused-expressions: error
176180
no-unused-labels: error
177181
no-useless-call: error
178-
#no-useless-concat: undecided
182+
no-useless-concat: error
179183
no-useless-escape: error
180184
no-useless-return: error
181185
no-void: error
@@ -184,7 +188,7 @@ rules:
184188
#prefer-promise-reject-errors: undecided
185189
radix: error
186190
#require-await: undecided
187-
#require-unicode-regexp: undecided
191+
require-unicode-regexp: off
188192
vars-on-top: off
189193
wrap-iife: off
190194
yoda: [error, never, {exceptRange: true}]
@@ -200,7 +204,7 @@ rules:
200204
init-declarations: off
201205
no-delete-var: error
202206
no-label-var: error
203-
#no-restricted-globals: undecided
207+
no-restricted-globals: off
204208
no-shadow: error
205209
no-shadow-restricted-names: error
206210
no-undef: error
@@ -213,9 +217,9 @@ rules:
213217
# https://eslint.org/docs/rules/#nodejs-and-commonjs
214218

215219
callback-return: error
216-
#global-require: undecided
220+
global-require: error
217221
handle-callback-err: [error, error]
218-
#no-buffer-constructor: undecided
222+
no-buffer-constructor: error
219223
no-mixed-requires: [error, true]
220224
no-new-require: error
221225
no-path-concat: error
@@ -241,11 +245,11 @@ rules:
241245
consistent-this: off
242246
eol-last: off
243247
func-call-spacing: off
244-
#func-name-matching: undecided
248+
func-name-matching: off
245249
func-names: off
246250
func-style: off
247251
function-paren-newline: off
248-
#id-blacklist: undecided
252+
id-blacklist: off
249253
id-length: off
250254
id-match: [error, "^(?:_?[a-zA-Z0-9]*)|[_A-Z0-9]+$"]
251255
implicit-arrow-linebreak: off
@@ -256,15 +260,15 @@ rules:
256260
#line-comment-position: undecided
257261
linebreak-style: error
258262
lines-around-comment: off
259-
#lines-between-class-members: undecided
263+
lines-between-class-members: off
260264
max-depth: off
261265
max-len: off
262-
#max-lines: undecided
263-
#max-lines-per-function: undecided
266+
max-lines: off
267+
max-lines-per-function: off
264268
max-nested-callbacks: off
265269
max-params: off
266270
max-statements: off
267-
#max-statements-per-line: undecided
271+
max-statements-per-line: off
268272
#multiline-comment-style: undecided
269273
multiline-ternary: off
270274
new-cap: off
@@ -277,15 +281,15 @@ rules:
277281
no-lonely-if: error
278282
no-mixed-operators: off
279283
no-mixed-spaces-and-tabs: off
280-
#no-multi-assign: undecided
284+
no-multi-assign: off
281285
no-multiple-empty-lines: off
282-
#no-negated-condition: undecided
286+
no-negated-condition: off
283287
no-nested-ternary: off
284288
no-new-object: error
285289
no-plusplus: off
286290
no-spaced-func: off
287-
#no-restricted-syntax: undecided
288-
#no-tabs: undecided
291+
no-restricted-syntax: off
292+
no-tabs: error
289293
no-ternary: off
290294
no-trailing-spaces: off
291295
no-underscore-dangle: off
@@ -301,14 +305,14 @@ rules:
301305
operator-linebreak: off
302306
padded-blocks: off
303307
padding-line-between-statements: off
304-
#prefer-object-spread: undecided
308+
prefer-object-spread: error
305309
quote-props: off
306310
quotes: off
307311
#require-jsdoc: undecided
308312
semi: off
309313
semi-spacing: off
310314
semi-style: off
311-
#sort-keys: undecided
315+
sort-keys: off
312316
sort-vars: off
313317
space-before-blocks: off
314318
space-before-function-paren: off
@@ -324,31 +328,31 @@ rules:
324328
# ECMAScript 6
325329
# https://eslint.org/docs/rules/#ecmascript-6
326330

327-
#arrow-body-style: undecided
331+
arrow-body-style: off
328332
arrow-parens: off
329333
arrow-spacing: off
330334
constructor-super: error
331335
generator-star-spacing: off
332336
no-class-assign: error
333-
#no-confusing-arrow: undecided
337+
no-confusing-arrow: off
334338
no-const-assign: error
335339
no-dupe-class-members: error
336340
#no-duplicate-imports: undecided
337341
no-new-symbol: error
338-
#no-restricted-imports: undecided
342+
no-restricted-imports: off
339343
no-this-before-super: error
340-
#no-useless-computed-key: undecided
341-
#no-useless-constructor: undecided
342-
#no-useless-rename: undecided
344+
no-useless-computed-key: error
345+
no-useless-constructor: error
346+
no-useless-rename: error
343347
no-var: error
344348
object-shorthand: [error, always]
345-
#prefer-arrow-callback: undecided
349+
prefer-arrow-callback: error
346350
prefer-const: error
347-
#prefer-destructuring: undecided
348-
#prefer-numeric-literals: undecided
351+
prefer-destructuring: off
352+
prefer-numeric-literals: error
349353
#prefer-rest-params: undecided
350354
prefer-spread: off
351-
#prefer-template: undecided
355+
prefer-template: off
352356
require-yield: off
353357
rest-spread-spacing: off
354358
#sort-imports: undecided

src/execution/__tests__/sync-test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ describe('Execute: synchronously when possible', () => {
2929
asyncField: {
3030
type: GraphQLString,
3131
async resolve(rootValue) {
32-
return await rootValue;
32+
return rootValue;
3333
},
3434
},
3535
},

src/language/__tests__/lexer-test.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
* @noflow
88
*/
99

10+
import { inspect as utilInspect } from 'util';
11+
1012
import { expect } from 'chai';
1113
import { describe, it } from 'mocha';
1214
import dedent from '../../jsutils/dedent';
@@ -62,7 +64,7 @@ describe('Lexer', () => {
6264
expect(JSON.stringify(token)).to.equal(
6365
'{"kind":"Name","value":"foo","line":1,"column":1}',
6466
);
65-
expect(require('util').inspect(token)).to.equal(
67+
expect(utilInspect(token)).to.equal(
6668
"{ kind: 'Name', value: 'foo', line: 1, column: 1 }",
6769
);
6870
});
@@ -129,7 +131,7 @@ describe('Lexer', () => {
129131
it('updates line numbers in error for file context', () => {
130132
let caughtError;
131133
try {
132-
const str = '' + '\n' + '\n' + ' ?\n' + '\n';
134+
const str = ['', '', ' ?', ''].join('\n');
133135
const source = new Source(str, 'foo.js', { line: 11, column: 12 });
134136
createLexer(source).advance();
135137
} catch (error) {

0 commit comments

Comments
 (0)