eslint 6.0.0-alpha.1 → 6.0.1

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 (246) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/README.md +28 -21
  3. package/bin/eslint.js +2 -2
  4. package/conf/config-schema.js +38 -31
  5. package/conf/environments.js +1 -1
  6. package/conf/eslint-all.js +2 -2
  7. package/conf/eslint-recommended.js +1 -1
  8. package/lib/api.js +7 -3
  9. package/lib/cli-engine/cascading-config-array-factory.js +20 -8
  10. package/lib/{cli-engine.js → cli-engine/cli-engine.js} +44 -21
  11. package/lib/cli-engine/config-array/config-array.js +7 -8
  12. package/lib/cli-engine/config-array/config-dependency.js +2 -2
  13. package/lib/cli-engine/config-array/extracted-config.js +3 -3
  14. package/lib/cli-engine/config-array/override-tester.js +11 -1
  15. package/lib/cli-engine/config-array-factory.js +75 -65
  16. package/lib/cli-engine/file-enumerator.js +14 -6
  17. package/lib/{formatters → cli-engine/formatters}/checkstyle.js +1 -1
  18. package/lib/{formatters → cli-engine/formatters}/codeframe.js +0 -0
  19. package/lib/{formatters → cli-engine/formatters}/compact.js +0 -0
  20. package/lib/{formatters → cli-engine/formatters}/html-template-message.html +0 -0
  21. package/lib/{formatters → cli-engine/formatters}/html-template-page.html +0 -0
  22. package/lib/{formatters → cli-engine/formatters}/html-template-result.html +0 -0
  23. package/lib/{formatters → cli-engine/formatters}/html.js +0 -0
  24. package/lib/{formatters → cli-engine/formatters}/jslint-xml.js +1 -1
  25. package/lib/{formatters → cli-engine/formatters}/json-with-metadata.js +0 -0
  26. package/lib/{formatters → cli-engine/formatters}/json.js +0 -0
  27. package/lib/{formatters → cli-engine/formatters}/junit.js +15 -3
  28. package/lib/{formatters → cli-engine/formatters}/stylish.js +0 -0
  29. package/lib/{formatters → cli-engine/formatters}/table.js +0 -0
  30. package/lib/{formatters → cli-engine/formatters}/tap.js +0 -0
  31. package/lib/{formatters → cli-engine/formatters}/unix.js +0 -0
  32. package/lib/{formatters → cli-engine/formatters}/visualstudio.js +0 -0
  33. package/lib/{util → cli-engine}/hash.js +0 -0
  34. package/lib/{util → cli-engine}/ignored-paths.js +6 -1
  35. package/lib/cli-engine/index.js +7 -0
  36. package/lib/{util → cli-engine}/lint-result-cache.js +0 -0
  37. package/lib/{load-rules.js → cli-engine/load-rules.js} +0 -0
  38. package/lib/{util → cli-engine}/naming.js +0 -0
  39. package/lib/{util → cli-engine}/xml-escape.js +0 -0
  40. package/lib/cli.js +3 -3
  41. package/lib/{config → init}/autoconfig.js +3 -3
  42. package/lib/{config → init}/config-file.js +0 -0
  43. package/lib/{config → init}/config-initializer.js +6 -6
  44. package/lib/{config → init}/config-rule.js +8 -2
  45. package/lib/{util → init}/npm-utils.js +1 -1
  46. package/lib/{util → init}/source-code-utils.js +16 -1
  47. package/lib/{util → linter}/apply-disable-directives.js +0 -0
  48. package/lib/{code-path-analysis → linter/code-path-analysis}/code-path-analyzer.js +19 -6
  49. package/lib/{code-path-analysis → linter/code-path-analysis}/code-path-segment.js +0 -0
  50. package/lib/{code-path-analysis → linter/code-path-analysis}/code-path-state.js +0 -0
  51. package/lib/{code-path-analysis → linter/code-path-analysis}/code-path.js +0 -0
  52. package/lib/{code-path-analysis → linter/code-path-analysis}/debug-helpers.js +0 -0
  53. package/lib/{code-path-analysis → linter/code-path-analysis}/fork-context.js +0 -0
  54. package/lib/{code-path-analysis → linter/code-path-analysis}/id-generator.js +0 -0
  55. package/lib/{util → linter}/config-comment-parser.js +1 -1
  56. package/lib/linter/index.js +13 -0
  57. package/lib/{util → linter}/interpolate.js +0 -0
  58. package/lib/{linter.js → linter/linter.js} +298 -152
  59. package/lib/{util → linter}/node-event-generator.js +7 -5
  60. package/lib/{util → linter}/report-translator.js +0 -0
  61. package/lib/{util → linter}/rule-fixer.js +0 -0
  62. package/lib/{rules.js → linter/rules.js} +3 -29
  63. package/lib/{util → linter}/safe-emitter.js +0 -0
  64. package/lib/{util → linter}/source-code-fixer.js +0 -0
  65. package/lib/{util → linter}/timing.js +1 -1
  66. package/lib/rule-tester/index.js +5 -0
  67. package/lib/{testers → rule-tester}/rule-tester.js +43 -15
  68. package/lib/rules/array-bracket-newline.js +1 -1
  69. package/lib/rules/array-bracket-spacing.js +1 -1
  70. package/lib/rules/array-callback-return.js +1 -1
  71. package/lib/rules/array-element-newline.js +1 -1
  72. package/lib/rules/arrow-body-style.js +1 -1
  73. package/lib/rules/arrow-parens.js +22 -1
  74. package/lib/rules/arrow-spacing.js +1 -1
  75. package/lib/rules/block-spacing.js +1 -1
  76. package/lib/rules/brace-style.js +1 -1
  77. package/lib/rules/capitalized-comments.js +2 -2
  78. package/lib/rules/comma-dangle.js +1 -1
  79. package/lib/rules/comma-spacing.js +1 -1
  80. package/lib/rules/comma-style.js +1 -1
  81. package/lib/rules/complexity.js +3 -3
  82. package/lib/rules/computed-property-spacing.js +1 -1
  83. package/lib/rules/consistent-return.js +1 -1
  84. package/lib/rules/curly.js +1 -1
  85. package/lib/rules/dot-location.js +1 -1
  86. package/lib/rules/dot-notation.js +2 -2
  87. package/lib/rules/eqeqeq.js +1 -1
  88. package/lib/rules/func-call-spacing.js +1 -1
  89. package/lib/rules/func-name-matching.js +1 -1
  90. package/lib/rules/func-names.js +1 -1
  91. package/lib/rules/function-paren-newline.js +1 -1
  92. package/lib/rules/getter-return.js +1 -1
  93. package/lib/rules/implicit-arrow-linebreak.js +1 -1
  94. package/lib/rules/indent-legacy.js +1 -1
  95. package/lib/rules/indent.js +1 -1
  96. package/lib/rules/index.js +281 -0
  97. package/lib/rules/jsx-quotes.js +1 -1
  98. package/lib/rules/key-spacing.js +1 -1
  99. package/lib/rules/keyword-spacing.js +2 -2
  100. package/lib/rules/line-comment-position.js +1 -1
  101. package/lib/rules/linebreak-style.js +1 -1
  102. package/lib/rules/lines-around-comment.js +1 -1
  103. package/lib/rules/lines-around-directive.js +1 -1
  104. package/lib/rules/lines-between-class-members.js +1 -1
  105. package/lib/rules/max-classes-per-file.js +2 -1
  106. package/lib/rules/max-depth.js +2 -2
  107. package/lib/rules/max-len.js +11 -4
  108. package/lib/rules/max-lines-per-function.js +4 -2
  109. package/lib/rules/max-lines.js +2 -2
  110. package/lib/rules/max-params.js +1 -1
  111. package/lib/rules/max-statements-per-line.js +1 -1
  112. package/lib/rules/max-statements.js +1 -1
  113. package/lib/rules/multiline-comment-style.js +3 -2
  114. package/lib/rules/multiline-ternary.js +1 -1
  115. package/lib/rules/new-parens.js +43 -11
  116. package/lib/rules/newline-after-var.js +1 -1
  117. package/lib/rules/newline-per-chained-call.js +1 -1
  118. package/lib/rules/no-alert.js +1 -1
  119. package/lib/rules/no-catch-shadow.js +1 -1
  120. package/lib/rules/no-class-assign.js +1 -1
  121. package/lib/rules/no-cond-assign.js +1 -1
  122. package/lib/rules/no-confusing-arrow.js +1 -1
  123. package/lib/rules/no-console.js +1 -1
  124. package/lib/rules/no-const-assign.js +1 -1
  125. package/lib/rules/no-div-regex.js +9 -1
  126. package/lib/rules/no-dupe-keys.js +1 -1
  127. package/lib/rules/no-else-return.js +129 -2
  128. package/lib/rules/no-empty-function.js +1 -1
  129. package/lib/rules/no-empty.js +1 -1
  130. package/lib/rules/no-eval.js +1 -1
  131. package/lib/rules/no-ex-assign.js +1 -1
  132. package/lib/rules/no-extend-native.js +1 -1
  133. package/lib/rules/no-extra-bind.js +1 -1
  134. package/lib/rules/no-extra-boolean-cast.js +1 -1
  135. package/lib/rules/no-extra-label.js +1 -1
  136. package/lib/rules/no-extra-parens.js +1 -1
  137. package/lib/rules/no-extra-semi.js +2 -2
  138. package/lib/rules/no-floating-decimal.js +1 -1
  139. package/lib/rules/no-func-assign.js +1 -1
  140. package/lib/rules/no-implicit-coercion.js +1 -1
  141. package/lib/rules/no-inline-comments.js +1 -1
  142. package/lib/rules/no-invalid-this.js +1 -1
  143. package/lib/rules/no-irregular-whitespace.js +1 -1
  144. package/lib/rules/no-label-var.js +1 -1
  145. package/lib/rules/no-labels.js +1 -1
  146. package/lib/rules/no-misleading-character-class.js +1 -1
  147. package/lib/rules/no-mixed-operators.js +1 -1
  148. package/lib/rules/no-multi-spaces.js +1 -1
  149. package/lib/rules/no-multi-str.js +1 -1
  150. package/lib/rules/no-octal.js +1 -1
  151. package/lib/rules/no-redeclare.js +1 -1
  152. package/lib/rules/no-regex-spaces.js +1 -1
  153. package/lib/rules/no-restricted-imports.js +18 -14
  154. package/lib/rules/no-restricted-properties.js +1 -1
  155. package/lib/rules/no-return-assign.js +1 -1
  156. package/lib/rules/no-return-await.js +1 -1
  157. package/lib/rules/no-self-assign.js +1 -1
  158. package/lib/rules/no-sequences.js +1 -1
  159. package/lib/rules/no-shadow.js +1 -1
  160. package/lib/rules/no-this-before-super.js +1 -1
  161. package/lib/rules/no-throw-literal.js +1 -1
  162. package/lib/rules/no-trailing-spaces.js +1 -1
  163. package/lib/rules/no-undef-init.js +1 -1
  164. package/lib/rules/no-unexpected-multiline.js +1 -1
  165. package/lib/rules/no-unmodified-loop-condition.js +2 -2
  166. package/lib/rules/no-unneeded-ternary.js +1 -1
  167. package/lib/rules/no-unsafe-negation.js +1 -1
  168. package/lib/rules/no-unused-vars.js +1 -1
  169. package/lib/rules/no-useless-call.js +1 -1
  170. package/lib/rules/no-useless-computed-key.js +1 -1
  171. package/lib/rules/no-useless-concat.js +1 -1
  172. package/lib/rules/no-useless-escape.js +7 -2
  173. package/lib/rules/no-useless-return.js +2 -2
  174. package/lib/rules/no-var.js +15 -2
  175. package/lib/rules/no-warning-comments.js +1 -1
  176. package/lib/rules/no-whitespace-before-property.js +1 -1
  177. package/lib/rules/object-curly-newline.js +1 -1
  178. package/lib/rules/object-curly-spacing.js +1 -1
  179. package/lib/rules/object-shorthand.js +1 -1
  180. package/lib/rules/operator-assignment.js +1 -1
  181. package/lib/rules/operator-linebreak.js +1 -1
  182. package/lib/rules/padded-blocks.js +1 -1
  183. package/lib/rules/padding-line-between-statements.js +1 -1
  184. package/lib/rules/prefer-const.js +1 -1
  185. package/lib/rules/prefer-object-spread.js +1 -1
  186. package/lib/rules/prefer-promise-reject-errors.js +1 -1
  187. package/lib/rules/prefer-spread.js +1 -1
  188. package/lib/rules/prefer-template.js +1 -1
  189. package/lib/rules/quote-props.js +1 -1
  190. package/lib/rules/quotes.js +1 -1
  191. package/lib/rules/radix.js +1 -1
  192. package/lib/rules/require-atomic-updates.js +63 -84
  193. package/lib/rules/require-await.js +1 -1
  194. package/lib/rules/semi-spacing.js +1 -1
  195. package/lib/rules/semi-style.js +1 -1
  196. package/lib/rules/semi.js +2 -2
  197. package/lib/rules/sort-keys.js +12 -4
  198. package/lib/rules/space-before-blocks.js +1 -1
  199. package/lib/rules/space-before-function-paren.js +1 -1
  200. package/lib/rules/space-in-parens.js +1 -1
  201. package/lib/rules/space-unary-ops.js +1 -1
  202. package/lib/rules/spaced-comment.js +1 -1
  203. package/lib/rules/strict.js +1 -1
  204. package/lib/rules/switch-colon-spacing.js +1 -1
  205. package/lib/rules/symbol-description.js +1 -1
  206. package/lib/rules/template-curly-spacing.js +1 -1
  207. package/lib/{util → rules/utils}/ast-utils.js +8 -27
  208. package/lib/{util → rules/utils}/fix-tracker.js +1 -1
  209. package/lib/{util → rules/utils}/keywords.js +0 -0
  210. package/lib/{util → rules/utils}/lazy-loading-rule-map.js +0 -0
  211. package/lib/{util → rules/utils}/patterns/letters.js +0 -0
  212. package/lib/{util → rules/utils}/unicode/index.js +0 -0
  213. package/lib/{util → rules/utils}/unicode/is-combining-character.js +0 -0
  214. package/lib/{util → rules/utils}/unicode/is-emoji-modifier.js +0 -0
  215. package/lib/{util → rules/utils}/unicode/is-regional-indicator-symbol.js +0 -0
  216. package/lib/{util → rules/utils}/unicode/is-surrogate-pair.js +0 -0
  217. package/lib/rules/valid-typeof.js +1 -1
  218. package/lib/rules/wrap-iife.js +1 -1
  219. package/lib/rules/yoda.js +1 -1
  220. package/lib/{util → shared}/ajv.js +0 -0
  221. package/lib/shared/ast-utils.js +29 -0
  222. package/lib/{config → shared}/config-ops.js +0 -0
  223. package/lib/{config → shared}/config-validator.js +22 -7
  224. package/lib/{util → shared}/logging.js +0 -0
  225. package/lib/{util → shared}/relative-module-resolver.js +10 -3
  226. package/lib/{util → shared}/traverser.js +0 -0
  227. package/lib/{util → shared}/types.js +4 -0
  228. package/lib/source-code/index.js +5 -0
  229. package/lib/{util → source-code}/source-code.js +10 -8
  230. package/lib/{token-store → source-code/token-store}/backward-token-comment-cursor.js +0 -0
  231. package/lib/{token-store → source-code/token-store}/backward-token-cursor.js +0 -0
  232. package/lib/{token-store → source-code/token-store}/cursor.js +0 -0
  233. package/lib/{token-store → source-code/token-store}/cursors.js +0 -0
  234. package/lib/{token-store → source-code/token-store}/decorative-cursor.js +0 -0
  235. package/lib/{token-store → source-code/token-store}/filter-cursor.js +0 -0
  236. package/lib/{token-store → source-code/token-store}/forward-token-comment-cursor.js +0 -0
  237. package/lib/{token-store → source-code/token-store}/forward-token-cursor.js +0 -0
  238. package/lib/{token-store → source-code/token-store}/index.js +3 -3
  239. package/lib/{token-store → source-code/token-store}/limit-cursor.js +0 -0
  240. package/lib/{token-store → source-code/token-store}/padded-token-cursor.js +0 -0
  241. package/lib/{token-store → source-code/token-store}/skip-cursor.js +0 -0
  242. package/lib/{token-store → source-code/token-store}/utils.js +0 -0
  243. package/messages/extend-config-missing.txt +2 -0
  244. package/messages/print-config-with-directory-path.txt +2 -0
  245. package/package.json +8 -11
  246. package/lib/built-in-rules-index.js +0 -281
@@ -0,0 +1,281 @@
1
+ /**
2
+ * @fileoverview Collects the built-in rules into a map structure so that they can be imported all at once and without
3
+ * using the file-system directly.
4
+ * @author Peter (Somogyvari) Metz
5
+ */
6
+
7
+ "use strict";
8
+
9
+ /* eslint sort-keys: ["error", "asc"] */
10
+
11
+ const { LazyLoadingRuleMap } = require("./utils/lazy-loading-rule-map");
12
+
13
+ /** @type {Map<string, import("../shared/types").Rule>} */
14
+ module.exports = new LazyLoadingRuleMap(Object.entries({
15
+ "accessor-pairs": () => require("./accessor-pairs"),
16
+ "array-bracket-newline": () => require("./array-bracket-newline"),
17
+ "array-bracket-spacing": () => require("./array-bracket-spacing"),
18
+ "array-callback-return": () => require("./array-callback-return"),
19
+ "array-element-newline": () => require("./array-element-newline"),
20
+ "arrow-body-style": () => require("./arrow-body-style"),
21
+ "arrow-parens": () => require("./arrow-parens"),
22
+ "arrow-spacing": () => require("./arrow-spacing"),
23
+ "block-scoped-var": () => require("./block-scoped-var"),
24
+ "block-spacing": () => require("./block-spacing"),
25
+ "brace-style": () => require("./brace-style"),
26
+ "callback-return": () => require("./callback-return"),
27
+ camelcase: () => require("./camelcase"),
28
+ "capitalized-comments": () => require("./capitalized-comments"),
29
+ "class-methods-use-this": () => require("./class-methods-use-this"),
30
+ "comma-dangle": () => require("./comma-dangle"),
31
+ "comma-spacing": () => require("./comma-spacing"),
32
+ "comma-style": () => require("./comma-style"),
33
+ complexity: () => require("./complexity"),
34
+ "computed-property-spacing": () => require("./computed-property-spacing"),
35
+ "consistent-return": () => require("./consistent-return"),
36
+ "consistent-this": () => require("./consistent-this"),
37
+ "constructor-super": () => require("./constructor-super"),
38
+ curly: () => require("./curly"),
39
+ "default-case": () => require("./default-case"),
40
+ "dot-location": () => require("./dot-location"),
41
+ "dot-notation": () => require("./dot-notation"),
42
+ "eol-last": () => require("./eol-last"),
43
+ eqeqeq: () => require("./eqeqeq"),
44
+ "for-direction": () => require("./for-direction"),
45
+ "func-call-spacing": () => require("./func-call-spacing"),
46
+ "func-name-matching": () => require("./func-name-matching"),
47
+ "func-names": () => require("./func-names"),
48
+ "func-style": () => require("./func-style"),
49
+ "function-paren-newline": () => require("./function-paren-newline"),
50
+ "generator-star-spacing": () => require("./generator-star-spacing"),
51
+ "getter-return": () => require("./getter-return"),
52
+ "global-require": () => require("./global-require"),
53
+ "guard-for-in": () => require("./guard-for-in"),
54
+ "handle-callback-err": () => require("./handle-callback-err"),
55
+ "id-blacklist": () => require("./id-blacklist"),
56
+ "id-length": () => require("./id-length"),
57
+ "id-match": () => require("./id-match"),
58
+ "implicit-arrow-linebreak": () => require("./implicit-arrow-linebreak"),
59
+ indent: () => require("./indent"),
60
+ "indent-legacy": () => require("./indent-legacy"),
61
+ "init-declarations": () => require("./init-declarations"),
62
+ "jsx-quotes": () => require("./jsx-quotes"),
63
+ "key-spacing": () => require("./key-spacing"),
64
+ "keyword-spacing": () => require("./keyword-spacing"),
65
+ "line-comment-position": () => require("./line-comment-position"),
66
+ "linebreak-style": () => require("./linebreak-style"),
67
+ "lines-around-comment": () => require("./lines-around-comment"),
68
+ "lines-around-directive": () => require("./lines-around-directive"),
69
+ "lines-between-class-members": () => require("./lines-between-class-members"),
70
+ "max-classes-per-file": () => require("./max-classes-per-file"),
71
+ "max-depth": () => require("./max-depth"),
72
+ "max-len": () => require("./max-len"),
73
+ "max-lines": () => require("./max-lines"),
74
+ "max-lines-per-function": () => require("./max-lines-per-function"),
75
+ "max-nested-callbacks": () => require("./max-nested-callbacks"),
76
+ "max-params": () => require("./max-params"),
77
+ "max-statements": () => require("./max-statements"),
78
+ "max-statements-per-line": () => require("./max-statements-per-line"),
79
+ "multiline-comment-style": () => require("./multiline-comment-style"),
80
+ "multiline-ternary": () => require("./multiline-ternary"),
81
+ "new-cap": () => require("./new-cap"),
82
+ "new-parens": () => require("./new-parens"),
83
+ "newline-after-var": () => require("./newline-after-var"),
84
+ "newline-before-return": () => require("./newline-before-return"),
85
+ "newline-per-chained-call": () => require("./newline-per-chained-call"),
86
+ "no-alert": () => require("./no-alert"),
87
+ "no-array-constructor": () => require("./no-array-constructor"),
88
+ "no-async-promise-executor": () => require("./no-async-promise-executor"),
89
+ "no-await-in-loop": () => require("./no-await-in-loop"),
90
+ "no-bitwise": () => require("./no-bitwise"),
91
+ "no-buffer-constructor": () => require("./no-buffer-constructor"),
92
+ "no-caller": () => require("./no-caller"),
93
+ "no-case-declarations": () => require("./no-case-declarations"),
94
+ "no-catch-shadow": () => require("./no-catch-shadow"),
95
+ "no-class-assign": () => require("./no-class-assign"),
96
+ "no-compare-neg-zero": () => require("./no-compare-neg-zero"),
97
+ "no-cond-assign": () => require("./no-cond-assign"),
98
+ "no-confusing-arrow": () => require("./no-confusing-arrow"),
99
+ "no-console": () => require("./no-console"),
100
+ "no-const-assign": () => require("./no-const-assign"),
101
+ "no-constant-condition": () => require("./no-constant-condition"),
102
+ "no-continue": () => require("./no-continue"),
103
+ "no-control-regex": () => require("./no-control-regex"),
104
+ "no-debugger": () => require("./no-debugger"),
105
+ "no-delete-var": () => require("./no-delete-var"),
106
+ "no-div-regex": () => require("./no-div-regex"),
107
+ "no-dupe-args": () => require("./no-dupe-args"),
108
+ "no-dupe-class-members": () => require("./no-dupe-class-members"),
109
+ "no-dupe-keys": () => require("./no-dupe-keys"),
110
+ "no-duplicate-case": () => require("./no-duplicate-case"),
111
+ "no-duplicate-imports": () => require("./no-duplicate-imports"),
112
+ "no-else-return": () => require("./no-else-return"),
113
+ "no-empty": () => require("./no-empty"),
114
+ "no-empty-character-class": () => require("./no-empty-character-class"),
115
+ "no-empty-function": () => require("./no-empty-function"),
116
+ "no-empty-pattern": () => require("./no-empty-pattern"),
117
+ "no-eq-null": () => require("./no-eq-null"),
118
+ "no-eval": () => require("./no-eval"),
119
+ "no-ex-assign": () => require("./no-ex-assign"),
120
+ "no-extend-native": () => require("./no-extend-native"),
121
+ "no-extra-bind": () => require("./no-extra-bind"),
122
+ "no-extra-boolean-cast": () => require("./no-extra-boolean-cast"),
123
+ "no-extra-label": () => require("./no-extra-label"),
124
+ "no-extra-parens": () => require("./no-extra-parens"),
125
+ "no-extra-semi": () => require("./no-extra-semi"),
126
+ "no-fallthrough": () => require("./no-fallthrough"),
127
+ "no-floating-decimal": () => require("./no-floating-decimal"),
128
+ "no-func-assign": () => require("./no-func-assign"),
129
+ "no-global-assign": () => require("./no-global-assign"),
130
+ "no-implicit-coercion": () => require("./no-implicit-coercion"),
131
+ "no-implicit-globals": () => require("./no-implicit-globals"),
132
+ "no-implied-eval": () => require("./no-implied-eval"),
133
+ "no-inline-comments": () => require("./no-inline-comments"),
134
+ "no-inner-declarations": () => require("./no-inner-declarations"),
135
+ "no-invalid-regexp": () => require("./no-invalid-regexp"),
136
+ "no-invalid-this": () => require("./no-invalid-this"),
137
+ "no-irregular-whitespace": () => require("./no-irregular-whitespace"),
138
+ "no-iterator": () => require("./no-iterator"),
139
+ "no-label-var": () => require("./no-label-var"),
140
+ "no-labels": () => require("./no-labels"),
141
+ "no-lone-blocks": () => require("./no-lone-blocks"),
142
+ "no-lonely-if": () => require("./no-lonely-if"),
143
+ "no-loop-func": () => require("./no-loop-func"),
144
+ "no-magic-numbers": () => require("./no-magic-numbers"),
145
+ "no-misleading-character-class": () => require("./no-misleading-character-class"),
146
+ "no-mixed-operators": () => require("./no-mixed-operators"),
147
+ "no-mixed-requires": () => require("./no-mixed-requires"),
148
+ "no-mixed-spaces-and-tabs": () => require("./no-mixed-spaces-and-tabs"),
149
+ "no-multi-assign": () => require("./no-multi-assign"),
150
+ "no-multi-spaces": () => require("./no-multi-spaces"),
151
+ "no-multi-str": () => require("./no-multi-str"),
152
+ "no-multiple-empty-lines": () => require("./no-multiple-empty-lines"),
153
+ "no-native-reassign": () => require("./no-native-reassign"),
154
+ "no-negated-condition": () => require("./no-negated-condition"),
155
+ "no-negated-in-lhs": () => require("./no-negated-in-lhs"),
156
+ "no-nested-ternary": () => require("./no-nested-ternary"),
157
+ "no-new": () => require("./no-new"),
158
+ "no-new-func": () => require("./no-new-func"),
159
+ "no-new-object": () => require("./no-new-object"),
160
+ "no-new-require": () => require("./no-new-require"),
161
+ "no-new-symbol": () => require("./no-new-symbol"),
162
+ "no-new-wrappers": () => require("./no-new-wrappers"),
163
+ "no-obj-calls": () => require("./no-obj-calls"),
164
+ "no-octal": () => require("./no-octal"),
165
+ "no-octal-escape": () => require("./no-octal-escape"),
166
+ "no-param-reassign": () => require("./no-param-reassign"),
167
+ "no-path-concat": () => require("./no-path-concat"),
168
+ "no-plusplus": () => require("./no-plusplus"),
169
+ "no-process-env": () => require("./no-process-env"),
170
+ "no-process-exit": () => require("./no-process-exit"),
171
+ "no-proto": () => require("./no-proto"),
172
+ "no-prototype-builtins": () => require("./no-prototype-builtins"),
173
+ "no-redeclare": () => require("./no-redeclare"),
174
+ "no-regex-spaces": () => require("./no-regex-spaces"),
175
+ "no-restricted-globals": () => require("./no-restricted-globals"),
176
+ "no-restricted-imports": () => require("./no-restricted-imports"),
177
+ "no-restricted-modules": () => require("./no-restricted-modules"),
178
+ "no-restricted-properties": () => require("./no-restricted-properties"),
179
+ "no-restricted-syntax": () => require("./no-restricted-syntax"),
180
+ "no-return-assign": () => require("./no-return-assign"),
181
+ "no-return-await": () => require("./no-return-await"),
182
+ "no-script-url": () => require("./no-script-url"),
183
+ "no-self-assign": () => require("./no-self-assign"),
184
+ "no-self-compare": () => require("./no-self-compare"),
185
+ "no-sequences": () => require("./no-sequences"),
186
+ "no-shadow": () => require("./no-shadow"),
187
+ "no-shadow-restricted-names": () => require("./no-shadow-restricted-names"),
188
+ "no-spaced-func": () => require("./no-spaced-func"),
189
+ "no-sparse-arrays": () => require("./no-sparse-arrays"),
190
+ "no-sync": () => require("./no-sync"),
191
+ "no-tabs": () => require("./no-tabs"),
192
+ "no-template-curly-in-string": () => require("./no-template-curly-in-string"),
193
+ "no-ternary": () => require("./no-ternary"),
194
+ "no-this-before-super": () => require("./no-this-before-super"),
195
+ "no-throw-literal": () => require("./no-throw-literal"),
196
+ "no-trailing-spaces": () => require("./no-trailing-spaces"),
197
+ "no-undef": () => require("./no-undef"),
198
+ "no-undef-init": () => require("./no-undef-init"),
199
+ "no-undefined": () => require("./no-undefined"),
200
+ "no-underscore-dangle": () => require("./no-underscore-dangle"),
201
+ "no-unexpected-multiline": () => require("./no-unexpected-multiline"),
202
+ "no-unmodified-loop-condition": () => require("./no-unmodified-loop-condition"),
203
+ "no-unneeded-ternary": () => require("./no-unneeded-ternary"),
204
+ "no-unreachable": () => require("./no-unreachable"),
205
+ "no-unsafe-finally": () => require("./no-unsafe-finally"),
206
+ "no-unsafe-negation": () => require("./no-unsafe-negation"),
207
+ "no-unused-expressions": () => require("./no-unused-expressions"),
208
+ "no-unused-labels": () => require("./no-unused-labels"),
209
+ "no-unused-vars": () => require("./no-unused-vars"),
210
+ "no-use-before-define": () => require("./no-use-before-define"),
211
+ "no-useless-call": () => require("./no-useless-call"),
212
+ "no-useless-catch": () => require("./no-useless-catch"),
213
+ "no-useless-computed-key": () => require("./no-useless-computed-key"),
214
+ "no-useless-concat": () => require("./no-useless-concat"),
215
+ "no-useless-constructor": () => require("./no-useless-constructor"),
216
+ "no-useless-escape": () => require("./no-useless-escape"),
217
+ "no-useless-rename": () => require("./no-useless-rename"),
218
+ "no-useless-return": () => require("./no-useless-return"),
219
+ "no-var": () => require("./no-var"),
220
+ "no-void": () => require("./no-void"),
221
+ "no-warning-comments": () => require("./no-warning-comments"),
222
+ "no-whitespace-before-property": () => require("./no-whitespace-before-property"),
223
+ "no-with": () => require("./no-with"),
224
+ "nonblock-statement-body-position": () => require("./nonblock-statement-body-position"),
225
+ "object-curly-newline": () => require("./object-curly-newline"),
226
+ "object-curly-spacing": () => require("./object-curly-spacing"),
227
+ "object-property-newline": () => require("./object-property-newline"),
228
+ "object-shorthand": () => require("./object-shorthand"),
229
+ "one-var": () => require("./one-var"),
230
+ "one-var-declaration-per-line": () => require("./one-var-declaration-per-line"),
231
+ "operator-assignment": () => require("./operator-assignment"),
232
+ "operator-linebreak": () => require("./operator-linebreak"),
233
+ "padded-blocks": () => require("./padded-blocks"),
234
+ "padding-line-between-statements": () => require("./padding-line-between-statements"),
235
+ "prefer-arrow-callback": () => require("./prefer-arrow-callback"),
236
+ "prefer-const": () => require("./prefer-const"),
237
+ "prefer-destructuring": () => require("./prefer-destructuring"),
238
+ "prefer-named-capture-group": () => require("./prefer-named-capture-group"),
239
+ "prefer-numeric-literals": () => require("./prefer-numeric-literals"),
240
+ "prefer-object-spread": () => require("./prefer-object-spread"),
241
+ "prefer-promise-reject-errors": () => require("./prefer-promise-reject-errors"),
242
+ "prefer-reflect": () => require("./prefer-reflect"),
243
+ "prefer-rest-params": () => require("./prefer-rest-params"),
244
+ "prefer-spread": () => require("./prefer-spread"),
245
+ "prefer-template": () => require("./prefer-template"),
246
+ "quote-props": () => require("./quote-props"),
247
+ quotes: () => require("./quotes"),
248
+ radix: () => require("./radix"),
249
+ "require-atomic-updates": () => require("./require-atomic-updates"),
250
+ "require-await": () => require("./require-await"),
251
+ "require-jsdoc": () => require("./require-jsdoc"),
252
+ "require-unicode-regexp": () => require("./require-unicode-regexp"),
253
+ "require-yield": () => require("./require-yield"),
254
+ "rest-spread-spacing": () => require("./rest-spread-spacing"),
255
+ semi: () => require("./semi"),
256
+ "semi-spacing": () => require("./semi-spacing"),
257
+ "semi-style": () => require("./semi-style"),
258
+ "sort-imports": () => require("./sort-imports"),
259
+ "sort-keys": () => require("./sort-keys"),
260
+ "sort-vars": () => require("./sort-vars"),
261
+ "space-before-blocks": () => require("./space-before-blocks"),
262
+ "space-before-function-paren": () => require("./space-before-function-paren"),
263
+ "space-in-parens": () => require("./space-in-parens"),
264
+ "space-infix-ops": () => require("./space-infix-ops"),
265
+ "space-unary-ops": () => require("./space-unary-ops"),
266
+ "spaced-comment": () => require("./spaced-comment"),
267
+ strict: () => require("./strict"),
268
+ "switch-colon-spacing": () => require("./switch-colon-spacing"),
269
+ "symbol-description": () => require("./symbol-description"),
270
+ "template-curly-spacing": () => require("./template-curly-spacing"),
271
+ "template-tag-spacing": () => require("./template-tag-spacing"),
272
+ "unicode-bom": () => require("./unicode-bom"),
273
+ "use-isnan": () => require("./use-isnan"),
274
+ "valid-jsdoc": () => require("./valid-jsdoc"),
275
+ "valid-typeof": () => require("./valid-typeof"),
276
+ "vars-on-top": () => require("./vars-on-top"),
277
+ "wrap-iife": () => require("./wrap-iife"),
278
+ "wrap-regex": () => require("./wrap-regex"),
279
+ "yield-star-spacing": () => require("./yield-star-spacing"),
280
+ yoda: () => require("./yoda")
281
+ }));
@@ -9,7 +9,7 @@
9
9
  // Requirements
10
10
  //------------------------------------------------------------------------------
11
11
 
12
- const astUtils = require("../util/ast-utils");
12
+ const astUtils = require("./utils/ast-utils");
13
13
 
14
14
  //------------------------------------------------------------------------------
15
15
  // Constants
@@ -8,7 +8,7 @@
8
8
  // Requirements
9
9
  //------------------------------------------------------------------------------
10
10
 
11
- const astUtils = require("../util/ast-utils");
11
+ const astUtils = require("./utils/ast-utils");
12
12
 
13
13
  //------------------------------------------------------------------------------
14
14
  // Helpers
@@ -9,8 +9,8 @@
9
9
  // Requirements
10
10
  //------------------------------------------------------------------------------
11
11
 
12
- const astUtils = require("../util/ast-utils"),
13
- keywords = require("../util/keywords");
12
+ const astUtils = require("./utils/ast-utils"),
13
+ keywords = require("./utils/keywords");
14
14
 
15
15
  //------------------------------------------------------------------------------
16
16
  // Constants
@@ -4,7 +4,7 @@
4
4
  */
5
5
  "use strict";
6
6
 
7
- const astUtils = require("../util/ast-utils");
7
+ const astUtils = require("./utils/ast-utils");
8
8
 
9
9
  //------------------------------------------------------------------------------
10
10
  // Rule Definition
@@ -9,7 +9,7 @@
9
9
  // Requirements
10
10
  //------------------------------------------------------------------------------
11
11
 
12
- const astUtils = require("../util/ast-utils");
12
+ const astUtils = require("./utils/ast-utils");
13
13
 
14
14
  //------------------------------------------------------------------------------
15
15
  // Rule Definition
@@ -9,7 +9,7 @@
9
9
  //------------------------------------------------------------------------------
10
10
 
11
11
  const lodash = require("lodash"),
12
- astUtils = require("../util/ast-utils");
12
+ astUtils = require("./utils/ast-utils");
13
13
 
14
14
  //------------------------------------------------------------------------------
15
15
  // Helpers
@@ -6,7 +6,7 @@
6
6
 
7
7
  "use strict";
8
8
 
9
- const astUtils = require("../util/ast-utils");
9
+ const astUtils = require("./utils/ast-utils");
10
10
 
11
11
  //------------------------------------------------------------------------------
12
12
  // Rule Definition
@@ -4,7 +4,7 @@
4
4
  */
5
5
  "use strict";
6
6
 
7
- const astUtils = require("../util/ast-utils");
7
+ const astUtils = require("./utils/ast-utils");
8
8
 
9
9
  //------------------------------------------------------------------------------
10
10
  // Rule Definition
@@ -32,7 +32,7 @@ module.exports = {
32
32
  ],
33
33
 
34
34
  messages: {
35
- maximumExceeded: "Number of classes per file must not exceed {{ max }}."
35
+ maximumExceeded: "File has too many classes ({{ classCount }}). Maximum allowed is {{ max }}."
36
36
  }
37
37
  },
38
38
  create(context) {
@@ -51,6 +51,7 @@ module.exports = {
51
51
  node,
52
52
  messageId: "maximumExceeded",
53
53
  data: {
54
+ classCount,
54
55
  max: maxClasses
55
56
  }
56
57
  });
@@ -45,7 +45,7 @@ module.exports = {
45
45
  }
46
46
  ],
47
47
  messages: {
48
- tooDeeply: "Blocks are nested too deeply ({{depth}})."
48
+ tooDeeply: "Blocks are nested too deeply ({{depth}}). Maximum allowed is {{maxDepth}}."
49
49
  }
50
50
  },
51
51
 
@@ -97,7 +97,7 @@ module.exports = {
97
97
  const len = ++functionStack[functionStack.length - 1];
98
98
 
99
99
  if (len > maxDepth) {
100
- context.report({ node, messageId: "tooDeeply", data: { depth: len } });
100
+ context.report({ node, messageId: "tooDeeply", data: { depth: len, maxDepth } });
101
101
  }
102
102
  }
103
103
 
@@ -80,8 +80,8 @@ module.exports = {
80
80
  OPTIONS_SCHEMA
81
81
  ],
82
82
  messages: {
83
- max: "Line {{lineNumber}} exceeds the maximum line length of {{maxLength}}.",
84
- maxComment: "Line {{lineNumber}} exceeds the maximum comment line length of {{maxCommentLength}}."
83
+ max: "This line has a length of {{lineLength}}. Maximum allowed is {{maxLength}}.",
84
+ maxComment: "This line has a comment length of {{lineLength}}. Maximum allowed is {{maxCommentLength}}."
85
85
  }
86
86
  },
87
87
 
@@ -315,6 +315,13 @@ module.exports = {
315
315
  textToMeasure = line;
316
316
  } else if (ignoreTrailingComments && isTrailingComment(line, lineNumber, comment)) {
317
317
  textToMeasure = stripTrailingComment(line, comment);
318
+
319
+ // ignore multiple trailing comments in the same line
320
+ let lastIndex = commentsIndex;
321
+
322
+ while (isTrailingComment(textToMeasure, lineNumber, comments[--lastIndex])) {
323
+ textToMeasure = stripTrailingComment(textToMeasure, comments[lastIndex]);
324
+ }
318
325
  } else {
319
326
  textToMeasure = line;
320
327
  }
@@ -346,7 +353,7 @@ module.exports = {
346
353
  loc: { line: lineNumber, column: 0 },
347
354
  messageId: "maxComment",
348
355
  data: {
349
- lineNumber: i + 1,
356
+ lineLength,
350
357
  maxCommentLength
351
358
  }
352
359
  });
@@ -357,7 +364,7 @@ module.exports = {
357
364
  loc: { line: lineNumber, column: 0 },
358
365
  messageId: "max",
359
366
  data: {
360
- lineNumber: i + 1,
367
+ lineLength,
361
368
  maxLength
362
369
  }
363
370
  });
@@ -8,7 +8,9 @@
8
8
  // Requirements
9
9
  //------------------------------------------------------------------------------
10
10
 
11
- const astUtils = require("../util/ast-utils");
11
+ const astUtils = require("./utils/ast-utils");
12
+
13
+ const lodash = require("lodash");
12
14
 
13
15
  //------------------------------------------------------------------------------
14
16
  // Constants
@@ -192,7 +194,7 @@ module.exports = {
192
194
  }
193
195
 
194
196
  if (lineCount > maxLines) {
195
- const name = astUtils.getFunctionNameWithKind(funcNode);
197
+ const name = lodash.upperFirst(astUtils.getFunctionNameWithKind(funcNode));
196
198
 
197
199
  context.report({
198
200
  node,
@@ -9,7 +9,7 @@
9
9
  //------------------------------------------------------------------------------
10
10
 
11
11
  const lodash = require("lodash");
12
- const astUtils = require("../util/ast-utils");
12
+ const astUtils = require("./utils/ast-utils");
13
13
 
14
14
  //------------------------------------------------------------------------------
15
15
  // Rule Definition
@@ -53,7 +53,7 @@ module.exports = {
53
53
  }
54
54
  ],
55
55
  messages: {
56
- exceed: "File must be at most {{max}} lines long. It's {{actual}} lines long."
56
+ exceed: "File has too many lines ({{actual}}). Maximum allowed is {{max}}."
57
57
  }
58
58
  },
59
59
 
@@ -11,7 +11,7 @@
11
11
 
12
12
  const lodash = require("lodash");
13
13
 
14
- const astUtils = require("../util/ast-utils");
14
+ const astUtils = require("./utils/ast-utils");
15
15
 
16
16
  //------------------------------------------------------------------------------
17
17
  // Rule Definition
@@ -8,7 +8,7 @@
8
8
  // Requirements
9
9
  //------------------------------------------------------------------------------
10
10
 
11
- const astUtils = require("../util/ast-utils");
11
+ const astUtils = require("./utils/ast-utils");
12
12
 
13
13
  //------------------------------------------------------------------------------
14
14
  // Rule Definition
@@ -11,7 +11,7 @@
11
11
 
12
12
  const lodash = require("lodash");
13
13
 
14
- const astUtils = require("../util/ast-utils");
14
+ const astUtils = require("./utils/ast-utils");
15
15
 
16
16
  //------------------------------------------------------------------------------
17
17
  // Rule Definition
@@ -4,7 +4,7 @@
4
4
  */
5
5
  "use strict";
6
6
 
7
- const astUtils = require("../util/ast-utils");
7
+ const astUtils = require("./utils/ast-utils");
8
8
 
9
9
  //------------------------------------------------------------------------------
10
10
  // Rule Definition
@@ -25,6 +25,7 @@ module.exports = {
25
25
  schema: [{ enum: ["starred-block", "separate-lines", "bare-block"] }],
26
26
  messages: {
27
27
  expectedBlock: "Expected a block comment instead of consecutive line comments.",
28
+ expectedBareBlock: "Expected a block comment without padding stars.",
28
29
  startNewline: "Expected a linebreak after '/*'.",
29
30
  endNewline: "Expected a linebreak before '*/'.",
30
31
  missingStar: "Expected a '*' at the start of this line.",
@@ -250,7 +251,7 @@ module.exports = {
250
251
  start: block.loc.start,
251
252
  end: { line: block.loc.start.line, column: block.loc.start.column + 2 }
252
253
  },
253
- messageId: "expectedBlock",
254
+ messageId: "expectedBareBlock",
254
255
  fix(fixer) {
255
256
  return fixer.replaceText(block, convertToBlock(block, commentLines.filter(line => line)));
256
257
  }
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const astUtils = require("../util/ast-utils");
8
+ const astUtils = require("./utils/ast-utils");
9
9
 
10
10
  //------------------------------------------------------------------------------
11
11
  // Rule Definition
@@ -9,7 +9,7 @@
9
9
  // Requirements
10
10
  //------------------------------------------------------------------------------
11
11
 
12
- const astUtils = require("../util/ast-utils");
12
+ const astUtils = require("./utils/ast-utils");
13
13
 
14
14
  //------------------------------------------------------------------------------
15
15
  // Helpers
@@ -24,38 +24,70 @@ module.exports = {
24
24
  type: "layout",
25
25
 
26
26
  docs: {
27
- description: "require parentheses when invoking a constructor with no arguments",
27
+ description: "enforce or disallow parentheses when invoking a constructor with no arguments",
28
28
  category: "Stylistic Issues",
29
29
  recommended: false,
30
30
  url: "https://eslint.org/docs/rules/new-parens"
31
31
  },
32
32
 
33
33
  fixable: "code",
34
- schema: [],
34
+ schema: {
35
+ anyOf: [
36
+ {
37
+ type: "array",
38
+ items: [
39
+ {
40
+ enum: ["always", "never"]
41
+ }
42
+ ],
43
+ minItems: 0,
44
+ maxItems: 1
45
+ }
46
+ ]
47
+ },
35
48
  messages: {
36
- missing: "Missing '()' invoking a constructor."
49
+ missing: "Missing '()' invoking a constructor.",
50
+ unnecessary: "Unnecessary '()' invoking a constructor with no arguments."
37
51
  }
38
52
  },
39
53
 
40
54
  create(context) {
55
+ const options = context.options;
56
+ const always = options[0] !== "never"; // Default is always
57
+
41
58
  const sourceCode = context.getSourceCode();
42
59
 
43
60
  return {
44
61
  NewExpression(node) {
45
62
  if (node.arguments.length !== 0) {
46
- return; // shortcut: if there are arguments, there have to be parens
63
+ return; // if there are arguments, there have to be parens
47
64
  }
48
65
 
49
66
  const lastToken = sourceCode.getLastToken(node);
50
67
  const hasLastParen = lastToken && astUtils.isClosingParenToken(lastToken);
51
68
  const hasParens = hasLastParen && astUtils.isOpeningParenToken(sourceCode.getTokenBefore(lastToken));
52
69
 
53
- if (!hasParens) {
54
- context.report({
55
- node,
56
- messageId: "missing",
57
- fix: fixer => fixer.insertTextAfter(node, "()")
58
- });
70
+ if (always) {
71
+ if (!hasParens) {
72
+ context.report({
73
+ node,
74
+ messageId: "missing",
75
+ fix: fixer => fixer.insertTextAfter(node, "()")
76
+ });
77
+ }
78
+ } else {
79
+ if (hasParens) {
80
+ context.report({
81
+ node,
82
+ messageId: "unnecessary",
83
+ fix: fixer => [
84
+ fixer.remove(sourceCode.getTokenBefore(lastToken)),
85
+ fixer.remove(lastToken),
86
+ fixer.insertTextBefore(node, "("),
87
+ fixer.insertTextAfter(node, ")")
88
+ ]
89
+ });
90
+ }
59
91
  }
60
92
  }
61
93
  };