eslint 4.12.1 → 4.15.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.
Files changed (269) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +3 -3
  3. package/lib/cli-engine.js +4 -0
  4. package/lib/linter.js +78 -35
  5. package/lib/options.js +47 -41
  6. package/lib/report-translator.js +34 -13
  7. package/lib/rules/.eslintrc.yml +1 -0
  8. package/lib/rules/accessor-pairs.js +2 -1
  9. package/lib/rules/array-bracket-newline.js +2 -1
  10. package/lib/rules/array-bracket-spacing.js +2 -1
  11. package/lib/rules/array-callback-return.js +18 -3
  12. package/lib/rules/array-element-newline.js +2 -1
  13. package/lib/rules/arrow-body-style.js +15 -2
  14. package/lib/rules/arrow-parens.js +2 -1
  15. package/lib/rules/arrow-spacing.js +2 -1
  16. package/lib/rules/block-scoped-var.js +2 -1
  17. package/lib/rules/block-spacing.js +2 -1
  18. package/lib/rules/brace-style.js +2 -1
  19. package/lib/rules/callback-return.js +2 -1
  20. package/lib/rules/camelcase.js +29 -17
  21. package/lib/rules/capitalized-comments.js +2 -1
  22. package/lib/rules/class-methods-use-this.js +2 -1
  23. package/lib/rules/comma-dangle.js +2 -1
  24. package/lib/rules/comma-spacing.js +2 -1
  25. package/lib/rules/comma-style.js +2 -1
  26. package/lib/rules/complexity.js +3 -16
  27. package/lib/rules/computed-property-spacing.js +2 -1
  28. package/lib/rules/consistent-return.js +2 -1
  29. package/lib/rules/consistent-this.js +2 -1
  30. package/lib/rules/constructor-super.js +2 -1
  31. package/lib/rules/curly.js +2 -1
  32. package/lib/rules/default-case.js +2 -1
  33. package/lib/rules/dot-location.js +2 -1
  34. package/lib/rules/dot-notation.js +2 -1
  35. package/lib/rules/eol-last.js +10 -1
  36. package/lib/rules/eqeqeq.js +2 -1
  37. package/lib/rules/for-direction.js +2 -1
  38. package/lib/rules/func-call-spacing.js +2 -1
  39. package/lib/rules/func-name-matching.js +2 -1
  40. package/lib/rules/func-names.js +2 -1
  41. package/lib/rules/func-style.js +2 -1
  42. package/lib/rules/function-paren-newline.js +2 -1
  43. package/lib/rules/generator-star-spacing.js +2 -1
  44. package/lib/rules/getter-return.js +2 -1
  45. package/lib/rules/global-require.js +2 -1
  46. package/lib/rules/guard-for-in.js +2 -1
  47. package/lib/rules/handle-callback-err.js +2 -1
  48. package/lib/rules/id-blacklist.js +2 -1
  49. package/lib/rules/id-length.js +2 -1
  50. package/lib/rules/id-match.js +2 -1
  51. package/lib/rules/implicit-arrow-linebreak.js +2 -1
  52. package/lib/rules/indent-legacy.js +2 -1
  53. package/lib/rules/indent.js +13 -2
  54. package/lib/rules/init-declarations.js +2 -1
  55. package/lib/rules/jsx-quotes.js +2 -1
  56. package/lib/rules/key-spacing.js +2 -1
  57. package/lib/rules/keyword-spacing.js +2 -1
  58. package/lib/rules/line-comment-position.js +2 -1
  59. package/lib/rules/linebreak-style.js +2 -1
  60. package/lib/rules/lines-around-comment.js +2 -1
  61. package/lib/rules/lines-around-directive.js +2 -1
  62. package/lib/rules/lines-between-class-members.js +53 -4
  63. package/lib/rules/max-depth.js +2 -1
  64. package/lib/rules/max-len.js +2 -1
  65. package/lib/rules/max-lines.js +2 -1
  66. package/lib/rules/max-nested-callbacks.js +2 -1
  67. package/lib/rules/max-params.js +2 -1
  68. package/lib/rules/max-statements-per-line.js +2 -1
  69. package/lib/rules/max-statements.js +2 -1
  70. package/lib/rules/multiline-comment-style.js +2 -1
  71. package/lib/rules/multiline-ternary.js +2 -1
  72. package/lib/rules/new-cap.js +2 -1
  73. package/lib/rules/new-parens.js +2 -1
  74. package/lib/rules/newline-after-var.js +2 -1
  75. package/lib/rules/newline-before-return.js +2 -1
  76. package/lib/rules/newline-per-chained-call.js +2 -1
  77. package/lib/rules/no-alert.js +2 -1
  78. package/lib/rules/no-array-constructor.js +2 -1
  79. package/lib/rules/no-await-in-loop.js +2 -1
  80. package/lib/rules/no-bitwise.js +2 -1
  81. package/lib/rules/no-buffer-constructor.js +2 -1
  82. package/lib/rules/no-caller.js +2 -1
  83. package/lib/rules/no-case-declarations.js +2 -1
  84. package/lib/rules/no-catch-shadow.js +2 -1
  85. package/lib/rules/no-class-assign.js +2 -1
  86. package/lib/rules/no-compare-neg-zero.js +2 -1
  87. package/lib/rules/no-cond-assign.js +2 -1
  88. package/lib/rules/no-confusing-arrow.js +2 -1
  89. package/lib/rules/no-console.js +2 -1
  90. package/lib/rules/no-const-assign.js +2 -1
  91. package/lib/rules/no-constant-condition.js +2 -1
  92. package/lib/rules/no-continue.js +2 -1
  93. package/lib/rules/no-control-regex.js +2 -1
  94. package/lib/rules/no-debugger.js +2 -1
  95. package/lib/rules/no-delete-var.js +2 -1
  96. package/lib/rules/no-div-regex.js +2 -1
  97. package/lib/rules/no-dupe-args.js +2 -1
  98. package/lib/rules/no-dupe-class-members.js +2 -1
  99. package/lib/rules/no-dupe-keys.js +2 -1
  100. package/lib/rules/no-duplicate-case.js +2 -1
  101. package/lib/rules/no-duplicate-imports.js +2 -1
  102. package/lib/rules/no-else-return.js +2 -1
  103. package/lib/rules/no-empty-character-class.js +2 -1
  104. package/lib/rules/no-empty-function.js +2 -1
  105. package/lib/rules/no-empty-pattern.js +2 -1
  106. package/lib/rules/no-empty.js +2 -1
  107. package/lib/rules/no-eq-null.js +2 -1
  108. package/lib/rules/no-eval.js +2 -1
  109. package/lib/rules/no-ex-assign.js +2 -1
  110. package/lib/rules/no-extend-native.js +2 -1
  111. package/lib/rules/no-extra-bind.js +2 -1
  112. package/lib/rules/no-extra-boolean-cast.js +2 -1
  113. package/lib/rules/no-extra-label.js +2 -1
  114. package/lib/rules/no-extra-parens.js +3 -2
  115. package/lib/rules/no-extra-semi.js +2 -1
  116. package/lib/rules/no-fallthrough.js +2 -1
  117. package/lib/rules/no-floating-decimal.js +2 -1
  118. package/lib/rules/no-func-assign.js +2 -1
  119. package/lib/rules/no-global-assign.js +2 -1
  120. package/lib/rules/no-implicit-coercion.js +2 -1
  121. package/lib/rules/no-implicit-globals.js +2 -1
  122. package/lib/rules/no-implied-eval.js +2 -1
  123. package/lib/rules/no-inline-comments.js +2 -1
  124. package/lib/rules/no-inner-declarations.js +2 -1
  125. package/lib/rules/no-invalid-regexp.js +2 -1
  126. package/lib/rules/no-invalid-this.js +2 -1
  127. package/lib/rules/no-irregular-whitespace.js +2 -1
  128. package/lib/rules/no-iterator.js +2 -1
  129. package/lib/rules/no-label-var.js +2 -1
  130. package/lib/rules/no-labels.js +2 -1
  131. package/lib/rules/no-lone-blocks.js +2 -1
  132. package/lib/rules/no-lonely-if.js +2 -1
  133. package/lib/rules/no-loop-func.js +2 -1
  134. package/lib/rules/no-magic-numbers.js +2 -1
  135. package/lib/rules/no-mixed-operators.js +2 -1
  136. package/lib/rules/no-mixed-requires.js +2 -1
  137. package/lib/rules/no-mixed-spaces-and-tabs.js +2 -1
  138. package/lib/rules/no-multi-assign.js +2 -1
  139. package/lib/rules/no-multi-spaces.js +2 -1
  140. package/lib/rules/no-multi-str.js +2 -1
  141. package/lib/rules/no-multiple-empty-lines.js +2 -1
  142. package/lib/rules/no-native-reassign.js +2 -1
  143. package/lib/rules/no-negated-condition.js +2 -1
  144. package/lib/rules/no-negated-in-lhs.js +2 -1
  145. package/lib/rules/no-nested-ternary.js +2 -1
  146. package/lib/rules/no-new-func.js +2 -1
  147. package/lib/rules/no-new-object.js +2 -1
  148. package/lib/rules/no-new-require.js +2 -1
  149. package/lib/rules/no-new-symbol.js +2 -1
  150. package/lib/rules/no-new-wrappers.js +2 -1
  151. package/lib/rules/no-new.js +2 -1
  152. package/lib/rules/no-obj-calls.js +2 -1
  153. package/lib/rules/no-octal-escape.js +2 -1
  154. package/lib/rules/no-octal.js +2 -1
  155. package/lib/rules/no-param-reassign.js +2 -1
  156. package/lib/rules/no-path-concat.js +2 -1
  157. package/lib/rules/no-plusplus.js +2 -1
  158. package/lib/rules/no-process-env.js +2 -1
  159. package/lib/rules/no-process-exit.js +2 -1
  160. package/lib/rules/no-proto.js +2 -1
  161. package/lib/rules/no-prototype-builtins.js +2 -1
  162. package/lib/rules/no-redeclare.js +2 -1
  163. package/lib/rules/no-regex-spaces.js +2 -1
  164. package/lib/rules/no-restricted-globals.js +2 -1
  165. package/lib/rules/no-restricted-imports.js +2 -1
  166. package/lib/rules/no-restricted-modules.js +2 -1
  167. package/lib/rules/no-restricted-properties.js +2 -1
  168. package/lib/rules/no-restricted-syntax.js +2 -1
  169. package/lib/rules/no-return-assign.js +2 -1
  170. package/lib/rules/no-return-await.js +5 -1
  171. package/lib/rules/no-script-url.js +2 -1
  172. package/lib/rules/no-self-assign.js +2 -1
  173. package/lib/rules/no-self-compare.js +2 -1
  174. package/lib/rules/no-sequences.js +2 -1
  175. package/lib/rules/no-shadow-restricted-names.js +2 -1
  176. package/lib/rules/no-shadow.js +2 -1
  177. package/lib/rules/no-spaced-func.js +2 -1
  178. package/lib/rules/no-sparse-arrays.js +2 -1
  179. package/lib/rules/no-sync.js +2 -1
  180. package/lib/rules/no-tabs.js +2 -1
  181. package/lib/rules/no-template-curly-in-string.js +2 -1
  182. package/lib/rules/no-ternary.js +2 -1
  183. package/lib/rules/no-this-before-super.js +2 -1
  184. package/lib/rules/no-throw-literal.js +2 -1
  185. package/lib/rules/no-trailing-spaces.js +2 -1
  186. package/lib/rules/no-undef-init.js +2 -1
  187. package/lib/rules/no-undef.js +2 -1
  188. package/lib/rules/no-undefined.js +2 -1
  189. package/lib/rules/no-underscore-dangle.js +2 -1
  190. package/lib/rules/no-unexpected-multiline.js +2 -1
  191. package/lib/rules/no-unmodified-loop-condition.js +81 -79
  192. package/lib/rules/no-unneeded-ternary.js +2 -1
  193. package/lib/rules/no-unreachable.js +2 -1
  194. package/lib/rules/no-unsafe-finally.js +2 -1
  195. package/lib/rules/no-unsafe-negation.js +2 -1
  196. package/lib/rules/no-unused-expressions.js +2 -1
  197. package/lib/rules/no-unused-labels.js +2 -1
  198. package/lib/rules/no-unused-vars.js +10 -14
  199. package/lib/rules/no-use-before-define.js +2 -1
  200. package/lib/rules/no-useless-call.js +2 -1
  201. package/lib/rules/no-useless-computed-key.js +2 -1
  202. package/lib/rules/no-useless-concat.js +2 -1
  203. package/lib/rules/no-useless-constructor.js +2 -1
  204. package/lib/rules/no-useless-escape.js +2 -1
  205. package/lib/rules/no-useless-rename.js +2 -1
  206. package/lib/rules/no-useless-return.js +2 -1
  207. package/lib/rules/no-var.js +2 -1
  208. package/lib/rules/no-void.js +2 -1
  209. package/lib/rules/no-warning-comments.js +2 -1
  210. package/lib/rules/no-whitespace-before-property.js +2 -1
  211. package/lib/rules/no-with.js +2 -1
  212. package/lib/rules/nonblock-statement-body-position.js +2 -1
  213. package/lib/rules/object-curly-newline.js +2 -1
  214. package/lib/rules/object-curly-spacing.js +2 -1
  215. package/lib/rules/object-property-newline.js +2 -1
  216. package/lib/rules/object-shorthand.js +2 -1
  217. package/lib/rules/one-var-declaration-per-line.js +2 -1
  218. package/lib/rules/one-var.js +42 -8
  219. package/lib/rules/operator-assignment.js +2 -1
  220. package/lib/rules/operator-linebreak.js +2 -1
  221. package/lib/rules/padded-blocks.js +2 -1
  222. package/lib/rules/padding-line-between-statements.js +2 -1
  223. package/lib/rules/prefer-arrow-callback.js +2 -1
  224. package/lib/rules/prefer-const.js +2 -1
  225. package/lib/rules/prefer-destructuring.js +2 -1
  226. package/lib/rules/prefer-numeric-literals.js +2 -1
  227. package/lib/rules/prefer-promise-reject-errors.js +2 -1
  228. package/lib/rules/prefer-reflect.js +2 -1
  229. package/lib/rules/prefer-rest-params.js +2 -1
  230. package/lib/rules/prefer-spread.js +2 -1
  231. package/lib/rules/prefer-template.js +2 -1
  232. package/lib/rules/quote-props.js +2 -1
  233. package/lib/rules/quotes.js +2 -1
  234. package/lib/rules/radix.js +2 -1
  235. package/lib/rules/require-await.js +2 -1
  236. package/lib/rules/require-jsdoc.js +2 -1
  237. package/lib/rules/require-yield.js +2 -1
  238. package/lib/rules/rest-spread-spacing.js +2 -1
  239. package/lib/rules/semi-spacing.js +2 -1
  240. package/lib/rules/semi-style.js +2 -1
  241. package/lib/rules/semi.js +2 -1
  242. package/lib/rules/sort-imports.js +2 -1
  243. package/lib/rules/sort-keys.js +2 -1
  244. package/lib/rules/sort-vars.js +2 -1
  245. package/lib/rules/space-before-blocks.js +2 -1
  246. package/lib/rules/space-before-function-paren.js +2 -1
  247. package/lib/rules/space-in-parens.js +2 -1
  248. package/lib/rules/space-infix-ops.js +2 -1
  249. package/lib/rules/space-unary-ops.js +2 -1
  250. package/lib/rules/spaced-comment.js +2 -1
  251. package/lib/rules/strict.js +2 -1
  252. package/lib/rules/switch-colon-spacing.js +2 -1
  253. package/lib/rules/symbol-description.js +2 -1
  254. package/lib/rules/template-curly-spacing.js +2 -1
  255. package/lib/rules/template-tag-spacing.js +2 -1
  256. package/lib/rules/unicode-bom.js +2 -1
  257. package/lib/rules/use-isnan.js +2 -1
  258. package/lib/rules/valid-jsdoc.js +2 -1
  259. package/lib/rules/valid-typeof.js +2 -1
  260. package/lib/rules/vars-on-top.js +2 -1
  261. package/lib/rules/wrap-iife.js +2 -1
  262. package/lib/rules/wrap-regex.js +2 -1
  263. package/lib/rules/yield-star-spacing.js +2 -1
  264. package/lib/rules/yoda.js +2 -1
  265. package/lib/testers/rule-tester.js +63 -30
  266. package/lib/util/interpolate.js +24 -0
  267. package/lib/util/source-code.js +41 -6
  268. package/lib/util/traverser.js +163 -15
  269. package/package.json +3 -3
@@ -76,7 +76,8 @@ module.exports = {
76
76
  docs: {
77
77
  description: "disallow redundant return statements",
78
78
  category: "Best Practices",
79
- recommended: false
79
+ recommended: false,
80
+ url: "https://eslint.org/docs/rules/no-useless-return"
80
81
  },
81
82
  fixable: "code",
82
83
  schema: []
@@ -183,7 +183,8 @@ module.exports = {
183
183
  docs: {
184
184
  description: "require `let` or `const` instead of `var`",
185
185
  category: "ECMAScript 6",
186
- recommended: false
186
+ recommended: false,
187
+ url: "https://eslint.org/docs/rules/no-var"
187
188
  },
188
189
 
189
190
  schema: [],
@@ -13,7 +13,8 @@ module.exports = {
13
13
  docs: {
14
14
  description: "disallow `void` operators",
15
15
  category: "Best Practices",
16
- recommended: false
16
+ recommended: false,
17
+ url: "https://eslint.org/docs/rules/no-void"
17
18
  },
18
19
 
19
20
  schema: []
@@ -16,7 +16,8 @@ module.exports = {
16
16
  docs: {
17
17
  description: "disallow specified warning terms in comments",
18
18
  category: "Best Practices",
19
- recommended: false
19
+ recommended: false,
20
+ url: "https://eslint.org/docs/rules/no-warning-comments"
20
21
  },
21
22
 
22
23
  schema: [
@@ -19,7 +19,8 @@ module.exports = {
19
19
  docs: {
20
20
  description: "disallow whitespace before properties",
21
21
  category: "Stylistic Issues",
22
- recommended: false
22
+ recommended: false,
23
+ url: "https://eslint.org/docs/rules/no-whitespace-before-property"
23
24
  },
24
25
 
25
26
  fixable: "whitespace",
@@ -14,7 +14,8 @@ module.exports = {
14
14
  docs: {
15
15
  description: "disallow `with` statements",
16
16
  category: "Best Practices",
17
- recommended: false
17
+ recommended: false,
18
+ url: "https://eslint.org/docs/rules/no-with"
18
19
  },
19
20
 
20
21
  schema: []
@@ -15,7 +15,8 @@ module.exports = {
15
15
  docs: {
16
16
  description: "enforce the location of single-line statements",
17
17
  category: "Stylistic Issues",
18
- recommended: false
18
+ recommended: false,
19
+ url: "https://eslint.org/docs/rules/nonblock-statement-body-position"
19
20
  },
20
21
  fixable: "whitespace",
21
22
  schema: [
@@ -97,7 +97,8 @@ module.exports = {
97
97
  docs: {
98
98
  description: "enforce consistent line breaks inside braces",
99
99
  category: "Stylistic Issues",
100
- recommended: false
100
+ recommended: false,
101
+ url: "https://eslint.org/docs/rules/object-curly-newline"
101
102
  },
102
103
  fixable: "whitespace",
103
104
  schema: [
@@ -15,7 +15,8 @@ module.exports = {
15
15
  docs: {
16
16
  description: "enforce consistent spacing inside braces",
17
17
  category: "Stylistic Issues",
18
- recommended: false
18
+ recommended: false,
19
+ url: "https://eslint.org/docs/rules/object-curly-spacing"
19
20
  },
20
21
 
21
22
  fixable: "whitespace",
@@ -14,7 +14,8 @@ module.exports = {
14
14
  docs: {
15
15
  description: "enforce placing object properties on separate lines",
16
16
  category: "Stylistic Issues",
17
- recommended: false
17
+ recommended: false,
18
+ url: "https://eslint.org/docs/rules/object-property-newline"
18
19
  },
19
20
 
20
21
  schema: [
@@ -27,7 +27,8 @@ module.exports = {
27
27
  docs: {
28
28
  description: "require or disallow method and property shorthand syntax for object literals",
29
29
  category: "ECMAScript 6",
30
- recommended: false
30
+ recommended: false,
31
+ url: "https://eslint.org/docs/rules/object-shorthand"
31
32
  },
32
33
 
33
34
  fixable: "code",
@@ -13,7 +13,8 @@ module.exports = {
13
13
  docs: {
14
14
  description: "require or disallow newlines around variable declarations",
15
15
  category: "Stylistic Issues",
16
- recommended: false
16
+ recommended: false,
17
+ url: "https://eslint.org/docs/rules/one-var-declaration-per-line"
17
18
  },
18
19
 
19
20
  schema: [
@@ -14,7 +14,8 @@ module.exports = {
14
14
  docs: {
15
15
  description: "enforce variables to be declared either together or separately in functions",
16
16
  category: "Stylistic Issues",
17
- recommended: false
17
+ recommended: false,
18
+ url: "https://eslint.org/docs/rules/one-var"
18
19
  },
19
20
 
20
21
  schema: [
@@ -26,6 +27,9 @@ module.exports = {
26
27
  {
27
28
  type: "object",
28
29
  properties: {
30
+ separateRequires: {
31
+ type: "boolean"
32
+ },
29
33
  var: {
30
34
  enum: ["always", "never"]
31
35
  },
@@ -62,21 +66,23 @@ module.exports = {
62
66
 
63
67
  const mode = context.options[0] || MODE_ALWAYS;
64
68
 
65
- const options = {
66
- };
69
+ const options = {};
67
70
 
68
71
  if (typeof mode === "string") { // simple options configuration with just a string
69
72
  options.var = { uninitialized: mode, initialized: mode };
70
73
  options.let = { uninitialized: mode, initialized: mode };
71
74
  options.const = { uninitialized: mode, initialized: mode };
72
75
  } else if (typeof mode === "object") { // options configuration is an object
73
- if (mode.hasOwnProperty("var") && typeof mode.var === "string") {
76
+ if (mode.hasOwnProperty("separateRequires")) {
77
+ options.separateRequires = !!mode.separateRequires;
78
+ }
79
+ if (mode.hasOwnProperty("var")) {
74
80
  options.var = { uninitialized: mode.var, initialized: mode.var };
75
81
  }
76
- if (mode.hasOwnProperty("let") && typeof mode.let === "string") {
82
+ if (mode.hasOwnProperty("let")) {
77
83
  options.let = { uninitialized: mode.let, initialized: mode.let };
78
84
  }
79
- if (mode.hasOwnProperty("const") && typeof mode.const === "string") {
85
+ if (mode.hasOwnProperty("const")) {
80
86
  options.const = { uninitialized: mode.const, initialized: mode.const };
81
87
  }
82
88
  if (mode.hasOwnProperty("uninitialized")) {
@@ -158,7 +164,17 @@ module.exports = {
158
164
  }
159
165
 
160
166
  /**
161
- * Records whether initialized or uninitialized variables are defined in current scope.
167
+ * Check if a variable declaration is a require.
168
+ * @param {ASTNode} decl variable declaration Node
169
+ * @returns {bool} if decl is a require, return true; else return false.
170
+ * @private
171
+ */
172
+ function isRequire(decl) {
173
+ return decl.init && decl.init.type === "CallExpression" && decl.init.callee.name === "require";
174
+ }
175
+
176
+ /**
177
+ * Records whether initialized/uninitialized/required variables are defined in current scope.
162
178
  * @param {string} statementType node.kind, one of: "var", "let", or "const"
163
179
  * @param {ASTNode[]} declarations List of declarations
164
180
  * @param {Object} currentScope The scope being investigated
@@ -173,7 +189,11 @@ module.exports = {
173
189
  }
174
190
  } else {
175
191
  if (options[statementType] && options[statementType].initialized === MODE_ALWAYS) {
176
- currentScope.initialized = true;
192
+ if (options.separateRequires && isRequire(declarations[i])) {
193
+ currentScope.required = true;
194
+ } else {
195
+ currentScope.initialized = true;
196
+ }
177
197
  }
178
198
  }
179
199
  }
@@ -228,6 +248,7 @@ module.exports = {
228
248
  const declarationCounts = countDeclarations(declarations);
229
249
  const currentOptions = options[statementType] || {};
230
250
  const currentScope = getCurrentScope(statementType);
251
+ const hasRequires = declarations.some(isRequire);
231
252
 
232
253
  if (currentOptions.uninitialized === MODE_ALWAYS && currentOptions.initialized === MODE_ALWAYS) {
233
254
  if (currentScope.uninitialized || currentScope.initialized) {
@@ -245,6 +266,9 @@ module.exports = {
245
266
  return false;
246
267
  }
247
268
  }
269
+ if (currentScope.required && hasRequires) {
270
+ return false;
271
+ }
248
272
  recordTypes(statementType, declarations, currentScope);
249
273
  return true;
250
274
  }
@@ -275,6 +299,16 @@ module.exports = {
275
299
 
276
300
  const declarations = node.declarations;
277
301
  const declarationCounts = countDeclarations(declarations);
302
+ const mixedRequires = declarations.some(isRequire) && !declarations.every(isRequire);
303
+
304
+ if (options[type].initialized === MODE_ALWAYS) {
305
+ if (options.separateRequires && mixedRequires) {
306
+ context.report({
307
+ node,
308
+ message: "Split requires to be separated into a single block."
309
+ });
310
+ }
311
+ }
278
312
 
279
313
  // always
280
314
  if (!hasOnlyOneStatement(type, declarations)) {
@@ -92,7 +92,8 @@ module.exports = {
92
92
  docs: {
93
93
  description: "require or disallow assignment operator shorthand where possible",
94
94
  category: "Stylistic Issues",
95
- recommended: false
95
+ recommended: false,
96
+ url: "https://eslint.org/docs/rules/operator-assignment"
96
97
  },
97
98
 
98
99
  schema: [
@@ -20,7 +20,8 @@ module.exports = {
20
20
  docs: {
21
21
  description: "enforce consistent linebreak style for operators",
22
22
  category: "Stylistic Issues",
23
- recommended: false
23
+ recommended: false,
24
+ url: "https://eslint.org/docs/rules/operator-linebreak"
24
25
  },
25
26
 
26
27
  schema: [
@@ -14,7 +14,8 @@ module.exports = {
14
14
  docs: {
15
15
  description: "require or disallow padding within blocks",
16
16
  category: "Stylistic Issues",
17
- recommended: false
17
+ recommended: false,
18
+ url: "https://eslint.org/docs/rules/padded-blocks"
18
19
  },
19
20
 
20
21
  fixable: "whitespace",
@@ -394,7 +394,8 @@ module.exports = {
394
394
  docs: {
395
395
  description: "require or disallow padding lines between statements",
396
396
  category: "Stylistic Issues",
397
- recommended: false
397
+ recommended: false,
398
+ url: "https://eslint.org/docs/rules/padding-line-between-statements"
398
399
  },
399
400
  fixable: "whitespace",
400
401
  schema: {
@@ -134,7 +134,8 @@ module.exports = {
134
134
  docs: {
135
135
  description: "require using arrow functions for callbacks",
136
136
  category: "ECMAScript 6",
137
- recommended: false
137
+ recommended: false,
138
+ url: "https://eslint.org/docs/rules/prefer-arrow-callback"
138
139
  },
139
140
 
140
141
  schema: [
@@ -233,7 +233,8 @@ module.exports = {
233
233
  docs: {
234
234
  description: "require `const` declarations for variables that are never reassigned after declared",
235
235
  category: "ECMAScript 6",
236
- recommended: false
236
+ recommended: false,
237
+ url: "https://eslint.org/docs/rules/prefer-const"
237
238
  },
238
239
 
239
240
  fixable: "code",
@@ -13,7 +13,8 @@ module.exports = {
13
13
  docs: {
14
14
  description: "require destructuring from arrays and/or objects",
15
15
  category: "ECMAScript 6",
16
- recommended: false
16
+ recommended: false,
17
+ url: "https://eslint.org/docs/rules/prefer-destructuring"
17
18
  },
18
19
  schema: [
19
20
  {
@@ -41,7 +41,8 @@ module.exports = {
41
41
  docs: {
42
42
  description: "disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and hexadecimal literals",
43
43
  category: "ECMAScript 6",
44
- recommended: false
44
+ recommended: false,
45
+ url: "https://eslint.org/docs/rules/prefer-numeric-literals"
45
46
  },
46
47
 
47
48
  schema: [],
@@ -15,7 +15,8 @@ module.exports = {
15
15
  docs: {
16
16
  description: "require using Error objects as Promise rejection reasons",
17
17
  category: "Best Practices",
18
- recommended: false
18
+ recommended: false,
19
+ url: "https://eslint.org/docs/rules/prefer-promise-reject-errors"
19
20
  },
20
21
  fixable: null,
21
22
  schema: [
@@ -15,7 +15,8 @@ module.exports = {
15
15
  description: "require `Reflect` methods where applicable",
16
16
  category: "ECMAScript 6",
17
17
  recommended: false,
18
- replacedBy: []
18
+ replacedBy: [],
19
+ url: "https://eslint.org/docs/rules/prefer-reflect"
19
20
  },
20
21
 
21
22
  deprecated: true,
@@ -65,7 +65,8 @@ module.exports = {
65
65
  docs: {
66
66
  description: "require rest parameters instead of `arguments`",
67
67
  category: "ECMAScript 6",
68
- recommended: false
68
+ recommended: false,
69
+ url: "https://eslint.org/docs/rules/prefer-rest-params"
69
70
  },
70
71
 
71
72
  schema: []
@@ -52,7 +52,8 @@ module.exports = {
52
52
  docs: {
53
53
  description: "require spread operators instead of `.apply()`",
54
54
  category: "ECMAScript 6",
55
- recommended: false
55
+ recommended: false,
56
+ url: "https://eslint.org/docs/rules/prefer-spread"
56
57
  },
57
58
 
58
59
  schema: [],
@@ -103,7 +103,8 @@ module.exports = {
103
103
  docs: {
104
104
  description: "require template literals instead of string concatenation",
105
105
  category: "ECMAScript 6",
106
- recommended: false
106
+ recommended: false,
107
+ url: "https://eslint.org/docs/rules/prefer-template"
107
108
  },
108
109
 
109
110
  schema: [],
@@ -20,7 +20,8 @@ module.exports = {
20
20
  docs: {
21
21
  description: "require quotes around object literal property names",
22
22
  category: "Stylistic Issues",
23
- recommended: false
23
+ recommended: false,
24
+ url: "https://eslint.org/docs/rules/quote-props"
24
25
  },
25
26
 
26
27
  schema: {
@@ -79,7 +79,8 @@ module.exports = {
79
79
  docs: {
80
80
  description: "enforce the consistent use of either backticks, double, or single quotes",
81
81
  category: "Stylistic Issues",
82
- recommended: false
82
+ recommended: false,
83
+ url: "https://eslint.org/docs/rules/quotes"
83
84
  },
84
85
 
85
86
  fixable: "code",
@@ -81,7 +81,8 @@ module.exports = {
81
81
  docs: {
82
82
  description: "enforce the consistent use of the radix argument when using `parseInt()`",
83
83
  category: "Best Practices",
84
- recommended: false
84
+ recommended: false,
85
+ url: "https://eslint.org/docs/rules/radix"
85
86
  },
86
87
 
87
88
  schema: [
@@ -34,7 +34,8 @@ module.exports = {
34
34
  docs: {
35
35
  description: "disallow async functions which have no `await` expression",
36
36
  category: "Best Practices",
37
- recommended: false
37
+ recommended: false,
38
+ url: "https://eslint.org/docs/rules/require-await"
38
39
  },
39
40
  schema: []
40
41
  },
@@ -9,7 +9,8 @@ module.exports = {
9
9
  docs: {
10
10
  description: "require JSDoc comments",
11
11
  category: "Stylistic Issues",
12
- recommended: false
12
+ recommended: false,
13
+ url: "https://eslint.org/docs/rules/require-jsdoc"
13
14
  },
14
15
 
15
16
  schema: [
@@ -14,7 +14,8 @@ module.exports = {
14
14
  docs: {
15
15
  description: "require generator functions to contain `yield`",
16
16
  category: "ECMAScript 6",
17
- recommended: true
17
+ recommended: true,
18
+ url: "https://eslint.org/docs/rules/require-yield"
18
19
  },
19
20
 
20
21
  schema: []
@@ -14,7 +14,8 @@ module.exports = {
14
14
  docs: {
15
15
  description: "enforce spacing between rest and spread operators and their expressions",
16
16
  category: "ECMAScript 6",
17
- recommended: false
17
+ recommended: false,
18
+ url: "https://eslint.org/docs/rules/rest-spread-spacing"
18
19
  },
19
20
  fixable: "whitespace",
20
21
  schema: [
@@ -16,7 +16,8 @@ module.exports = {
16
16
  docs: {
17
17
  description: "enforce consistent spacing before and after semicolons",
18
18
  category: "Stylistic Issues",
19
- recommended: false
19
+ recommended: false,
20
+ url: "https://eslint.org/docs/rules/semi-spacing"
20
21
  },
21
22
 
22
23
  fixable: "whitespace",
@@ -68,7 +68,8 @@ module.exports = {
68
68
  docs: {
69
69
  description: "enforce location of semicolons",
70
70
  category: "Stylistic Issues",
71
- recommended: false
71
+ recommended: false,
72
+ url: "https://eslint.org/docs/rules/semi-style"
72
73
  },
73
74
  schema: [{ enum: ["last", "first"] }],
74
75
  fixable: "whitespace"
package/lib/rules/semi.js CHANGED
@@ -20,7 +20,8 @@ module.exports = {
20
20
  docs: {
21
21
  description: "require or disallow semicolons instead of ASI",
22
22
  category: "Stylistic Issues",
23
- recommended: false
23
+ recommended: false,
24
+ url: "https://eslint.org/docs/rules/semi"
24
25
  },
25
26
 
26
27
  fixable: "code",
@@ -14,7 +14,8 @@ module.exports = {
14
14
  docs: {
15
15
  description: "enforce sorted import declarations within modules",
16
16
  category: "ECMAScript 6",
17
- recommended: false
17
+ recommended: false,
18
+ url: "https://eslint.org/docs/rules/sort-imports"
18
19
  },
19
20
 
20
21
  schema: [
@@ -76,7 +76,8 @@ module.exports = {
76
76
  docs: {
77
77
  description: "require object keys to be sorted",
78
78
  category: "Stylistic Issues",
79
- recommended: false
79
+ recommended: false,
80
+ url: "https://eslint.org/docs/rules/sort-keys"
80
81
  },
81
82
  schema: [
82
83
  {
@@ -14,7 +14,8 @@ module.exports = {
14
14
  docs: {
15
15
  description: "require variables within the same declaration block to be sorted",
16
16
  category: "Stylistic Issues",
17
- recommended: false
17
+ recommended: false,
18
+ url: "https://eslint.org/docs/rules/sort-vars"
18
19
  },
19
20
 
20
21
  schema: [
@@ -16,7 +16,8 @@ module.exports = {
16
16
  docs: {
17
17
  description: "enforce consistent spacing before blocks",
18
18
  category: "Stylistic Issues",
19
- recommended: false
19
+ recommended: false,
20
+ url: "https://eslint.org/docs/rules/space-before-blocks"
20
21
  },
21
22
 
22
23
  fixable: "whitespace",
@@ -19,7 +19,8 @@ module.exports = {
19
19
  docs: {
20
20
  description: "enforce consistent spacing before `function` definition opening parenthesis",
21
21
  category: "Stylistic Issues",
22
- recommended: false
22
+ recommended: false,
23
+ url: "https://eslint.org/docs/rules/space-before-function-paren"
23
24
  },
24
25
 
25
26
  fixable: "whitespace",
@@ -15,7 +15,8 @@ module.exports = {
15
15
  docs: {
16
16
  description: "enforce consistent spacing inside parentheses",
17
17
  category: "Stylistic Issues",
18
- recommended: false
18
+ recommended: false,
19
+ url: "https://eslint.org/docs/rules/space-in-parens"
19
20
  },
20
21
 
21
22
  fixable: "whitespace",
@@ -13,7 +13,8 @@ module.exports = {
13
13
  docs: {
14
14
  description: "require spacing around infix operators",
15
15
  category: "Stylistic Issues",
16
- recommended: false
16
+ recommended: false,
17
+ url: "https://eslint.org/docs/rules/space-infix-ops"
17
18
  },
18
19
 
19
20
  fixable: "whitespace",
@@ -19,7 +19,8 @@ module.exports = {
19
19
  docs: {
20
20
  description: "enforce consistent spacing before or after unary operators",
21
21
  category: "Stylistic Issues",
22
- recommended: false
22
+ recommended: false,
23
+ url: "https://eslint.org/docs/rules/space-unary-ops"
23
24
  },
24
25
 
25
26
  fixable: "whitespace",
@@ -158,7 +158,8 @@ module.exports = {
158
158
  docs: {
159
159
  description: "enforce consistent spacing after the `//` or `/*` in a comment",
160
160
  category: "Stylistic Issues",
161
- recommended: false
161
+ recommended: false,
162
+ url: "https://eslint.org/docs/rules/spaced-comment"
162
163
  },
163
164
 
164
165
  fixable: "whitespace",
@@ -83,7 +83,8 @@ module.exports = {
83
83
  docs: {
84
84
  description: "require or disallow strict mode directives",
85
85
  category: "Strict Mode",
86
- recommended: false
86
+ recommended: false,
87
+ url: "https://eslint.org/docs/rules/strict"
87
88
  },
88
89
 
89
90
  schema: [
@@ -20,7 +20,8 @@ module.exports = {
20
20
  docs: {
21
21
  description: "enforce spacing around colons of switch statements",
22
22
  category: "Stylistic Issues",
23
- recommended: false
23
+ recommended: false,
24
+ url: "https://eslint.org/docs/rules/switch-colon-spacing"
24
25
  },
25
26
  schema: [
26
27
  {
@@ -21,7 +21,8 @@ module.exports = {
21
21
  docs: {
22
22
  description: "require symbol descriptions",
23
23
  category: "ECMAScript 6",
24
- recommended: false
24
+ recommended: false,
25
+ url: "https://eslint.org/docs/rules/symbol-description"
25
26
  },
26
27
 
27
28
  schema: []