@alexlit/lint-kit 183.0.0 → 183.2.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 (631) hide show
  1. package/package.json +1 -1
  2. package/packages/config-eslint/package.json +2 -2
  3. package/packages/config-prettier/package.json +2 -2
  4. package/packages/config-stylelint/index.js +1 -1
  5. package/packages/config-stylelint/package.json +2 -2
  6. package/packages/config-stylelint/plugins/bem.js +1 -5
  7. package/packages/config-eslint/node_modules/ajv/.tonic_example.js +0 -20
  8. package/packages/config-eslint/node_modules/ajv/LICENSE +0 -22
  9. package/packages/config-eslint/node_modules/ajv/README.md +0 -1505
  10. package/packages/config-eslint/node_modules/ajv/dist/ajv.bundle.js +0 -7201
  11. package/packages/config-eslint/node_modules/ajv/dist/ajv.min.js +0 -3
  12. package/packages/config-eslint/node_modules/ajv/dist/ajv.min.js.map +0 -1
  13. package/packages/config-eslint/node_modules/ajv/lib/ajv.d.ts +0 -402
  14. package/packages/config-eslint/node_modules/ajv/lib/ajv.js +0 -506
  15. package/packages/config-eslint/node_modules/ajv/lib/cache.js +0 -26
  16. package/packages/config-eslint/node_modules/ajv/lib/compile/async.js +0 -90
  17. package/packages/config-eslint/node_modules/ajv/lib/compile/equal.js +0 -5
  18. package/packages/config-eslint/node_modules/ajv/lib/compile/error_classes.js +0 -34
  19. package/packages/config-eslint/node_modules/ajv/lib/compile/formats.js +0 -142
  20. package/packages/config-eslint/node_modules/ajv/lib/compile/index.js +0 -389
  21. package/packages/config-eslint/node_modules/ajv/lib/compile/resolve.js +0 -270
  22. package/packages/config-eslint/node_modules/ajv/lib/compile/rules.js +0 -66
  23. package/packages/config-eslint/node_modules/ajv/lib/compile/schema_obj.js +0 -9
  24. package/packages/config-eslint/node_modules/ajv/lib/compile/ucs2length.js +0 -20
  25. package/packages/config-eslint/node_modules/ajv/lib/compile/util.js +0 -239
  26. package/packages/config-eslint/node_modules/ajv/lib/data.js +0 -49
  27. package/packages/config-eslint/node_modules/ajv/lib/definition_schema.js +0 -37
  28. package/packages/config-eslint/node_modules/ajv/lib/dot/_limit.jst +0 -113
  29. package/packages/config-eslint/node_modules/ajv/lib/dot/_limitItems.jst +0 -12
  30. package/packages/config-eslint/node_modules/ajv/lib/dot/_limitLength.jst +0 -12
  31. package/packages/config-eslint/node_modules/ajv/lib/dot/_limitProperties.jst +0 -12
  32. package/packages/config-eslint/node_modules/ajv/lib/dot/allOf.jst +0 -32
  33. package/packages/config-eslint/node_modules/ajv/lib/dot/anyOf.jst +0 -46
  34. package/packages/config-eslint/node_modules/ajv/lib/dot/coerce.def +0 -51
  35. package/packages/config-eslint/node_modules/ajv/lib/dot/comment.jst +0 -9
  36. package/packages/config-eslint/node_modules/ajv/lib/dot/const.jst +0 -11
  37. package/packages/config-eslint/node_modules/ajv/lib/dot/contains.jst +0 -55
  38. package/packages/config-eslint/node_modules/ajv/lib/dot/custom.jst +0 -191
  39. package/packages/config-eslint/node_modules/ajv/lib/dot/defaults.def +0 -47
  40. package/packages/config-eslint/node_modules/ajv/lib/dot/definitions.def +0 -203
  41. package/packages/config-eslint/node_modules/ajv/lib/dot/dependencies.jst +0 -79
  42. package/packages/config-eslint/node_modules/ajv/lib/dot/enum.jst +0 -30
  43. package/packages/config-eslint/node_modules/ajv/lib/dot/errors.def +0 -194
  44. package/packages/config-eslint/node_modules/ajv/lib/dot/format.jst +0 -106
  45. package/packages/config-eslint/node_modules/ajv/lib/dot/if.jst +0 -73
  46. package/packages/config-eslint/node_modules/ajv/lib/dot/items.jst +0 -98
  47. package/packages/config-eslint/node_modules/ajv/lib/dot/missing.def +0 -39
  48. package/packages/config-eslint/node_modules/ajv/lib/dot/multipleOf.jst +0 -22
  49. package/packages/config-eslint/node_modules/ajv/lib/dot/not.jst +0 -43
  50. package/packages/config-eslint/node_modules/ajv/lib/dot/oneOf.jst +0 -54
  51. package/packages/config-eslint/node_modules/ajv/lib/dot/pattern.jst +0 -25
  52. package/packages/config-eslint/node_modules/ajv/lib/dot/properties.jst +0 -245
  53. package/packages/config-eslint/node_modules/ajv/lib/dot/propertyNames.jst +0 -52
  54. package/packages/config-eslint/node_modules/ajv/lib/dot/ref.jst +0 -85
  55. package/packages/config-eslint/node_modules/ajv/lib/dot/required.jst +0 -108
  56. package/packages/config-eslint/node_modules/ajv/lib/dot/uniqueItems.jst +0 -62
  57. package/packages/config-eslint/node_modules/ajv/lib/dot/validate.jst +0 -276
  58. package/packages/config-eslint/node_modules/ajv/lib/dotjs/README.md +0 -3
  59. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limit.js +0 -163
  60. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limitItems.js +0 -80
  61. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limitLength.js +0 -85
  62. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limitProperties.js +0 -80
  63. package/packages/config-eslint/node_modules/ajv/lib/dotjs/allOf.js +0 -42
  64. package/packages/config-eslint/node_modules/ajv/lib/dotjs/anyOf.js +0 -73
  65. package/packages/config-eslint/node_modules/ajv/lib/dotjs/comment.js +0 -14
  66. package/packages/config-eslint/node_modules/ajv/lib/dotjs/const.js +0 -56
  67. package/packages/config-eslint/node_modules/ajv/lib/dotjs/contains.js +0 -81
  68. package/packages/config-eslint/node_modules/ajv/lib/dotjs/custom.js +0 -228
  69. package/packages/config-eslint/node_modules/ajv/lib/dotjs/dependencies.js +0 -168
  70. package/packages/config-eslint/node_modules/ajv/lib/dotjs/enum.js +0 -66
  71. package/packages/config-eslint/node_modules/ajv/lib/dotjs/format.js +0 -150
  72. package/packages/config-eslint/node_modules/ajv/lib/dotjs/if.js +0 -103
  73. package/packages/config-eslint/node_modules/ajv/lib/dotjs/index.js +0 -33
  74. package/packages/config-eslint/node_modules/ajv/lib/dotjs/items.js +0 -140
  75. package/packages/config-eslint/node_modules/ajv/lib/dotjs/multipleOf.js +0 -80
  76. package/packages/config-eslint/node_modules/ajv/lib/dotjs/not.js +0 -84
  77. package/packages/config-eslint/node_modules/ajv/lib/dotjs/oneOf.js +0 -73
  78. package/packages/config-eslint/node_modules/ajv/lib/dotjs/pattern.js +0 -85
  79. package/packages/config-eslint/node_modules/ajv/lib/dotjs/properties.js +0 -335
  80. package/packages/config-eslint/node_modules/ajv/lib/dotjs/propertyNames.js +0 -81
  81. package/packages/config-eslint/node_modules/ajv/lib/dotjs/ref.js +0 -124
  82. package/packages/config-eslint/node_modules/ajv/lib/dotjs/required.js +0 -270
  83. package/packages/config-eslint/node_modules/ajv/lib/dotjs/uniqueItems.js +0 -86
  84. package/packages/config-eslint/node_modules/ajv/lib/dotjs/validate.js +0 -482
  85. package/packages/config-eslint/node_modules/ajv/lib/keyword.js +0 -146
  86. package/packages/config-eslint/node_modules/ajv/lib/refs/data.json +0 -17
  87. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-draft-04.json +0 -149
  88. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-draft-06.json +0 -154
  89. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-draft-07.json +0 -168
  90. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-secure.json +0 -94
  91. package/packages/config-eslint/node_modules/ajv/package.json +0 -107
  92. package/packages/config-eslint/node_modules/ajv/scripts/.eslintrc.yml +0 -3
  93. package/packages/config-eslint/node_modules/ajv/scripts/bundle.js +0 -61
  94. package/packages/config-eslint/node_modules/ajv/scripts/compile-dots.js +0 -73
  95. package/packages/config-eslint/node_modules/ajv/scripts/info +0 -10
  96. package/packages/config-eslint/node_modules/ajv/scripts/prepare-tests +0 -12
  97. package/packages/config-eslint/node_modules/ajv/scripts/publish-built-version +0 -32
  98. package/packages/config-eslint/node_modules/ajv/scripts/travis-gh-pages +0 -23
  99. package/packages/config-eslint/node_modules/balanced-match/LICENSE.md +0 -23
  100. package/packages/config-eslint/node_modules/balanced-match/README.md +0 -57
  101. package/packages/config-eslint/node_modules/balanced-match/dist/commonjs/index.d.ts +0 -9
  102. package/packages/config-eslint/node_modules/balanced-match/dist/commonjs/index.d.ts.map +0 -1
  103. package/packages/config-eslint/node_modules/balanced-match/dist/commonjs/index.js +0 -59
  104. package/packages/config-eslint/node_modules/balanced-match/dist/commonjs/index.js.map +0 -1
  105. package/packages/config-eslint/node_modules/balanced-match/dist/commonjs/package.json +0 -3
  106. package/packages/config-eslint/node_modules/balanced-match/dist/esm/index.d.ts +0 -9
  107. package/packages/config-eslint/node_modules/balanced-match/dist/esm/index.d.ts.map +0 -1
  108. package/packages/config-eslint/node_modules/balanced-match/dist/esm/index.js +0 -54
  109. package/packages/config-eslint/node_modules/balanced-match/dist/esm/index.js.map +0 -1
  110. package/packages/config-eslint/node_modules/balanced-match/dist/esm/package.json +0 -3
  111. package/packages/config-eslint/node_modules/balanced-match/package.json +0 -68
  112. package/packages/config-eslint/node_modules/brace-expansion/LICENSE +0 -23
  113. package/packages/config-eslint/node_modules/brace-expansion/README.md +0 -94
  114. package/packages/config-eslint/node_modules/brace-expansion/dist/commonjs/index.d.ts +0 -6
  115. package/packages/config-eslint/node_modules/brace-expansion/dist/commonjs/index.d.ts.map +0 -1
  116. package/packages/config-eslint/node_modules/brace-expansion/dist/commonjs/index.js +0 -199
  117. package/packages/config-eslint/node_modules/brace-expansion/dist/commonjs/index.js.map +0 -1
  118. package/packages/config-eslint/node_modules/brace-expansion/dist/commonjs/package.json +0 -3
  119. package/packages/config-eslint/node_modules/brace-expansion/dist/esm/index.d.ts +0 -6
  120. package/packages/config-eslint/node_modules/brace-expansion/dist/esm/index.d.ts.map +0 -1
  121. package/packages/config-eslint/node_modules/brace-expansion/dist/esm/index.js +0 -195
  122. package/packages/config-eslint/node_modules/brace-expansion/dist/esm/index.js.map +0 -1
  123. package/packages/config-eslint/node_modules/brace-expansion/dist/esm/package.json +0 -3
  124. package/packages/config-eslint/node_modules/brace-expansion/package.json +0 -64
  125. package/packages/config-eslint/node_modules/eslint/LICENSE +0 -19
  126. package/packages/config-eslint/node_modules/eslint/README.md +0 -369
  127. package/packages/config-eslint/node_modules/eslint/bin/eslint.js +0 -195
  128. package/packages/config-eslint/node_modules/eslint/conf/ecma-version.js +0 -16
  129. package/packages/config-eslint/node_modules/eslint/conf/globals.js +0 -169
  130. package/packages/config-eslint/node_modules/eslint/conf/replacements.json +0 -26
  131. package/packages/config-eslint/node_modules/eslint/conf/rule-type-list.json +0 -91
  132. package/packages/config-eslint/node_modules/eslint/lib/api.js +0 -39
  133. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/formatters/formatters-meta.json +0 -18
  134. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/formatters/html.js +0 -359
  135. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/formatters/json-with-metadata.js +0 -16
  136. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/formatters/json.js +0 -13
  137. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/formatters/stylish.js +0 -153
  138. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/hash.js +0 -35
  139. package/packages/config-eslint/node_modules/eslint/lib/cli-engine/lint-result-cache.js +0 -220
  140. package/packages/config-eslint/node_modules/eslint/lib/cli.js +0 -521
  141. package/packages/config-eslint/node_modules/eslint/lib/config/config-loader.js +0 -668
  142. package/packages/config-eslint/node_modules/eslint/lib/config/config.js +0 -674
  143. package/packages/config-eslint/node_modules/eslint/lib/config/default-config.js +0 -78
  144. package/packages/config-eslint/node_modules/eslint/lib/config/flat-config-array.js +0 -217
  145. package/packages/config-eslint/node_modules/eslint/lib/config/flat-config-schema.js +0 -598
  146. package/packages/config-eslint/node_modules/eslint/lib/config-api.js +0 -12
  147. package/packages/config-eslint/node_modules/eslint/lib/eslint/eslint-helpers.js +0 -1462
  148. package/packages/config-eslint/node_modules/eslint/lib/eslint/eslint.js +0 -1364
  149. package/packages/config-eslint/node_modules/eslint/lib/eslint/index.js +0 -7
  150. package/packages/config-eslint/node_modules/eslint/lib/eslint/worker.js +0 -173
  151. package/packages/config-eslint/node_modules/eslint/lib/languages/js/index.js +0 -336
  152. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/index.js +0 -7
  153. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/source-code.js +0 -1178
  154. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/backward-token-comment-cursor.js +0 -61
  155. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/backward-token-cursor.js +0 -57
  156. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/cursor.js +0 -76
  157. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/cursors.js +0 -120
  158. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/decorative-cursor.js +0 -38
  159. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/filter-cursor.js +0 -42
  160. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/forward-token-comment-cursor.js +0 -65
  161. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/forward-token-cursor.js +0 -62
  162. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/index.js +0 -695
  163. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/limit-cursor.js +0 -39
  164. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/padded-token-cursor.js +0 -45
  165. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/skip-cursor.js +0 -41
  166. package/packages/config-eslint/node_modules/eslint/lib/languages/js/source-code/token-store/utils.js +0 -131
  167. package/packages/config-eslint/node_modules/eslint/lib/languages/js/validate-language-options.js +0 -196
  168. package/packages/config-eslint/node_modules/eslint/lib/linter/apply-disable-directives.js +0 -583
  169. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js +0 -828
  170. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/code-path-segment.js +0 -262
  171. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/code-path-state.js +0 -2370
  172. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/code-path.js +0 -332
  173. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/debug-helpers.js +0 -223
  174. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/fork-context.js +0 -374
  175. package/packages/config-eslint/node_modules/eslint/lib/linter/code-path-analysis/id-generator.js +0 -44
  176. package/packages/config-eslint/node_modules/eslint/lib/linter/esquery.js +0 -332
  177. package/packages/config-eslint/node_modules/eslint/lib/linter/file-context.js +0 -88
  178. package/packages/config-eslint/node_modules/eslint/lib/linter/file-report.js +0 -604
  179. package/packages/config-eslint/node_modules/eslint/lib/linter/index.js +0 -11
  180. package/packages/config-eslint/node_modules/eslint/lib/linter/interpolate.js +0 -50
  181. package/packages/config-eslint/node_modules/eslint/lib/linter/linter.js +0 -1614
  182. package/packages/config-eslint/node_modules/eslint/lib/linter/rule-fixer.js +0 -199
  183. package/packages/config-eslint/node_modules/eslint/lib/linter/source-code-fixer.js +0 -154
  184. package/packages/config-eslint/node_modules/eslint/lib/linter/source-code-traverser.js +0 -333
  185. package/packages/config-eslint/node_modules/eslint/lib/linter/source-code-visitor.js +0 -81
  186. package/packages/config-eslint/node_modules/eslint/lib/linter/timing.js +0 -209
  187. package/packages/config-eslint/node_modules/eslint/lib/linter/vfile.js +0 -115
  188. package/packages/config-eslint/node_modules/eslint/lib/options.js +0 -416
  189. package/packages/config-eslint/node_modules/eslint/lib/rule-tester/index.js +0 -7
  190. package/packages/config-eslint/node_modules/eslint/lib/rule-tester/rule-tester.js +0 -1996
  191. package/packages/config-eslint/node_modules/eslint/lib/rules/accessor-pairs.js +0 -420
  192. package/packages/config-eslint/node_modules/eslint/lib/rules/array-bracket-newline.js +0 -291
  193. package/packages/config-eslint/node_modules/eslint/lib/rules/array-bracket-spacing.js +0 -301
  194. package/packages/config-eslint/node_modules/eslint/lib/rules/array-callback-return.js +0 -510
  195. package/packages/config-eslint/node_modules/eslint/lib/rules/array-element-newline.js +0 -374
  196. package/packages/config-eslint/node_modules/eslint/lib/rules/arrow-body-style.js +0 -418
  197. package/packages/config-eslint/node_modules/eslint/lib/rules/arrow-parens.js +0 -237
  198. package/packages/config-eslint/node_modules/eslint/lib/rules/arrow-spacing.js +0 -188
  199. package/packages/config-eslint/node_modules/eslint/lib/rules/block-scoped-var.js +0 -144
  200. package/packages/config-eslint/node_modules/eslint/lib/rules/block-spacing.js +0 -202
  201. package/packages/config-eslint/node_modules/eslint/lib/rules/brace-style.js +0 -278
  202. package/packages/config-eslint/node_modules/eslint/lib/rules/callback-return.js +0 -216
  203. package/packages/config-eslint/node_modules/eslint/lib/rules/camelcase.js +0 -422
  204. package/packages/config-eslint/node_modules/eslint/lib/rules/capitalized-comments.js +0 -325
  205. package/packages/config-eslint/node_modules/eslint/lib/rules/class-methods-use-this.js +0 -250
  206. package/packages/config-eslint/node_modules/eslint/lib/rules/comma-dangle.js +0 -424
  207. package/packages/config-eslint/node_modules/eslint/lib/rules/comma-spacing.js +0 -205
  208. package/packages/config-eslint/node_modules/eslint/lib/rules/comma-style.js +0 -391
  209. package/packages/config-eslint/node_modules/eslint/lib/rules/complexity.js +0 -201
  210. package/packages/config-eslint/node_modules/eslint/lib/rules/computed-property-spacing.js +0 -251
  211. package/packages/config-eslint/node_modules/eslint/lib/rules/consistent-return.js +0 -221
  212. package/packages/config-eslint/node_modules/eslint/lib/rules/consistent-this.js +0 -179
  213. package/packages/config-eslint/node_modules/eslint/lib/rules/constructor-super.js +0 -453
  214. package/packages/config-eslint/node_modules/eslint/lib/rules/curly.js +0 -425
  215. package/packages/config-eslint/node_modules/eslint/lib/rules/default-case-last.js +0 -51
  216. package/packages/config-eslint/node_modules/eslint/lib/rules/default-case.js +0 -103
  217. package/packages/config-eslint/node_modules/eslint/lib/rules/default-param-last.js +0 -78
  218. package/packages/config-eslint/node_modules/eslint/lib/rules/dot-location.js +0 -138
  219. package/packages/config-eslint/node_modules/eslint/lib/rules/dot-notation.js +0 -216
  220. package/packages/config-eslint/node_modules/eslint/lib/rules/eol-last.js +0 -135
  221. package/packages/config-eslint/node_modules/eslint/lib/rules/eqeqeq.js +0 -210
  222. package/packages/config-eslint/node_modules/eslint/lib/rules/for-direction.js +0 -168
  223. package/packages/config-eslint/node_modules/eslint/lib/rules/func-call-spacing.js +0 -281
  224. package/packages/config-eslint/node_modules/eslint/lib/rules/func-name-matching.js +0 -338
  225. package/packages/config-eslint/node_modules/eslint/lib/rules/func-names.js +0 -204
  226. package/packages/config-eslint/node_modules/eslint/lib/rules/func-style.js +0 -221
  227. package/packages/config-eslint/node_modules/eslint/lib/rules/function-call-argument-newline.js +0 -166
  228. package/packages/config-eslint/node_modules/eslint/lib/rules/function-paren-newline.js +0 -368
  229. package/packages/config-eslint/node_modules/eslint/lib/rules/generator-star-spacing.js +0 -246
  230. package/packages/config-eslint/node_modules/eslint/lib/rules/getter-return.js +0 -242
  231. package/packages/config-eslint/node_modules/eslint/lib/rules/global-require.js +0 -117
  232. package/packages/config-eslint/node_modules/eslint/lib/rules/grouped-accessor-pairs.js +0 -268
  233. package/packages/config-eslint/node_modules/eslint/lib/rules/guard-for-in.js +0 -85
  234. package/packages/config-eslint/node_modules/eslint/lib/rules/handle-callback-err.js +0 -122
  235. package/packages/config-eslint/node_modules/eslint/lib/rules/id-blacklist.js +0 -241
  236. package/packages/config-eslint/node_modules/eslint/lib/rules/id-denylist.js +0 -223
  237. package/packages/config-eslint/node_modules/eslint/lib/rules/id-length.js +0 -217
  238. package/packages/config-eslint/node_modules/eslint/lib/rules/id-match.js +0 -363
  239. package/packages/config-eslint/node_modules/eslint/lib/rules/implicit-arrow-linebreak.js +0 -125
  240. package/packages/config-eslint/node_modules/eslint/lib/rules/indent-legacy.js +0 -1369
  241. package/packages/config-eslint/node_modules/eslint/lib/rules/indent.js +0 -2334
  242. package/packages/config-eslint/node_modules/eslint/lib/rules/index.js +0 -332
  243. package/packages/config-eslint/node_modules/eslint/lib/rules/init-declarations.js +0 -172
  244. package/packages/config-eslint/node_modules/eslint/lib/rules/jsx-quotes.js +0 -128
  245. package/packages/config-eslint/node_modules/eslint/lib/rules/key-spacing.js +0 -822
  246. package/packages/config-eslint/node_modules/eslint/lib/rules/keyword-spacing.js +0 -701
  247. package/packages/config-eslint/node_modules/eslint/lib/rules/line-comment-position.js +0 -157
  248. package/packages/config-eslint/node_modules/eslint/lib/rules/linebreak-style.js +0 -135
  249. package/packages/config-eslint/node_modules/eslint/lib/rules/lines-around-comment.js +0 -581
  250. package/packages/config-eslint/node_modules/eslint/lib/rules/lines-around-directive.js +0 -249
  251. package/packages/config-eslint/node_modules/eslint/lib/rules/lines-between-class-members.js +0 -358
  252. package/packages/config-eslint/node_modules/eslint/lib/rules/logical-assignment-operators.js +0 -688
  253. package/packages/config-eslint/node_modules/eslint/lib/rules/max-classes-per-file.js +0 -90
  254. package/packages/config-eslint/node_modules/eslint/lib/rules/max-depth.js +0 -159
  255. package/packages/config-eslint/node_modules/eslint/lib/rules/max-len.js +0 -497
  256. package/packages/config-eslint/node_modules/eslint/lib/rules/max-lines-per-function.js +0 -238
  257. package/packages/config-eslint/node_modules/eslint/lib/rules/max-lines.js +0 -189
  258. package/packages/config-eslint/node_modules/eslint/lib/rules/max-nested-callbacks.js +0 -115
  259. package/packages/config-eslint/node_modules/eslint/lib/rules/max-params.js +0 -148
  260. package/packages/config-eslint/node_modules/eslint/lib/rules/max-statements-per-line.js +0 -224
  261. package/packages/config-eslint/node_modules/eslint/lib/rules/max-statements.js +0 -188
  262. package/packages/config-eslint/node_modules/eslint/lib/rules/multiline-comment-style.js +0 -652
  263. package/packages/config-eslint/node_modules/eslint/lib/rules/multiline-ternary.js +0 -257
  264. package/packages/config-eslint/node_modules/eslint/lib/rules/new-cap.js +0 -277
  265. package/packages/config-eslint/node_modules/eslint/lib/rules/new-parens.js +0 -120
  266. package/packages/config-eslint/node_modules/eslint/lib/rules/newline-after-var.js +0 -307
  267. package/packages/config-eslint/node_modules/eslint/lib/rules/newline-before-return.js +0 -242
  268. package/packages/config-eslint/node_modules/eslint/lib/rules/newline-per-chained-call.js +0 -159
  269. package/packages/config-eslint/node_modules/eslint/lib/rules/no-alert.js +0 -149
  270. package/packages/config-eslint/node_modules/eslint/lib/rules/no-array-constructor.js +0 -195
  271. package/packages/config-eslint/node_modules/eslint/lib/rules/no-async-promise-executor.js +0 -45
  272. package/packages/config-eslint/node_modules/eslint/lib/rules/no-await-in-loop.js +0 -115
  273. package/packages/config-eslint/node_modules/eslint/lib/rules/no-bitwise.js +0 -145
  274. package/packages/config-eslint/node_modules/eslint/lib/rules/no-buffer-constructor.js +0 -74
  275. package/packages/config-eslint/node_modules/eslint/lib/rules/no-caller.js +0 -52
  276. package/packages/config-eslint/node_modules/eslint/lib/rules/no-case-declarations.js +0 -80
  277. package/packages/config-eslint/node_modules/eslint/lib/rules/no-catch-shadow.js +0 -96
  278. package/packages/config-eslint/node_modules/eslint/lib/rules/no-class-assign.js +0 -66
  279. package/packages/config-eslint/node_modules/eslint/lib/rules/no-compare-neg-zero.js +0 -74
  280. package/packages/config-eslint/node_modules/eslint/lib/rules/no-cond-assign.js +0 -175
  281. package/packages/config-eslint/node_modules/eslint/lib/rules/no-confusing-arrow.js +0 -127
  282. package/packages/config-eslint/node_modules/eslint/lib/rules/no-console.js +0 -227
  283. package/packages/config-eslint/node_modules/eslint/lib/rules/no-const-assign.js +0 -73
  284. package/packages/config-eslint/node_modules/eslint/lib/rules/no-constant-binary-expression.js +0 -603
  285. package/packages/config-eslint/node_modules/eslint/lib/rules/no-constant-condition.js +0 -177
  286. package/packages/config-eslint/node_modules/eslint/lib/rules/no-constructor-return.js +0 -62
  287. package/packages/config-eslint/node_modules/eslint/lib/rules/no-continue.js +0 -38
  288. package/packages/config-eslint/node_modules/eslint/lib/rules/no-control-regex.js +0 -142
  289. package/packages/config-eslint/node_modules/eslint/lib/rules/no-debugger.js +0 -41
  290. package/packages/config-eslint/node_modules/eslint/lib/rules/no-delete-var.js +0 -42
  291. package/packages/config-eslint/node_modules/eslint/lib/rules/no-div-regex.js +0 -60
  292. package/packages/config-eslint/node_modules/eslint/lib/rules/no-dupe-args.js +0 -98
  293. package/packages/config-eslint/node_modules/eslint/lib/rules/no-dupe-class-members.js +0 -117
  294. package/packages/config-eslint/node_modules/eslint/lib/rules/no-dupe-else-if.js +0 -145
  295. package/packages/config-eslint/node_modules/eslint/lib/rules/no-dupe-keys.js +0 -165
  296. package/packages/config-eslint/node_modules/eslint/lib/rules/no-duplicate-case.js +0 -78
  297. package/packages/config-eslint/node_modules/eslint/lib/rules/no-duplicate-imports.js +0 -368
  298. package/packages/config-eslint/node_modules/eslint/lib/rules/no-else-return.js +0 -456
  299. package/packages/config-eslint/node_modules/eslint/lib/rules/no-empty-character-class.js +0 -83
  300. package/packages/config-eslint/node_modules/eslint/lib/rules/no-empty-function.js +0 -236
  301. package/packages/config-eslint/node_modules/eslint/lib/rules/no-empty-pattern.js +0 -85
  302. package/packages/config-eslint/node_modules/eslint/lib/rules/no-empty-static-block.js +0 -73
  303. package/packages/config-eslint/node_modules/eslint/lib/rules/no-empty.js +0 -153
  304. package/packages/config-eslint/node_modules/eslint/lib/rules/no-eq-null.js +0 -51
  305. package/packages/config-eslint/node_modules/eslint/lib/rules/no-eval.js +0 -301
  306. package/packages/config-eslint/node_modules/eslint/lib/rules/no-ex-assign.js +0 -57
  307. package/packages/config-eslint/node_modules/eslint/lib/rules/no-extend-native.js +0 -180
  308. package/packages/config-eslint/node_modules/eslint/lib/rules/no-extra-bind.js +0 -224
  309. package/packages/config-eslint/node_modules/eslint/lib/rules/no-extra-boolean-cast.js +0 -420
  310. package/packages/config-eslint/node_modules/eslint/lib/rules/no-extra-label.js +0 -169
  311. package/packages/config-eslint/node_modules/eslint/lib/rules/no-extra-parens.js +0 -1669
  312. package/packages/config-eslint/node_modules/eslint/lib/rules/no-extra-semi.js +0 -167
  313. package/packages/config-eslint/node_modules/eslint/lib/rules/no-fallthrough.js +0 -260
  314. package/packages/config-eslint/node_modules/eslint/lib/rules/no-floating-decimal.js +0 -99
  315. package/packages/config-eslint/node_modules/eslint/lib/rules/no-func-assign.js +0 -77
  316. package/packages/config-eslint/node_modules/eslint/lib/rules/no-global-assign.js +0 -101
  317. package/packages/config-eslint/node_modules/eslint/lib/rules/no-implicit-coercion.js +0 -468
  318. package/packages/config-eslint/node_modules/eslint/lib/rules/no-implicit-globals.js +0 -187
  319. package/packages/config-eslint/node_modules/eslint/lib/rules/no-implied-eval.js +0 -171
  320. package/packages/config-eslint/node_modules/eslint/lib/rules/no-import-assign.js +0 -227
  321. package/packages/config-eslint/node_modules/eslint/lib/rules/no-inline-comments.js +0 -115
  322. package/packages/config-eslint/node_modules/eslint/lib/rules/no-inner-declarations.js +0 -147
  323. package/packages/config-eslint/node_modules/eslint/lib/rules/no-invalid-regexp.js +0 -244
  324. package/packages/config-eslint/node_modules/eslint/lib/rules/no-invalid-this.js +0 -178
  325. package/packages/config-eslint/node_modules/eslint/lib/rules/no-irregular-whitespace.js +0 -292
  326. package/packages/config-eslint/node_modules/eslint/lib/rules/no-iterator.js +0 -48
  327. package/packages/config-eslint/node_modules/eslint/lib/rules/no-label-var.js +0 -78
  328. package/packages/config-eslint/node_modules/eslint/lib/rules/no-labels.js +0 -156
  329. package/packages/config-eslint/node_modules/eslint/lib/rules/no-lone-blocks.js +0 -140
  330. package/packages/config-eslint/node_modules/eslint/lib/rules/no-lonely-if.js +0 -126
  331. package/packages/config-eslint/node_modules/eslint/lib/rules/no-loop-func.js +0 -273
  332. package/packages/config-eslint/node_modules/eslint/lib/rules/no-loss-of-precision.js +0 -249
  333. package/packages/config-eslint/node_modules/eslint/lib/rules/no-magic-numbers.js +0 -365
  334. package/packages/config-eslint/node_modules/eslint/lib/rules/no-misleading-character-class.js +0 -595
  335. package/packages/config-eslint/node_modules/eslint/lib/rules/no-mixed-operators.js +0 -253
  336. package/packages/config-eslint/node_modules/eslint/lib/rules/no-mixed-requires.js +0 -267
  337. package/packages/config-eslint/node_modules/eslint/lib/rules/no-mixed-spaces-and-tabs.js +0 -148
  338. package/packages/config-eslint/node_modules/eslint/lib/rules/no-multi-assign.js +0 -66
  339. package/packages/config-eslint/node_modules/eslint/lib/rules/no-multi-spaces.js +0 -179
  340. package/packages/config-eslint/node_modules/eslint/lib/rules/no-multi-str.js +0 -67
  341. package/packages/config-eslint/node_modules/eslint/lib/rules/no-multiple-empty-lines.js +0 -210
  342. package/packages/config-eslint/node_modules/eslint/lib/rules/no-native-reassign.js +0 -114
  343. package/packages/config-eslint/node_modules/eslint/lib/rules/no-negated-condition.js +0 -100
  344. package/packages/config-eslint/node_modules/eslint/lib/rules/no-negated-in-lhs.js +0 -59
  345. package/packages/config-eslint/node_modules/eslint/lib/rules/no-nested-ternary.js +0 -46
  346. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new-func.js +0 -96
  347. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new-native-nonconstructor.js +0 -70
  348. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new-object.js +0 -76
  349. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new-require.js +0 -67
  350. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new-symbol.js +0 -74
  351. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new-wrappers.js +0 -62
  352. package/packages/config-eslint/node_modules/eslint/lib/rules/no-new.js +0 -42
  353. package/packages/config-eslint/node_modules/eslint/lib/rules/no-nonoctal-decimal-escape.js +0 -176
  354. package/packages/config-eslint/node_modules/eslint/lib/rules/no-obj-calls.js +0 -99
  355. package/packages/config-eslint/node_modules/eslint/lib/rules/no-object-constructor.js +0 -124
  356. package/packages/config-eslint/node_modules/eslint/lib/rules/no-octal-escape.js +0 -53
  357. package/packages/config-eslint/node_modules/eslint/lib/rules/no-octal.js +0 -42
  358. package/packages/config-eslint/node_modules/eslint/lib/rules/no-param-reassign.js +0 -248
  359. package/packages/config-eslint/node_modules/eslint/lib/rules/no-path-concat.js +0 -79
  360. package/packages/config-eslint/node_modules/eslint/lib/rules/no-plusplus.js +0 -102
  361. package/packages/config-eslint/node_modules/eslint/lib/rules/no-process-env.js +0 -68
  362. package/packages/config-eslint/node_modules/eslint/lib/rules/no-process-exit.js +0 -67
  363. package/packages/config-eslint/node_modules/eslint/lib/rules/no-promise-executor-return.js +0 -264
  364. package/packages/config-eslint/node_modules/eslint/lib/rules/no-proto.js +0 -45
  365. package/packages/config-eslint/node_modules/eslint/lib/rules/no-prototype-builtins.js +0 -181
  366. package/packages/config-eslint/node_modules/eslint/lib/rules/no-redeclare.js +0 -173
  367. package/packages/config-eslint/node_modules/eslint/lib/rules/no-regex-spaces.js +0 -219
  368. package/packages/config-eslint/node_modules/eslint/lib/rules/no-restricted-exports.js +0 -227
  369. package/packages/config-eslint/node_modules/eslint/lib/rules/no-restricted-globals.js +0 -266
  370. package/packages/config-eslint/node_modules/eslint/lib/rules/no-restricted-imports.js +0 -892
  371. package/packages/config-eslint/node_modules/eslint/lib/rules/no-restricted-modules.js +0 -249
  372. package/packages/config-eslint/node_modules/eslint/lib/rules/no-restricted-properties.js +0 -233
  373. package/packages/config-eslint/node_modules/eslint/lib/rules/no-restricted-syntax.js +0 -74
  374. package/packages/config-eslint/node_modules/eslint/lib/rules/no-return-assign.js +0 -87
  375. package/packages/config-eslint/node_modules/eslint/lib/rules/no-return-await.js +0 -162
  376. package/packages/config-eslint/node_modules/eslint/lib/rules/no-script-url.js +0 -68
  377. package/packages/config-eslint/node_modules/eslint/lib/rules/no-self-assign.js +0 -186
  378. package/packages/config-eslint/node_modules/eslint/lib/rules/no-self-compare.js +0 -77
  379. package/packages/config-eslint/node_modules/eslint/lib/rules/no-sequences.js +0 -158
  380. package/packages/config-eslint/node_modules/eslint/lib/rules/no-setter-return.js +0 -224
  381. package/packages/config-eslint/node_modules/eslint/lib/rules/no-shadow-restricted-names.js +0 -113
  382. package/packages/config-eslint/node_modules/eslint/lib/rules/no-shadow.js +0 -695
  383. package/packages/config-eslint/node_modules/eslint/lib/rules/no-spaced-func.js +0 -105
  384. package/packages/config-eslint/node_modules/eslint/lib/rules/no-sparse-arrays.js +0 -68
  385. package/packages/config-eslint/node_modules/eslint/lib/rules/no-sync.js +0 -81
  386. package/packages/config-eslint/node_modules/eslint/lib/rules/no-tabs.js +0 -110
  387. package/packages/config-eslint/node_modules/eslint/lib/rules/no-template-curly-in-string.js +0 -45
  388. package/packages/config-eslint/node_modules/eslint/lib/rules/no-ternary.js +0 -38
  389. package/packages/config-eslint/node_modules/eslint/lib/rules/no-this-before-super.js +0 -365
  390. package/packages/config-eslint/node_modules/eslint/lib/rules/no-throw-literal.js +0 -46
  391. package/packages/config-eslint/node_modules/eslint/lib/rules/no-trailing-spaces.js +0 -227
  392. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unassigned-vars.js +0 -80
  393. package/packages/config-eslint/node_modules/eslint/lib/rules/no-undef-init.js +0 -101
  394. package/packages/config-eslint/node_modules/eslint/lib/rules/no-undef.js +0 -84
  395. package/packages/config-eslint/node_modules/eslint/lib/rules/no-undefined.js +0 -91
  396. package/packages/config-eslint/node_modules/eslint/lib/rules/no-underscore-dangle.js +0 -383
  397. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unexpected-multiline.js +0 -130
  398. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js +0 -367
  399. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unneeded-ternary.js +0 -232
  400. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unreachable-loop.js +0 -190
  401. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unreachable.js +0 -300
  402. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unsafe-finally.js +0 -119
  403. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unsafe-negation.js +0 -152
  404. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unsafe-optional-chaining.js +0 -221
  405. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unused-expressions.js +0 -227
  406. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unused-labels.js +0 -158
  407. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unused-private-class-members.js +0 -219
  408. package/packages/config-eslint/node_modules/eslint/lib/rules/no-unused-vars.js +0 -1746
  409. package/packages/config-eslint/node_modules/eslint/lib/rules/no-use-before-define.js +0 -453
  410. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-assignment.js +0 -658
  411. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-backreference.js +0 -263
  412. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-call.js +0 -95
  413. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-catch.js +0 -57
  414. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-computed-key.js +0 -204
  415. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-concat.js +0 -121
  416. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-constructor.js +0 -262
  417. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-escape.js +0 -406
  418. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-rename.js +0 -202
  419. package/packages/config-eslint/node_modules/eslint/lib/rules/no-useless-return.js +0 -401
  420. package/packages/config-eslint/node_modules/eslint/lib/rules/no-var.js +0 -375
  421. package/packages/config-eslint/node_modules/eslint/lib/rules/no-void.js +0 -69
  422. package/packages/config-eslint/node_modules/eslint/lib/rules/no-warning-comments.js +0 -209
  423. package/packages/config-eslint/node_modules/eslint/lib/rules/no-whitespace-before-property.js +0 -150
  424. package/packages/config-eslint/node_modules/eslint/lib/rules/no-with.js +0 -37
  425. package/packages/config-eslint/node_modules/eslint/lib/rules/nonblock-statement-body-position.js +0 -164
  426. package/packages/config-eslint/node_modules/eslint/lib/rules/object-curly-newline.js +0 -383
  427. package/packages/config-eslint/node_modules/eslint/lib/rules/object-curly-spacing.js +0 -369
  428. package/packages/config-eslint/node_modules/eslint/lib/rules/object-property-newline.js +0 -151
  429. package/packages/config-eslint/node_modules/eslint/lib/rules/object-shorthand.js +0 -652
  430. package/packages/config-eslint/node_modules/eslint/lib/rules/one-var-declaration-per-line.js +0 -117
  431. package/packages/config-eslint/node_modules/eslint/lib/rules/one-var.js +0 -717
  432. package/packages/config-eslint/node_modules/eslint/lib/rules/operator-assignment.js +0 -270
  433. package/packages/config-eslint/node_modules/eslint/lib/rules/operator-linebreak.js +0 -315
  434. package/packages/config-eslint/node_modules/eslint/lib/rules/padded-blocks.js +0 -366
  435. package/packages/config-eslint/node_modules/eslint/lib/rules/padding-line-between-statements.js +0 -612
  436. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-arrow-callback.js +0 -444
  437. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-const.js +0 -554
  438. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-destructuring.js +0 -332
  439. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-exponentiation-operator.js +0 -235
  440. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-named-capture-group.js +0 -197
  441. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-numeric-literals.js +0 -157
  442. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-object-has-own.js +0 -148
  443. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-object-spread.js +0 -319
  444. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js +0 -154
  445. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-reflect.js +0 -150
  446. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-regex-literals.js +0 -605
  447. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-rest-params.js +0 -125
  448. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-spread.js +0 -91
  449. package/packages/config-eslint/node_modules/eslint/lib/rules/prefer-template.js +0 -347
  450. package/packages/config-eslint/node_modules/eslint/lib/rules/preserve-caught-error.js +0 -535
  451. package/packages/config-eslint/node_modules/eslint/lib/rules/quote-props.js +0 -394
  452. package/packages/config-eslint/node_modules/eslint/lib/rules/quotes.js +0 -416
  453. package/packages/config-eslint/node_modules/eslint/lib/rules/radix.js +0 -199
  454. package/packages/config-eslint/node_modules/eslint/lib/rules/require-atomic-updates.js +0 -365
  455. package/packages/config-eslint/node_modules/eslint/lib/rules/require-await.js +0 -184
  456. package/packages/config-eslint/node_modules/eslint/lib/rules/require-unicode-regexp.js +0 -317
  457. package/packages/config-eslint/node_modules/eslint/lib/rules/require-yield.js +0 -86
  458. package/packages/config-eslint/node_modules/eslint/lib/rules/rest-spread-spacing.js +0 -150
  459. package/packages/config-eslint/node_modules/eslint/lib/rules/semi-spacing.js +0 -297
  460. package/packages/config-eslint/node_modules/eslint/lib/rules/semi-style.js +0 -218
  461. package/packages/config-eslint/node_modules/eslint/lib/rules/semi.js +0 -476
  462. package/packages/config-eslint/node_modules/eslint/lib/rules/sort-imports.js +0 -319
  463. package/packages/config-eslint/node_modules/eslint/lib/rules/sort-keys.js +0 -268
  464. package/packages/config-eslint/node_modules/eslint/lib/rules/sort-vars.js +0 -140
  465. package/packages/config-eslint/node_modules/eslint/lib/rules/space-before-blocks.js +0 -232
  466. package/packages/config-eslint/node_modules/eslint/lib/rules/space-before-function-paren.js +0 -202
  467. package/packages/config-eslint/node_modules/eslint/lib/rules/space-in-parens.js +0 -374
  468. package/packages/config-eslint/node_modules/eslint/lib/rules/space-infix-ops.js +0 -249
  469. package/packages/config-eslint/node_modules/eslint/lib/rules/space-unary-ops.js +0 -400
  470. package/packages/config-eslint/node_modules/eslint/lib/rules/spaced-comment.js +0 -447
  471. package/packages/config-eslint/node_modules/eslint/lib/rules/strict.js +0 -324
  472. package/packages/config-eslint/node_modules/eslint/lib/rules/switch-colon-spacing.js +0 -158
  473. package/packages/config-eslint/node_modules/eslint/lib/rules/symbol-description.js +0 -70
  474. package/packages/config-eslint/node_modules/eslint/lib/rules/template-curly-spacing.js +0 -168
  475. package/packages/config-eslint/node_modules/eslint/lib/rules/template-tag-spacing.js +0 -121
  476. package/packages/config-eslint/node_modules/eslint/lib/rules/unicode-bom.js +0 -73
  477. package/packages/config-eslint/node_modules/eslint/lib/rules/use-isnan.js +0 -268
  478. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/ast-utils.js +0 -2848
  479. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/char-source.js +0 -247
  480. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/fix-tracker.js +0 -125
  481. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/keywords.js +0 -67
  482. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/lazy-loading-rule-map.js +0 -118
  483. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/regular-expressions.js +0 -58
  484. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/unicode/index.js +0 -16
  485. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/unicode/is-combining-character.js +0 -13
  486. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/unicode/is-emoji-modifier.js +0 -13
  487. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/unicode/is-regional-indicator-symbol.js +0 -13
  488. package/packages/config-eslint/node_modules/eslint/lib/rules/utils/unicode/is-surrogate-pair.js +0 -14
  489. package/packages/config-eslint/node_modules/eslint/lib/rules/valid-typeof.js +0 -171
  490. package/packages/config-eslint/node_modules/eslint/lib/rules/vars-on-top.js +0 -165
  491. package/packages/config-eslint/node_modules/eslint/lib/rules/wrap-iife.js +0 -238
  492. package/packages/config-eslint/node_modules/eslint/lib/rules/wrap-regex.js +0 -91
  493. package/packages/config-eslint/node_modules/eslint/lib/rules/yield-star-spacing.js +0 -158
  494. package/packages/config-eslint/node_modules/eslint/lib/rules/yoda.js +0 -362
  495. package/packages/config-eslint/node_modules/eslint/lib/services/parser-service.js +0 -64
  496. package/packages/config-eslint/node_modules/eslint/lib/services/processor-service.js +0 -100
  497. package/packages/config-eslint/node_modules/eslint/lib/services/suppressions-service.js +0 -302
  498. package/packages/config-eslint/node_modules/eslint/lib/services/warning-service.js +0 -87
  499. package/packages/config-eslint/node_modules/eslint/lib/shared/ajv.js +0 -34
  500. package/packages/config-eslint/node_modules/eslint/lib/shared/assert.js +0 -21
  501. package/packages/config-eslint/node_modules/eslint/lib/shared/ast-utils.js +0 -30
  502. package/packages/config-eslint/node_modules/eslint/lib/shared/deep-merge-arrays.js +0 -62
  503. package/packages/config-eslint/node_modules/eslint/lib/shared/directives.js +0 -16
  504. package/packages/config-eslint/node_modules/eslint/lib/shared/flags.js +0 -89
  505. package/packages/config-eslint/node_modules/eslint/lib/shared/logging.js +0 -38
  506. package/packages/config-eslint/node_modules/eslint/lib/shared/naming.js +0 -109
  507. package/packages/config-eslint/node_modules/eslint/lib/shared/option-utils.js +0 -63
  508. package/packages/config-eslint/node_modules/eslint/lib/shared/relative-module-resolver.js +0 -28
  509. package/packages/config-eslint/node_modules/eslint/lib/shared/runtime-info.js +0 -177
  510. package/packages/config-eslint/node_modules/eslint/lib/shared/serialization.js +0 -78
  511. package/packages/config-eslint/node_modules/eslint/lib/shared/severity.js +0 -49
  512. package/packages/config-eslint/node_modules/eslint/lib/shared/stats.js +0 -30
  513. package/packages/config-eslint/node_modules/eslint/lib/shared/string-utils.js +0 -58
  514. package/packages/config-eslint/node_modules/eslint/lib/shared/text-table.js +0 -68
  515. package/packages/config-eslint/node_modules/eslint/lib/shared/translate-cli-options.js +0 -223
  516. package/packages/config-eslint/node_modules/eslint/lib/shared/traverser.js +0 -202
  517. package/packages/config-eslint/node_modules/eslint/lib/types/config-api.d.ts +0 -12
  518. package/packages/config-eslint/node_modules/eslint/lib/types/index.d.ts +0 -1475
  519. package/packages/config-eslint/node_modules/eslint/lib/types/rules.d.ts +0 -5603
  520. package/packages/config-eslint/node_modules/eslint/lib/types/universal.d.ts +0 -6
  521. package/packages/config-eslint/node_modules/eslint/lib/types/use-at-your-own-risk.d.ts +0 -34
  522. package/packages/config-eslint/node_modules/eslint/lib/universal.js +0 -10
  523. package/packages/config-eslint/node_modules/eslint/lib/unsupported-api.js +0 -21
  524. package/packages/config-eslint/node_modules/eslint/messages/all-matched-files-ignored.js +0 -21
  525. package/packages/config-eslint/node_modules/eslint/messages/config-file-missing.js +0 -16
  526. package/packages/config-eslint/node_modules/eslint/messages/config-plugin-missing.js +0 -14
  527. package/packages/config-eslint/node_modules/eslint/messages/config-serialize-function.js +0 -30
  528. package/packages/config-eslint/node_modules/eslint/messages/eslintrc-incompat.js +0 -117
  529. package/packages/config-eslint/node_modules/eslint/messages/eslintrc-plugins.js +0 -27
  530. package/packages/config-eslint/node_modules/eslint/messages/extend-config-missing.js +0 -13
  531. package/packages/config-eslint/node_modules/eslint/messages/failed-to-read-json.js +0 -11
  532. package/packages/config-eslint/node_modules/eslint/messages/file-not-found.js +0 -10
  533. package/packages/config-eslint/node_modules/eslint/messages/invalid-rule-options.js +0 -17
  534. package/packages/config-eslint/node_modules/eslint/messages/invalid-rule-severity.js +0 -13
  535. package/packages/config-eslint/node_modules/eslint/messages/no-config-found.js +0 -15
  536. package/packages/config-eslint/node_modules/eslint/messages/plugin-conflict.js +0 -22
  537. package/packages/config-eslint/node_modules/eslint/messages/plugin-invalid.js +0 -16
  538. package/packages/config-eslint/node_modules/eslint/messages/plugin-missing.js +0 -19
  539. package/packages/config-eslint/node_modules/eslint/messages/shared.js +0 -23
  540. package/packages/config-eslint/node_modules/eslint/messages/whitespace-found.js +0 -11
  541. package/packages/config-eslint/node_modules/eslint/package.json +0 -220
  542. package/packages/config-eslint/node_modules/eslint-visitor-keys/LICENSE +0 -201
  543. package/packages/config-eslint/node_modules/eslint-visitor-keys/README.md +0 -123
  544. package/packages/config-eslint/node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.cjs +0 -187
  545. package/packages/config-eslint/node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.d.cts +0 -28
  546. package/packages/config-eslint/node_modules/eslint-visitor-keys/dist/index.d.ts +0 -16
  547. package/packages/config-eslint/node_modules/eslint-visitor-keys/dist/visitor-keys.d.ts +0 -12
  548. package/packages/config-eslint/node_modules/eslint-visitor-keys/lib/index.js +0 -67
  549. package/packages/config-eslint/node_modules/eslint-visitor-keys/lib/visitor-keys.js +0 -118
  550. package/packages/config-eslint/node_modules/eslint-visitor-keys/package.json +0 -57
  551. package/packages/config-eslint/node_modules/espree/LICENSE +0 -25
  552. package/packages/config-eslint/node_modules/espree/README.md +0 -261
  553. package/packages/config-eslint/node_modules/espree/dist/espree.cjs +0 -1284
  554. package/packages/config-eslint/node_modules/espree/dist/espree.d.cts +0 -3
  555. package/packages/config-eslint/node_modules/espree/dist/espree.d.cts.map +0 -1
  556. package/packages/config-eslint/node_modules/espree/dist/espree.d.ts +0 -67
  557. package/packages/config-eslint/node_modules/espree/dist/espree.d.ts.map +0 -1
  558. package/packages/config-eslint/node_modules/espree/espree.js +0 -287
  559. package/packages/config-eslint/node_modules/espree/lib/espree.js +0 -493
  560. package/packages/config-eslint/node_modules/espree/lib/options.js +0 -176
  561. package/packages/config-eslint/node_modules/espree/lib/token-translator.js +0 -306
  562. package/packages/config-eslint/node_modules/espree/lib/types.js +0 -118
  563. package/packages/config-eslint/node_modules/espree/package.json +0 -70
  564. package/packages/config-eslint/node_modules/ignore/LICENSE-MIT +0 -21
  565. package/packages/config-eslint/node_modules/ignore/README.md +0 -412
  566. package/packages/config-eslint/node_modules/ignore/index.d.ts +0 -61
  567. package/packages/config-eslint/node_modules/ignore/index.js +0 -636
  568. package/packages/config-eslint/node_modules/ignore/legacy.js +0 -559
  569. package/packages/config-eslint/node_modules/ignore/package.json +0 -74
  570. package/packages/config-eslint/node_modules/json-schema-traverse/.eslintrc.yml +0 -27
  571. package/packages/config-eslint/node_modules/json-schema-traverse/.travis.yml +0 -8
  572. package/packages/config-eslint/node_modules/json-schema-traverse/LICENSE +0 -21
  573. package/packages/config-eslint/node_modules/json-schema-traverse/README.md +0 -83
  574. package/packages/config-eslint/node_modules/json-schema-traverse/index.js +0 -89
  575. package/packages/config-eslint/node_modules/json-schema-traverse/package.json +0 -43
  576. package/packages/config-eslint/node_modules/json-schema-traverse/spec/.eslintrc.yml +0 -6
  577. package/packages/config-eslint/node_modules/json-schema-traverse/spec/fixtures/schema.js +0 -125
  578. package/packages/config-eslint/node_modules/json-schema-traverse/spec/index.spec.js +0 -171
  579. package/packages/config-eslint/node_modules/minimatch/LICENSE.md +0 -55
  580. package/packages/config-eslint/node_modules/minimatch/README.md +0 -528
  581. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/assert-valid-pattern.d.ts +0 -2
  582. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/assert-valid-pattern.d.ts.map +0 -1
  583. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js +0 -14
  584. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js.map +0 -1
  585. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/ast.d.ts +0 -22
  586. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/ast.d.ts.map +0 -1
  587. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/ast.js +0 -846
  588. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/ast.js.map +0 -1
  589. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/brace-expressions.d.ts +0 -8
  590. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/brace-expressions.d.ts.map +0 -1
  591. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/brace-expressions.js +0 -150
  592. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/brace-expressions.js.map +0 -1
  593. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/escape.d.ts +0 -15
  594. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/escape.d.ts.map +0 -1
  595. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/escape.js +0 -30
  596. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/escape.js.map +0 -1
  597. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/index.d.ts +0 -174
  598. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/index.d.ts.map +0 -1
  599. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/index.js +0 -1121
  600. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/index.js.map +0 -1
  601. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/package.json +0 -3
  602. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/unescape.d.ts +0 -22
  603. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/unescape.d.ts.map +0 -1
  604. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/unescape.js +0 -38
  605. package/packages/config-eslint/node_modules/minimatch/dist/commonjs/unescape.js.map +0 -1
  606. package/packages/config-eslint/node_modules/minimatch/dist/esm/assert-valid-pattern.d.ts +0 -2
  607. package/packages/config-eslint/node_modules/minimatch/dist/esm/assert-valid-pattern.d.ts.map +0 -1
  608. package/packages/config-eslint/node_modules/minimatch/dist/esm/assert-valid-pattern.js +0 -10
  609. package/packages/config-eslint/node_modules/minimatch/dist/esm/assert-valid-pattern.js.map +0 -1
  610. package/packages/config-eslint/node_modules/minimatch/dist/esm/ast.d.ts +0 -22
  611. package/packages/config-eslint/node_modules/minimatch/dist/esm/ast.d.ts.map +0 -1
  612. package/packages/config-eslint/node_modules/minimatch/dist/esm/ast.js +0 -842
  613. package/packages/config-eslint/node_modules/minimatch/dist/esm/ast.js.map +0 -1
  614. package/packages/config-eslint/node_modules/minimatch/dist/esm/brace-expressions.d.ts +0 -8
  615. package/packages/config-eslint/node_modules/minimatch/dist/esm/brace-expressions.d.ts.map +0 -1
  616. package/packages/config-eslint/node_modules/minimatch/dist/esm/brace-expressions.js +0 -146
  617. package/packages/config-eslint/node_modules/minimatch/dist/esm/brace-expressions.js.map +0 -1
  618. package/packages/config-eslint/node_modules/minimatch/dist/esm/escape.d.ts +0 -15
  619. package/packages/config-eslint/node_modules/minimatch/dist/esm/escape.d.ts.map +0 -1
  620. package/packages/config-eslint/node_modules/minimatch/dist/esm/escape.js +0 -26
  621. package/packages/config-eslint/node_modules/minimatch/dist/esm/escape.js.map +0 -1
  622. package/packages/config-eslint/node_modules/minimatch/dist/esm/index.d.ts +0 -174
  623. package/packages/config-eslint/node_modules/minimatch/dist/esm/index.d.ts.map +0 -1
  624. package/packages/config-eslint/node_modules/minimatch/dist/esm/index.js +0 -1108
  625. package/packages/config-eslint/node_modules/minimatch/dist/esm/index.js.map +0 -1
  626. package/packages/config-eslint/node_modules/minimatch/dist/esm/package.json +0 -3
  627. package/packages/config-eslint/node_modules/minimatch/dist/esm/unescape.d.ts +0 -22
  628. package/packages/config-eslint/node_modules/minimatch/dist/esm/unescape.d.ts.map +0 -1
  629. package/packages/config-eslint/node_modules/minimatch/dist/esm/unescape.js +0 -34
  630. package/packages/config-eslint/node_modules/minimatch/dist/esm/unescape.js.map +0 -1
  631. package/packages/config-eslint/node_modules/minimatch/package.json +0 -67
@@ -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.isSpaceBetween(
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
- };