@alexlit/lint-kit 176.0.1 → 177.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. package/package.json +1 -1
  2. package/packages/config-stylelint/package.json +5 -5
  3. package/packages/config-stylelint/plugins/color-format.js +1 -5
  4. package/packages/config-stylelint/plugins/logical-css.js +1 -4
  5. package/packages/config-eslint/node_modules/@eslint/core/LICENSE +0 -201
  6. package/packages/config-eslint/node_modules/@eslint/core/README.md +0 -29
  7. package/packages/config-eslint/node_modules/@eslint/core/dist/cjs/types.d.cts +0 -1179
  8. package/packages/config-eslint/node_modules/@eslint/core/dist/esm/types.d.ts +0 -1179
  9. package/packages/config-eslint/node_modules/@eslint/core/package.json +0 -49
  10. package/packages/config-eslint/node_modules/@eslint/plugin-kit/LICENSE +0 -201
  11. package/packages/config-eslint/node_modules/@eslint/plugin-kit/README.md +0 -273
  12. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/cjs/index.cjs +0 -884
  13. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/cjs/index.d.cts +0 -328
  14. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/cjs/types.cts +0 -7
  15. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/esm/index.d.ts +0 -328
  16. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/esm/index.js +0 -879
  17. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/esm/types.d.ts +0 -6
  18. package/packages/config-eslint/node_modules/@eslint/plugin-kit/dist/esm/types.ts +0 -7
  19. package/packages/config-eslint/node_modules/@eslint/plugin-kit/package.json +0 -61
  20. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/configs/flat-config-base.js +0 -9
  21. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/index.d.ts +0 -17
  22. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/index.js +0 -91
  23. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/license +0 -9
  24. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/node_modules/globals/globals.json +0 -3345
  25. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/node_modules/globals/index.d.ts +0 -3452
  26. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/node_modules/globals/index.js +0 -2
  27. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/node_modules/globals/license +0 -9
  28. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/node_modules/globals/package.json +0 -117
  29. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/node_modules/globals/readme.md +0 -42
  30. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/package.json +0 -128
  31. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/readme.md +0 -261
  32. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/call-or-new-expression.js +0 -120
  33. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/function-types.js +0 -7
  34. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/index.js +0 -30
  35. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-arrow-function-body.js +0 -3
  36. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-directive.js +0 -4
  37. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-empty-array-expression.js +0 -5
  38. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-empty-node.js +0 -17
  39. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-expression-statement.js +0 -7
  40. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-function.js +0 -5
  41. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-member-expression.js +0 -98
  42. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-method-call.js +0 -62
  43. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-negative-one.js +0 -8
  44. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-reference-identifier.js +0 -159
  45. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-static-require.js +0 -10
  46. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-tagged-template-literal.js +0 -24
  47. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/is-undefined.js +0 -3
  48. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/ast/literal.js +0 -24
  49. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/better-regex.js +0 -146
  50. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/catch-error-name.js +0 -138
  51. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/consistent-assert.js +0 -98
  52. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/consistent-date-clone.js +0 -54
  53. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/consistent-destructuring.js +0 -168
  54. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/consistent-empty-array-spread.js +0 -127
  55. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/consistent-existence-index-check.js +0 -137
  56. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/consistent-function-scoping.js +0 -265
  57. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/custom-error-definition.js +0 -218
  58. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/empty-brace-spaces.js +0 -62
  59. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/error-message.js +0 -98
  60. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/escape-case.js +0 -86
  61. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/expiring-todo-comments.js +0 -584
  62. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/explicit-length-check.js +0 -236
  63. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/filename-case.js +0 -276
  64. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/add-parenthesizes-to-return-or-throw-expression.js +0 -29
  65. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/append-argument.js +0 -30
  66. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/extend-fix-range.js +0 -11
  67. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/fix-space-around-keywords.js +0 -43
  68. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/index.js +0 -23
  69. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-argument.js +0 -40
  70. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-expression-statement.js +0 -34
  71. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-method-call.js +0 -28
  72. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-object-property.js +0 -21
  73. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-parentheses.js +0 -19
  74. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-spaces-after.js +0 -22
  75. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/remove-specifier.js +0 -59
  76. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/rename-variable.js +0 -8
  77. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/replace-argument.js +0 -17
  78. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/replace-member-expression-property.js +0 -25
  79. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/replace-node-or-token-and-spaces-before.js +0 -31
  80. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/replace-reference-identifier.js +0 -32
  81. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/replace-string-raw.js +0 -12
  82. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/replace-template-element.js +0 -10
  83. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/switch-call-expression-to-new-expression.js +0 -29
  84. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/fix/switch-new-expression-to-call-expression.js +0 -42
  85. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/import-style.js +0 -375
  86. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/index.js +0 -143
  87. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/new-for-builtins.js +0 -112
  88. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-abusive-eslint-disable.js +0 -63
  89. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-accessor-recursion.js +0 -160
  90. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-anonymous-default-export.js +0 -210
  91. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-array-callback-reference.js +0 -285
  92. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-array-for-each.js +0 -496
  93. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-array-method-this-argument.js +0 -223
  94. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-array-reduce.js +0 -128
  95. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-array-reverse.js +0 -6
  96. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-array-sort.js +0 -6
  97. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-await-expression-member.js +0 -85
  98. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-await-in-promise-methods.js +0 -69
  99. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-console-spaces.js +0 -89
  100. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-document-cookie.js +0 -27
  101. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-empty-file.js +0 -58
  102. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-for-loop.js +0 -419
  103. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-hex-escape.js +0 -54
  104. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-immediate-mutation.js +0 -778
  105. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-instanceof-builtins.js +0 -216
  106. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-invalid-fetch-options.js +0 -112
  107. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-invalid-remove-event-listener.js +0 -61
  108. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-keyword-prefix.js +0 -202
  109. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-lonely-if.js +0 -155
  110. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-magic-array-flat-depth.js +0 -55
  111. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-named-default.js +0 -101
  112. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-negated-condition.js +0 -145
  113. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-negation-in-equality-check.js +0 -99
  114. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-nested-ternary.js +0 -60
  115. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-new-array.js +0 -106
  116. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-new-buffer.js +0 -100
  117. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-null.js +0 -153
  118. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-object-as-default-parameter.js +0 -52
  119. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-process-exit.js +0 -106
  120. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-single-promise-in-promise-methods.js +0 -179
  121. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-static-only-class.js +0 -226
  122. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-thenable.js +0 -194
  123. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-this-assignment.js +0 -40
  124. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-typeof-undefined.js +0 -146
  125. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unnecessary-array-flat-depth.js +0 -49
  126. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unnecessary-array-splice-count.js +0 -23
  127. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unnecessary-await.js +0 -110
  128. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unnecessary-polyfills.js +0 -174
  129. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unnecessary-slice-end.js +0 -22
  130. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unreadable-array-destructuring.js +0 -85
  131. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unreadable-iife.js +0 -43
  132. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-unused-properties.js +0 -240
  133. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-collection-argument.js +0 -101
  134. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-error-capture-stack-trace.js +0 -146
  135. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-fallback-in-spread.js +0 -66
  136. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-length-check.js +0 -150
  137. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-promise-resolve-reject.js +0 -210
  138. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-spread.js +0 -389
  139. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-switch-case.js +0 -59
  140. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-useless-undefined.js +0 -275
  141. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/no-zero-fractions.js +0 -81
  142. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/number-literal-case.js +0 -82
  143. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/numeric-separators-style.js +0 -189
  144. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-add-event-listener.js +0 -191
  145. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-array-find.js +0 -458
  146. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-array-flat-map.js +0 -86
  147. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-array-flat.js +0 -279
  148. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-array-index-of.js +0 -34
  149. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-array-some.js +0 -219
  150. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-at.js +0 -380
  151. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-bigint-literals.js +0 -129
  152. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-blob-reading-methods.js +0 -47
  153. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-class-fields.js +0 -158
  154. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-classlist-toggle.js +0 -255
  155. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-code-point.js +0 -56
  156. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-date-now.js +0 -133
  157. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-default-parameters.js +0 -218
  158. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-dom-node-append.js +0 -50
  159. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-dom-node-dataset.js +0 -135
  160. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-dom-node-remove.js +0 -124
  161. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-dom-node-text-content.js +0 -77
  162. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-event-target.js +0 -119
  163. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-export-from.js +0 -367
  164. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-global-this.js +0 -222
  165. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-import-meta-properties.js +0 -320
  166. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-includes.js +0 -111
  167. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-json-parse-buffer.js +0 -161
  168. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-keyboard-event-key.js +0 -188
  169. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-logical-operator-over-ternary.js +0 -162
  170. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-math-min-max.js +0 -205
  171. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-math-trunc.js +0 -111
  172. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-modern-dom-apis.js +0 -145
  173. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-modern-math-apis.js +0 -210
  174. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-module.js +0 -377
  175. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-native-coercion-functions.js +0 -187
  176. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-negative-index.js +0 -211
  177. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-node-protocol.js +0 -86
  178. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-number-properties.js +0 -142
  179. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-object-from-entries.js +0 -256
  180. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-optional-catch-binding.js +0 -77
  181. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-prototype-methods.js +0 -162
  182. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-query-selector.js +0 -170
  183. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-reflect-apply.js +0 -99
  184. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-regexp-test.js +0 -155
  185. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-response-static-json.js +0 -85
  186. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-set-has.js +0 -181
  187. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-set-size.js +0 -106
  188. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-single-call.js +0 -188
  189. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-spread.js +0 -521
  190. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-string-raw.js +0 -149
  191. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-string-replace-all.js +0 -180
  192. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-string-slice.js +0 -180
  193. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-string-starts-ends-with.js +0 -201
  194. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-string-trim-start-end.js +0 -46
  195. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-structured-clone.js +0 -149
  196. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-switch.js +0 -357
  197. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-ternary.js +0 -288
  198. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-top-level-await.js +0 -154
  199. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prefer-type-error.js +0 -169
  200. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/prevent-abbreviations.js +0 -655
  201. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/relative-url-style.js +0 -171
  202. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/require-array-join-separator.js +0 -65
  203. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/require-module-attributes.js +0 -120
  204. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/require-module-specifiers.js +0 -158
  205. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/require-number-to-fixed-digits-argument.js +0 -55
  206. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/require-post-message-target-origin.js +0 -74
  207. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/get-documentation-url.js +0 -9
  208. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/index.js +0 -9
  209. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/to-eslint-create.js +0 -51
  210. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/to-eslint-listener.js +0 -40
  211. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/to-eslint-problem.js +0 -38
  212. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/to-eslint-rule-fixer.js +0 -49
  213. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/to-eslint-rule.js +0 -38
  214. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/to-eslint-rules.js +0 -13
  215. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/unicorn-context.js +0 -36
  216. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/unicorn-listeners.js +0 -65
  217. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/rule/utilities.js +0 -27
  218. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/abbreviations.js +0 -270
  219. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/builtin-errors.js +0 -14
  220. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/dom-events.js +0 -275
  221. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/event-keys.js +0 -54
  222. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/negative-index.js +0 -52
  223. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/no-array-mutate-rule.js +0 -139
  224. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/no-unnecessary-length-or-infinity-rule.js +0 -80
  225. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/package-json.js +0 -42
  226. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/simple-array-search-rule.js +0 -126
  227. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/shared/typed-array.js +0 -17
  228. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/string-content.js +0 -192
  229. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/switch-case-braces.js +0 -114
  230. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/template-indent.js +0 -219
  231. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/text-encoding-identifier-case.js +0 -130
  232. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/throw-new-error.js +0 -60
  233. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/array-or-object-prototype-property.js +0 -57
  234. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/assert-token.js +0 -29
  235. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/boolean.js +0 -88
  236. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/builtins.js +0 -30
  237. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/cartesian-product-samples.js +0 -22
  238. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/create-deprecated-rules.js +0 -29
  239. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/escape-string.js +0 -24
  240. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/escape-template-element-raw.js +0 -6
  241. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-ancestor.js +0 -15
  242. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-available-variable-name.js +0 -147
  243. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-builtin-rule.js +0 -5
  244. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-call-expression-arguments-text.js +0 -36
  245. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-call-or-new-expression-tokens.js +0 -67
  246. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-class-head-location.js +0 -22
  247. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-documentation-url.js +0 -9
  248. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-indent-string.js +0 -18
  249. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-references.js +0 -5
  250. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-scopes.js +0 -12
  251. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-sibling-node.js +0 -38
  252. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-switch-case-head-location.js +0 -22
  253. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-token-store.js +0 -24
  254. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/get-variable-identifiers.js +0 -7
  255. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/global-reference-tracker.js +0 -68
  256. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/has-optional-chain-element.js +0 -17
  257. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/has-same-range.js +0 -7
  258. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/index.js +0 -59
  259. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-function-self-used-inside.js +0 -39
  260. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-left-hand-side.js +0 -20
  261. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-logical-expression.js +0 -14
  262. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-method-named.js +0 -7
  263. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-new-expression-with-parentheses.js +0 -28
  264. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-node-matches.js +0 -58
  265. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-node-value-not-dom-node.js +0 -20
  266. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-node-value-not-function.js +0 -40
  267. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-number.js +0 -224
  268. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-object-method.js +0 -10
  269. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-on-same-line.js +0 -7
  270. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-same-identifier.js +0 -5
  271. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-same-reference.js +0 -170
  272. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-shorthand-export-local.js +0 -8
  273. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-shorthand-import-local.js +0 -8
  274. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-shorthand-property-assignment-pattern-left.js +0 -8
  275. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-shorthand-property-value.js +0 -6
  276. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-unresolved-variable.js +0 -14
  277. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/is-value-not-usable.js +0 -5
  278. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/needs-semicolon.js +0 -118
  279. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/numeric.js +0 -49
  280. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/parentheses.js +0 -71
  281. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/resolve-variable-name.js +0 -18
  282. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/rule.js +0 -27
  283. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-await-expression-argument.js +0 -17
  284. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-call-expression-callee.js +0 -18
  285. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-conditional-expression-child.js +0 -13
  286. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-expression-statement-expression.js +0 -22
  287. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-logical-expression-child.js +0 -43
  288. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-member-expression-object.js +0 -47
  289. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-new-expression-callee.js +0 -28
  290. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/should-add-parentheses-to-unary-expression.js +0 -24
  291. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/singular.js +0 -16
  292. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/string-cases.js +0 -2
  293. package/packages/config-eslint/node_modules/eslint-plugin-unicorn/rules/utils/to-location.js +0 -25
@@ -1,389 +0,0 @@
1
- import {isCommaToken} from '@eslint-community/eslint-utils';
2
- import typedArray from './shared/typed-array.js';
3
- import {removeParentheses, fixSpaceAroundKeyword, addParenthesizesToReturnOrThrowExpression} from './fix/index.js';
4
- import {isParenthesized, isOnSameLine} from './utils/index.js';
5
- import {isNewExpression, isMethodCall, isCallOrNewExpression} from './ast/index.js';
6
-
7
- const SPREAD_IN_LIST = 'spread-in-list';
8
- const ITERABLE_TO_ARRAY = 'iterable-to-array';
9
- const ITERABLE_TO_ARRAY_IN_FOR_OF = 'iterable-to-array-in-for-of';
10
- const ITERABLE_TO_ARRAY_IN_YIELD_STAR = 'iterable-to-array-in-yield-star';
11
- const CLONE_ARRAY = 'clone-array';
12
- const messages = {
13
- [SPREAD_IN_LIST]: 'Spread an {{argumentType}} literal in {{parentDescription}} is unnecessary.',
14
- [ITERABLE_TO_ARRAY]: '`{{parentDescription}}` accepts iterable as argument, it\'s unnecessary to convert to an array.',
15
- [ITERABLE_TO_ARRAY_IN_FOR_OF]: '`for…of` can iterate over iterable, it\'s unnecessary to convert to an array.',
16
- [ITERABLE_TO_ARRAY_IN_YIELD_STAR]: '`yield*` can delegate iterable, it\'s unnecessary to convert to an array.',
17
- [CLONE_ARRAY]: 'Unnecessarily cloning an array.',
18
- };
19
-
20
- const isSingleArraySpread = node =>
21
- node.type === 'ArrayExpression'
22
- && node.elements.length === 1
23
- && node.elements[0]?.type === 'SpreadElement';
24
-
25
- const parentDescriptions = {
26
- ArrayExpression: 'array literal',
27
- ObjectExpression: 'object literal',
28
- CallExpression: 'arguments',
29
- NewExpression: 'arguments',
30
- };
31
-
32
- function getCommaTokens(arrayExpression, sourceCode) {
33
- let startToken = sourceCode.getFirstToken(arrayExpression);
34
-
35
- return arrayExpression.elements.map((element, index, elements) => {
36
- if (index === elements.length - 1) {
37
- const penultimateToken = sourceCode.getLastToken(arrayExpression, {skip: 1});
38
- if (isCommaToken(penultimateToken)) {
39
- return penultimateToken;
40
- }
41
-
42
- return;
43
- }
44
-
45
- const commaToken = sourceCode.getTokenAfter(element || startToken, isCommaToken);
46
- startToken = commaToken;
47
- return commaToken;
48
- });
49
- }
50
-
51
- function * unwrapSingleArraySpread(fixer, arrayExpression, context) {
52
- const {sourceCode} = context;
53
- const [
54
- openingBracketToken,
55
- spreadToken,
56
- thirdToken,
57
- ] = sourceCode.getFirstTokens(arrayExpression, 3);
58
-
59
- // `[...value]`
60
- // ^
61
- yield fixer.remove(openingBracketToken);
62
-
63
- // `[...value]`
64
- // ^^^
65
- yield fixer.remove(spreadToken);
66
-
67
- const [
68
- commaToken,
69
- closingBracketToken,
70
- ] = sourceCode.getLastTokens(arrayExpression, 2);
71
-
72
- // `[...value]`
73
- // ^
74
- yield fixer.remove(closingBracketToken);
75
-
76
- // `[...value,]`
77
- // ^
78
- if (isCommaToken(commaToken)) {
79
- yield fixer.remove(commaToken);
80
- }
81
-
82
- /*
83
- ```js
84
- function foo() {
85
- return [
86
- ...value,
87
- ];
88
- }
89
- ```
90
- */
91
- const {parent} = arrayExpression;
92
- if (
93
- (parent.type === 'ReturnStatement' || parent.type === 'ThrowStatement')
94
- && parent.argument === arrayExpression
95
- && !isOnSameLine(openingBracketToken, thirdToken, context)
96
- && !isParenthesized(arrayExpression, sourceCode)
97
- ) {
98
- yield addParenthesizesToReturnOrThrowExpression(fixer, parent, context);
99
- return;
100
- }
101
-
102
- yield fixSpaceAroundKeyword(fixer, arrayExpression, context);
103
- }
104
-
105
- /** @param {import('eslint').Rule.RuleContext} context */
106
- const create = context => {
107
- const {sourceCode} = context;
108
-
109
- // Useless spread in list
110
- context.on(['ArrayExpression', 'ObjectExpression'], node => {
111
- if (!(
112
- node.parent.type === 'SpreadElement'
113
- && node.parent.argument === node
114
- && (
115
- (
116
- node.type === 'ObjectExpression'
117
- && node.parent.parent.type === 'ObjectExpression'
118
- && node.parent.parent.properties.includes(node.parent)
119
- )
120
- || (
121
- node.type === 'ArrayExpression'
122
- && (
123
- (
124
- node.parent.parent.type === 'ArrayExpression'
125
- && node.parent.parent.elements.includes(node.parent)
126
- )
127
- || (
128
- isCallOrNewExpression(node.parent.parent)
129
- && node.parent.parent.arguments.includes(node.parent)
130
- )
131
- )
132
- )
133
- )
134
- )) {
135
- return;
136
- }
137
-
138
- const spreadObject = node;
139
- const spreadElement = spreadObject.parent;
140
- const spreadToken = sourceCode.getFirstToken(spreadElement);
141
- const parentType = spreadElement.parent.type;
142
-
143
- return {
144
- node: spreadToken,
145
- messageId: SPREAD_IN_LIST,
146
- data: {
147
- argumentType: spreadObject.type === 'ArrayExpression' ? 'array' : 'object',
148
- parentDescription: parentDescriptions[parentType],
149
- },
150
- /** @param {import('eslint').Rule.RuleFixer} fixer */
151
- * fix(fixer) {
152
- // `[...[foo]]`
153
- // ^^^
154
- yield fixer.remove(spreadToken);
155
-
156
- // `[...(( [foo] ))]`
157
- // ^^ ^^
158
- yield removeParentheses(spreadObject, fixer, context);
159
-
160
- // `[...[foo]]`
161
- // ^
162
- const firstToken = sourceCode.getFirstToken(spreadObject);
163
- yield fixer.remove(firstToken);
164
-
165
- const [
166
- penultimateToken,
167
- lastToken,
168
- ] = sourceCode.getLastTokens(spreadObject, 2);
169
-
170
- // `[...[foo]]`
171
- // ^
172
- yield fixer.remove(lastToken);
173
-
174
- // `[...[foo,]]`
175
- // ^
176
- if (isCommaToken(penultimateToken)) {
177
- yield fixer.remove(penultimateToken);
178
- }
179
-
180
- // `[...[], 1]`
181
- // ^
182
- if (
183
- (node.type === 'ArrayExpression' && node.elements.length === 0)
184
- || (node.type === 'ObjectExpression' && node.properties.length === 0)
185
- ) {
186
- const nextToken = sourceCode.getTokenAfter(spreadElement);
187
- if (isCommaToken(nextToken)) {
188
- yield fixer.remove(nextToken);
189
- }
190
- }
191
-
192
- if (parentType !== 'CallExpression' && parentType !== 'NewExpression') {
193
- return;
194
- }
195
-
196
- const commaTokens = getCommaTokens(spreadObject, sourceCode);
197
- for (const [index, commaToken] of commaTokens.entries()) {
198
- if (spreadObject.elements[index]) {
199
- continue;
200
- }
201
-
202
- // `call(...[foo, , bar])`
203
- // ^ Replace holes with `undefined`
204
- yield fixer.insertTextBefore(commaToken, 'undefined');
205
- }
206
- },
207
- };
208
- });
209
-
210
- // Useless iterable to array
211
- context.on('ArrayExpression', arrayExpression => {
212
- if (!isSingleArraySpread(arrayExpression)) {
213
- return;
214
- }
215
-
216
- const {parent} = arrayExpression;
217
- if (!(
218
- (parent.type === 'ForOfStatement' && parent.right === arrayExpression)
219
- || (parent.type === 'YieldExpression' && parent.delegate && parent.argument === arrayExpression)
220
- || (
221
- (
222
- isNewExpression(parent, {names: ['Map', 'WeakMap', 'Set', 'WeakSet'], argumentsLength: 1})
223
- || isNewExpression(parent, {names: typedArray, minimumArguments: 1})
224
- || isMethodCall(parent, {
225
- object: 'Promise',
226
- methods: ['all', 'allSettled', 'any', 'race'],
227
- argumentsLength: 1,
228
- optionalCall: false,
229
- optionalMember: false,
230
- })
231
- || isMethodCall(parent, {
232
- objects: ['Array', ...typedArray],
233
- method: 'from',
234
- argumentsLength: 1,
235
- optionalCall: false,
236
- optionalMember: false,
237
- })
238
- || isMethodCall(parent, {
239
- object: 'Object',
240
- method: 'fromEntries',
241
- argumentsLength: 1,
242
- optionalCall: false,
243
- optionalMember: false,
244
- })
245
- )
246
- && parent.arguments[0] === arrayExpression
247
- )
248
- )) {
249
- return;
250
- }
251
-
252
- let parentDescription = '';
253
- let messageId = ITERABLE_TO_ARRAY;
254
- switch (parent.type) {
255
- case 'ForOfStatement': {
256
- messageId = ITERABLE_TO_ARRAY_IN_FOR_OF;
257
- break;
258
- }
259
-
260
- case 'YieldExpression': {
261
- messageId = ITERABLE_TO_ARRAY_IN_YIELD_STAR;
262
- break;
263
- }
264
-
265
- case 'NewExpression': {
266
- parentDescription = `new ${parent.callee.name}(…)`;
267
- break;
268
- }
269
-
270
- case 'CallExpression': {
271
- parentDescription = `${parent.callee.object.name}.${parent.callee.property.name}(…)`;
272
- break;
273
- }
274
- // No default
275
- }
276
-
277
- return {
278
- node: arrayExpression,
279
- messageId,
280
- data: {parentDescription},
281
- fix: fixer => unwrapSingleArraySpread(fixer, arrayExpression, context),
282
- };
283
- });
284
-
285
- // Useless array clone
286
- context.on('ArrayExpression', arrayExpression => {
287
- if (!isSingleArraySpread(arrayExpression)) {
288
- return;
289
- }
290
-
291
- const node = arrayExpression.elements[0].argument;
292
- if (!(
293
- // Array methods returns a new array
294
- isMethodCall(node, {
295
- methods: [
296
- 'concat',
297
- 'copyWithin',
298
- 'filter',
299
- 'flat',
300
- 'flatMap',
301
- 'map',
302
- 'slice',
303
- 'splice',
304
- 'toReversed',
305
- 'toSorted',
306
- 'toSpliced',
307
- 'with',
308
- ],
309
- optionalCall: false,
310
- optionalMember: false,
311
- })
312
- // `String#split()`
313
- || isMethodCall(node, {
314
- method: 'split',
315
- optionalCall: false,
316
- optionalMember: false,
317
- })
318
- // `Object.keys()` and `Object.values()`
319
- || isMethodCall(node, {
320
- object: 'Object',
321
- methods: ['keys', 'values'],
322
- argumentsLength: 1,
323
- optionalCall: false,
324
- optionalMember: false,
325
- })
326
- // `await Promise.all()` and `await Promise.allSettled`
327
- || (
328
- node.type === 'AwaitExpression'
329
- && isMethodCall(node.argument, {
330
- object: 'Promise',
331
- methods: ['all', 'allSettled'],
332
- argumentsLength: 1,
333
- optionalCall: false,
334
- optionalMember: false,
335
- })
336
- )
337
- // `Array.from()`, `Array.of()`
338
- || isMethodCall(node, {
339
- object: 'Array',
340
- methods: ['from', 'of'],
341
- optionalCall: false,
342
- optionalMember: false,
343
- })
344
- // `new Array()`
345
- || isNewExpression(node, {name: 'Array'})
346
- )) {
347
- return;
348
- }
349
-
350
- const problem = {
351
- node: arrayExpression,
352
- messageId: CLONE_ARRAY,
353
- };
354
-
355
- if (
356
- // `[...new Array(1)]` -> `new Array(1)` is not safe to fix since there are holes
357
- isNewExpression(node, {name: 'Array'})
358
- // `[...foo.slice(1)]` -> `foo.slice(1)` is not safe to fix since `foo` can be a string
359
- || (
360
- node.type === 'CallExpression'
361
- && node.callee.type === 'MemberExpression'
362
- && node.callee.property.type === 'Identifier'
363
- && node.callee.property.name === 'slice'
364
- )
365
- ) {
366
- return problem;
367
- }
368
-
369
- return Object.assign(problem, {
370
- fix: fixer => unwrapSingleArraySpread(fixer, arrayExpression, context),
371
- });
372
- });
373
- };
374
-
375
- /** @type {import('eslint').Rule.RuleModule} */
376
- const config = {
377
- create,
378
- meta: {
379
- type: 'suggestion',
380
- docs: {
381
- description: 'Disallow unnecessary spread.',
382
- recommended: 'unopinionated',
383
- },
384
- fixable: 'code',
385
- messages,
386
- },
387
- };
388
-
389
- export default config;
@@ -1,59 +0,0 @@
1
- import {isEmptyNode} from './ast/index.js';
2
- import getSwitchCaseHeadLocation from './utils/get-switch-case-head-location.js';
3
-
4
- const MESSAGE_ID_ERROR = 'no-useless-switch-case/error';
5
- const MESSAGE_ID_SUGGESTION = 'no-useless-switch-case/suggestion';
6
- const messages = {
7
- [MESSAGE_ID_ERROR]: 'Useless case in switch statement.',
8
- [MESSAGE_ID_SUGGESTION]: 'Remove this case.',
9
- };
10
-
11
- const isEmptySwitchCase = node => node.consequent.every(node => isEmptyNode(node));
12
-
13
- /** @param {import('eslint').Rule.RuleContext} context */
14
- const create = context => ({
15
- * SwitchStatement(switchStatement) {
16
- const {cases} = switchStatement;
17
-
18
- // We only check cases where the last case is the `default` case
19
- if (cases.length < 2 || cases.at(-1).test !== null) {
20
- return;
21
- }
22
-
23
- for (let index = cases.length - 2; index >= 0; index--) {
24
- const node = cases[index];
25
- if (!isEmptySwitchCase(node)) {
26
- break;
27
- }
28
-
29
- yield {
30
- node,
31
- loc: getSwitchCaseHeadLocation(node, context),
32
- messageId: MESSAGE_ID_ERROR,
33
- suggest: [
34
- {
35
- messageId: MESSAGE_ID_SUGGESTION,
36
- /** @param {import('eslint').Rule.RuleFixer} fixer */
37
- fix: fixer => fixer.remove(node),
38
- },
39
- ],
40
- };
41
- }
42
- },
43
- });
44
-
45
- /** @type {import('eslint').Rule.RuleModule} */
46
- const config = {
47
- create,
48
- meta: {
49
- type: 'suggestion',
50
- docs: {
51
- description: 'Disallow useless case in switch statements.',
52
- recommended: 'unopinionated',
53
- },
54
- hasSuggestions: true,
55
- messages,
56
- },
57
- };
58
-
59
- export default config;
@@ -1,275 +0,0 @@
1
- import {removeArgument, replaceNodeOrTokenAndSpacesBefore} from './fix/index.js';
2
- import {isUndefined, isFunction} from './ast/index.js';
3
-
4
- const messageId = 'no-useless-undefined';
5
- const messages = {
6
- [messageId]: 'Do not use useless `undefined`.',
7
- };
8
-
9
- const compareFunctionNames = new Set([
10
- 'is',
11
- 'equal',
12
- 'notEqual',
13
- 'strictEqual',
14
- 'notStrictEqual',
15
- 'propertyVal',
16
- 'notPropertyVal',
17
- 'not',
18
- 'include',
19
- 'property',
20
- 'toBe',
21
- 'toHaveBeenCalledWith',
22
- 'toContain',
23
- 'toContainEqual',
24
- 'toEqual',
25
- 'same',
26
- 'notSame',
27
- 'strictSame',
28
- 'strictNotSame',
29
- ]);
30
- const shouldIgnore = node => {
31
- let name;
32
-
33
- if (node.type === 'Identifier') {
34
- name = node.name;
35
- } else if (
36
- node.type === 'MemberExpression'
37
- && node.computed === false
38
- && node.property.type === 'Identifier'
39
- ) {
40
- name = node.property.name;
41
- }
42
-
43
- return compareFunctionNames.has(name)
44
- // `array.push(undefined)`
45
- || name === 'push'
46
- // `array.unshift(undefined)`
47
- || name === 'unshift'
48
- // `array.includes(undefined)`
49
- || name === 'includes'
50
-
51
- // `set.add(undefined)`
52
- || name === 'add'
53
- // `set.has(undefined)`
54
- || name === 'has'
55
- // `set.delete(undefined)`
56
- || name === 'delete'
57
-
58
- // `map.set(foo, undefined)`
59
- || name === 'set'
60
-
61
- // `React.createContext(undefined)`
62
- || name === 'createContext'
63
- // `setState(undefined)`
64
- || /^set[A-Z]/.test(name)
65
- // React 19 useRef
66
- || name === 'useRef'
67
-
68
- // https://vuejs.org/api/reactivity-core.html#ref
69
- || name === 'ref';
70
- };
71
-
72
- const getFunction = scope => {
73
- for (; scope; scope = scope.upper) {
74
- if (scope.type === 'function') {
75
- return scope.block;
76
- }
77
- }
78
- };
79
-
80
- const isFunctionBindCall = node =>
81
- !node.optional
82
- && node.callee.type === 'MemberExpression'
83
- && !node.callee.computed
84
- && node.callee.property.type === 'Identifier'
85
- && node.callee.property.name === 'bind';
86
-
87
- const isTypeScriptFile = context =>
88
- /\.(?:ts|mts|cts|tsx)$/i.test(context.physicalFilename);
89
-
90
- /** @param {import('eslint').Rule.RuleContext} context */
91
- const create = context => {
92
- const {sourceCode} = context;
93
-
94
- const getProblem = (node, fix, checkFunctionReturnType) => {
95
- if (checkFunctionReturnType) {
96
- const functionNode = getFunction(sourceCode.getScope(node));
97
- if (functionNode?.returnType) {
98
- return;
99
- }
100
- }
101
-
102
- return {
103
- node,
104
- messageId,
105
- fix,
106
- };
107
- };
108
-
109
- const options = {
110
- checkArguments: true,
111
- checkArrowFunctionBody: true,
112
- ...context.options[0],
113
- };
114
-
115
- const removeNodeAndLeadingSpace = (node, fixer) =>
116
- replaceNodeOrTokenAndSpacesBefore(node, '', fixer, context);
117
-
118
- // `return undefined`
119
- context.on('Identifier', node => {
120
- if (
121
- isUndefined(node)
122
- && node.parent.type === 'ReturnStatement'
123
- && node.parent.argument === node
124
- ) {
125
- return getProblem(
126
- node,
127
- fixer => removeNodeAndLeadingSpace(node, fixer),
128
- /* CheckFunctionReturnType */ true,
129
- );
130
- }
131
- });
132
-
133
- // `yield undefined`
134
- context.on('Identifier', node => {
135
- if (
136
- isUndefined(node)
137
- && node.parent.type === 'YieldExpression'
138
- && !node.parent.delegate
139
- && node.parent.argument === node
140
- ) {
141
- return getProblem(
142
- node,
143
- fixer => removeNodeAndLeadingSpace(node, fixer),
144
- );
145
- }
146
- });
147
-
148
- // `() => undefined`
149
- if (options.checkArrowFunctionBody) {
150
- context.on('Identifier', node => {
151
- if (
152
- isUndefined(node)
153
- && node.parent.type === 'ArrowFunctionExpression'
154
- && node.parent.body === node
155
- ) {
156
- return getProblem(
157
- node,
158
- fixer => replaceNodeOrTokenAndSpacesBefore(node, ' {}', fixer, context),
159
- /* CheckFunctionReturnType */ true,
160
- );
161
- }
162
- });
163
- }
164
-
165
- // `let foo = undefined` / `var foo = undefined`
166
- context.on('Identifier', node => {
167
- if (
168
- isUndefined(node)
169
- && node.parent.type === 'VariableDeclarator'
170
- && node.parent.init === node
171
- && node.parent.parent.type === 'VariableDeclaration'
172
- && node.parent.parent.kind !== 'const'
173
- && node.parent.parent.declarations.includes(node.parent)
174
- ) {
175
- const [, start] = sourceCode.getRange(node.parent.id);
176
- const [, end] = sourceCode.getRange(node);
177
- return getProblem(
178
- node,
179
- fixer => fixer.removeRange([start, end]),
180
- /* CheckFunctionReturnType */ true,
181
- );
182
- }
183
- });
184
-
185
- // `const {foo = undefined} = {}`
186
- context.on('Identifier', node => {
187
- if (
188
- isUndefined(node)
189
- && node.parent.type === 'AssignmentPattern'
190
- && node.parent.right === node
191
- ) {
192
- return getProblem(
193
- node,
194
- function * (fixer) {
195
- const assignmentPattern = node.parent;
196
- const {left} = assignmentPattern;
197
- const [, start] = sourceCode.getRange(left);
198
- const [, end] = sourceCode.getRange(node);
199
-
200
- yield fixer.removeRange([start, end]);
201
- if (
202
- (left.typeAnnotation || isTypeScriptFile(context))
203
- && !left.optional
204
- && isFunction(assignmentPattern.parent)
205
- && assignmentPattern.parent.params.includes(assignmentPattern)
206
- ) {
207
- yield (
208
- left.typeAnnotation
209
- ? fixer.insertTextBefore(left.typeAnnotation, '?')
210
- : fixer.insertTextAfter(left, '?')
211
- );
212
- }
213
- },
214
- /* CheckFunctionReturnType */ true,
215
- );
216
- }
217
- });
218
-
219
- if (!options.checkArguments) {
220
- return;
221
- }
222
-
223
- context.on('CallExpression', node => {
224
- const argumentNodes = node.arguments;
225
- const lastArgument = argumentNodes.at(-1);
226
-
227
- if (!isUndefined(lastArgument) || shouldIgnore(node.callee)) {
228
- return;
229
- }
230
-
231
- // Ignore arguments in `Function#bind()`, but not `this` argument
232
- if (isFunctionBindCall(node) && argumentNodes.length !== 1) {
233
- return;
234
- }
235
-
236
- return {
237
- node: lastArgument,
238
- messageId,
239
- fix: fixer => removeArgument(fixer, lastArgument, context),
240
- };
241
- });
242
- };
243
-
244
- const schema = [
245
- {
246
- type: 'object',
247
- additionalProperties: false,
248
- properties: {
249
- checkArguments: {
250
- type: 'boolean',
251
- },
252
- checkArrowFunctionBody: {
253
- type: 'boolean',
254
- },
255
- },
256
- },
257
- ];
258
-
259
- /** @type {import('eslint').Rule.RuleModule} */
260
- const config = {
261
- create,
262
- meta: {
263
- type: 'suggestion',
264
- docs: {
265
- description: 'Disallow useless `undefined`.',
266
- recommended: 'unopinionated',
267
- },
268
- fixable: 'code',
269
- schema,
270
- defaultOptions: [{}],
271
- messages,
272
- },
273
- };
274
-
275
- export default config;