@alexlit/lint-kit 166.1.0 → 167.0.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 (602) hide show
  1. package/package.json +1 -1
  2. package/packages/config-commitlint/package.json +3 -3
  3. package/packages/config-eslint/package.json +2 -2
  4. package/packages/config-eslint/node_modules/@eslint/js/LICENSE +0 -19
  5. package/packages/config-eslint/node_modules/@eslint/js/README.md +0 -103
  6. package/packages/config-eslint/node_modules/@eslint/js/package.json +0 -36
  7. package/packages/config-eslint/node_modules/@eslint/js/src/configs/eslint-all.js +0 -217
  8. package/packages/config-eslint/node_modules/@eslint/js/src/configs/eslint-recommended.js +0 -79
  9. package/packages/config-eslint/node_modules/@eslint/js/src/index.js +0 -23
  10. package/packages/config-eslint/node_modules/@eslint/js/types/index.d.ts +0 -14
  11. package/packages/config-eslint/node_modules/ajv/.tonic_example.js +0 -20
  12. package/packages/config-eslint/node_modules/ajv/LICENSE +0 -22
  13. package/packages/config-eslint/node_modules/ajv/README.md +0 -1497
  14. package/packages/config-eslint/node_modules/ajv/dist/ajv.bundle.js +0 -7189
  15. package/packages/config-eslint/node_modules/ajv/dist/ajv.min.js +0 -3
  16. package/packages/config-eslint/node_modules/ajv/dist/ajv.min.js.map +0 -1
  17. package/packages/config-eslint/node_modules/ajv/lib/ajv.d.ts +0 -397
  18. package/packages/config-eslint/node_modules/ajv/lib/ajv.js +0 -506
  19. package/packages/config-eslint/node_modules/ajv/lib/cache.js +0 -26
  20. package/packages/config-eslint/node_modules/ajv/lib/compile/async.js +0 -90
  21. package/packages/config-eslint/node_modules/ajv/lib/compile/equal.js +0 -5
  22. package/packages/config-eslint/node_modules/ajv/lib/compile/error_classes.js +0 -34
  23. package/packages/config-eslint/node_modules/ajv/lib/compile/formats.js +0 -142
  24. package/packages/config-eslint/node_modules/ajv/lib/compile/index.js +0 -387
  25. package/packages/config-eslint/node_modules/ajv/lib/compile/resolve.js +0 -270
  26. package/packages/config-eslint/node_modules/ajv/lib/compile/rules.js +0 -66
  27. package/packages/config-eslint/node_modules/ajv/lib/compile/schema_obj.js +0 -9
  28. package/packages/config-eslint/node_modules/ajv/lib/compile/ucs2length.js +0 -20
  29. package/packages/config-eslint/node_modules/ajv/lib/compile/util.js +0 -239
  30. package/packages/config-eslint/node_modules/ajv/lib/data.js +0 -49
  31. package/packages/config-eslint/node_modules/ajv/lib/definition_schema.js +0 -37
  32. package/packages/config-eslint/node_modules/ajv/lib/dot/_limit.jst +0 -113
  33. package/packages/config-eslint/node_modules/ajv/lib/dot/_limitItems.jst +0 -12
  34. package/packages/config-eslint/node_modules/ajv/lib/dot/_limitLength.jst +0 -12
  35. package/packages/config-eslint/node_modules/ajv/lib/dot/_limitProperties.jst +0 -12
  36. package/packages/config-eslint/node_modules/ajv/lib/dot/allOf.jst +0 -32
  37. package/packages/config-eslint/node_modules/ajv/lib/dot/anyOf.jst +0 -46
  38. package/packages/config-eslint/node_modules/ajv/lib/dot/coerce.def +0 -51
  39. package/packages/config-eslint/node_modules/ajv/lib/dot/comment.jst +0 -9
  40. package/packages/config-eslint/node_modules/ajv/lib/dot/const.jst +0 -11
  41. package/packages/config-eslint/node_modules/ajv/lib/dot/contains.jst +0 -55
  42. package/packages/config-eslint/node_modules/ajv/lib/dot/custom.jst +0 -191
  43. package/packages/config-eslint/node_modules/ajv/lib/dot/defaults.def +0 -47
  44. package/packages/config-eslint/node_modules/ajv/lib/dot/definitions.def +0 -203
  45. package/packages/config-eslint/node_modules/ajv/lib/dot/dependencies.jst +0 -79
  46. package/packages/config-eslint/node_modules/ajv/lib/dot/enum.jst +0 -30
  47. package/packages/config-eslint/node_modules/ajv/lib/dot/errors.def +0 -194
  48. package/packages/config-eslint/node_modules/ajv/lib/dot/format.jst +0 -106
  49. package/packages/config-eslint/node_modules/ajv/lib/dot/if.jst +0 -73
  50. package/packages/config-eslint/node_modules/ajv/lib/dot/items.jst +0 -98
  51. package/packages/config-eslint/node_modules/ajv/lib/dot/missing.def +0 -39
  52. package/packages/config-eslint/node_modules/ajv/lib/dot/multipleOf.jst +0 -22
  53. package/packages/config-eslint/node_modules/ajv/lib/dot/not.jst +0 -43
  54. package/packages/config-eslint/node_modules/ajv/lib/dot/oneOf.jst +0 -54
  55. package/packages/config-eslint/node_modules/ajv/lib/dot/pattern.jst +0 -14
  56. package/packages/config-eslint/node_modules/ajv/lib/dot/properties.jst +0 -245
  57. package/packages/config-eslint/node_modules/ajv/lib/dot/propertyNames.jst +0 -52
  58. package/packages/config-eslint/node_modules/ajv/lib/dot/ref.jst +0 -85
  59. package/packages/config-eslint/node_modules/ajv/lib/dot/required.jst +0 -108
  60. package/packages/config-eslint/node_modules/ajv/lib/dot/uniqueItems.jst +0 -62
  61. package/packages/config-eslint/node_modules/ajv/lib/dot/validate.jst +0 -276
  62. package/packages/config-eslint/node_modules/ajv/lib/dotjs/README.md +0 -3
  63. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limit.js +0 -163
  64. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limitItems.js +0 -80
  65. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limitLength.js +0 -85
  66. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limitProperties.js +0 -80
  67. package/packages/config-eslint/node_modules/ajv/lib/dotjs/allOf.js +0 -42
  68. package/packages/config-eslint/node_modules/ajv/lib/dotjs/anyOf.js +0 -73
  69. package/packages/config-eslint/node_modules/ajv/lib/dotjs/comment.js +0 -14
  70. package/packages/config-eslint/node_modules/ajv/lib/dotjs/const.js +0 -56
  71. package/packages/config-eslint/node_modules/ajv/lib/dotjs/contains.js +0 -81
  72. package/packages/config-eslint/node_modules/ajv/lib/dotjs/custom.js +0 -228
  73. package/packages/config-eslint/node_modules/ajv/lib/dotjs/dependencies.js +0 -168
  74. package/packages/config-eslint/node_modules/ajv/lib/dotjs/enum.js +0 -66
  75. package/packages/config-eslint/node_modules/ajv/lib/dotjs/format.js +0 -150
  76. package/packages/config-eslint/node_modules/ajv/lib/dotjs/if.js +0 -103
  77. package/packages/config-eslint/node_modules/ajv/lib/dotjs/index.js +0 -33
  78. package/packages/config-eslint/node_modules/ajv/lib/dotjs/items.js +0 -140
  79. package/packages/config-eslint/node_modules/ajv/lib/dotjs/multipleOf.js +0 -80
  80. package/packages/config-eslint/node_modules/ajv/lib/dotjs/not.js +0 -84
  81. package/packages/config-eslint/node_modules/ajv/lib/dotjs/oneOf.js +0 -73
  82. package/packages/config-eslint/node_modules/ajv/lib/dotjs/pattern.js +0 -75
  83. package/packages/config-eslint/node_modules/ajv/lib/dotjs/properties.js +0 -335
  84. package/packages/config-eslint/node_modules/ajv/lib/dotjs/propertyNames.js +0 -81
  85. package/packages/config-eslint/node_modules/ajv/lib/dotjs/ref.js +0 -124
  86. package/packages/config-eslint/node_modules/ajv/lib/dotjs/required.js +0 -270
  87. package/packages/config-eslint/node_modules/ajv/lib/dotjs/uniqueItems.js +0 -86
  88. package/packages/config-eslint/node_modules/ajv/lib/dotjs/validate.js +0 -482
  89. package/packages/config-eslint/node_modules/ajv/lib/keyword.js +0 -146
  90. package/packages/config-eslint/node_modules/ajv/lib/refs/data.json +0 -17
  91. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-draft-04.json +0 -149
  92. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-draft-06.json +0 -154
  93. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-draft-07.json +0 -168
  94. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-secure.json +0 -94
  95. package/packages/config-eslint/node_modules/ajv/package.json +0 -106
  96. package/packages/config-eslint/node_modules/ajv/scripts/.eslintrc.yml +0 -3
  97. package/packages/config-eslint/node_modules/ajv/scripts/bundle.js +0 -61
  98. package/packages/config-eslint/node_modules/ajv/scripts/compile-dots.js +0 -73
  99. package/packages/config-eslint/node_modules/ajv/scripts/info +0 -10
  100. package/packages/config-eslint/node_modules/ajv/scripts/prepare-tests +0 -12
  101. package/packages/config-eslint/node_modules/ajv/scripts/publish-built-version +0 -32
  102. package/packages/config-eslint/node_modules/ajv/scripts/travis-gh-pages +0 -23
  103. package/packages/config-eslint/node_modules/ansi-styles/index.d.ts +0 -345
  104. package/packages/config-eslint/node_modules/ansi-styles/index.js +0 -163
  105. package/packages/config-eslint/node_modules/ansi-styles/license +0 -9
  106. package/packages/config-eslint/node_modules/ansi-styles/package.json +0 -56
  107. package/packages/config-eslint/node_modules/ansi-styles/readme.md +0 -152
  108. package/packages/config-eslint/node_modules/chalk/index.d.ts +0 -415
  109. package/packages/config-eslint/node_modules/chalk/license +0 -9
  110. package/packages/config-eslint/node_modules/chalk/package.json +0 -68
  111. package/packages/config-eslint/node_modules/chalk/readme.md +0 -341
  112. package/packages/config-eslint/node_modules/chalk/source/index.js +0 -229
  113. package/packages/config-eslint/node_modules/chalk/source/templates.js +0 -134
  114. package/packages/config-eslint/node_modules/chalk/source/util.js +0 -39
  115. package/packages/config-eslint/node_modules/color-convert/CHANGELOG.md +0 -54
  116. package/packages/config-eslint/node_modules/color-convert/LICENSE +0 -21
  117. package/packages/config-eslint/node_modules/color-convert/README.md +0 -68
  118. package/packages/config-eslint/node_modules/color-convert/conversions.js +0 -839
  119. package/packages/config-eslint/node_modules/color-convert/index.js +0 -81
  120. package/packages/config-eslint/node_modules/color-convert/package.json +0 -48
  121. package/packages/config-eslint/node_modules/color-convert/route.js +0 -97
  122. package/packages/config-eslint/node_modules/color-name/LICENSE +0 -8
  123. package/packages/config-eslint/node_modules/color-name/README.md +0 -11
  124. package/packages/config-eslint/node_modules/color-name/index.js +0 -152
  125. package/packages/config-eslint/node_modules/color-name/package.json +0 -28
  126. package/packages/config-eslint/node_modules/eslint/LICENSE +0 -19
  127. package/packages/config-eslint/node_modules/eslint/README.md +0 -354
  128. package/packages/config-eslint/node_modules/eslint/bin/eslint.js +0 -196
  129. package/packages/config-eslint/node_modules/eslint/conf/default-cli-options.js +0 -32
  130. package/packages/config-eslint/node_modules/eslint/conf/ecma-version.js +0 -16
  131. package/packages/config-eslint/node_modules/eslint/conf/globals.js +0 -169
  132. package/packages/config-eslint/node_modules/eslint/conf/replacements.json +0 -26
  133. package/packages/config-eslint/node_modules/eslint/conf/rule-type-list.json +0 -91
  134. package/packages/config-eslint/node_modules/eslint/lib/api.js +0 -50
  135. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/cli-engine.js +0 -1109
  136. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/file-enumerator.js +0 -541
  137. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/formatters/formatters-meta.json +0 -18
  138. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/formatters/html.js +0 -359
  139. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/formatters/json-with-metadata.js +0 -16
  140. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/formatters/json.js +0 -13
  141. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/formatters/stylish.js +0 -122
  142. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/hash.js +0 -35
  143. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/index.js +0 -7
  144. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/lint-result-cache.js +0 -220
  145. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/load-rules.js +0 -46
  146. package/packages/config-eslint/node_modules/eslint/lib/cli.js +0 -553
  147. package/packages/config-eslint/node_modules/eslint/lib/config/config-loader.js +0 -816
  148. package/packages/config-eslint/node_modules/eslint/lib/config/config.js +0 -674
  149. package/packages/config-eslint/node_modules/eslint/lib/config/default-config.js +0 -78
  150. package/packages/config-eslint/node_modules/eslint/lib/config/flat-config-array.js +0 -217
  151. package/packages/config-eslint/node_modules/eslint/lib/config/flat-config-schema.js +0 -598
  152. package/packages/config-eslint/node_modules/eslint/lib/config-api.js +0 -12
  153. package/packages/config-eslint/node_modules/eslint/lib/eslint/eslint-helpers.js +0 -1465
  154. package/packages/config-eslint/node_modules/eslint/lib/eslint/eslint.js +0 -1362
  155. package/packages/config-eslint/node_modules/eslint/lib/eslint/index.js +0 -9
  156. package/packages/config-eslint/node_modules/eslint/lib/eslint/legacy-eslint.js +0 -786
  157. package/packages/config-eslint/node_modules/eslint/lib/eslint/worker.js +0 -173
  158. package/packages/config-eslint/node_modules/eslint/lib/languages/js/index.js +0 -336
  159. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/index.js +0 -7
  160. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/source-code.js +0 -1364
  161. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/backward-token-comment-cursor.js +0 -61
  162. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/backward-token-cursor.js +0 -57
  163. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/cursor.js +0 -76
  164. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/cursors.js +0 -120
  165. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/decorative-cursor.js +0 -38
  166. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/filter-cursor.js +0 -42
  167. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/forward-token-comment-cursor.js +0 -65
  168. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/forward-token-cursor.js +0 -62
  169. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/index.js +0 -721
  170. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/limit-cursor.js +0 -39
  171. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/padded-token-cursor.js +0 -45
  172. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/skip-cursor.js +0 -41
  173. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/utils.js +0 -110
  174. package/packages/config-eslint/node_modules/eslint/lib/languages/js/validate-language-options.js +0 -196
  175. package/packages/config-eslint/node_modules/eslint/lib/linter/apply-disable-directives.js +0 -584
  176. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js +0 -828
  177. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/code-path-segment.js +0 -262
  178. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/code-path-state.js +0 -2370
  179. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/code-path.js +0 -332
  180. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/debug-helpers.js +0 -223
  181. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/fork-context.js +0 -374
  182. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/id-generator.js +0 -44
  183. package/packages/config-eslint/node_modules/eslint/lib/linter/esquery.js +0 -332
  184. package/packages/config-eslint/node_modules/eslint/lib/linter/file-context.js +0 -144
  185. package/packages/config-eslint/node_modules/eslint/lib/linter/file-report.js +0 -608
  186. package/packages/config-eslint/node_modules/eslint/lib/linter/index.js +0 -11
  187. package/packages/config-eslint/node_modules/eslint/lib/linter/interpolate.js +0 -50
  188. package/packages/config-eslint/node_modules/eslint/lib/linter/linter.js +0 -2676
  189. package/packages/config-eslint/node_modules/eslint/lib/linter/rule-fixer.js +0 -169
  190. package/packages/config-eslint/node_modules/eslint/lib/linter/rules.js +0 -71
  191. package/packages/config-eslint/node_modules/eslint/lib/linter/source-code-fixer.js +0 -154
  192. package/packages/config-eslint/node_modules/eslint/lib/linter/source-code-traverser.js +0 -333
  193. package/packages/config-eslint/node_modules/eslint/lib/linter/source-code-visitor.js +0 -81
  194. package/packages/config-eslint/node_modules/eslint/lib/linter/timing.js +0 -209
  195. package/packages/config-eslint/node_modules/eslint/lib/linter/vfile.js +0 -115
  196. package/packages/config-eslint/node_modules/eslint/lib/options.js +0 -536
  197. package/packages/config-eslint/node_modules/eslint/lib/rule-tester/index.js +0 -7
  198. package/packages/config-eslint/node_modules/eslint/lib/rule-tester/rule-tester.js +0 -1579
  199. package/packages/config-eslint/node_modules/eslint/lib/rules/accessor-pairs.js +0 -420
  200. package/packages/config-eslint/node_modules/eslint/lib/rules/array-bracket-newline.js +0 -291
  201. package/packages/config-eslint/node_modules/eslint/lib/rules/array-bracket-spacing.js +0 -301
  202. package/packages/config-eslint/node_modules/eslint/lib/rules/array-callback-return.js +0 -493
  203. package/packages/config-eslint/node_modules/eslint/lib/rules/array-element-newline.js +0 -374
  204. package/packages/config-eslint/node_modules/eslint/lib/rules/arrow-body-style.js +0 -418
  205. package/packages/config-eslint/node_modules/eslint/lib/rules/arrow-parens.js +0 -237
  206. package/packages/config-eslint/node_modules/eslint/lib/rules/arrow-spacing.js +0 -188
  207. package/packages/config-eslint/node_modules/eslint/lib/rules/block-scoped-var.js +0 -137
  208. package/packages/config-eslint/node_modules/eslint/lib/rules/block-spacing.js +0 -202
  209. package/packages/config-eslint/node_modules/eslint/lib/rules/brace-style.js +0 -278
  210. package/packages/config-eslint/node_modules/eslint/lib/rules/callback-return.js +0 -216
  211. package/packages/config-eslint/node_modules/eslint/lib/rules/camelcase.js +0 -422
  212. package/packages/config-eslint/node_modules/eslint/lib/rules/capitalized-comments.js +0 -325
  213. package/packages/config-eslint/node_modules/eslint/lib/rules/class-methods-use-this.js +0 -250
  214. package/packages/config-eslint/node_modules/eslint/lib/rules/comma-dangle.js +0 -424
  215. package/packages/config-eslint/node_modules/eslint/lib/rules/comma-spacing.js +0 -208
  216. package/packages/config-eslint/node_modules/eslint/lib/rules/comma-style.js +0 -391
  217. package/packages/config-eslint/node_modules/eslint/lib/rules/complexity.js +0 -201
  218. package/packages/config-eslint/node_modules/eslint/lib/rules/computed-property-spacing.js +0 -251
  219. package/packages/config-eslint/node_modules/eslint/lib/rules/consistent-return.js +0 -221
  220. package/packages/config-eslint/node_modules/eslint/lib/rules/consistent-this.js +0 -179
  221. package/packages/config-eslint/node_modules/eslint/lib/rules/constructor-super.js +0 -453
  222. package/packages/config-eslint/node_modules/eslint/lib/rules/curly.js +0 -425
  223. package/packages/config-eslint/node_modules/eslint/lib/rules/default-case-last.js +0 -51
  224. package/packages/config-eslint/node_modules/eslint/lib/rules/default-case.js +0 -103
  225. package/packages/config-eslint/node_modules/eslint/lib/rules/default-param-last.js +0 -78
  226. package/packages/config-eslint/node_modules/eslint/lib/rules/dot-location.js +0 -138
  227. package/packages/config-eslint/node_modules/eslint/lib/rules/dot-notation.js +0 -216
  228. package/packages/config-eslint/node_modules/eslint/lib/rules/eol-last.js +0 -135
  229. package/packages/config-eslint/node_modules/eslint/lib/rules/eqeqeq.js +0 -210
  230. package/packages/config-eslint/node_modules/eslint/lib/rules/for-direction.js +0 -168
  231. package/packages/config-eslint/node_modules/eslint/lib/rules/func-call-spacing.js +0 -281
  232. package/packages/config-eslint/node_modules/eslint/lib/rules/func-name-matching.js +0 -338
  233. package/packages/config-eslint/node_modules/eslint/lib/rules/func-names.js +0 -192
  234. package/packages/config-eslint/node_modules/eslint/lib/rules/func-style.js +0 -221
  235. package/packages/config-eslint/node_modules/eslint/lib/rules/function-call-argument-newline.js +0 -166
  236. package/packages/config-eslint/node_modules/eslint/lib/rules/function-paren-newline.js +0 -368
  237. package/packages/config-eslint/node_modules/eslint/lib/rules/generator-star-spacing.js +0 -246
  238. package/packages/config-eslint/node_modules/eslint/lib/rules/getter-return.js +0 -242
  239. package/packages/config-eslint/node_modules/eslint/lib/rules/global-require.js +0 -117
  240. package/packages/config-eslint/node_modules/eslint/lib/rules/grouped-accessor-pairs.js +0 -268
  241. package/packages/config-eslint/node_modules/eslint/lib/rules/guard-for-in.js +0 -85
  242. package/packages/config-eslint/node_modules/eslint/lib/rules/handle-callback-err.js +0 -122
  243. package/packages/config-eslint/node_modules/eslint/lib/rules/id-blacklist.js +0 -241
  244. package/packages/config-eslint/node_modules/eslint/lib/rules/id-denylist.js +0 -223
  245. package/packages/config-eslint/node_modules/eslint/lib/rules/id-length.js +0 -217
  246. package/packages/config-eslint/node_modules/eslint/lib/rules/id-match.js +0 -363
  247. package/packages/config-eslint/node_modules/eslint/lib/rules/implicit-arrow-linebreak.js +0 -125
  248. package/packages/config-eslint/node_modules/eslint/lib/rules/indent-legacy.js +0 -1369
  249. package/packages/config-eslint/node_modules/eslint/lib/rules/indent.js +0 -2334
  250. package/packages/config-eslint/node_modules/eslint/lib/rules/index.js +0 -332
  251. package/packages/config-eslint/node_modules/eslint/lib/rules/init-declarations.js +0 -172
  252. package/packages/config-eslint/node_modules/eslint/lib/rules/jsx-quotes.js +0 -128
  253. package/packages/config-eslint/node_modules/eslint/lib/rules/key-spacing.js +0 -822
  254. package/packages/config-eslint/node_modules/eslint/lib/rules/keyword-spacing.js +0 -701
  255. package/packages/config-eslint/node_modules/eslint/lib/rules/line-comment-position.js +0 -157
  256. package/packages/config-eslint/node_modules/eslint/lib/rules/linebreak-style.js +0 -135
  257. package/packages/config-eslint/node_modules/eslint/lib/rules/lines-around-comment.js +0 -581
  258. package/packages/config-eslint/node_modules/eslint/lib/rules/lines-around-directive.js +0 -249
  259. package/packages/config-eslint/node_modules/eslint/lib/rules/lines-between-class-members.js +0 -358
  260. package/packages/config-eslint/node_modules/eslint/lib/rules/logical-assignment-operators.js +0 -688
  261. package/packages/config-eslint/node_modules/eslint/lib/rules/max-classes-per-file.js +0 -90
  262. package/packages/config-eslint/node_modules/eslint/lib/rules/max-depth.js +0 -159
  263. package/packages/config-eslint/node_modules/eslint/lib/rules/max-len.js +0 -497
  264. package/packages/config-eslint/node_modules/eslint/lib/rules/max-lines-per-function.js +0 -238
  265. package/packages/config-eslint/node_modules/eslint/lib/rules/max-lines.js +0 -189
  266. package/packages/config-eslint/node_modules/eslint/lib/rules/max-nested-callbacks.js +0 -115
  267. package/packages/config-eslint/node_modules/eslint/lib/rules/max-params.js +0 -129
  268. package/packages/config-eslint/node_modules/eslint/lib/rules/max-statements-per-line.js +0 -224
  269. package/packages/config-eslint/node_modules/eslint/lib/rules/max-statements.js +0 -188
  270. package/packages/config-eslint/node_modules/eslint/lib/rules/multiline-comment-style.js +0 -652
  271. package/packages/config-eslint/node_modules/eslint/lib/rules/multiline-ternary.js +0 -257
  272. package/packages/config-eslint/node_modules/eslint/lib/rules/new-cap.js +0 -277
  273. package/packages/config-eslint/node_modules/eslint/lib/rules/new-parens.js +0 -120
  274. package/packages/config-eslint/node_modules/eslint/lib/rules/newline-after-var.js +0 -307
  275. package/packages/config-eslint/node_modules/eslint/lib/rules/newline-before-return.js +0 -242
  276. package/packages/config-eslint/node_modules/eslint/lib/rules/newline-per-chained-call.js +0 -159
  277. package/packages/config-eslint/node_modules/eslint/lib/rules/no-alert.js +0 -149
  278. package/packages/config-eslint/node_modules/eslint/lib/rules/no-array-constructor.js +0 -195
  279. package/packages/config-eslint/node_modules/eslint/lib/rules/no-async-promise-executor.js +0 -45
  280. package/packages/config-eslint/node_modules/eslint/lib/rules/no-await-in-loop.js +0 -115
  281. package/packages/config-eslint/node_modules/eslint/lib/rules/no-bitwise.js +0 -145
  282. package/packages/config-eslint/node_modules/eslint/lib/rules/no-buffer-constructor.js +0 -74
  283. package/packages/config-eslint/node_modules/eslint/lib/rules/no-caller.js +0 -52
  284. package/packages/config-eslint/node_modules/eslint/lib/rules/no-case-declarations.js +0 -80
  285. package/packages/config-eslint/node_modules/eslint/lib/rules/no-catch-shadow.js +0 -96
  286. package/packages/config-eslint/node_modules/eslint/lib/rules/no-class-assign.js +0 -66
  287. package/packages/config-eslint/node_modules/eslint/lib/rules/no-compare-neg-zero.js +0 -74
  288. package/packages/config-eslint/node_modules/eslint/lib/rules/no-cond-assign.js +0 -175
  289. package/packages/config-eslint/node_modules/eslint/lib/rules/no-confusing-arrow.js +0 -127
  290. package/packages/config-eslint/node_modules/eslint/lib/rules/no-console.js +0 -221
  291. package/packages/config-eslint/node_modules/eslint/lib/rules/no-const-assign.js +0 -73
  292. package/packages/config-eslint/node_modules/eslint/lib/rules/no-constant-binary-expression.js +0 -603
  293. package/packages/config-eslint/node_modules/eslint/lib/rules/no-constant-condition.js +0 -177
  294. package/packages/config-eslint/node_modules/eslint/lib/rules/no-constructor-return.js +0 -62
  295. package/packages/config-eslint/node_modules/eslint/lib/rules/no-continue.js +0 -38
  296. package/packages/config-eslint/node_modules/eslint/lib/rules/no-control-regex.js +0 -142
  297. package/packages/config-eslint/node_modules/eslint/lib/rules/no-debugger.js +0 -41
  298. package/packages/config-eslint/node_modules/eslint/lib/rules/no-delete-var.js +0 -42
  299. package/packages/config-eslint/node_modules/eslint/lib/rules/no-div-regex.js +0 -60
  300. package/packages/config-eslint/node_modules/eslint/lib/rules/no-dupe-args.js +0 -92
  301. package/packages/config-eslint/node_modules/eslint/lib/rules/no-dupe-class-members.js +0 -117
  302. package/packages/config-eslint/node_modules/eslint/lib/rules/no-dupe-else-if.js +0 -145
  303. package/packages/config-eslint/node_modules/eslint/lib/rules/no-dupe-keys.js +0 -165
  304. package/packages/config-eslint/node_modules/eslint/lib/rules/no-duplicate-case.js +0 -78
  305. package/packages/config-eslint/node_modules/eslint/lib/rules/no-duplicate-imports.js +0 -368
  306. package/packages/config-eslint/node_modules/eslint/lib/rules/no-else-return.js +0 -450
  307. package/packages/config-eslint/node_modules/eslint/lib/rules/no-empty-character-class.js +0 -83
  308. package/packages/config-eslint/node_modules/eslint/lib/rules/no-empty-function.js +0 -236
  309. package/packages/config-eslint/node_modules/eslint/lib/rules/no-empty-pattern.js +0 -85
  310. package/packages/config-eslint/node_modules/eslint/lib/rules/no-empty-static-block.js +0 -73
  311. package/packages/config-eslint/node_modules/eslint/lib/rules/no-empty.js +0 -153
  312. package/packages/config-eslint/node_modules/eslint/lib/rules/no-eq-null.js +0 -51
  313. package/packages/config-eslint/node_modules/eslint/lib/rules/no-eval.js +0 -295
  314. package/packages/config-eslint/node_modules/eslint/lib/rules/no-ex-assign.js +0 -57
  315. package/packages/config-eslint/node_modules/eslint/lib/rules/no-extend-native.js +0 -180
  316. package/packages/config-eslint/node_modules/eslint/lib/rules/no-extra-bind.js +0 -224
  317. package/packages/config-eslint/node_modules/eslint/lib/rules/no-extra-boolean-cast.js +0 -420
  318. package/packages/config-eslint/node_modules/eslint/lib/rules/no-extra-label.js +0 -169
  319. package/packages/config-eslint/node_modules/eslint/lib/rules/no-extra-parens.js +0 -1669
  320. package/packages/config-eslint/node_modules/eslint/lib/rules/no-extra-semi.js +0 -167
  321. package/packages/config-eslint/node_modules/eslint/lib/rules/no-fallthrough.js +0 -260
  322. package/packages/config-eslint/node_modules/eslint/lib/rules/no-floating-decimal.js +0 -99
  323. package/packages/config-eslint/node_modules/eslint/lib/rules/no-func-assign.js +0 -77
  324. package/packages/config-eslint/node_modules/eslint/lib/rules/no-global-assign.js +0 -101
  325. package/packages/config-eslint/node_modules/eslint/lib/rules/no-implicit-coercion.js +0 -468
  326. package/packages/config-eslint/node_modules/eslint/lib/rules/no-implicit-globals.js +0 -187
  327. package/packages/config-eslint/node_modules/eslint/lib/rules/no-implied-eval.js +0 -170
  328. package/packages/config-eslint/node_modules/eslint/lib/rules/no-import-assign.js +0 -227
  329. package/packages/config-eslint/node_modules/eslint/lib/rules/no-inline-comments.js +0 -115
  330. package/packages/config-eslint/node_modules/eslint/lib/rules/no-inner-declarations.js +0 -147
  331. package/packages/config-eslint/node_modules/eslint/lib/rules/no-invalid-regexp.js +0 -243
  332. package/packages/config-eslint/node_modules/eslint/lib/rules/no-invalid-this.js +0 -178
  333. package/packages/config-eslint/node_modules/eslint/lib/rules/no-irregular-whitespace.js +0 -292
  334. package/packages/config-eslint/node_modules/eslint/lib/rules/no-iterator.js +0 -48
  335. package/packages/config-eslint/node_modules/eslint/lib/rules/no-label-var.js +0 -78
  336. package/packages/config-eslint/node_modules/eslint/lib/rules/no-labels.js +0 -156
  337. package/packages/config-eslint/node_modules/eslint/lib/rules/no-lone-blocks.js +0 -140
  338. package/packages/config-eslint/node_modules/eslint/lib/rules/no-lonely-if.js +0 -126
  339. package/packages/config-eslint/node_modules/eslint/lib/rules/no-loop-func.js +0 -267
  340. package/packages/config-eslint/node_modules/eslint/lib/rules/no-loss-of-precision.js +0 -249
  341. package/packages/config-eslint/node_modules/eslint/lib/rules/no-magic-numbers.js +0 -365
  342. package/packages/config-eslint/node_modules/eslint/lib/rules/no-misleading-character-class.js +0 -595
  343. package/packages/config-eslint/node_modules/eslint/lib/rules/no-mixed-operators.js +0 -253
  344. package/packages/config-eslint/node_modules/eslint/lib/rules/no-mixed-requires.js +0 -267
  345. package/packages/config-eslint/node_modules/eslint/lib/rules/no-mixed-spaces-and-tabs.js +0 -148
  346. package/packages/config-eslint/node_modules/eslint/lib/rules/no-multi-assign.js +0 -66
  347. package/packages/config-eslint/node_modules/eslint/lib/rules/no-multi-spaces.js +0 -179
  348. package/packages/config-eslint/node_modules/eslint/lib/rules/no-multi-str.js +0 -67
  349. package/packages/config-eslint/node_modules/eslint/lib/rules/no-multiple-empty-lines.js +0 -210
  350. package/packages/config-eslint/node_modules/eslint/lib/rules/no-native-reassign.js +0 -114
  351. package/packages/config-eslint/node_modules/eslint/lib/rules/no-negated-condition.js +0 -100
  352. package/packages/config-eslint/node_modules/eslint/lib/rules/no-negated-in-lhs.js +0 -59
  353. package/packages/config-eslint/node_modules/eslint/lib/rules/no-nested-ternary.js +0 -46
  354. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new-func.js +0 -96
  355. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new-native-nonconstructor.js +0 -70
  356. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new-object.js +0 -76
  357. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new-require.js +0 -67
  358. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new-symbol.js +0 -74
  359. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new-wrappers.js +0 -62
  360. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new.js +0 -42
  361. package/packages/config-eslint/node_modules/eslint/lib/rules/no-nonoctal-decimal-escape.js +0 -176
  362. package/packages/config-eslint/node_modules/eslint/lib/rules/no-obj-calls.js +0 -99
  363. package/packages/config-eslint/node_modules/eslint/lib/rules/no-object-constructor.js +0 -124
  364. package/packages/config-eslint/node_modules/eslint/lib/rules/no-octal-escape.js +0 -53
  365. package/packages/config-eslint/node_modules/eslint/lib/rules/no-octal.js +0 -42
  366. package/packages/config-eslint/node_modules/eslint/lib/rules/no-param-reassign.js +0 -248
  367. package/packages/config-eslint/node_modules/eslint/lib/rules/no-path-concat.js +0 -79
  368. package/packages/config-eslint/node_modules/eslint/lib/rules/no-plusplus.js +0 -102
  369. package/packages/config-eslint/node_modules/eslint/lib/rules/no-process-env.js +0 -68
  370. package/packages/config-eslint/node_modules/eslint/lib/rules/no-process-exit.js +0 -67
  371. package/packages/config-eslint/node_modules/eslint/lib/rules/no-promise-executor-return.js +0 -264
  372. package/packages/config-eslint/node_modules/eslint/lib/rules/no-proto.js +0 -45
  373. package/packages/config-eslint/node_modules/eslint/lib/rules/no-prototype-builtins.js +0 -181
  374. package/packages/config-eslint/node_modules/eslint/lib/rules/no-redeclare.js +0 -173
  375. package/packages/config-eslint/node_modules/eslint/lib/rules/no-regex-spaces.js +0 -219
  376. package/packages/config-eslint/node_modules/eslint/lib/rules/no-restricted-exports.js +0 -227
  377. package/packages/config-eslint/node_modules/eslint/lib/rules/no-restricted-globals.js +0 -266
  378. package/packages/config-eslint/node_modules/eslint/lib/rules/no-restricted-imports.js +0 -850
  379. package/packages/config-eslint/node_modules/eslint/lib/rules/no-restricted-modules.js +0 -249
  380. package/packages/config-eslint/node_modules/eslint/lib/rules/no-restricted-properties.js +0 -233
  381. package/packages/config-eslint/node_modules/eslint/lib/rules/no-restricted-syntax.js +0 -74
  382. package/packages/config-eslint/node_modules/eslint/lib/rules/no-return-assign.js +0 -87
  383. package/packages/config-eslint/node_modules/eslint/lib/rules/no-return-await.js +0 -162
  384. package/packages/config-eslint/node_modules/eslint/lib/rules/no-script-url.js +0 -68
  385. package/packages/config-eslint/node_modules/eslint/lib/rules/no-self-assign.js +0 -186
  386. package/packages/config-eslint/node_modules/eslint/lib/rules/no-self-compare.js +0 -77
  387. package/packages/config-eslint/node_modules/eslint/lib/rules/no-sequences.js +0 -158
  388. package/packages/config-eslint/node_modules/eslint/lib/rules/no-setter-return.js +0 -224
  389. package/packages/config-eslint/node_modules/eslint/lib/rules/no-shadow-restricted-names.js +0 -113
  390. package/packages/config-eslint/node_modules/eslint/lib/rules/no-shadow.js +0 -624
  391. package/packages/config-eslint/node_modules/eslint/lib/rules/no-spaced-func.js +0 -105
  392. package/packages/config-eslint/node_modules/eslint/lib/rules/no-sparse-arrays.js +0 -68
  393. package/packages/config-eslint/node_modules/eslint/lib/rules/no-sync.js +0 -81
  394. package/packages/config-eslint/node_modules/eslint/lib/rules/no-tabs.js +0 -110
  395. package/packages/config-eslint/node_modules/eslint/lib/rules/no-template-curly-in-string.js +0 -45
  396. package/packages/config-eslint/node_modules/eslint/lib/rules/no-ternary.js +0 -38
  397. package/packages/config-eslint/node_modules/eslint/lib/rules/no-this-before-super.js +0 -365
  398. package/packages/config-eslint/node_modules/eslint/lib/rules/no-throw-literal.js +0 -46
  399. package/packages/config-eslint/node_modules/eslint/lib/rules/no-trailing-spaces.js +0 -227
  400. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unassigned-vars.js +0 -80
  401. package/packages/config-eslint/node_modules/eslint/lib/rules/no-undef-init.js +0 -101
  402. package/packages/config-eslint/node_modules/eslint/lib/rules/no-undef.js +0 -84
  403. package/packages/config-eslint/node_modules/eslint/lib/rules/no-undefined.js +0 -85
  404. package/packages/config-eslint/node_modules/eslint/lib/rules/no-underscore-dangle.js +0 -383
  405. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unexpected-multiline.js +0 -130
  406. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js +0 -360
  407. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unneeded-ternary.js +0 -232
  408. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unreachable-loop.js +0 -190
  409. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unreachable.js +0 -300
  410. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unsafe-finally.js +0 -119
  411. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unsafe-negation.js +0 -152
  412. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unsafe-optional-chaining.js +0 -221
  413. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unused-expressions.js +0 -227
  414. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unused-labels.js +0 -158
  415. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unused-private-class-members.js +0 -219
  416. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unused-vars.js +0 -1739
  417. package/packages/config-eslint/node_modules/eslint/lib/rules/no-use-before-define.js +0 -446
  418. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-assignment.js +0 -654
  419. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-backreference.js +0 -263
  420. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-call.js +0 -95
  421. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-catch.js +0 -57
  422. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-computed-key.js +0 -204
  423. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-concat.js +0 -121
  424. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-constructor.js +0 -252
  425. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-escape.js +0 -406
  426. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-rename.js +0 -202
  427. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-return.js +0 -401
  428. package/packages/config-eslint/node_modules/eslint/lib/rules/no-var.js +0 -367
  429. package/packages/config-eslint/node_modules/eslint/lib/rules/no-void.js +0 -69
  430. package/packages/config-eslint/node_modules/eslint/lib/rules/no-warning-comments.js +0 -209
  431. package/packages/config-eslint/node_modules/eslint/lib/rules/no-whitespace-before-property.js +0 -150
  432. package/packages/config-eslint/node_modules/eslint/lib/rules/no-with.js +0 -37
  433. package/packages/config-eslint/node_modules/eslint/lib/rules/nonblock-statement-body-position.js +0 -164
  434. package/packages/config-eslint/node_modules/eslint/lib/rules/object-curly-newline.js +0 -383
  435. package/packages/config-eslint/node_modules/eslint/lib/rules/object-curly-spacing.js +0 -375
  436. package/packages/config-eslint/node_modules/eslint/lib/rules/object-property-newline.js +0 -151
  437. package/packages/config-eslint/node_modules/eslint/lib/rules/object-shorthand.js +0 -652
  438. package/packages/config-eslint/node_modules/eslint/lib/rules/one-var-declaration-per-line.js +0 -117
  439. package/packages/config-eslint/node_modules/eslint/lib/rules/one-var.js +0 -717
  440. package/packages/config-eslint/node_modules/eslint/lib/rules/operator-assignment.js +0 -270
  441. package/packages/config-eslint/node_modules/eslint/lib/rules/operator-linebreak.js +0 -315
  442. package/packages/config-eslint/node_modules/eslint/lib/rules/padded-blocks.js +0 -366
  443. package/packages/config-eslint/node_modules/eslint/lib/rules/padding-line-between-statements.js +0 -612
  444. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-arrow-callback.js +0 -437
  445. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-const.js +0 -546
  446. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-destructuring.js +0 -332
  447. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-exponentiation-operator.js +0 -235
  448. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-named-capture-group.js +0 -197
  449. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-numeric-literals.js +0 -157
  450. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-object-has-own.js +0 -148
  451. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-object-spread.js +0 -319
  452. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js +0 -154
  453. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-reflect.js +0 -150
  454. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-regex-literals.js +0 -605
  455. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-rest-params.js +0 -117
  456. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-spread.js +0 -91
  457. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-template.js +0 -347
  458. package/packages/config-eslint/node_modules/eslint/lib/rules/preserve-caught-error.js +0 -535
  459. package/packages/config-eslint/node_modules/eslint/lib/rules/quote-props.js +0 -394
  460. package/packages/config-eslint/node_modules/eslint/lib/rules/quotes.js +0 -416
  461. package/packages/config-eslint/node_modules/eslint/lib/rules/radix.js +0 -216
  462. package/packages/config-eslint/node_modules/eslint/lib/rules/require-atomic-updates.js +0 -365
  463. package/packages/config-eslint/node_modules/eslint/lib/rules/require-await.js +0 -184
  464. package/packages/config-eslint/node_modules/eslint/lib/rules/require-unicode-regexp.js +0 -317
  465. package/packages/config-eslint/node_modules/eslint/lib/rules/require-yield.js +0 -76
  466. package/packages/config-eslint/node_modules/eslint/lib/rules/rest-spread-spacing.js +0 -153
  467. package/packages/config-eslint/node_modules/eslint/lib/rules/semi-spacing.js +0 -297
  468. package/packages/config-eslint/node_modules/eslint/lib/rules/semi-style.js +0 -218
  469. package/packages/config-eslint/node_modules/eslint/lib/rules/semi.js +0 -476
  470. package/packages/config-eslint/node_modules/eslint/lib/rules/sort-imports.js +0 -319
  471. package/packages/config-eslint/node_modules/eslint/lib/rules/sort-keys.js +0 -268
  472. package/packages/config-eslint/node_modules/eslint/lib/rules/sort-vars.js +0 -140
  473. package/packages/config-eslint/node_modules/eslint/lib/rules/space-before-blocks.js +0 -232
  474. package/packages/config-eslint/node_modules/eslint/lib/rules/space-before-function-paren.js +0 -205
  475. package/packages/config-eslint/node_modules/eslint/lib/rules/space-in-parens.js +0 -374
  476. package/packages/config-eslint/node_modules/eslint/lib/rules/space-infix-ops.js +0 -252
  477. package/packages/config-eslint/node_modules/eslint/lib/rules/space-unary-ops.js +0 -400
  478. package/packages/config-eslint/node_modules/eslint/lib/rules/spaced-comment.js +0 -447
  479. package/packages/config-eslint/node_modules/eslint/lib/rules/strict.js +0 -314
  480. package/packages/config-eslint/node_modules/eslint/lib/rules/switch-colon-spacing.js +0 -158
  481. package/packages/config-eslint/node_modules/eslint/lib/rules/symbol-description.js +0 -70
  482. package/packages/config-eslint/node_modules/eslint/lib/rules/template-curly-spacing.js +0 -168
  483. package/packages/config-eslint/node_modules/eslint/lib/rules/template-tag-spacing.js +0 -121
  484. package/packages/config-eslint/node_modules/eslint/lib/rules/unicode-bom.js +0 -73
  485. package/packages/config-eslint/node_modules/eslint/lib/rules/use-isnan.js +0 -268
  486. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/ast-utils.js +0 -2733
  487. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/char-source.js +0 -247
  488. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/fix-tracker.js +0 -125
  489. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/keywords.js +0 -67
  490. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/lazy-loading-rule-map.js +0 -118
  491. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/regular-expressions.js +0 -58
  492. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/unicode/index.js +0 -16
  493. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/unicode/is-combining-character.js +0 -13
  494. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/unicode/is-emoji-modifier.js +0 -13
  495. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/unicode/is-regional-indicator-symbol.js +0 -13
  496. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/unicode/is-surrogate-pair.js +0 -14
  497. package/packages/config-eslint/node_modules/eslint/lib/rules/valid-typeof.js +0 -171
  498. package/packages/config-eslint/node_modules/eslint/lib/rules/vars-on-top.js +0 -165
  499. package/packages/config-eslint/node_modules/eslint/lib/rules/wrap-iife.js +0 -238
  500. package/packages/config-eslint/node_modules/eslint/lib/rules/wrap-regex.js +0 -91
  501. package/packages/config-eslint/node_modules/eslint/lib/rules/yield-star-spacing.js +0 -159
  502. package/packages/config-eslint/node_modules/eslint/lib/rules/yoda.js +0 -362
  503. package/packages/config-eslint/node_modules/eslint/lib/services/parser-service.js +0 -65
  504. package/packages/config-eslint/node_modules/eslint/lib/services/processor-service.js +0 -101
  505. package/packages/config-eslint/node_modules/eslint/lib/services/suppressions-service.js +0 -302
  506. package/packages/config-eslint/node_modules/eslint/lib/services/warning-service.js +0 -111
  507. package/packages/config-eslint/node_modules/eslint/lib/shared/ajv.js +0 -34
  508. package/packages/config-eslint/node_modules/eslint/lib/shared/assert.js +0 -21
  509. package/packages/config-eslint/node_modules/eslint/lib/shared/ast-utils.js +0 -30
  510. package/packages/config-eslint/node_modules/eslint/lib/shared/deep-merge-arrays.js +0 -62
  511. package/packages/config-eslint/node_modules/eslint/lib/shared/directives.js +0 -16
  512. package/packages/config-eslint/node_modules/eslint/lib/shared/flags.js +0 -108
  513. package/packages/config-eslint/node_modules/eslint/lib/shared/logging.js +0 -38
  514. package/packages/config-eslint/node_modules/eslint/lib/shared/naming.js +0 -109
  515. package/packages/config-eslint/node_modules/eslint/lib/shared/option-utils.js +0 -63
  516. package/packages/config-eslint/node_modules/eslint/lib/shared/relative-module-resolver.js +0 -28
  517. package/packages/config-eslint/node_modules/eslint/lib/shared/runtime-info.js +0 -177
  518. package/packages/config-eslint/node_modules/eslint/lib/shared/serialization.js +0 -78
  519. package/packages/config-eslint/node_modules/eslint/lib/shared/severity.js +0 -49
  520. package/packages/config-eslint/node_modules/eslint/lib/shared/stats.js +0 -30
  521. package/packages/config-eslint/node_modules/eslint/lib/shared/string-utils.js +0 -58
  522. package/packages/config-eslint/node_modules/eslint/lib/shared/text-table.js +0 -68
  523. package/packages/config-eslint/node_modules/eslint/lib/shared/translate-cli-options.js +0 -281
  524. package/packages/config-eslint/node_modules/eslint/lib/shared/traverser.js +0 -202
  525. package/packages/config-eslint/node_modules/eslint/lib/types/config-api.d.ts +0 -12
  526. package/packages/config-eslint/node_modules/eslint/lib/types/index.d.ts +0 -1473
  527. package/packages/config-eslint/node_modules/eslint/lib/types/rules.d.ts +0 -5589
  528. package/packages/config-eslint/node_modules/eslint/lib/types/universal.d.ts +0 -6
  529. package/packages/config-eslint/node_modules/eslint/lib/types/use-at-your-own-risk.d.ts +0 -87
  530. package/packages/config-eslint/node_modules/eslint/lib/universal.js +0 -10
  531. package/packages/config-eslint/node_modules/eslint/lib/unsupported-api.js +0 -29
  532. package/packages/config-eslint/node_modules/eslint/messages/all-files-ignored.js +0 -16
  533. package/packages/config-eslint/node_modules/eslint/messages/all-matched-files-ignored.js +0 -21
  534. package/packages/config-eslint/node_modules/eslint/messages/config-file-missing.js +0 -16
  535. package/packages/config-eslint/node_modules/eslint/messages/config-plugin-missing.js +0 -14
  536. package/packages/config-eslint/node_modules/eslint/messages/config-serialize-function.js +0 -30
  537. package/packages/config-eslint/node_modules/eslint/messages/eslintrc-incompat.js +0 -117
  538. package/packages/config-eslint/node_modules/eslint/messages/eslintrc-plugins.js +0 -27
  539. package/packages/config-eslint/node_modules/eslint/messages/extend-config-missing.js +0 -13
  540. package/packages/config-eslint/node_modules/eslint/messages/failed-to-read-json.js +0 -11
  541. package/packages/config-eslint/node_modules/eslint/messages/file-not-found.js +0 -10
  542. package/packages/config-eslint/node_modules/eslint/messages/invalid-rule-options.js +0 -17
  543. package/packages/config-eslint/node_modules/eslint/messages/invalid-rule-severity.js +0 -13
  544. package/packages/config-eslint/node_modules/eslint/messages/no-config-found.js +0 -15
  545. package/packages/config-eslint/node_modules/eslint/messages/plugin-conflict.js +0 -22
  546. package/packages/config-eslint/node_modules/eslint/messages/plugin-invalid.js +0 -16
  547. package/packages/config-eslint/node_modules/eslint/messages/plugin-missing.js +0 -19
  548. package/packages/config-eslint/node_modules/eslint/messages/print-config-with-directory-path.js +0 -8
  549. package/packages/config-eslint/node_modules/eslint/messages/shared.js +0 -23
  550. package/packages/config-eslint/node_modules/eslint/messages/whitespace-found.js +0 -11
  551. package/packages/config-eslint/node_modules/eslint/package.json +0 -226
  552. package/packages/config-eslint/node_modules/find-up/index.d.ts +0 -138
  553. package/packages/config-eslint/node_modules/find-up/index.js +0 -89
  554. package/packages/config-eslint/node_modules/find-up/license +0 -9
  555. package/packages/config-eslint/node_modules/find-up/package.json +0 -54
  556. package/packages/config-eslint/node_modules/find-up/readme.md +0 -151
  557. package/packages/config-eslint/node_modules/globals/globals.json +0 -3970
  558. package/packages/config-eslint/node_modules/globals/index.d.ts +0 -4087
  559. package/packages/config-eslint/node_modules/globals/index.js +0 -2
  560. package/packages/config-eslint/node_modules/globals/license +0 -9
  561. package/packages/config-eslint/node_modules/globals/package.json +0 -122
  562. package/packages/config-eslint/node_modules/globals/readme.md +0 -42
  563. package/packages/config-eslint/node_modules/ignore/LICENSE-MIT +0 -21
  564. package/packages/config-eslint/node_modules/ignore/README.md +0 -412
  565. package/packages/config-eslint/node_modules/ignore/index.d.ts +0 -61
  566. package/packages/config-eslint/node_modules/ignore/index.js +0 -636
  567. package/packages/config-eslint/node_modules/ignore/legacy.js +0 -559
  568. package/packages/config-eslint/node_modules/ignore/package.json +0 -74
  569. package/packages/config-eslint/node_modules/json-schema-traverse/.eslintrc.yml +0 -27
  570. package/packages/config-eslint/node_modules/json-schema-traverse/.travis.yml +0 -8
  571. package/packages/config-eslint/node_modules/json-schema-traverse/LICENSE +0 -21
  572. package/packages/config-eslint/node_modules/json-schema-traverse/README.md +0 -83
  573. package/packages/config-eslint/node_modules/json-schema-traverse/index.js +0 -89
  574. package/packages/config-eslint/node_modules/json-schema-traverse/package.json +0 -43
  575. package/packages/config-eslint/node_modules/json-schema-traverse/spec/.eslintrc.yml +0 -6
  576. package/packages/config-eslint/node_modules/json-schema-traverse/spec/fixtures/schema.js +0 -125
  577. package/packages/config-eslint/node_modules/json-schema-traverse/spec/index.spec.js +0 -171
  578. package/packages/config-eslint/node_modules/locate-path/index.d.ts +0 -83
  579. package/packages/config-eslint/node_modules/locate-path/index.js +0 -68
  580. package/packages/config-eslint/node_modules/locate-path/license +0 -9
  581. package/packages/config-eslint/node_modules/locate-path/package.json +0 -46
  582. package/packages/config-eslint/node_modules/locate-path/readme.md +0 -125
  583. package/packages/config-eslint/node_modules/p-limit/index.d.ts +0 -42
  584. package/packages/config-eslint/node_modules/p-limit/index.js +0 -71
  585. package/packages/config-eslint/node_modules/p-limit/license +0 -9
  586. package/packages/config-eslint/node_modules/p-limit/package.json +0 -52
  587. package/packages/config-eslint/node_modules/p-limit/readme.md +0 -101
  588. package/packages/config-eslint/node_modules/p-locate/index.d.ts +0 -53
  589. package/packages/config-eslint/node_modules/p-locate/index.js +0 -50
  590. package/packages/config-eslint/node_modules/p-locate/license +0 -9
  591. package/packages/config-eslint/node_modules/p-locate/package.json +0 -54
  592. package/packages/config-eslint/node_modules/p-locate/readme.md +0 -93
  593. package/packages/config-eslint/node_modules/path-exists/index.d.ts +0 -28
  594. package/packages/config-eslint/node_modules/path-exists/index.js +0 -23
  595. package/packages/config-eslint/node_modules/path-exists/license +0 -9
  596. package/packages/config-eslint/node_modules/path-exists/package.json +0 -39
  597. package/packages/config-eslint/node_modules/path-exists/readme.md +0 -52
  598. package/packages/config-eslint/node_modules/yocto-queue/index.d.ts +0 -56
  599. package/packages/config-eslint/node_modules/yocto-queue/index.js +0 -68
  600. package/packages/config-eslint/node_modules/yocto-queue/license +0 -9
  601. package/packages/config-eslint/node_modules/yocto-queue/package.json +0 -43
  602. package/packages/config-eslint/node_modules/yocto-queue/readme.md +0 -64
@@ -1,1669 +0,0 @@
1
- /**
2
- * @fileoverview Disallow parenthesising higher precedence subexpressions.
3
- * @author Michael Ficarra
4
- * @deprecated in ESLint v8.53.0
5
- */
6
- "use strict";
7
-
8
- //------------------------------------------------------------------------------
9
- // Rule Definition
10
- //------------------------------------------------------------------------------
11
-
12
- const {
13
- isParenthesized: isParenthesizedRaw,
14
- } = require("@eslint-community/eslint-utils");
15
- const astUtils = require("./utils/ast-utils.js");
16
-
17
- /** @type {import('../types').Rule.RuleModule} */
18
- module.exports = {
19
- meta: {
20
- deprecated: {
21
- message: "Formatting rules are being moved out of ESLint core.",
22
- url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
23
- deprecatedSince: "8.53.0",
24
- availableUntil: "11.0.0",
25
- replacedBy: [
26
- {
27
- message:
28
- "ESLint Stylistic now maintains deprecated stylistic core rules.",
29
- url: "https://eslint.style/guide/migration",
30
- plugin: {
31
- name: "@stylistic/eslint-plugin",
32
- url: "https://eslint.style",
33
- },
34
- rule: {
35
- name: "no-extra-parens",
36
- url: "https://eslint.style/rules/no-extra-parens",
37
- },
38
- },
39
- ],
40
- },
41
- type: "layout",
42
-
43
- docs: {
44
- description: "Disallow unnecessary parentheses",
45
- recommended: false,
46
- url: "https://eslint.org/docs/latest/rules/no-extra-parens",
47
- },
48
-
49
- fixable: "code",
50
-
51
- schema: {
52
- anyOf: [
53
- {
54
- type: "array",
55
- items: [
56
- {
57
- enum: ["functions"],
58
- },
59
- ],
60
- minItems: 0,
61
- maxItems: 1,
62
- },
63
- {
64
- type: "array",
65
- items: [
66
- {
67
- enum: ["all"],
68
- },
69
- {
70
- type: "object",
71
- properties: {
72
- conditionalAssign: { type: "boolean" },
73
- ternaryOperandBinaryExpressions: {
74
- type: "boolean",
75
- },
76
- nestedBinaryExpressions: { type: "boolean" },
77
- returnAssign: { type: "boolean" },
78
- ignoreJSX: {
79
- enum: [
80
- "none",
81
- "all",
82
- "single-line",
83
- "multi-line",
84
- ],
85
- },
86
- enforceForArrowConditionals: {
87
- type: "boolean",
88
- },
89
- enforceForSequenceExpressions: {
90
- type: "boolean",
91
- },
92
- enforceForNewInMemberExpressions: {
93
- type: "boolean",
94
- },
95
- enforceForFunctionPrototypeMethods: {
96
- type: "boolean",
97
- },
98
- allowParensAfterCommentPattern: {
99
- type: "string",
100
- },
101
- },
102
- additionalProperties: false,
103
- },
104
- ],
105
- minItems: 0,
106
- maxItems: 2,
107
- },
108
- ],
109
- },
110
-
111
- messages: {
112
- unexpected: "Unnecessary parentheses around expression.",
113
- },
114
- },
115
-
116
- create(context) {
117
- const sourceCode = context.sourceCode;
118
-
119
- const tokensToIgnore = new WeakSet();
120
- const precedence = astUtils.getPrecedence;
121
- const ALL_NODES = context.options[0] !== "functions";
122
- const EXCEPT_COND_ASSIGN =
123
- ALL_NODES &&
124
- context.options[1] &&
125
- context.options[1].conditionalAssign === false;
126
- const EXCEPT_COND_TERNARY =
127
- ALL_NODES &&
128
- context.options[1] &&
129
- context.options[1].ternaryOperandBinaryExpressions === false;
130
- const NESTED_BINARY =
131
- ALL_NODES &&
132
- context.options[1] &&
133
- context.options[1].nestedBinaryExpressions === false;
134
- const EXCEPT_RETURN_ASSIGN =
135
- ALL_NODES &&
136
- context.options[1] &&
137
- context.options[1].returnAssign === false;
138
- const IGNORE_JSX =
139
- ALL_NODES && context.options[1] && context.options[1].ignoreJSX;
140
- const IGNORE_ARROW_CONDITIONALS =
141
- ALL_NODES &&
142
- context.options[1] &&
143
- context.options[1].enforceForArrowConditionals === false;
144
- const IGNORE_SEQUENCE_EXPRESSIONS =
145
- ALL_NODES &&
146
- context.options[1] &&
147
- context.options[1].enforceForSequenceExpressions === false;
148
- const IGNORE_NEW_IN_MEMBER_EXPR =
149
- ALL_NODES &&
150
- context.options[1] &&
151
- context.options[1].enforceForNewInMemberExpressions === false;
152
- const IGNORE_FUNCTION_PROTOTYPE_METHODS =
153
- ALL_NODES &&
154
- context.options[1] &&
155
- context.options[1].enforceForFunctionPrototypeMethods === false;
156
- const ALLOW_PARENS_AFTER_COMMENT_PATTERN =
157
- ALL_NODES &&
158
- context.options[1] &&
159
- context.options[1].allowParensAfterCommentPattern;
160
-
161
- const PRECEDENCE_OF_ASSIGNMENT_EXPR = precedence({
162
- type: "AssignmentExpression",
163
- });
164
- const PRECEDENCE_OF_UPDATE_EXPR = precedence({
165
- type: "UpdateExpression",
166
- });
167
-
168
- let reportsBuffer;
169
-
170
- /**
171
- * Determines whether the given node is a `call` or `apply` method call, invoked directly on a `FunctionExpression` node.
172
- * Example: function(){}.call()
173
- * @param {ASTNode} node The node to be checked.
174
- * @returns {boolean} True if the node is an immediate `call` or `apply` method call.
175
- * @private
176
- */
177
- function isImmediateFunctionPrototypeMethodCall(node) {
178
- const callNode = astUtils.skipChainExpression(node);
179
-
180
- if (callNode.type !== "CallExpression") {
181
- return false;
182
- }
183
- const callee = astUtils.skipChainExpression(callNode.callee);
184
-
185
- return (
186
- callee.type === "MemberExpression" &&
187
- callee.object.type === "FunctionExpression" &&
188
- ["call", "apply"].includes(
189
- astUtils.getStaticPropertyName(callee),
190
- )
191
- );
192
- }
193
-
194
- /**
195
- * Determines if this rule should be enforced for a node given the current configuration.
196
- * @param {ASTNode} node The node to be checked.
197
- * @returns {boolean} True if the rule should be enforced for this node.
198
- * @private
199
- */
200
- function ruleApplies(node) {
201
- if (node.type === "JSXElement" || node.type === "JSXFragment") {
202
- const isSingleLine = node.loc.start.line === node.loc.end.line;
203
-
204
- switch (IGNORE_JSX) {
205
- // Exclude this JSX element from linting
206
- case "all":
207
- return false;
208
-
209
- // Exclude this JSX element if it is multi-line element
210
- case "multi-line":
211
- return isSingleLine;
212
-
213
- // Exclude this JSX element if it is single-line element
214
- case "single-line":
215
- return !isSingleLine;
216
-
217
- // Nothing special to be done for JSX elements
218
- case "none":
219
- break;
220
-
221
- // no default
222
- }
223
- }
224
-
225
- if (
226
- node.type === "SequenceExpression" &&
227
- IGNORE_SEQUENCE_EXPRESSIONS
228
- ) {
229
- return false;
230
- }
231
-
232
- if (
233
- isImmediateFunctionPrototypeMethodCall(node) &&
234
- IGNORE_FUNCTION_PROTOTYPE_METHODS
235
- ) {
236
- return false;
237
- }
238
-
239
- return (
240
- ALL_NODES ||
241
- node.type === "FunctionExpression" ||
242
- node.type === "ArrowFunctionExpression"
243
- );
244
- }
245
-
246
- /**
247
- * Determines if a node is surrounded by parentheses.
248
- * @param {ASTNode} node The node to be checked.
249
- * @returns {boolean} True if the node is parenthesised.
250
- * @private
251
- */
252
- function isParenthesised(node) {
253
- return isParenthesizedRaw(1, node, sourceCode);
254
- }
255
-
256
- /**
257
- * Determines if a node is surrounded by parentheses twice.
258
- * @param {ASTNode} node The node to be checked.
259
- * @returns {boolean} True if the node is doubly parenthesised.
260
- * @private
261
- */
262
- function isParenthesisedTwice(node) {
263
- return isParenthesizedRaw(2, node, sourceCode);
264
- }
265
-
266
- /**
267
- * Determines if a node is surrounded by (potentially) invalid parentheses.
268
- * @param {ASTNode} node The node to be checked.
269
- * @returns {boolean} True if the node is incorrectly parenthesised.
270
- * @private
271
- */
272
- function hasExcessParens(node) {
273
- return ruleApplies(node) && isParenthesised(node);
274
- }
275
-
276
- /**
277
- * Determines if a node that is expected to be parenthesised is surrounded by
278
- * (potentially) invalid extra parentheses.
279
- * @param {ASTNode} node The node to be checked.
280
- * @returns {boolean} True if the node is has an unexpected extra pair of parentheses.
281
- * @private
282
- */
283
- function hasDoubleExcessParens(node) {
284
- return ruleApplies(node) && isParenthesisedTwice(node);
285
- }
286
-
287
- /**
288
- * Determines if a node that is expected to be parenthesised is surrounded by
289
- * (potentially) invalid extra parentheses with considering precedence level of the node.
290
- * If the preference level of the node is not higher or equal to precedence lower limit, it also checks
291
- * whether the node is surrounded by parentheses twice or not.
292
- * @param {ASTNode} node The node to be checked.
293
- * @param {number} precedenceLowerLimit The lower limit of precedence.
294
- * @returns {boolean} True if the node is has an unexpected extra pair of parentheses.
295
- * @private
296
- */
297
- function hasExcessParensWithPrecedence(node, precedenceLowerLimit) {
298
- if (ruleApplies(node) && isParenthesised(node)) {
299
- if (
300
- precedence(node) >= precedenceLowerLimit ||
301
- isParenthesisedTwice(node)
302
- ) {
303
- return true;
304
- }
305
- }
306
- return false;
307
- }
308
-
309
- /**
310
- * Determines if a node test expression is allowed to have a parenthesised assignment
311
- * @param {ASTNode} node The node to be checked.
312
- * @returns {boolean} True if the assignment can be parenthesised.
313
- * @private
314
- */
315
- function isCondAssignException(node) {
316
- return (
317
- EXCEPT_COND_ASSIGN && node.test.type === "AssignmentExpression"
318
- );
319
- }
320
-
321
- /**
322
- * Determines if a node is in a return statement
323
- * @param {ASTNode} node The node to be checked.
324
- * @returns {boolean} True if the node is in a return statement.
325
- * @private
326
- */
327
- function isInReturnStatement(node) {
328
- for (
329
- let currentNode = node;
330
- currentNode;
331
- currentNode = currentNode.parent
332
- ) {
333
- if (
334
- currentNode.type === "ReturnStatement" ||
335
- (currentNode.type === "ArrowFunctionExpression" &&
336
- currentNode.body.type !== "BlockStatement")
337
- ) {
338
- return true;
339
- }
340
- }
341
-
342
- return false;
343
- }
344
-
345
- /**
346
- * Determines if a constructor function is newed-up with parens
347
- * @param {ASTNode} newExpression The NewExpression node to be checked.
348
- * @returns {boolean} True if the constructor is called with parens.
349
- * @private
350
- */
351
- function isNewExpressionWithParens(newExpression) {
352
- const lastToken = sourceCode.getLastToken(newExpression);
353
- const penultimateToken = sourceCode.getTokenBefore(lastToken);
354
-
355
- return (
356
- newExpression.arguments.length > 0 ||
357
- // The expression should end with its own parens, e.g., new new foo() is not a new expression with parens
358
- (astUtils.isOpeningParenToken(penultimateToken) &&
359
- astUtils.isClosingParenToken(lastToken) &&
360
- newExpression.callee.range[1] < newExpression.range[1])
361
- );
362
- }
363
-
364
- /**
365
- * Determines if a node is or contains an assignment expression
366
- * @param {ASTNode} node The node to be checked.
367
- * @returns {boolean} True if the node is or contains an assignment expression.
368
- * @private
369
- */
370
- function containsAssignment(node) {
371
- if (node.type === "AssignmentExpression") {
372
- return true;
373
- }
374
- if (
375
- node.type === "ConditionalExpression" &&
376
- (node.consequent.type === "AssignmentExpression" ||
377
- node.alternate.type === "AssignmentExpression")
378
- ) {
379
- return true;
380
- }
381
- if (
382
- (node.left && node.left.type === "AssignmentExpression") ||
383
- (node.right && node.right.type === "AssignmentExpression")
384
- ) {
385
- return true;
386
- }
387
-
388
- return false;
389
- }
390
-
391
- /**
392
- * Determines if a node is contained by or is itself a return statement and is allowed to have a parenthesised assignment
393
- * @param {ASTNode} node The node to be checked.
394
- * @returns {boolean} True if the assignment can be parenthesised.
395
- * @private
396
- */
397
- function isReturnAssignException(node) {
398
- if (!EXCEPT_RETURN_ASSIGN || !isInReturnStatement(node)) {
399
- return false;
400
- }
401
-
402
- if (node.type === "ReturnStatement") {
403
- return node.argument && containsAssignment(node.argument);
404
- }
405
- if (
406
- node.type === "ArrowFunctionExpression" &&
407
- node.body.type !== "BlockStatement"
408
- ) {
409
- return containsAssignment(node.body);
410
- }
411
- return containsAssignment(node);
412
- }
413
-
414
- /**
415
- * Determines if a node following a [no LineTerminator here] restriction is
416
- * surrounded by (potentially) invalid extra parentheses.
417
- * @param {Token} token The token preceding the [no LineTerminator here] restriction.
418
- * @param {ASTNode} node The node to be checked.
419
- * @returns {boolean} True if the node is incorrectly parenthesised.
420
- * @private
421
- */
422
- function hasExcessParensNoLineTerminator(token, node) {
423
- if (token.loc.end.line === node.loc.start.line) {
424
- return hasExcessParens(node);
425
- }
426
-
427
- return hasDoubleExcessParens(node);
428
- }
429
-
430
- /**
431
- * Determines whether a node should be preceded by an additional space when removing parens
432
- * @param {ASTNode} node node to evaluate; must be surrounded by parentheses
433
- * @returns {boolean} `true` if a space should be inserted before the node
434
- * @private
435
- */
436
- function requiresLeadingSpace(node) {
437
- const leftParenToken = sourceCode.getTokenBefore(node);
438
- const tokenBeforeLeftParen = sourceCode.getTokenBefore(
439
- leftParenToken,
440
- { includeComments: true },
441
- );
442
- const tokenAfterLeftParen = sourceCode.getTokenAfter(
443
- leftParenToken,
444
- { includeComments: true },
445
- );
446
-
447
- return (
448
- tokenBeforeLeftParen &&
449
- tokenBeforeLeftParen.range[1] === leftParenToken.range[0] &&
450
- leftParenToken.range[1] === tokenAfterLeftParen.range[0] &&
451
- !astUtils.canTokensBeAdjacent(
452
- tokenBeforeLeftParen,
453
- tokenAfterLeftParen,
454
- )
455
- );
456
- }
457
-
458
- /**
459
- * Determines whether a node should be followed by an additional space when removing parens
460
- * @param {ASTNode} node node to evaluate; must be surrounded by parentheses
461
- * @returns {boolean} `true` if a space should be inserted after the node
462
- * @private
463
- */
464
- function requiresTrailingSpace(node) {
465
- const nextTwoTokens = sourceCode.getTokensAfter(node, { count: 2 });
466
- const rightParenToken = nextTwoTokens[0];
467
- const tokenAfterRightParen = nextTwoTokens[1];
468
- const tokenBeforeRightParen = sourceCode.getLastToken(node);
469
-
470
- return (
471
- rightParenToken &&
472
- tokenAfterRightParen &&
473
- !sourceCode.isSpaceBetweenTokens(
474
- rightParenToken,
475
- tokenAfterRightParen,
476
- ) &&
477
- !astUtils.canTokensBeAdjacent(
478
- tokenBeforeRightParen,
479
- tokenAfterRightParen,
480
- )
481
- );
482
- }
483
-
484
- /**
485
- * Determines if a given expression node is an IIFE
486
- * @param {ASTNode} node The node to check
487
- * @returns {boolean} `true` if the given node is an IIFE
488
- */
489
- function isIIFE(node) {
490
- const maybeCallNode = astUtils.skipChainExpression(node);
491
-
492
- return (
493
- maybeCallNode.type === "CallExpression" &&
494
- maybeCallNode.callee.type === "FunctionExpression"
495
- );
496
- }
497
-
498
- /**
499
- * Determines if the given node can be the assignment target in destructuring or the LHS of an assignment.
500
- * This is to avoid an autofix that could change behavior because parsers mistakenly allow invalid syntax,
501
- * such as `(a = b) = c` and `[(a = b) = c] = []`. Ideally, this function shouldn't be necessary.
502
- * @param {ASTNode} [node] The node to check
503
- * @returns {boolean} `true` if the given node can be a valid assignment target
504
- */
505
- function canBeAssignmentTarget(node) {
506
- return (
507
- node &&
508
- (node.type === "Identifier" || node.type === "MemberExpression")
509
- );
510
- }
511
-
512
- /**
513
- * Checks if a node is fixable.
514
- * A node is fixable if removing a single pair of surrounding parentheses does not turn it
515
- * into a directive after fixing other nodes.
516
- * Almost all nodes are fixable, except if all of the following conditions are met:
517
- * The node is a string Literal
518
- * It has a single pair of parentheses
519
- * It is the only child of an ExpressionStatement
520
- * @param {ASTNode} node The node to evaluate.
521
- * @returns {boolean} Whether or not the node is fixable.
522
- * @private
523
- */
524
- function isFixable(node) {
525
- // if it's not a string literal it can be autofixed
526
- if (node.type !== "Literal" || typeof node.value !== "string") {
527
- return true;
528
- }
529
- if (isParenthesisedTwice(node)) {
530
- return true;
531
- }
532
- return !astUtils.isTopLevelExpressionStatement(node.parent);
533
- }
534
-
535
- /**
536
- * Report the node
537
- * @param {ASTNode} node node to evaluate
538
- * @returns {void}
539
- * @private
540
- */
541
- function report(node) {
542
- const leftParenToken = sourceCode.getTokenBefore(node);
543
- const rightParenToken = sourceCode.getTokenAfter(node);
544
-
545
- if (!isParenthesisedTwice(node)) {
546
- if (tokensToIgnore.has(sourceCode.getFirstToken(node))) {
547
- return;
548
- }
549
-
550
- if (isIIFE(node) && !isParenthesised(node.callee)) {
551
- return;
552
- }
553
-
554
- if (ALLOW_PARENS_AFTER_COMMENT_PATTERN) {
555
- const commentsBeforeLeftParenToken =
556
- sourceCode.getCommentsBefore(leftParenToken);
557
- const totalCommentsBeforeLeftParenTokenCount =
558
- commentsBeforeLeftParenToken.length;
559
- const ignorePattern = new RegExp(
560
- ALLOW_PARENS_AFTER_COMMENT_PATTERN,
561
- "u",
562
- );
563
-
564
- if (
565
- totalCommentsBeforeLeftParenTokenCount > 0 &&
566
- ignorePattern.test(
567
- commentsBeforeLeftParenToken[
568
- totalCommentsBeforeLeftParenTokenCount - 1
569
- ].value,
570
- )
571
- ) {
572
- return;
573
- }
574
- }
575
- }
576
-
577
- /**
578
- * Finishes reporting
579
- * @returns {void}
580
- * @private
581
- */
582
- function finishReport() {
583
- context.report({
584
- node,
585
- loc: leftParenToken.loc,
586
- messageId: "unexpected",
587
- fix: isFixable(node)
588
- ? fixer => {
589
- const parenthesizedSource =
590
- sourceCode.text.slice(
591
- leftParenToken.range[1],
592
- rightParenToken.range[0],
593
- );
594
-
595
- return fixer.replaceTextRange(
596
- [
597
- leftParenToken.range[0],
598
- rightParenToken.range[1],
599
- ],
600
- (requiresLeadingSpace(node) ? " " : "") +
601
- parenthesizedSource +
602
- (requiresTrailingSpace(node)
603
- ? " "
604
- : ""),
605
- );
606
- }
607
- : null,
608
- });
609
- }
610
-
611
- if (reportsBuffer) {
612
- reportsBuffer.reports.push({ node, finishReport });
613
- return;
614
- }
615
-
616
- finishReport();
617
- }
618
-
619
- /**
620
- * Evaluate a argument of the node.
621
- * @param {ASTNode} node node to evaluate
622
- * @returns {void}
623
- * @private
624
- */
625
- function checkArgumentWithPrecedence(node) {
626
- if (
627
- hasExcessParensWithPrecedence(node.argument, precedence(node))
628
- ) {
629
- report(node.argument);
630
- }
631
- }
632
-
633
- /**
634
- * Check if a member expression contains a call expression
635
- * @param {ASTNode} node MemberExpression node to evaluate
636
- * @returns {boolean} true if found, false if not
637
- */
638
- function doesMemberExpressionContainCallExpression(node) {
639
- let currentNode = node.object;
640
- let currentNodeType = node.object.type;
641
-
642
- while (currentNodeType === "MemberExpression") {
643
- currentNode = currentNode.object;
644
- currentNodeType = currentNode.type;
645
- }
646
-
647
- return currentNodeType === "CallExpression";
648
- }
649
-
650
- /**
651
- * Evaluate a new call
652
- * @param {ASTNode} node node to evaluate
653
- * @returns {void}
654
- * @private
655
- */
656
- function checkCallNew(node) {
657
- const callee = node.callee;
658
-
659
- if (hasExcessParensWithPrecedence(callee, precedence(node))) {
660
- if (
661
- hasDoubleExcessParens(callee) ||
662
- !(
663
- isIIFE(node) ||
664
- // (new A)(); new (new A)();
665
- (callee.type === "NewExpression" &&
666
- !isNewExpressionWithParens(callee) &&
667
- !(
668
- node.type === "NewExpression" &&
669
- !isNewExpressionWithParens(node)
670
- )) ||
671
- // new (a().b)(); new (a.b().c);
672
- (node.type === "NewExpression" &&
673
- callee.type === "MemberExpression" &&
674
- doesMemberExpressionContainCallExpression(
675
- callee,
676
- )) ||
677
- // (a?.b)(); (a?.())();
678
- (!node.optional && callee.type === "ChainExpression")
679
- )
680
- ) {
681
- report(node.callee);
682
- }
683
- }
684
- node.arguments
685
- .filter(arg =>
686
- hasExcessParensWithPrecedence(
687
- arg,
688
- PRECEDENCE_OF_ASSIGNMENT_EXPR,
689
- ),
690
- )
691
- .forEach(report);
692
- }
693
-
694
- /**
695
- * Evaluate binary logicals
696
- * @param {ASTNode} node node to evaluate
697
- * @returns {void}
698
- * @private
699
- */
700
- function checkBinaryLogical(node) {
701
- const prec = precedence(node);
702
- const leftPrecedence = precedence(node.left);
703
- const rightPrecedence = precedence(node.right);
704
- const isExponentiation = node.operator === "**";
705
- const shouldSkipLeft =
706
- NESTED_BINARY &&
707
- (node.left.type === "BinaryExpression" ||
708
- node.left.type === "LogicalExpression");
709
- const shouldSkipRight =
710
- NESTED_BINARY &&
711
- (node.right.type === "BinaryExpression" ||
712
- node.right.type === "LogicalExpression");
713
-
714
- if (!shouldSkipLeft && hasExcessParens(node.left)) {
715
- if (
716
- (!(
717
- ["AwaitExpression", "UnaryExpression"].includes(
718
- node.left.type,
719
- ) && isExponentiation
720
- ) &&
721
- !astUtils.isMixedLogicalAndCoalesceExpressions(
722
- node.left,
723
- node,
724
- ) &&
725
- (leftPrecedence > prec ||
726
- (leftPrecedence === prec && !isExponentiation))) ||
727
- isParenthesisedTwice(node.left)
728
- ) {
729
- report(node.left);
730
- }
731
- }
732
-
733
- if (!shouldSkipRight && hasExcessParens(node.right)) {
734
- if (
735
- (!astUtils.isMixedLogicalAndCoalesceExpressions(
736
- node.right,
737
- node,
738
- ) &&
739
- (rightPrecedence > prec ||
740
- (rightPrecedence === prec && isExponentiation))) ||
741
- isParenthesisedTwice(node.right)
742
- ) {
743
- report(node.right);
744
- }
745
- }
746
- }
747
-
748
- /**
749
- * Check the parentheses around the super class of the given class definition.
750
- * @param {ASTNode} node The node of class declarations to check.
751
- * @returns {void}
752
- */
753
- function checkClass(node) {
754
- if (!node.superClass) {
755
- return;
756
- }
757
-
758
- /*
759
- * If `node.superClass` is a LeftHandSideExpression, parentheses are extra.
760
- * Otherwise, parentheses are needed.
761
- */
762
- const hasExtraParens =
763
- precedence(node.superClass) > PRECEDENCE_OF_UPDATE_EXPR
764
- ? hasExcessParens(node.superClass)
765
- : hasDoubleExcessParens(node.superClass);
766
-
767
- if (hasExtraParens) {
768
- report(node.superClass);
769
- }
770
- }
771
-
772
- /**
773
- * Check the parentheses around the argument of the given spread operator.
774
- * @param {ASTNode} node The node of spread elements/properties to check.
775
- * @returns {void}
776
- */
777
- function checkSpreadOperator(node) {
778
- if (
779
- hasExcessParensWithPrecedence(
780
- node.argument,
781
- PRECEDENCE_OF_ASSIGNMENT_EXPR,
782
- )
783
- ) {
784
- report(node.argument);
785
- }
786
- }
787
-
788
- /**
789
- * Checks the parentheses for an ExpressionStatement or ExportDefaultDeclaration
790
- * @param {ASTNode} node The ExpressionStatement.expression or ExportDefaultDeclaration.declaration node
791
- * @returns {void}
792
- */
793
- function checkExpressionOrExportStatement(node) {
794
- const firstToken = isParenthesised(node)
795
- ? sourceCode.getTokenBefore(node)
796
- : sourceCode.getFirstToken(node);
797
- const secondToken = sourceCode.getTokenAfter(
798
- firstToken,
799
- astUtils.isNotOpeningParenToken,
800
- );
801
- const thirdToken = secondToken
802
- ? sourceCode.getTokenAfter(secondToken)
803
- : null;
804
- const tokenAfterClosingParens = secondToken
805
- ? sourceCode.getTokenAfter(
806
- secondToken,
807
- astUtils.isNotClosingParenToken,
808
- )
809
- : null;
810
-
811
- if (
812
- astUtils.isOpeningParenToken(firstToken) &&
813
- (astUtils.isOpeningBraceToken(secondToken) ||
814
- (secondToken.type === "Keyword" &&
815
- (secondToken.value === "function" ||
816
- secondToken.value === "class" ||
817
- (secondToken.value === "let" &&
818
- tokenAfterClosingParens &&
819
- (astUtils.isOpeningBracketToken(
820
- tokenAfterClosingParens,
821
- ) ||
822
- tokenAfterClosingParens.type ===
823
- "Identifier")))) ||
824
- (secondToken &&
825
- secondToken.type === "Identifier" &&
826
- secondToken.value === "async" &&
827
- thirdToken &&
828
- thirdToken.type === "Keyword" &&
829
- thirdToken.value === "function"))
830
- ) {
831
- tokensToIgnore.add(secondToken);
832
- }
833
-
834
- const hasExtraParens =
835
- node.parent.type === "ExportDefaultDeclaration"
836
- ? hasExcessParensWithPrecedence(
837
- node,
838
- PRECEDENCE_OF_ASSIGNMENT_EXPR,
839
- )
840
- : hasExcessParens(node);
841
-
842
- if (hasExtraParens) {
843
- report(node);
844
- }
845
- }
846
-
847
- /**
848
- * Finds the path from the given node to the specified ancestor.
849
- * @param {ASTNode} node First node in the path.
850
- * @param {ASTNode} ancestor Last node in the path.
851
- * @returns {ASTNode[]} Path, including both nodes.
852
- * @throws {Error} If the given node does not have the specified ancestor.
853
- */
854
- function pathToAncestor(node, ancestor) {
855
- const path = [node];
856
- let currentNode = node;
857
-
858
- while (currentNode !== ancestor) {
859
- currentNode = currentNode.parent;
860
-
861
- /* c8 ignore start */
862
- if (currentNode === null) {
863
- throw new Error(
864
- "Nodes are not in the ancestor-descendant relationship.",
865
- );
866
- } /* c8 ignore stop */
867
-
868
- path.push(currentNode);
869
- }
870
-
871
- return path;
872
- }
873
-
874
- /**
875
- * Finds the path from the given node to the specified descendant.
876
- * @param {ASTNode} node First node in the path.
877
- * @param {ASTNode} descendant Last node in the path.
878
- * @returns {ASTNode[]} Path, including both nodes.
879
- * @throws {Error} If the given node does not have the specified descendant.
880
- */
881
- function pathToDescendant(node, descendant) {
882
- return pathToAncestor(descendant, node).reverse();
883
- }
884
-
885
- /**
886
- * Checks whether the syntax of the given ancestor of an 'in' expression inside a for-loop initializer
887
- * is preventing the 'in' keyword from being interpreted as a part of an ill-formed for-in loop.
888
- * @param {ASTNode} node Ancestor of an 'in' expression.
889
- * @param {ASTNode} child Child of the node, ancestor of the same 'in' expression or the 'in' expression itself.
890
- * @returns {boolean} True if the keyword 'in' would be interpreted as the 'in' operator, without any parenthesis.
891
- */
892
- function isSafelyEnclosingInExpression(node, child) {
893
- switch (node.type) {
894
- case "ArrayExpression":
895
- case "ArrayPattern":
896
- case "BlockStatement":
897
- case "ObjectExpression":
898
- case "ObjectPattern":
899
- case "TemplateLiteral":
900
- return true;
901
- case "ArrowFunctionExpression":
902
- case "FunctionExpression":
903
- return node.params.includes(child);
904
- case "CallExpression":
905
- case "NewExpression":
906
- return node.arguments.includes(child);
907
- case "MemberExpression":
908
- return node.computed && node.property === child;
909
- case "ConditionalExpression":
910
- return node.consequent === child;
911
- default:
912
- return false;
913
- }
914
- }
915
-
916
- /**
917
- * Starts a new reports buffering. Warnings will be stored in a buffer instead of being reported immediately.
918
- * An additional logic that requires multiple nodes (e.g. a whole subtree) may dismiss some of the stored warnings.
919
- * @returns {void}
920
- */
921
- function startNewReportsBuffering() {
922
- reportsBuffer = {
923
- upper: reportsBuffer,
924
- inExpressionNodes: [],
925
- reports: [],
926
- };
927
- }
928
-
929
- /**
930
- * Ends the current reports buffering.
931
- * @returns {void}
932
- */
933
- function endCurrentReportsBuffering() {
934
- const { upper, inExpressionNodes, reports } = reportsBuffer;
935
-
936
- if (upper) {
937
- upper.inExpressionNodes.push(...inExpressionNodes);
938
- upper.reports.push(...reports);
939
- } else {
940
- // flush remaining reports
941
- reports.forEach(({ finishReport }) => finishReport());
942
- }
943
-
944
- reportsBuffer = upper;
945
- }
946
-
947
- /**
948
- * Checks whether the given node is in the current reports buffer.
949
- * @param {ASTNode} node Node to check.
950
- * @returns {boolean} True if the node is in the current buffer, false otherwise.
951
- */
952
- function isInCurrentReportsBuffer(node) {
953
- return reportsBuffer.reports.some(r => r.node === node);
954
- }
955
-
956
- /**
957
- * Removes the given node from the current reports buffer.
958
- * @param {ASTNode} node Node to remove.
959
- * @returns {void}
960
- */
961
- function removeFromCurrentReportsBuffer(node) {
962
- reportsBuffer.reports = reportsBuffer.reports.filter(
963
- r => r.node !== node,
964
- );
965
- }
966
-
967
- /**
968
- * Checks whether a node is a MemberExpression at NewExpression's callee.
969
- * @param {ASTNode} node node to check.
970
- * @returns {boolean} True if the node is a MemberExpression at NewExpression's callee. false otherwise.
971
- */
972
- function isMemberExpInNewCallee(node) {
973
- if (node.type === "MemberExpression") {
974
- return node.parent.type === "NewExpression" &&
975
- node.parent.callee === node
976
- ? true
977
- : node.parent.object === node &&
978
- isMemberExpInNewCallee(node.parent);
979
- }
980
- return false;
981
- }
982
-
983
- /**
984
- * Checks if the left-hand side of an assignment is an identifier, the operator is one of
985
- * `=`, `&&=`, `||=` or `??=` and the right-hand side is an anonymous class or function.
986
- *
987
- * As per https://tc39.es/ecma262/#sec-assignment-operators-runtime-semantics-evaluation, an
988
- * assignment involving one of the operators `=`, `&&=`, `||=` or `??=` where the right-hand
989
- * side is an anonymous class or function and the left-hand side is an *unparenthesized*
990
- * identifier has different semantics than other assignments.
991
- * Specifically, when an expression like `foo = function () {}` is evaluated, `foo.name`
992
- * will be set to the string "foo", i.e. the identifier name. The same thing does not happen
993
- * when evaluating `(foo) = function () {}`.
994
- * Since the parenthesizing of the identifier in the left-hand side is significant in this
995
- * special case, the parentheses, if present, should not be flagged as unnecessary.
996
- * @param {ASTNode} node an AssignmentExpression node.
997
- * @returns {boolean} `true` if the left-hand side of the assignment is an identifier, the
998
- * operator is one of `=`, `&&=`, `||=` or `??=` and the right-hand side is an anonymous
999
- * class or function; otherwise, `false`.
1000
- */
1001
- function isAnonymousFunctionAssignmentException({
1002
- left,
1003
- operator,
1004
- right,
1005
- }) {
1006
- if (
1007
- left.type === "Identifier" &&
1008
- ["=", "&&=", "||=", "??="].includes(operator)
1009
- ) {
1010
- const rhsType = right.type;
1011
-
1012
- if (rhsType === "ArrowFunctionExpression") {
1013
- return true;
1014
- }
1015
- if (
1016
- (rhsType === "FunctionExpression" ||
1017
- rhsType === "ClassExpression") &&
1018
- !right.id
1019
- ) {
1020
- return true;
1021
- }
1022
- }
1023
- return false;
1024
- }
1025
-
1026
- return {
1027
- ArrayExpression(node) {
1028
- node.elements
1029
- .filter(
1030
- e =>
1031
- e &&
1032
- hasExcessParensWithPrecedence(
1033
- e,
1034
- PRECEDENCE_OF_ASSIGNMENT_EXPR,
1035
- ),
1036
- )
1037
- .forEach(report);
1038
- },
1039
-
1040
- ArrayPattern(node) {
1041
- node.elements
1042
- .filter(e => canBeAssignmentTarget(e) && hasExcessParens(e))
1043
- .forEach(report);
1044
- },
1045
-
1046
- ArrowFunctionExpression(node) {
1047
- if (isReturnAssignException(node)) {
1048
- return;
1049
- }
1050
-
1051
- if (
1052
- node.body.type === "ConditionalExpression" &&
1053
- IGNORE_ARROW_CONDITIONALS
1054
- ) {
1055
- return;
1056
- }
1057
-
1058
- if (node.body.type !== "BlockStatement") {
1059
- const firstBodyToken = sourceCode.getFirstToken(
1060
- node.body,
1061
- astUtils.isNotOpeningParenToken,
1062
- );
1063
- const tokenBeforeFirst =
1064
- sourceCode.getTokenBefore(firstBodyToken);
1065
-
1066
- if (
1067
- astUtils.isOpeningParenToken(tokenBeforeFirst) &&
1068
- astUtils.isOpeningBraceToken(firstBodyToken)
1069
- ) {
1070
- tokensToIgnore.add(firstBodyToken);
1071
- }
1072
- if (
1073
- hasExcessParensWithPrecedence(
1074
- node.body,
1075
- PRECEDENCE_OF_ASSIGNMENT_EXPR,
1076
- )
1077
- ) {
1078
- report(node.body);
1079
- }
1080
- }
1081
- },
1082
-
1083
- AssignmentExpression(node) {
1084
- if (
1085
- canBeAssignmentTarget(node.left) &&
1086
- hasExcessParens(node.left) &&
1087
- (!isAnonymousFunctionAssignmentException(node) ||
1088
- isParenthesisedTwice(node.left))
1089
- ) {
1090
- report(node.left);
1091
- }
1092
-
1093
- if (
1094
- !isReturnAssignException(node) &&
1095
- hasExcessParensWithPrecedence(node.right, precedence(node))
1096
- ) {
1097
- report(node.right);
1098
- }
1099
- },
1100
-
1101
- BinaryExpression(node) {
1102
- if (reportsBuffer && node.operator === "in") {
1103
- reportsBuffer.inExpressionNodes.push(node);
1104
- }
1105
-
1106
- checkBinaryLogical(node);
1107
- },
1108
-
1109
- CallExpression: checkCallNew,
1110
-
1111
- ConditionalExpression(node) {
1112
- if (isReturnAssignException(node)) {
1113
- return;
1114
- }
1115
-
1116
- const availableTypes = new Set([
1117
- "BinaryExpression",
1118
- "LogicalExpression",
1119
- ]);
1120
-
1121
- if (
1122
- !(
1123
- EXCEPT_COND_TERNARY &&
1124
- availableTypes.has(node.test.type)
1125
- ) &&
1126
- !isCondAssignException(node) &&
1127
- hasExcessParensWithPrecedence(
1128
- node.test,
1129
- precedence({
1130
- type: "LogicalExpression",
1131
- operator: "||",
1132
- }),
1133
- )
1134
- ) {
1135
- report(node.test);
1136
- }
1137
-
1138
- if (
1139
- !(
1140
- EXCEPT_COND_TERNARY &&
1141
- availableTypes.has(node.consequent.type)
1142
- ) &&
1143
- hasExcessParensWithPrecedence(
1144
- node.consequent,
1145
- PRECEDENCE_OF_ASSIGNMENT_EXPR,
1146
- )
1147
- ) {
1148
- report(node.consequent);
1149
- }
1150
-
1151
- if (
1152
- !(
1153
- EXCEPT_COND_TERNARY &&
1154
- availableTypes.has(node.alternate.type)
1155
- ) &&
1156
- hasExcessParensWithPrecedence(
1157
- node.alternate,
1158
- PRECEDENCE_OF_ASSIGNMENT_EXPR,
1159
- )
1160
- ) {
1161
- report(node.alternate);
1162
- }
1163
- },
1164
-
1165
- DoWhileStatement(node) {
1166
- if (
1167
- hasExcessParens(node.test) &&
1168
- !isCondAssignException(node)
1169
- ) {
1170
- report(node.test);
1171
- }
1172
- },
1173
-
1174
- ExportDefaultDeclaration: node =>
1175
- checkExpressionOrExportStatement(node.declaration),
1176
- ExpressionStatement: node =>
1177
- checkExpressionOrExportStatement(node.expression),
1178
-
1179
- ForInStatement(node) {
1180
- if (node.left.type !== "VariableDeclaration") {
1181
- const firstLeftToken = sourceCode.getFirstToken(
1182
- node.left,
1183
- astUtils.isNotOpeningParenToken,
1184
- );
1185
-
1186
- if (
1187
- firstLeftToken.value === "let" &&
1188
- astUtils.isOpeningBracketToken(
1189
- sourceCode.getTokenAfter(
1190
- firstLeftToken,
1191
- astUtils.isNotClosingParenToken,
1192
- ),
1193
- )
1194
- ) {
1195
- // ForInStatement#left expression cannot start with `let[`.
1196
- tokensToIgnore.add(firstLeftToken);
1197
- }
1198
- }
1199
-
1200
- if (hasExcessParens(node.left)) {
1201
- report(node.left);
1202
- }
1203
-
1204
- if (hasExcessParens(node.right)) {
1205
- report(node.right);
1206
- }
1207
- },
1208
-
1209
- ForOfStatement(node) {
1210
- if (node.left.type !== "VariableDeclaration") {
1211
- const firstLeftToken = sourceCode.getFirstToken(
1212
- node.left,
1213
- astUtils.isNotOpeningParenToken,
1214
- );
1215
-
1216
- if (firstLeftToken.value === "let") {
1217
- // ForOfStatement#left expression cannot start with `let`.
1218
- tokensToIgnore.add(firstLeftToken);
1219
- }
1220
- }
1221
-
1222
- if (hasExcessParens(node.left)) {
1223
- report(node.left);
1224
- }
1225
-
1226
- if (
1227
- hasExcessParensWithPrecedence(
1228
- node.right,
1229
- PRECEDENCE_OF_ASSIGNMENT_EXPR,
1230
- )
1231
- ) {
1232
- report(node.right);
1233
- }
1234
- },
1235
-
1236
- ForStatement(node) {
1237
- if (
1238
- node.test &&
1239
- hasExcessParens(node.test) &&
1240
- !isCondAssignException(node)
1241
- ) {
1242
- report(node.test);
1243
- }
1244
-
1245
- if (node.update && hasExcessParens(node.update)) {
1246
- report(node.update);
1247
- }
1248
-
1249
- if (node.init) {
1250
- if (node.init.type !== "VariableDeclaration") {
1251
- const firstToken = sourceCode.getFirstToken(
1252
- node.init,
1253
- astUtils.isNotOpeningParenToken,
1254
- );
1255
-
1256
- if (
1257
- firstToken.value === "let" &&
1258
- astUtils.isOpeningBracketToken(
1259
- sourceCode.getTokenAfter(
1260
- firstToken,
1261
- astUtils.isNotClosingParenToken,
1262
- ),
1263
- )
1264
- ) {
1265
- // ForStatement#init expression cannot start with `let[`.
1266
- tokensToIgnore.add(firstToken);
1267
- }
1268
- }
1269
-
1270
- startNewReportsBuffering();
1271
-
1272
- if (hasExcessParens(node.init)) {
1273
- report(node.init);
1274
- }
1275
- }
1276
- },
1277
-
1278
- "ForStatement > *.init:exit"(node) {
1279
- /*
1280
- * Removing parentheses around `in` expressions might change semantics and cause errors.
1281
- *
1282
- * For example, this valid for loop:
1283
- * for (let a = (b in c); ;);
1284
- * after removing parentheses would be treated as an invalid for-in loop:
1285
- * for (let a = b in c; ;);
1286
- */
1287
-
1288
- if (reportsBuffer.reports.length) {
1289
- reportsBuffer.inExpressionNodes.forEach(
1290
- inExpressionNode => {
1291
- const path = pathToDescendant(
1292
- node,
1293
- inExpressionNode,
1294
- );
1295
- let nodeToExclude;
1296
-
1297
- for (let i = 0; i < path.length; i++) {
1298
- const pathNode = path[i];
1299
-
1300
- if (i < path.length - 1) {
1301
- const nextPathNode = path[i + 1];
1302
-
1303
- if (
1304
- isSafelyEnclosingInExpression(
1305
- pathNode,
1306
- nextPathNode,
1307
- )
1308
- ) {
1309
- // The 'in' expression in safely enclosed by the syntax of its ancestor nodes (e.g. by '{}' or '[]').
1310
- return;
1311
- }
1312
- }
1313
-
1314
- if (isParenthesised(pathNode)) {
1315
- if (isInCurrentReportsBuffer(pathNode)) {
1316
- // This node was supposed to be reported, but parentheses might be necessary.
1317
-
1318
- if (isParenthesisedTwice(pathNode)) {
1319
- /*
1320
- * This node is parenthesised twice, it certainly has at least one pair of `extra` parentheses.
1321
- * If the --fix option is on, the current fixing iteration will remove only one pair of parentheses.
1322
- * The remaining pair is safely enclosing the 'in' expression.
1323
- */
1324
- return;
1325
- }
1326
-
1327
- // Exclude the outermost node only.
1328
- if (!nodeToExclude) {
1329
- nodeToExclude = pathNode;
1330
- }
1331
-
1332
- // Don't break the loop here, there might be some safe nodes or parentheses that will stay inside.
1333
- } else {
1334
- // This node will stay parenthesised, the 'in' expression in safely enclosed by '()'.
1335
- return;
1336
- }
1337
- }
1338
- }
1339
-
1340
- // Exclude the node from the list (i.e. treat parentheses as necessary)
1341
- removeFromCurrentReportsBuffer(nodeToExclude);
1342
- },
1343
- );
1344
- }
1345
-
1346
- endCurrentReportsBuffering();
1347
- },
1348
-
1349
- IfStatement(node) {
1350
- if (
1351
- hasExcessParens(node.test) &&
1352
- !isCondAssignException(node)
1353
- ) {
1354
- report(node.test);
1355
- }
1356
- },
1357
-
1358
- ImportExpression(node) {
1359
- const { source } = node;
1360
-
1361
- if (source.type === "SequenceExpression") {
1362
- if (hasDoubleExcessParens(source)) {
1363
- report(source);
1364
- }
1365
- } else if (hasExcessParens(source)) {
1366
- report(source);
1367
- }
1368
- },
1369
-
1370
- LogicalExpression: checkBinaryLogical,
1371
-
1372
- MemberExpression(node) {
1373
- const shouldAllowWrapOnce =
1374
- isMemberExpInNewCallee(node) &&
1375
- doesMemberExpressionContainCallExpression(node);
1376
- const nodeObjHasExcessParens = shouldAllowWrapOnce
1377
- ? hasDoubleExcessParens(node.object)
1378
- : hasExcessParens(node.object) &&
1379
- !(
1380
- isImmediateFunctionPrototypeMethodCall(
1381
- node.parent,
1382
- ) &&
1383
- node.parent.callee === node &&
1384
- IGNORE_FUNCTION_PROTOTYPE_METHODS
1385
- );
1386
-
1387
- if (
1388
- nodeObjHasExcessParens &&
1389
- precedence(node.object) >= precedence(node) &&
1390
- (node.computed ||
1391
- !(
1392
- astUtils.isDecimalInteger(node.object) ||
1393
- // RegExp literal is allowed to have parens (#1589)
1394
- (node.object.type === "Literal" &&
1395
- node.object.regex)
1396
- ))
1397
- ) {
1398
- report(node.object);
1399
- }
1400
-
1401
- if (
1402
- nodeObjHasExcessParens &&
1403
- node.object.type === "CallExpression"
1404
- ) {
1405
- report(node.object);
1406
- }
1407
-
1408
- if (
1409
- nodeObjHasExcessParens &&
1410
- !IGNORE_NEW_IN_MEMBER_EXPR &&
1411
- node.object.type === "NewExpression" &&
1412
- isNewExpressionWithParens(node.object)
1413
- ) {
1414
- report(node.object);
1415
- }
1416
-
1417
- if (
1418
- nodeObjHasExcessParens &&
1419
- node.optional &&
1420
- node.object.type === "ChainExpression"
1421
- ) {
1422
- report(node.object);
1423
- }
1424
-
1425
- if (node.computed && hasExcessParens(node.property)) {
1426
- report(node.property);
1427
- }
1428
- },
1429
-
1430
- "MethodDefinition[computed=true]"(node) {
1431
- if (
1432
- hasExcessParensWithPrecedence(
1433
- node.key,
1434
- PRECEDENCE_OF_ASSIGNMENT_EXPR,
1435
- )
1436
- ) {
1437
- report(node.key);
1438
- }
1439
- },
1440
-
1441
- NewExpression: checkCallNew,
1442
-
1443
- ObjectExpression(node) {
1444
- node.properties
1445
- .filter(
1446
- property =>
1447
- property.value &&
1448
- hasExcessParensWithPrecedence(
1449
- property.value,
1450
- PRECEDENCE_OF_ASSIGNMENT_EXPR,
1451
- ),
1452
- )
1453
- .forEach(property => report(property.value));
1454
- },
1455
-
1456
- ObjectPattern(node) {
1457
- node.properties
1458
- .filter(property => {
1459
- const value = property.value;
1460
-
1461
- return (
1462
- canBeAssignmentTarget(value) &&
1463
- hasExcessParens(value)
1464
- );
1465
- })
1466
- .forEach(property => report(property.value));
1467
- },
1468
-
1469
- Property(node) {
1470
- if (node.computed) {
1471
- const { key } = node;
1472
-
1473
- if (
1474
- key &&
1475
- hasExcessParensWithPrecedence(
1476
- key,
1477
- PRECEDENCE_OF_ASSIGNMENT_EXPR,
1478
- )
1479
- ) {
1480
- report(key);
1481
- }
1482
- }
1483
- },
1484
-
1485
- PropertyDefinition(node) {
1486
- if (
1487
- node.computed &&
1488
- hasExcessParensWithPrecedence(
1489
- node.key,
1490
- PRECEDENCE_OF_ASSIGNMENT_EXPR,
1491
- )
1492
- ) {
1493
- report(node.key);
1494
- }
1495
-
1496
- if (
1497
- node.value &&
1498
- hasExcessParensWithPrecedence(
1499
- node.value,
1500
- PRECEDENCE_OF_ASSIGNMENT_EXPR,
1501
- )
1502
- ) {
1503
- report(node.value);
1504
- }
1505
- },
1506
-
1507
- RestElement(node) {
1508
- const argument = node.argument;
1509
-
1510
- if (
1511
- canBeAssignmentTarget(argument) &&
1512
- hasExcessParens(argument)
1513
- ) {
1514
- report(argument);
1515
- }
1516
- },
1517
-
1518
- ReturnStatement(node) {
1519
- const returnToken = sourceCode.getFirstToken(node);
1520
-
1521
- if (isReturnAssignException(node)) {
1522
- return;
1523
- }
1524
-
1525
- if (
1526
- node.argument &&
1527
- hasExcessParensNoLineTerminator(
1528
- returnToken,
1529
- node.argument,
1530
- ) &&
1531
- // RegExp literal is allowed to have parens (#1589)
1532
- !(node.argument.type === "Literal" && node.argument.regex)
1533
- ) {
1534
- report(node.argument);
1535
- }
1536
- },
1537
-
1538
- SequenceExpression(node) {
1539
- const precedenceOfNode = precedence(node);
1540
-
1541
- node.expressions
1542
- .filter(e =>
1543
- hasExcessParensWithPrecedence(e, precedenceOfNode),
1544
- )
1545
- .forEach(report);
1546
- },
1547
-
1548
- SwitchCase(node) {
1549
- if (node.test && hasExcessParens(node.test)) {
1550
- report(node.test);
1551
- }
1552
- },
1553
-
1554
- SwitchStatement(node) {
1555
- if (hasExcessParens(node.discriminant)) {
1556
- report(node.discriminant);
1557
- }
1558
- },
1559
-
1560
- ThrowStatement(node) {
1561
- const throwToken = sourceCode.getFirstToken(node);
1562
-
1563
- if (
1564
- hasExcessParensNoLineTerminator(throwToken, node.argument)
1565
- ) {
1566
- report(node.argument);
1567
- }
1568
- },
1569
-
1570
- UnaryExpression: checkArgumentWithPrecedence,
1571
- UpdateExpression(node) {
1572
- if (node.prefix) {
1573
- checkArgumentWithPrecedence(node);
1574
- } else {
1575
- const { argument } = node;
1576
- const operatorToken = sourceCode.getLastToken(node);
1577
-
1578
- if (
1579
- argument.loc.end.line === operatorToken.loc.start.line
1580
- ) {
1581
- checkArgumentWithPrecedence(node);
1582
- } else {
1583
- if (hasDoubleExcessParens(argument)) {
1584
- report(argument);
1585
- }
1586
- }
1587
- }
1588
- },
1589
- AwaitExpression: checkArgumentWithPrecedence,
1590
-
1591
- VariableDeclarator(node) {
1592
- if (
1593
- node.init &&
1594
- hasExcessParensWithPrecedence(
1595
- node.init,
1596
- PRECEDENCE_OF_ASSIGNMENT_EXPR,
1597
- ) &&
1598
- // RegExp literal is allowed to have parens (#1589)
1599
- !(node.init.type === "Literal" && node.init.regex)
1600
- ) {
1601
- report(node.init);
1602
- }
1603
- },
1604
-
1605
- WhileStatement(node) {
1606
- if (
1607
- hasExcessParens(node.test) &&
1608
- !isCondAssignException(node)
1609
- ) {
1610
- report(node.test);
1611
- }
1612
- },
1613
-
1614
- WithStatement(node) {
1615
- if (hasExcessParens(node.object)) {
1616
- report(node.object);
1617
- }
1618
- },
1619
-
1620
- YieldExpression(node) {
1621
- if (node.argument) {
1622
- const yieldToken = sourceCode.getFirstToken(node);
1623
-
1624
- if (
1625
- (precedence(node.argument) >= precedence(node) &&
1626
- hasExcessParensNoLineTerminator(
1627
- yieldToken,
1628
- node.argument,
1629
- )) ||
1630
- hasDoubleExcessParens(node.argument)
1631
- ) {
1632
- report(node.argument);
1633
- }
1634
- }
1635
- },
1636
-
1637
- ClassDeclaration: checkClass,
1638
- ClassExpression: checkClass,
1639
-
1640
- SpreadElement: checkSpreadOperator,
1641
- SpreadProperty: checkSpreadOperator,
1642
- ExperimentalSpreadProperty: checkSpreadOperator,
1643
-
1644
- TemplateLiteral(node) {
1645
- node.expressions
1646
- .filter(e => e && hasExcessParens(e))
1647
- .forEach(report);
1648
- },
1649
-
1650
- AssignmentPattern(node) {
1651
- const { left, right } = node;
1652
-
1653
- if (canBeAssignmentTarget(left) && hasExcessParens(left)) {
1654
- report(left);
1655
- }
1656
-
1657
- if (
1658
- right &&
1659
- hasExcessParensWithPrecedence(
1660
- right,
1661
- PRECEDENCE_OF_ASSIGNMENT_EXPR,
1662
- )
1663
- ) {
1664
- report(right);
1665
- }
1666
- },
1667
- };
1668
- },
1669
- };