eslint 5.7.0 → 5.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +76 -0
- package/README.md +2 -2
- package/conf/eslint-recommended.js +1 -0
- package/lib/cli-engine.js +129 -32
- package/lib/cli.js +6 -1
- package/lib/config/autoconfig.js +0 -1
- package/lib/config/config-rule.js +4 -4
- package/lib/config/config-validator.js +2 -2
- package/lib/config.js +15 -2
- package/lib/linter.js +17 -120
- package/lib/options.js +5 -0
- package/lib/rules/accessor-pairs.js +4 -0
- package/lib/rules/array-bracket-newline.js +5 -0
- package/lib/rules/array-bracket-spacing.js +5 -0
- package/lib/rules/array-callback-return.js +2 -0
- package/lib/rules/array-element-newline.js +4 -1
- package/lib/rules/arrow-body-style.js +2 -0
- package/lib/rules/arrow-parens.js +2 -0
- package/lib/rules/arrow-spacing.js +2 -0
- package/lib/rules/block-scoped-var.js +2 -0
- package/lib/rules/block-spacing.js +2 -0
- package/lib/rules/brace-style.js +2 -0
- package/lib/rules/callback-return.js +2 -0
- package/lib/rules/camelcase.js +26 -14
- package/lib/rules/capitalized-comments.js +4 -0
- package/lib/rules/class-methods-use-this.js +3 -0
- package/lib/rules/comma-dangle.js +4 -0
- package/lib/rules/comma-spacing.js +2 -0
- package/lib/rules/comma-style.js +12 -2
- package/lib/rules/complexity.js +2 -0
- package/lib/rules/computed-property-spacing.js +2 -0
- package/lib/rules/consistent-return.js +2 -0
- package/lib/rules/consistent-this.js +2 -0
- package/lib/rules/constructor-super.js +2 -0
- package/lib/rules/curly.js +2 -0
- package/lib/rules/default-case.js +2 -0
- package/lib/rules/dot-location.js +2 -0
- package/lib/rules/dot-notation.js +2 -0
- package/lib/rules/eol-last.js +5 -0
- package/lib/rules/eqeqeq.js +2 -1
- package/lib/rules/for-direction.js +4 -0
- package/lib/rules/func-call-spacing.js +4 -0
- package/lib/rules/func-name-matching.js +3 -0
- package/lib/rules/func-names.js +3 -0
- package/lib/rules/func-style.js +3 -0
- package/lib/rules/function-paren-newline.js +5 -0
- package/lib/rules/generator-star-spacing.js +3 -0
- package/lib/rules/getter-return.js +5 -0
- package/lib/rules/global-require.js +2 -0
- package/lib/rules/guard-for-in.js +2 -0
- package/lib/rules/handle-callback-err.js +3 -1
- package/lib/rules/id-blacklist.js +2 -0
- package/lib/rules/id-length.js +2 -0
- package/lib/rules/id-match.js +101 -27
- package/lib/rules/implicit-arrow-linebreak.js +147 -2
- package/lib/rules/indent-legacy.js +4 -4
- package/lib/rules/indent.js +31 -23
- package/lib/rules/init-declarations.js +2 -0
- package/lib/rules/jsx-quotes.js +2 -0
- package/lib/rules/key-spacing.js +4 -3
- package/lib/rules/keyword-spacing.js +7 -1
- package/lib/rules/line-comment-position.js +2 -0
- package/lib/rules/linebreak-style.js +2 -0
- package/lib/rules/lines-around-comment.js +2 -0
- package/lib/rules/lines-around-directive.js +6 -2
- package/lib/rules/lines-between-class-members.js +2 -0
- package/lib/rules/max-classes-per-file.js +4 -0
- package/lib/rules/max-depth.js +2 -0
- package/lib/rules/max-len.js +2 -0
- package/lib/rules/max-lines-per-function.js +2 -0
- package/lib/rules/max-lines.js +2 -0
- package/lib/rules/max-nested-callbacks.js +2 -0
- package/lib/rules/max-params.js +2 -0
- package/lib/rules/max-statements-per-line.js +2 -0
- package/lib/rules/max-statements.js +2 -0
- package/lib/rules/multiline-comment-style.js +3 -0
- package/lib/rules/multiline-ternary.js +3 -0
- package/lib/rules/new-cap.js +2 -0
- package/lib/rules/new-parens.js +2 -1
- package/lib/rules/newline-after-var.js +5 -2
- package/lib/rules/newline-before-return.js +6 -3
- package/lib/rules/newline-per-chained-call.js +4 -0
- package/lib/rules/no-alert.js +2 -0
- package/lib/rules/no-array-constructor.js +2 -0
- package/lib/rules/no-async-promise-executor.js +3 -0
- package/lib/rules/no-await-in-loop.js +4 -0
- package/lib/rules/no-bitwise.js +2 -0
- package/lib/rules/no-buffer-constructor.js +4 -0
- package/lib/rules/no-caller.js +2 -0
- package/lib/rules/no-case-declarations.js +2 -0
- package/lib/rules/no-catch-shadow.js +6 -3
- package/lib/rules/no-class-assign.js +2 -0
- package/lib/rules/no-compare-neg-zero.js +4 -0
- package/lib/rules/no-cond-assign.js +2 -0
- package/lib/rules/no-confusing-arrow.js +2 -0
- package/lib/rules/no-console.js +2 -0
- package/lib/rules/no-const-assign.js +2 -0
- package/lib/rules/no-constant-condition.js +2 -1
- package/lib/rules/no-continue.js +2 -0
- package/lib/rules/no-control-regex.js +4 -2
- package/lib/rules/no-debugger.js +4 -0
- package/lib/rules/no-delete-var.js +2 -0
- package/lib/rules/no-div-regex.js +2 -0
- package/lib/rules/no-dupe-args.js +2 -0
- package/lib/rules/no-dupe-class-members.js +2 -0
- package/lib/rules/no-dupe-keys.js +2 -0
- package/lib/rules/no-duplicate-case.js +2 -0
- package/lib/rules/no-duplicate-imports.js +2 -0
- package/lib/rules/no-else-return.js +2 -1
- package/lib/rules/no-empty-character-class.js +2 -0
- package/lib/rules/no-empty-function.js +2 -0
- package/lib/rules/no-empty-pattern.js +2 -0
- package/lib/rules/no-empty.js +2 -0
- package/lib/rules/no-eq-null.js +2 -0
- package/lib/rules/no-eval.js +2 -0
- package/lib/rules/no-ex-assign.js +2 -0
- package/lib/rules/no-extend-native.js +2 -0
- package/lib/rules/no-extra-bind.js +2 -1
- package/lib/rules/no-extra-boolean-cast.js +2 -1
- package/lib/rules/no-extra-label.js +2 -1
- package/lib/rules/no-extra-parens.js +5 -6
- package/lib/rules/no-extra-semi.js +2 -0
- package/lib/rules/no-fallthrough.js +2 -0
- package/lib/rules/no-floating-decimal.js +2 -1
- package/lib/rules/no-func-assign.js +2 -0
- package/lib/rules/no-global-assign.js +2 -0
- package/lib/rules/no-implicit-coercion.js +3 -0
- package/lib/rules/no-implicit-globals.js +2 -0
- package/lib/rules/no-implied-eval.js +3 -1
- package/lib/rules/no-inline-comments.js +2 -0
- package/lib/rules/no-inner-declarations.js +2 -0
- package/lib/rules/no-invalid-regexp.js +2 -0
- package/lib/rules/no-invalid-this.js +2 -0
- package/lib/rules/no-irregular-whitespace.js +7 -9
- package/lib/rules/no-iterator.js +2 -0
- package/lib/rules/no-label-var.js +2 -0
- package/lib/rules/no-labels.js +2 -0
- package/lib/rules/no-lone-blocks.js +2 -0
- package/lib/rules/no-lonely-if.js +2 -1
- package/lib/rules/no-loop-func.js +2 -0
- package/lib/rules/no-magic-numbers.js +3 -0
- package/lib/rules/no-misleading-character-class.js +4 -0
- package/lib/rules/no-mixed-operators.js +3 -0
- package/lib/rules/no-mixed-requires.js +2 -0
- package/lib/rules/no-mixed-spaces-and-tabs.js +2 -0
- package/lib/rules/no-multi-assign.js +3 -0
- package/lib/rules/no-multi-spaces.js +2 -0
- package/lib/rules/no-multi-str.js +2 -0
- package/lib/rules/no-multiple-empty-lines.js +2 -0
- package/lib/rules/no-native-reassign.js +4 -1
- package/lib/rules/no-negated-condition.js +2 -0
- package/lib/rules/no-negated-in-lhs.js +5 -2
- package/lib/rules/no-nested-ternary.js +2 -0
- package/lib/rules/no-new-func.js +2 -0
- package/lib/rules/no-new-object.js +2 -0
- package/lib/rules/no-new-require.js +2 -0
- package/lib/rules/no-new-symbol.js +2 -0
- package/lib/rules/no-new-wrappers.js +2 -0
- package/lib/rules/no-new.js +2 -0
- package/lib/rules/no-obj-calls.js +2 -0
- package/lib/rules/no-octal-escape.js +2 -0
- package/lib/rules/no-octal.js +2 -0
- package/lib/rules/no-param-reassign.js +2 -0
- package/lib/rules/no-path-concat.js +2 -0
- package/lib/rules/no-plusplus.js +2 -0
- package/lib/rules/no-process-env.js +2 -0
- package/lib/rules/no-process-exit.js +2 -0
- package/lib/rules/no-proto.js +2 -0
- package/lib/rules/no-prototype-builtins.js +2 -0
- package/lib/rules/no-redeclare.js +2 -0
- package/lib/rules/no-regex-spaces.js +2 -1
- package/lib/rules/no-restricted-globals.js +2 -0
- package/lib/rules/no-restricted-imports.js +41 -23
- package/lib/rules/no-restricted-modules.js +2 -0
- package/lib/rules/no-restricted-properties.js +2 -0
- package/lib/rules/no-restricted-syntax.js +2 -0
- package/lib/rules/no-return-assign.js +2 -0
- package/lib/rules/no-return-await.js +4 -0
- package/lib/rules/no-script-url.js +2 -0
- package/lib/rules/no-self-assign.js +2 -0
- package/lib/rules/no-self-compare.js +2 -0
- package/lib/rules/no-sequences.js +2 -0
- package/lib/rules/no-shadow-restricted-names.js +2 -0
- package/lib/rules/no-shadow.js +2 -0
- package/lib/rules/no-spaced-func.js +4 -1
- package/lib/rules/no-sparse-arrays.js +2 -0
- package/lib/rules/no-sync.js +2 -0
- package/lib/rules/no-tabs.js +2 -0
- package/lib/rules/no-template-curly-in-string.js +2 -0
- package/lib/rules/no-ternary.js +2 -0
- package/lib/rules/no-this-before-super.js +2 -1
- package/lib/rules/no-throw-literal.js +2 -0
- package/lib/rules/no-trailing-spaces.js +2 -0
- package/lib/rules/no-undef-init.js +2 -1
- package/lib/rules/no-undef.js +2 -0
- package/lib/rules/no-undefined.js +2 -0
- package/lib/rules/no-underscore-dangle.js +2 -0
- package/lib/rules/no-unexpected-multiline.js +2 -0
- package/lib/rules/no-unmodified-loop-condition.js +2 -0
- package/lib/rules/no-unneeded-ternary.js +2 -0
- package/lib/rules/no-unreachable.js +2 -1
- package/lib/rules/no-unsafe-finally.js +2 -0
- package/lib/rules/no-unsafe-negation.js +3 -0
- package/lib/rules/no-unused-expressions.js +2 -0
- package/lib/rules/no-unused-labels.js +2 -1
- package/lib/rules/no-unused-vars.js +36 -12
- package/lib/rules/no-use-before-define.js +2 -0
- package/lib/rules/no-useless-call.js +2 -0
- package/lib/rules/no-useless-catch.js +51 -0
- package/lib/rules/no-useless-computed-key.js +2 -1
- package/lib/rules/no-useless-concat.js +2 -0
- package/lib/rules/no-useless-constructor.js +2 -0
- package/lib/rules/no-useless-escape.js +2 -0
- package/lib/rules/no-useless-rename.js +4 -0
- package/lib/rules/no-useless-return.js +3 -0
- package/lib/rules/no-var.js +2 -0
- package/lib/rules/no-void.js +2 -0
- package/lib/rules/no-warning-comments.js +2 -0
- package/lib/rules/no-whitespace-before-property.js +2 -0
- package/lib/rules/no-with.js +2 -0
- package/lib/rules/nonblock-statement-body-position.js +4 -0
- package/lib/rules/object-curly-newline.js +4 -1
- package/lib/rules/object-curly-spacing.js +2 -0
- package/lib/rules/object-property-newline.js +3 -2
- package/lib/rules/object-shorthand.js +2 -0
- package/lib/rules/one-var-declaration-per-line.js +2 -0
- package/lib/rules/one-var.js +2 -1
- package/lib/rules/operator-assignment.js +2 -0
- package/lib/rules/operator-linebreak.js +2 -0
- package/lib/rules/padded-blocks.js +2 -0
- package/lib/rules/padding-line-between-statements.js +41 -0
- package/lib/rules/prefer-arrow-callback.js +2 -0
- package/lib/rules/prefer-const.js +116 -11
- package/lib/rules/prefer-destructuring.js +3 -0
- package/lib/rules/prefer-numeric-literals.js +2 -1
- package/lib/rules/prefer-object-spread.js +4 -0
- package/lib/rules/prefer-promise-reject-errors.js +4 -0
- package/lib/rules/prefer-reflect.js +4 -1
- package/lib/rules/prefer-rest-params.js +2 -0
- package/lib/rules/prefer-spread.js +2 -1
- package/lib/rules/prefer-template.js +2 -1
- package/lib/rules/quote-props.js +2 -0
- package/lib/rules/quotes.js +50 -25
- package/lib/rules/radix.js +2 -0
- package/lib/rules/require-atomic-updates.js +4 -0
- package/lib/rules/require-await.js +3 -0
- package/lib/rules/require-jsdoc.js +6 -1
- package/lib/rules/require-unicode-regexp.js +4 -0
- package/lib/rules/require-yield.js +2 -0
- package/lib/rules/rest-spread-spacing.js +4 -0
- package/lib/rules/semi-spacing.js +2 -0
- package/lib/rules/semi-style.js +3 -0
- package/lib/rules/semi.js +2 -0
- package/lib/rules/sort-imports.js +2 -0
- package/lib/rules/sort-keys.js +3 -0
- package/lib/rules/sort-vars.js +2 -0
- package/lib/rules/space-before-blocks.js +46 -35
- package/lib/rules/space-before-function-paren.js +2 -0
- package/lib/rules/space-in-parens.js +2 -1
- package/lib/rules/space-infix-ops.js +6 -1
- package/lib/rules/space-unary-ops.js +2 -0
- package/lib/rules/spaced-comment.js +2 -0
- package/lib/rules/strict.js +2 -0
- package/lib/rules/switch-colon-spacing.js +4 -0
- package/lib/rules/symbol-description.js +2 -0
- package/lib/rules/template-curly-spacing.js +2 -0
- package/lib/rules/template-tag-spacing.js +2 -0
- package/lib/rules/unicode-bom.js +2 -0
- package/lib/rules/use-isnan.js +2 -0
- package/lib/rules/valid-jsdoc.js +6 -1
- package/lib/rules/valid-typeof.js +2 -0
- package/lib/rules/vars-on-top.js +2 -0
- package/lib/rules/wrap-iife.js +2 -0
- package/lib/rules/wrap-regex.js +3 -1
- package/lib/rules/yield-star-spacing.js +2 -0
- package/lib/rules/yoda.js +2 -0
- package/lib/testers/rule-tester.js +2 -2
- package/lib/util/config-comment-parser.js +144 -0
- package/lib/util/glob-utils.js +1 -1
- package/lib/{ignored-paths.js → util/ignored-paths.js} +4 -4
- package/lib/{report-translator.js → util/report-translator.js} +2 -2
- package/lib/util/source-code.js +2 -1
- package/messages/all-files-ignored.txt +1 -1
- package/package.json +10 -11
package/lib/rules/quotes.js
CHANGED
@@ -76,6 +76,8 @@ const AVOID_ESCAPE = "avoid-escape";
|
|
76
76
|
|
77
77
|
module.exports = {
|
78
78
|
meta: {
|
79
|
+
type: "layout",
|
80
|
+
|
79
81
|
docs: {
|
80
82
|
description: "enforce the consistent use of either backticks, double, or single quotes",
|
81
83
|
category: "Stylistic Issues",
|
@@ -226,6 +228,34 @@ module.exports = {
|
|
226
228
|
}
|
227
229
|
}
|
228
230
|
|
231
|
+
/**
|
232
|
+
* Checks whether or not a given TemplateLiteral node is actually using any of the special features provided by template literal strings.
|
233
|
+
* @param {ASTNode} node - A TemplateLiteral node to check.
|
234
|
+
* @returns {boolean} Whether or not the TemplateLiteral node is using any of the special features provided by template literal strings.
|
235
|
+
* @private
|
236
|
+
*/
|
237
|
+
function isUsingFeatureOfTemplateLiteral(node) {
|
238
|
+
const hasTag = node.parent.type === "TaggedTemplateExpression" && node === node.parent.quasi;
|
239
|
+
|
240
|
+
if (hasTag) {
|
241
|
+
return true;
|
242
|
+
}
|
243
|
+
|
244
|
+
const hasStringInterpolation = node.expressions.length > 0;
|
245
|
+
|
246
|
+
if (hasStringInterpolation) {
|
247
|
+
return true;
|
248
|
+
}
|
249
|
+
|
250
|
+
const isMultilineString = node.quasis.length >= 1 && UNESCAPED_LINEBREAK_PATTERN.test(node.quasis[0].value.raw);
|
251
|
+
|
252
|
+
if (isMultilineString) {
|
253
|
+
return true;
|
254
|
+
}
|
255
|
+
|
256
|
+
return false;
|
257
|
+
}
|
258
|
+
|
229
259
|
return {
|
230
260
|
|
231
261
|
Literal(node) {
|
@@ -258,39 +288,34 @@ module.exports = {
|
|
258
288
|
|
259
289
|
TemplateLiteral(node) {
|
260
290
|
|
261
|
-
//
|
291
|
+
// Don't throw an error if backticks are expected or a template literal feature is in use.
|
262
292
|
if (
|
263
293
|
allowTemplateLiterals ||
|
264
294
|
quoteOption === "backtick" ||
|
265
|
-
node
|
295
|
+
isUsingFeatureOfTemplateLiteral(node)
|
266
296
|
) {
|
267
297
|
return;
|
268
298
|
}
|
269
299
|
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
* in the directive prologue, then fixing them might turn them into directives and change
|
286
|
-
* the behavior of the code.
|
287
|
-
*/
|
288
|
-
return null;
|
289
|
-
}
|
290
|
-
return fixer.replaceText(node, settings.convert(sourceCode.getText(node)));
|
300
|
+
context.report({
|
301
|
+
node,
|
302
|
+
message: "Strings must use {{description}}.",
|
303
|
+
data: {
|
304
|
+
description: settings.description
|
305
|
+
},
|
306
|
+
fix(fixer) {
|
307
|
+
if (isPartOfDirectivePrologue(node)) {
|
308
|
+
|
309
|
+
/*
|
310
|
+
* TemplateLiterals in a directive prologue aren't actually directives, but if they're
|
311
|
+
* in the directive prologue, then fixing them might turn them into directives and change
|
312
|
+
* the behavior of the code.
|
313
|
+
*/
|
314
|
+
return null;
|
291
315
|
}
|
292
|
-
|
293
|
-
|
316
|
+
return fixer.replaceText(node, settings.convert(sourceCode.getText(node)));
|
317
|
+
}
|
318
|
+
});
|
294
319
|
}
|
295
320
|
};
|
296
321
|
|
package/lib/rules/radix.js
CHANGED
@@ -12,14 +12,18 @@ const astUtils = require("../util/ast-utils");
|
|
12
12
|
|
13
13
|
module.exports = {
|
14
14
|
meta: {
|
15
|
+
type: "problem",
|
16
|
+
|
15
17
|
docs: {
|
16
18
|
description: "disallow assignments that can lead to race conditions due to usage of `await` or `yield`",
|
17
19
|
category: "Possible Errors",
|
18
20
|
recommended: false,
|
19
21
|
url: "https://eslint.org/docs/rules/require-atomic-updates"
|
20
22
|
},
|
23
|
+
|
21
24
|
fixable: null,
|
22
25
|
schema: [],
|
26
|
+
|
23
27
|
messages: {
|
24
28
|
nonAtomicUpdate: "Possible race condition: `{{value}}` might be reassigned based on an outdated value of `{{value}}`."
|
25
29
|
}
|
@@ -31,12 +31,15 @@ function capitalizeFirstLetter(text) {
|
|
31
31
|
|
32
32
|
module.exports = {
|
33
33
|
meta: {
|
34
|
+
type: "suggestion",
|
35
|
+
|
34
36
|
docs: {
|
35
37
|
description: "disallow async functions which have no `await` expression",
|
36
38
|
category: "Best Practices",
|
37
39
|
recommended: false,
|
38
40
|
url: "https://eslint.org/docs/rules/require-await"
|
39
41
|
},
|
42
|
+
|
40
43
|
schema: []
|
41
44
|
},
|
42
45
|
|
@@ -6,6 +6,8 @@
|
|
6
6
|
|
7
7
|
module.exports = {
|
8
8
|
meta: {
|
9
|
+
type: "suggestion",
|
10
|
+
|
9
11
|
docs: {
|
10
12
|
description: "require JSDoc comments",
|
11
13
|
category: "Stylistic Issues",
|
@@ -41,7 +43,10 @@ module.exports = {
|
|
41
43
|
},
|
42
44
|
additionalProperties: false
|
43
45
|
}
|
44
|
-
]
|
46
|
+
],
|
47
|
+
|
48
|
+
deprecated: true,
|
49
|
+
replacedBy: []
|
45
50
|
},
|
46
51
|
|
47
52
|
create(context) {
|
@@ -22,15 +22,19 @@ const {
|
|
22
22
|
|
23
23
|
module.exports = {
|
24
24
|
meta: {
|
25
|
+
type: "suggestion",
|
26
|
+
|
25
27
|
docs: {
|
26
28
|
description: "enforce the use of `u` flag on RegExp",
|
27
29
|
category: "Best Practices",
|
28
30
|
recommended: false,
|
29
31
|
url: "https://eslint.org/docs/rules/require-unicode-regexp"
|
30
32
|
},
|
33
|
+
|
31
34
|
messages: {
|
32
35
|
requireUFlag: "Use the 'u' flag."
|
33
36
|
},
|
37
|
+
|
34
38
|
schema: []
|
35
39
|
},
|
36
40
|
|
@@ -11,13 +11,17 @@
|
|
11
11
|
|
12
12
|
module.exports = {
|
13
13
|
meta: {
|
14
|
+
type: "layout",
|
15
|
+
|
14
16
|
docs: {
|
15
17
|
description: "enforce spacing between rest and spread operators and their expressions",
|
16
18
|
category: "ECMAScript 6",
|
17
19
|
recommended: false,
|
18
20
|
url: "https://eslint.org/docs/rules/rest-spread-spacing"
|
19
21
|
},
|
22
|
+
|
20
23
|
fixable: "whitespace",
|
24
|
+
|
21
25
|
schema: [
|
22
26
|
{
|
23
27
|
enum: ["always", "never"]
|
package/lib/rules/semi-style.js
CHANGED
@@ -65,12 +65,15 @@ function isLastChild(node) {
|
|
65
65
|
|
66
66
|
module.exports = {
|
67
67
|
meta: {
|
68
|
+
type: "layout",
|
69
|
+
|
68
70
|
docs: {
|
69
71
|
description: "enforce location of semicolons",
|
70
72
|
category: "Stylistic Issues",
|
71
73
|
recommended: false,
|
72
74
|
url: "https://eslint.org/docs/rules/semi-style"
|
73
75
|
},
|
76
|
+
|
74
77
|
schema: [{ enum: ["last", "first"] }],
|
75
78
|
fixable: "whitespace"
|
76
79
|
},
|
package/lib/rules/semi.js
CHANGED
package/lib/rules/sort-keys.js
CHANGED
@@ -73,12 +73,15 @@ const isValidOrders = {
|
|
73
73
|
|
74
74
|
module.exports = {
|
75
75
|
meta: {
|
76
|
+
type: "suggestion",
|
77
|
+
|
76
78
|
docs: {
|
77
79
|
description: "require object keys to be sorted",
|
78
80
|
category: "Stylistic Issues",
|
79
81
|
recommended: false,
|
80
82
|
url: "https://eslint.org/docs/rules/sort-keys"
|
81
83
|
},
|
84
|
+
|
82
85
|
schema: [
|
83
86
|
{
|
84
87
|
enum: ["asc", "desc"]
|
package/lib/rules/sort-vars.js
CHANGED
@@ -13,6 +13,8 @@ const astUtils = require("../util/ast-utils");
|
|
13
13
|
|
14
14
|
module.exports = {
|
15
15
|
meta: {
|
16
|
+
type: "layout",
|
17
|
+
|
16
18
|
docs: {
|
17
19
|
description: "enforce consistent spacing before blocks",
|
18
20
|
category: "Stylistic Issues",
|
@@ -32,13 +34,13 @@ module.exports = {
|
|
32
34
|
type: "object",
|
33
35
|
properties: {
|
34
36
|
keywords: {
|
35
|
-
enum: ["always", "never"]
|
37
|
+
enum: ["always", "never", "off"]
|
36
38
|
},
|
37
39
|
functions: {
|
38
|
-
enum: ["always", "never"]
|
40
|
+
enum: ["always", "never", "off"]
|
39
41
|
},
|
40
42
|
classes: {
|
41
|
-
enum: ["always", "never"]
|
43
|
+
enum: ["always", "never", "off"]
|
42
44
|
}
|
43
45
|
},
|
44
46
|
additionalProperties: false
|
@@ -51,18 +53,27 @@ module.exports = {
|
|
51
53
|
create(context) {
|
52
54
|
const config = context.options[0],
|
53
55
|
sourceCode = context.getSourceCode();
|
54
|
-
let
|
55
|
-
|
56
|
-
|
56
|
+
let alwaysFunctions = true,
|
57
|
+
alwaysKeywords = true,
|
58
|
+
alwaysClasses = true,
|
59
|
+
neverFunctions = false,
|
60
|
+
neverKeywords = false,
|
61
|
+
neverClasses = false;
|
57
62
|
|
58
63
|
if (typeof config === "object") {
|
59
|
-
|
60
|
-
|
61
|
-
|
64
|
+
alwaysFunctions = config.functions === "always";
|
65
|
+
alwaysKeywords = config.keywords === "always";
|
66
|
+
alwaysClasses = config.classes === "always";
|
67
|
+
neverFunctions = config.functions === "never";
|
68
|
+
neverKeywords = config.keywords === "never";
|
69
|
+
neverClasses = config.classes === "never";
|
62
70
|
} else if (config === "never") {
|
63
|
-
|
64
|
-
|
65
|
-
|
71
|
+
alwaysFunctions = false;
|
72
|
+
alwaysKeywords = false;
|
73
|
+
alwaysClasses = false;
|
74
|
+
neverFunctions = true;
|
75
|
+
neverKeywords = true;
|
76
|
+
neverClasses = true;
|
66
77
|
}
|
67
78
|
|
68
79
|
/**
|
@@ -88,35 +99,35 @@ module.exports = {
|
|
88
99
|
const hasSpace = sourceCode.isSpaceBetweenTokens(precedingToken, node);
|
89
100
|
const parent = context.getAncestors().pop();
|
90
101
|
let requireSpace;
|
102
|
+
let requireNoSpace;
|
91
103
|
|
92
104
|
if (parent.type === "FunctionExpression" || parent.type === "FunctionDeclaration") {
|
93
|
-
requireSpace =
|
105
|
+
requireSpace = alwaysFunctions;
|
106
|
+
requireNoSpace = neverFunctions;
|
94
107
|
} else if (node.type === "ClassBody") {
|
95
|
-
requireSpace =
|
108
|
+
requireSpace = alwaysClasses;
|
109
|
+
requireNoSpace = neverClasses;
|
96
110
|
} else {
|
97
|
-
requireSpace =
|
111
|
+
requireSpace = alwaysKeywords;
|
112
|
+
requireNoSpace = neverKeywords;
|
98
113
|
}
|
99
114
|
|
100
|
-
if (requireSpace) {
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
node
|
114
|
-
|
115
|
-
|
116
|
-
return fixer.removeRange([precedingToken.range[1], node.range[0]]);
|
117
|
-
}
|
118
|
-
});
|
119
|
-
}
|
115
|
+
if (requireSpace && !hasSpace) {
|
116
|
+
context.report({
|
117
|
+
node,
|
118
|
+
message: "Missing space before opening brace.",
|
119
|
+
fix(fixer) {
|
120
|
+
return fixer.insertTextBefore(node, " ");
|
121
|
+
}
|
122
|
+
});
|
123
|
+
} else if (requireNoSpace && hasSpace) {
|
124
|
+
context.report({
|
125
|
+
node,
|
126
|
+
message: "Unexpected space before opening brace.",
|
127
|
+
fix(fixer) {
|
128
|
+
return fixer.removeRange([precedingToken.range[1], node.range[0]]);
|
129
|
+
}
|
130
|
+
});
|
120
131
|
}
|
121
132
|
}
|
122
133
|
}
|
@@ -12,6 +12,8 @@ const astUtils = require("../util/ast-utils");
|
|
12
12
|
|
13
13
|
module.exports = {
|
14
14
|
meta: {
|
15
|
+
type: "layout",
|
16
|
+
|
15
17
|
docs: {
|
16
18
|
description: "enforce consistent spacing inside parentheses",
|
17
19
|
category: "Stylistic Issues",
|
@@ -59,7 +61,6 @@ module.exports = {
|
|
59
61
|
|
60
62
|
/**
|
61
63
|
* Produces an object with the opener and closer exception values
|
62
|
-
* @param {Object} opts The exception options
|
63
64
|
* @returns {Object} `openers` and `closers` exception values
|
64
65
|
* @private
|
65
66
|
*/
|
@@ -10,6 +10,8 @@
|
|
10
10
|
|
11
11
|
module.exports = {
|
12
12
|
meta: {
|
13
|
+
type: "layout",
|
14
|
+
|
13
15
|
docs: {
|
14
16
|
description: "require spacing around infix operators",
|
15
17
|
category: "Stylistic Issues",
|
@@ -67,7 +69,10 @@ module.exports = {
|
|
67
69
|
context.report({
|
68
70
|
node: mainNode,
|
69
71
|
loc: culpritToken.loc.start,
|
70
|
-
message: "
|
72
|
+
message: "Operator '{{operator}}' must be spaced.",
|
73
|
+
data: {
|
74
|
+
operator: culpritToken.value
|
75
|
+
},
|
71
76
|
fix(fixer) {
|
72
77
|
const previousToken = sourceCode.getTokenBefore(culpritToken);
|
73
78
|
const afterToken = sourceCode.getTokenAfter(culpritToken);
|
package/lib/rules/strict.js
CHANGED
@@ -17,12 +17,15 @@ const astUtils = require("../util/ast-utils");
|
|
17
17
|
|
18
18
|
module.exports = {
|
19
19
|
meta: {
|
20
|
+
type: "layout",
|
21
|
+
|
20
22
|
docs: {
|
21
23
|
description: "enforce spacing around colons of switch statements",
|
22
24
|
category: "Stylistic Issues",
|
23
25
|
recommended: false,
|
24
26
|
url: "https://eslint.org/docs/rules/switch-colon-spacing"
|
25
27
|
},
|
28
|
+
|
26
29
|
schema: [
|
27
30
|
{
|
28
31
|
type: "object",
|
@@ -33,6 +36,7 @@ module.exports = {
|
|
33
36
|
additionalProperties: false
|
34
37
|
}
|
35
38
|
],
|
39
|
+
|
36
40
|
fixable: "whitespace"
|
37
41
|
},
|
38
42
|
|
package/lib/rules/unicode-bom.js
CHANGED
package/lib/rules/use-isnan.js
CHANGED
package/lib/rules/valid-jsdoc.js
CHANGED
@@ -16,6 +16,8 @@ const doctrine = require("doctrine");
|
|
16
16
|
|
17
17
|
module.exports = {
|
18
18
|
meta: {
|
19
|
+
type: "suggestion",
|
20
|
+
|
19
21
|
docs: {
|
20
22
|
description: "enforce valid JSDoc comments",
|
21
23
|
category: "Possible Errors",
|
@@ -62,7 +64,10 @@ module.exports = {
|
|
62
64
|
}
|
63
65
|
],
|
64
66
|
|
65
|
-
fixable: "code"
|
67
|
+
fixable: "code",
|
68
|
+
|
69
|
+
deprecated: true,
|
70
|
+
replacedBy: []
|
66
71
|
},
|
67
72
|
|
68
73
|
create(context) {
|
package/lib/rules/vars-on-top.js
CHANGED
package/lib/rules/wrap-iife.js
CHANGED
package/lib/rules/wrap-regex.js
CHANGED
@@ -11,6 +11,8 @@
|
|
11
11
|
|
12
12
|
module.exports = {
|
13
13
|
meta: {
|
14
|
+
type: "layout",
|
15
|
+
|
14
16
|
docs: {
|
15
17
|
description: "require parenthesis around regex literals",
|
16
18
|
category: "Stylistic Issues",
|
@@ -19,8 +21,8 @@ module.exports = {
|
|
19
21
|
},
|
20
22
|
|
21
23
|
schema: [],
|
22
|
-
|
23
24
|
fixable: "code",
|
25
|
+
|
24
26
|
messages: {
|
25
27
|
requireParens: "Wrap the regexp literal in parens to disambiguate the slash."
|
26
28
|
}
|