eslint-plugin-unicorn 66.0.0 → 67.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 (89) hide show
  1. package/configs/core-rule-replacements.js +9 -0
  2. package/index.js +7 -7
  3. package/package.json +1 -1
  4. package/readme.md +281 -262
  5. package/rules/ast/index.js +3 -0
  6. package/rules/ast/is-loop.js +5 -0
  7. package/rules/ast/literal.js +5 -0
  8. package/rules/ast/loop-types.js +9 -0
  9. package/rules/comment-content.js +654 -81
  10. package/rules/consistent-boolean-name.js +493 -0
  11. package/rules/consistent-class-member-order.js +41 -14
  12. package/rules/dom-node-dataset.js +167 -29
  13. package/rules/expiring-todo-comments.js +0 -1
  14. package/rules/explicit-length-check.js +8 -8
  15. package/rules/fix/index.js +2 -1
  16. package/rules/fix/{remove-expression-statement.js → remove-statement.js} +20 -7
  17. package/rules/fix/replace-node-with-expression.js +47 -0
  18. package/rules/fix/replace-reference-identifier.js +4 -1
  19. package/rules/import-style.js +0 -2
  20. package/rules/index.js +15 -0
  21. package/rules/logical-assignment-operators.js +112 -0
  22. package/rules/new-for-builtins.js +3 -5
  23. package/rules/no-anonymous-default-export.js +2 -2
  24. package/rules/no-array-callback-reference.js +67 -1
  25. package/rules/no-array-reduce.js +66 -1
  26. package/rules/no-array-splice.js +232 -0
  27. package/rules/no-blob-to-file.js +1 -34
  28. package/rules/no-break-in-nested-loop.js +5 -14
  29. package/rules/no-computed-property-existence-check.js +3 -3
  30. package/rules/no-declarations-before-early-exit.js +60 -1
  31. package/rules/no-duplicate-loops.js +3 -83
  32. package/rules/no-empty-file.js +9 -0
  33. package/rules/no-for-each.js +1 -1
  34. package/rules/no-global-object-property-assignment.js +1 -6
  35. package/rules/no-immediate-mutation.js +2 -2
  36. package/rules/no-incorrect-query-selector.js +2 -20
  37. package/rules/no-invalid-argument-count.js +1173 -3
  38. package/rules/no-non-function-verb-prefix.js +324 -0
  39. package/rules/no-return-array-push.js +25 -21
  40. package/rules/no-top-level-assignment-in-function.js +76 -0
  41. package/rules/no-uncalled-method.js +308 -0
  42. package/rules/no-unnecessary-global-this.js +1 -6
  43. package/rules/no-unnecessary-splice.js +13 -140
  44. package/rules/no-unreadable-array-destructuring.js +61 -3
  45. package/rules/no-unreadable-for-of-expression.js +130 -0
  46. package/rules/no-unreadable-new-expression.js +1 -1
  47. package/rules/no-unreadable-object-destructuring.js +26 -1
  48. package/rules/no-unsafe-property-key.js +31 -0
  49. package/rules/no-useless-boolean-cast.js +2 -11
  50. package/rules/no-useless-coercion.js +91 -0
  51. package/rules/no-useless-continue.js +81 -0
  52. package/rules/no-useless-fallback-in-spread.js +19 -0
  53. package/rules/no-useless-override.js +217 -0
  54. package/rules/operator-assignment.js +111 -0
  55. package/rules/prefer-add-event-listener-options.js +1 -5
  56. package/rules/prefer-array-flat.js +1 -1
  57. package/rules/prefer-array-slice.js +97 -0
  58. package/rules/prefer-array-some.js +2 -2
  59. package/rules/prefer-at.js +1 -1
  60. package/rules/prefer-await.js +1 -27
  61. package/rules/prefer-classlist-toggle.js +1 -1
  62. package/rules/prefer-else-if.js +524 -0
  63. package/rules/prefer-has-check.js +946 -0
  64. package/rules/prefer-iterable-in-constructor.js +2 -2
  65. package/rules/prefer-logical-operator-over-ternary.js +110 -18
  66. package/rules/prefer-map-from-entries.js +482 -0
  67. package/rules/prefer-minimal-ternary.js +25 -10
  68. package/rules/prefer-object-from-entries.js +2 -2
  69. package/rules/prefer-query-selector.js +32 -30
  70. package/rules/prefer-regexp-test.js +11 -16
  71. package/rules/prefer-scoped-selector.js +93 -4
  72. package/rules/prefer-set-has.js +1 -6
  73. package/rules/prefer-smaller-scope.js +2 -2
  74. package/rules/prefer-spread.js +1 -1
  75. package/rules/prefer-type-literal-last.js +11 -2
  76. package/rules/require-passive-events.js +1 -5
  77. package/rules/shared/iterator-helpers.js +104 -0
  78. package/rules/shared/splice-replacements.js +149 -0
  79. package/rules/utils/boolean.js +27 -11
  80. package/rules/utils/index.js +10 -2
  81. package/rules/utils/is-array.js +55 -377
  82. package/rules/utils/is-bigint.js +86 -0
  83. package/rules/utils/is-boolean.js +564 -0
  84. package/rules/utils/is-left-hand-side.js +1 -0
  85. package/rules/utils/is-number.js +18 -2
  86. package/rules/utils/is-promise-type.js +28 -0
  87. package/rules/utils/is-same-reference.js +2 -1
  88. package/rules/utils/is-strong-precedence-node.js +32 -0
  89. package/rules/utils/type-helpers.js +204 -25
@@ -0,0 +1,9 @@
1
+ const coreRuleReplacements = [
2
+ 'id-match',
3
+ 'logical-assignment-operators',
4
+ 'no-negated-condition',
5
+ 'no-nested-ternary',
6
+ 'no-process-exit',
7
+ ];
8
+
9
+ export default coreRuleReplacements;
package/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import createDeprecatedRules from './rules/utils/create-deprecated-rules.js';
2
2
  import flatConfigBase from './configs/flat-config-base.js';
3
+ import coreRuleReplacements from './configs/core-rule-replacements.js';
3
4
  import * as rawRules from './rules/index.js';
4
5
  import {toEslintRules} from './rules/rule/index.js';
5
6
  import packageJson from './package.json' with {type: 'json'};
@@ -37,12 +38,11 @@ const deprecatedRules = createDeprecatedRules({
37
38
  },
38
39
  });
39
40
 
40
- const externalRules = {
41
- // Covered by `unicorn/no-negated-condition`
42
- 'no-negated-condition': 'off',
43
- // Covered by `unicorn/no-nested-ternary`
44
- 'no-nested-ternary': 'off',
45
- };
41
+ const getExternalRules = rules => Object.fromEntries(
42
+ coreRuleReplacements
43
+ .filter(ruleName => rules[`unicorn/${ruleName}`] === 'error')
44
+ .map(ruleName => [ruleName, 'off']),
45
+ );
46
46
 
47
47
  const recommendedRules = Object.fromEntries(Object.entries(rules).map(([id, rule]) => [
48
48
  `unicorn/${id}`,
@@ -68,7 +68,7 @@ const createConfig = (rules, flatConfigName) => ({
68
68
  unicorn,
69
69
  },
70
70
  rules: {
71
- ...externalRules,
71
+ ...getExternalRules(rules),
72
72
  ...rules,
73
73
  },
74
74
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-unicorn",
3
- "version": "66.0.0",
3
+ "version": "67.0.0",
4
4
  "description": "More than 200 powerful ESLint rules",
5
5
  "license": "MIT",
6
6
  "repository": "sindresorhus/eslint-plugin-unicorn",