eslint-plugin-unicorn 64.0.0 → 65.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 (100) hide show
  1. package/index.js +14 -0
  2. package/package.json +7 -3
  3. package/readme.md +183 -151
  4. package/rules/better-dom-traversing.js +291 -0
  5. package/rules/consistent-compound-words.js +452 -0
  6. package/rules/consistent-destructuring.js +97 -9
  7. package/rules/consistent-function-scoping.js +20 -0
  8. package/rules/consistent-json-file-read.js +245 -0
  9. package/rules/custom-error-definition.js +89 -4
  10. package/rules/dom-node-dataset.js +431 -0
  11. package/rules/escape-case.js +1 -1
  12. package/rules/expiring-todo-comments.js +42 -81
  13. package/rules/explicit-length-check.js +139 -6
  14. package/rules/filename-case.js +95 -21
  15. package/rules/import-style.js +21 -1
  16. package/rules/index.js +33 -3
  17. package/rules/isolated-functions.js +7 -5
  18. package/rules/no-anonymous-default-export.js +6 -6
  19. package/rules/no-array-callback-reference.js +89 -23
  20. package/rules/no-array-fill-with-reference-type.js +127 -0
  21. package/rules/no-array-for-each.js +17 -1
  22. package/rules/no-array-from-fill.js +76 -0
  23. package/rules/no-array-reduce.js +508 -2
  24. package/rules/no-blob-to-file.js +299 -0
  25. package/rules/no-canvas-to-image.js +152 -0
  26. package/rules/no-confusing-array-splice.js +164 -0
  27. package/rules/no-duplicate-set-values.js +57 -0
  28. package/rules/no-empty-file.js +31 -2
  29. package/rules/no-exports-in-scripts.js +34 -0
  30. package/rules/no-hex-escape.js +1 -1
  31. package/rules/no-incorrect-query-selector.js +347 -0
  32. package/rules/no-invalid-file-input-accept.js +475 -0
  33. package/rules/no-keyword-prefix.js +20 -5
  34. package/rules/no-late-current-target-access.js +166 -0
  35. package/rules/no-lonely-if.js +151 -50
  36. package/rules/no-manually-wrapped-comments.js +151 -0
  37. package/rules/no-null.js +14 -3
  38. package/rules/no-this-outside-of-class.js +75 -0
  39. package/rules/no-typeof-undefined.js +6 -4
  40. package/rules/no-unnecessary-nested-ternary.js +132 -0
  41. package/rules/no-unnecessary-polyfills.js +66 -20
  42. package/rules/no-unreadable-iife.js +33 -3
  43. package/rules/no-unused-array-method-return.js +301 -0
  44. package/rules/no-useless-promise-resolve-reject.js +5 -5
  45. package/rules/no-useless-spread.js +53 -4
  46. package/rules/no-useless-undefined.js +52 -45
  47. package/rules/numeric-separators-style.js +13 -4
  48. package/rules/prefer-array-last-methods.js +93 -0
  49. package/rules/prefer-array-some.js +66 -5
  50. package/rules/prefer-at.js +114 -55
  51. package/rules/prefer-dom-node-append.js +2 -2
  52. package/rules/prefer-dom-node-remove.js +24 -18
  53. package/rules/prefer-export-from.js +6 -6
  54. package/rules/prefer-get-or-insert-computed.js +159 -0
  55. package/rules/prefer-global-this.js +7 -46
  56. package/rules/prefer-https.js +83 -0
  57. package/rules/prefer-includes-over-repeated-comparisons.js +199 -0
  58. package/rules/prefer-iterator-concat.js +174 -0
  59. package/rules/prefer-iterator-to-array-at-end.js +123 -0
  60. package/rules/prefer-keyboard-event-key.js +202 -76
  61. package/rules/prefer-math-abs.js +397 -0
  62. package/rules/prefer-math-min-max.js +5 -3
  63. package/rules/prefer-node-protocol.js +6 -4
  64. package/rules/prefer-query-selector.js +119 -7
  65. package/rules/prefer-queue-microtask.js +204 -0
  66. package/rules/prefer-regexp-test.js +164 -18
  67. package/rules/prefer-set-has.js +411 -22
  68. package/rules/prefer-single-call.js +128 -38
  69. package/rules/prefer-split-limit.js +107 -0
  70. package/rules/prefer-spread.js +34 -4
  71. package/rules/prefer-string-match-all.js +352 -0
  72. package/rules/prefer-string-pad-start-end.js +380 -0
  73. package/rules/prefer-string-raw.js +90 -19
  74. package/rules/prefer-string-repeat.js +173 -0
  75. package/rules/prefer-string-replace-all.js +180 -12
  76. package/rules/prefer-string-slice.js +54 -3
  77. package/rules/prefer-top-level-await.js +129 -1
  78. package/rules/prevent-abbreviations.js +126 -134
  79. package/rules/require-css-escape.js +141 -0
  80. package/rules/require-module-specifiers.js +62 -0
  81. package/rules/require-passive-events.js +292 -0
  82. package/rules/shared/dom-events.js +7 -7
  83. package/rules/shared/identifier-checks.js +205 -0
  84. package/rules/shared/package-json.js +1 -1
  85. package/rules/string-content.js +34 -5
  86. package/rules/template-indent.js +52 -3
  87. package/rules/throw-new-error.js +4 -0
  88. package/rules/try-complexity.js +184 -0
  89. package/rules/utils/boolean.js +12 -12
  90. package/rules/utils/get-duplicate-array-elements.js +77 -0
  91. package/rules/utils/index.js +1 -0
  92. package/rules/utils/is-same-reference.js +6 -4
  93. package/rules/utils/should-add-parentheses-to-await-expression-argument.js +9 -9
  94. package/rules/utils/should-add-parentheses-to-call-expression-callee.js +12 -10
  95. package/rules/utils/should-add-parentheses-to-conditional-expression-child.js +9 -7
  96. package/rules/utils/should-add-parentheses-to-logical-expression-child.js +12 -8
  97. package/rules/utils/should-add-parentheses-to-unary-expression.js +10 -10
  98. package/rules/better-regex.js +0 -155
  99. package/rules/prefer-dom-node-dataset.js +0 -135
  100. package/rules/prefer-json-parse-buffer.js +0 -161
package/index.js CHANGED
@@ -7,6 +7,10 @@ import packageJson from './package.json' with {type: 'json'};
7
7
  const rules = toEslintRules(rawRules);
8
8
 
9
9
  const deprecatedRules = createDeprecatedRules({
10
+ 'better-regex': {
11
+ message: 'Removed. Prefer `eslint-plugin-regexp`',
12
+ replacedBy: [],
13
+ },
10
14
  'no-instanceof-array': {
11
15
  message: 'Replaced by `unicorn/no-instanceof-builtins` which covers more cases.',
12
16
  replacedBy: ['unicorn/no-instanceof-builtins'],
@@ -19,6 +23,14 @@ const deprecatedRules = createDeprecatedRules({
19
23
  message: 'Replaced by `unicorn/prefer-single-call` which covers more cases.',
20
24
  replacedBy: ['unicorn/prefer-single-call'],
21
25
  },
26
+ 'prefer-json-parse-buffer': {
27
+ message: 'Renamed to `unicorn/consistent-json-file-read`.',
28
+ replacedBy: ['unicorn/consistent-json-file-read'],
29
+ },
30
+ 'prefer-dom-node-dataset': {
31
+ message: 'Renamed to `unicorn/dom-node-dataset`.',
32
+ replacedBy: ['unicorn/dom-node-dataset'],
33
+ },
22
34
  });
23
35
 
24
36
  const externalRules = {
@@ -38,6 +50,8 @@ const unopinionatedRules = Object.fromEntries(Object.entries(rules).map(([id, ru
38
50
  rule.meta.docs.recommended === 'unopinionated' ? 'error' : 'off',
39
51
  ]));
40
52
 
53
+ // TODO: Enable `prefer-iterator-concat` in the recommended and unopinionated configs when targeting Node.js 26.
54
+
41
55
  const allRules = Object.fromEntries(Object.keys(rules).map(id => [
42
56
  `unicorn/${id}`,
43
57
  'error',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-unicorn",
3
- "version": "64.0.0",
3
+ "version": "65.0.0",
4
4
  "description": "More than 100 powerful ESLint rules",
5
5
  "license": "MIT",
6
6
  "repository": "sindresorhus/eslint-plugin-unicorn",
@@ -60,22 +60,26 @@
60
60
  "@eslint-community/eslint-utils": "^4.9.1",
61
61
  "change-case": "^5.4.4",
62
62
  "ci-info": "^4.4.0",
63
- "clean-regexp": "^1.0.0",
64
63
  "core-js-compat": "^3.49.0",
64
+ "detect-indent": "^7.0.2",
65
65
  "find-up-simple": "^1.0.1",
66
66
  "globals": "^17.4.0",
67
67
  "indent-string": "^5.0.0",
68
68
  "is-builtin-module": "^5.0.0",
69
69
  "jsesc": "^3.1.0",
70
70
  "pluralize": "^8.0.0",
71
- "regexp-tree": "^0.1.27",
72
71
  "regjsparser": "^0.13.0",
73
72
  "semver": "^7.7.4",
74
73
  "strip-indent": "^4.1.1"
75
74
  },
76
75
  "devDependencies": {
77
76
  "@babel/code-frame": "^7.28.3",
77
+ "@eslint/css": "^0.14.1",
78
78
  "@eslint/eslintrc": "^3.3.5",
79
+ "@eslint/json": "^1.2.0",
80
+ "@eslint/markdown": "^8.0.2",
81
+ "@html-eslint/eslint-plugin": "^0.61.0",
82
+ "@html-eslint/parser": "^0.61.0",
79
83
  "@lubien/fixture-beta-package": "^1.0.0-beta.1",
80
84
  "@typescript-eslint/parser": "^8.57.2",
81
85
  "@typescript-eslint/types": "^8.57.2",