eslint-plugin-unicorn 48.0.1 → 50.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 (50) hide show
  1. package/configs/all.js +4 -7
  2. package/configs/flat-config-base.js +10 -0
  3. package/configs/legacy-config-base.js +10 -0
  4. package/configs/recommended.js +114 -125
  5. package/index.js +20 -7
  6. package/package.json +33 -28
  7. package/readme.md +145 -6
  8. package/rules/ast/is-method-call.js +7 -3
  9. package/rules/ast/is-reference-identifier.js +15 -0
  10. package/rules/better-regex.js +2 -3
  11. package/rules/catch-error-name.js +1 -1
  12. package/rules/consistent-destructuring.js +2 -2
  13. package/rules/custom-error-definition.js +1 -1
  14. package/rules/expiring-todo-comments.js +134 -111
  15. package/rules/filename-case.js +1 -1
  16. package/rules/fix/remove-argument.js +1 -1
  17. package/rules/import-style.js +1 -1
  18. package/rules/no-array-for-each.js +1 -1
  19. package/rules/no-array-method-this-argument.js +1 -1
  20. package/rules/no-console-spaces.js +1 -1
  21. package/rules/no-for-loop.js +1 -1
  22. package/rules/no-hex-escape.js +1 -1
  23. package/rules/no-unnecessary-await.js +1 -1
  24. package/rules/no-unnecessary-polyfills.js +176 -0
  25. package/rules/no-useless-switch-case.js +1 -1
  26. package/rules/no-useless-undefined.js +22 -14
  27. package/rules/no-zero-fractions.js +1 -1
  28. package/rules/numeric-separators-style.js +1 -1
  29. package/rules/prefer-default-parameters.js +2 -2
  30. package/rules/prefer-dom-node-dataset.js +1 -1
  31. package/rules/prefer-event-target.js +77 -1
  32. package/rules/prefer-export-from.js +1 -1
  33. package/rules/prefer-negative-index.js +7 -0
  34. package/rules/prefer-object-from-entries.js +1 -1
  35. package/rules/prefer-query-selector.js +1 -1
  36. package/rules/prefer-regexp-test.js +4 -0
  37. package/rules/prefer-spread.js +1 -1
  38. package/rules/prefer-string-replace-all.js +3 -2
  39. package/rules/prefer-switch.js +1 -1
  40. package/rules/prevent-abbreviations.js +1 -1
  41. package/rules/shared/abbreviations.js +1 -0
  42. package/rules/string-content.js +7 -4
  43. package/rules/template-indent.js +1 -1
  44. package/rules/utils/escape-template-element-raw.js +1 -1
  45. package/rules/utils/get-ancestor.js +20 -0
  46. package/rules/utils/index.js +1 -0
  47. package/rules/utils/is-number.js +1 -1
  48. package/rules/utils/is-shadowed.js +1 -1
  49. package/rules/utils/lodash.js +1589 -0
  50. package/rules/utils/parentheses.js +1 -1
package/configs/all.js CHANGED
@@ -1,9 +1,6 @@
1
1
  'use strict';
2
- const {rules, ...baseConfigs} = require('./recommended.js');
2
+ const recommended = require('./recommended.js');
3
3
 
4
- module.exports = {
5
- ...baseConfigs,
6
- rules: Object.fromEntries(Object.entries(rules).map(
7
- ([ruleId, severity]) => [ruleId, ruleId.startsWith('unicorn/') ? 'error' : severity],
8
- )),
9
- };
4
+ module.exports = Object.fromEntries(Object.entries(recommended).map(
5
+ ([ruleId, severity]) => [ruleId, ruleId.startsWith('unicorn/') ? 'error' : severity],
6
+ ));
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+ const eslintrc = require('@eslint/eslintrc');
3
+
4
+ const {globals} = eslintrc.Legacy.environments.get('es2024');
5
+
6
+ module.exports = {
7
+ languageOptions: {
8
+ globals,
9
+ },
10
+ };
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+ module.exports = {
3
+ env: {
4
+ es2024: true,
5
+ },
6
+ parserOptions: {
7
+ ecmaVersion: 'latest',
8
+ sourceType: 'module',
9
+ },
10
+ };
@@ -1,128 +1,117 @@
1
1
  'use strict';
2
2
  module.exports = {
3
- env: {
4
- es2024: true,
5
- },
6
- parserOptions: {
7
- ecmaVersion: 'latest',
8
- sourceType: 'module',
9
- },
10
- plugins: [
11
- 'unicorn',
12
- ],
13
- rules: {
14
- 'unicorn/better-regex': 'error',
15
- 'unicorn/catch-error-name': 'error',
16
- 'unicorn/consistent-destructuring': 'error',
17
- 'unicorn/consistent-function-scoping': 'error',
18
- 'unicorn/custom-error-definition': 'off',
19
- 'unicorn/empty-brace-spaces': 'error',
20
- 'unicorn/error-message': 'error',
21
- 'unicorn/escape-case': 'error',
22
- 'unicorn/expiring-todo-comments': 'error',
23
- 'unicorn/explicit-length-check': 'error',
24
- 'unicorn/filename-case': 'error',
25
- 'unicorn/import-style': 'error',
26
- 'unicorn/new-for-builtins': 'error',
27
- 'unicorn/no-abusive-eslint-disable': 'error',
28
- 'unicorn/no-array-callback-reference': 'error',
29
- 'unicorn/no-array-for-each': 'error',
30
- 'unicorn/no-array-method-this-argument': 'error',
31
- 'unicorn/no-array-push-push': 'error',
32
- 'unicorn/no-array-reduce': 'error',
33
- 'unicorn/no-await-expression-member': 'error',
34
- 'unicorn/no-console-spaces': 'error',
35
- 'unicorn/no-document-cookie': 'error',
36
- 'unicorn/no-empty-file': 'error',
37
- 'unicorn/no-for-loop': 'error',
38
- 'unicorn/no-hex-escape': 'error',
39
- 'unicorn/no-instanceof-array': 'error',
40
- 'unicorn/no-invalid-remove-event-listener': 'error',
41
- 'unicorn/no-keyword-prefix': 'off',
42
- 'unicorn/no-lonely-if': 'error',
43
- 'no-negated-condition': 'off',
44
- 'unicorn/no-negated-condition': 'error',
45
- 'no-nested-ternary': 'off',
46
- 'unicorn/no-nested-ternary': 'error',
47
- 'unicorn/no-new-array': 'error',
48
- 'unicorn/no-new-buffer': 'error',
49
- 'unicorn/no-null': 'error',
50
- 'unicorn/no-object-as-default-parameter': 'error',
51
- 'unicorn/no-process-exit': 'error',
52
- 'unicorn/no-static-only-class': 'error',
53
- 'unicorn/no-thenable': 'error',
54
- 'unicorn/no-this-assignment': 'error',
55
- 'unicorn/no-typeof-undefined': 'error',
56
- 'unicorn/no-unnecessary-await': 'error',
57
- 'unicorn/no-unreadable-array-destructuring': 'error',
58
- 'unicorn/no-unreadable-iife': 'error',
59
- 'unicorn/no-unused-properties': 'off',
60
- 'unicorn/no-useless-fallback-in-spread': 'error',
61
- 'unicorn/no-useless-length-check': 'error',
62
- 'unicorn/no-useless-promise-resolve-reject': 'error',
63
- 'unicorn/no-useless-spread': 'error',
64
- 'unicorn/no-useless-switch-case': 'error',
65
- 'unicorn/no-useless-undefined': 'error',
66
- 'unicorn/no-zero-fractions': 'error',
67
- 'unicorn/number-literal-case': 'error',
68
- 'unicorn/numeric-separators-style': 'error',
69
- 'unicorn/prefer-add-event-listener': 'error',
70
- 'unicorn/prefer-array-find': 'error',
71
- 'unicorn/prefer-array-flat': 'error',
72
- 'unicorn/prefer-array-flat-map': 'error',
73
- 'unicorn/prefer-array-index-of': 'error',
74
- 'unicorn/prefer-array-some': 'error',
75
- 'unicorn/prefer-at': 'error',
76
- 'unicorn/prefer-blob-reading-methods': 'error',
77
- 'unicorn/prefer-code-point': 'error',
78
- 'unicorn/prefer-date-now': 'error',
79
- 'unicorn/prefer-default-parameters': 'error',
80
- 'unicorn/prefer-dom-node-append': 'error',
81
- 'unicorn/prefer-dom-node-dataset': 'error',
82
- 'unicorn/prefer-dom-node-remove': 'error',
83
- 'unicorn/prefer-dom-node-text-content': 'error',
84
- 'unicorn/prefer-event-target': 'error',
85
- 'unicorn/prefer-export-from': 'error',
86
- 'unicorn/prefer-includes': 'error',
87
- 'unicorn/prefer-json-parse-buffer': 'off',
88
- 'unicorn/prefer-keyboard-event-key': 'error',
89
- 'unicorn/prefer-logical-operator-over-ternary': 'error',
90
- 'unicorn/prefer-math-trunc': 'error',
91
- 'unicorn/prefer-modern-dom-apis': 'error',
92
- 'unicorn/prefer-modern-math-apis': 'error',
93
- 'unicorn/prefer-module': 'error',
94
- 'unicorn/prefer-native-coercion-functions': 'error',
95
- 'unicorn/prefer-negative-index': 'error',
96
- 'unicorn/prefer-node-protocol': 'error',
97
- 'unicorn/prefer-number-properties': 'error',
98
- 'unicorn/prefer-object-from-entries': 'error',
99
- 'unicorn/prefer-optional-catch-binding': 'error',
100
- 'unicorn/prefer-prototype-methods': 'error',
101
- 'unicorn/prefer-query-selector': 'error',
102
- 'unicorn/prefer-reflect-apply': 'error',
103
- 'unicorn/prefer-regexp-test': 'error',
104
- 'unicorn/prefer-set-has': 'error',
105
- 'unicorn/prefer-set-size': 'error',
106
- 'unicorn/prefer-spread': 'error',
107
- 'unicorn/prefer-string-replace-all': 'error',
108
- 'unicorn/prefer-string-slice': 'error',
109
- 'unicorn/prefer-string-starts-ends-with': 'error',
110
- 'unicorn/prefer-string-trim-start-end': 'error',
111
- 'unicorn/prefer-switch': 'error',
112
- 'unicorn/prefer-ternary': 'error',
113
- 'unicorn/prefer-top-level-await': 'error',
114
- 'unicorn/prefer-type-error': 'error',
115
- 'unicorn/prevent-abbreviations': 'error',
116
- 'unicorn/relative-url-style': 'error',
117
- 'unicorn/require-array-join-separator': 'error',
118
- 'unicorn/require-number-to-fixed-digits-argument': 'error',
119
- // Turned off because we can't distinguish `widow.postMessage` and `{Worker,MessagePort,Client,BroadcastChannel}#postMessage()`
120
- // See #1396
121
- 'unicorn/require-post-message-target-origin': 'off',
122
- 'unicorn/string-content': 'off',
123
- 'unicorn/switch-case-braces': 'error',
124
- 'unicorn/template-indent': 'error',
125
- 'unicorn/text-encoding-identifier-case': 'error',
126
- 'unicorn/throw-new-error': 'error',
127
- },
3
+ 'unicorn/better-regex': 'error',
4
+ 'unicorn/catch-error-name': 'error',
5
+ 'unicorn/consistent-destructuring': 'error',
6
+ 'unicorn/consistent-function-scoping': 'error',
7
+ 'unicorn/custom-error-definition': 'off',
8
+ 'unicorn/empty-brace-spaces': 'error',
9
+ 'unicorn/error-message': 'error',
10
+ 'unicorn/escape-case': 'error',
11
+ 'unicorn/expiring-todo-comments': 'error',
12
+ 'unicorn/explicit-length-check': 'error',
13
+ 'unicorn/filename-case': 'error',
14
+ 'unicorn/import-style': 'error',
15
+ 'unicorn/new-for-builtins': 'error',
16
+ 'unicorn/no-abusive-eslint-disable': 'error',
17
+ 'unicorn/no-array-callback-reference': 'error',
18
+ 'unicorn/no-array-for-each': 'error',
19
+ 'unicorn/no-array-method-this-argument': 'error',
20
+ 'unicorn/no-array-push-push': 'error',
21
+ 'unicorn/no-array-reduce': 'error',
22
+ 'unicorn/no-await-expression-member': 'error',
23
+ 'unicorn/no-console-spaces': 'error',
24
+ 'unicorn/no-document-cookie': 'error',
25
+ 'unicorn/no-empty-file': 'error',
26
+ 'unicorn/no-for-loop': 'error',
27
+ 'unicorn/no-hex-escape': 'error',
28
+ 'unicorn/no-instanceof-array': 'error',
29
+ 'unicorn/no-invalid-remove-event-listener': 'error',
30
+ 'unicorn/no-keyword-prefix': 'off',
31
+ 'unicorn/no-lonely-if': 'error',
32
+ 'no-negated-condition': 'off',
33
+ 'unicorn/no-negated-condition': 'error',
34
+ 'no-nested-ternary': 'off',
35
+ 'unicorn/no-nested-ternary': 'error',
36
+ 'unicorn/no-new-array': 'error',
37
+ 'unicorn/no-new-buffer': 'error',
38
+ 'unicorn/no-null': 'error',
39
+ 'unicorn/no-object-as-default-parameter': 'error',
40
+ 'unicorn/no-process-exit': 'error',
41
+ 'unicorn/no-static-only-class': 'error',
42
+ 'unicorn/no-thenable': 'error',
43
+ 'unicorn/no-this-assignment': 'error',
44
+ 'unicorn/no-typeof-undefined': 'error',
45
+ 'unicorn/no-unnecessary-await': 'error',
46
+ 'unicorn/no-unnecessary-polyfills': 'error',
47
+ 'unicorn/no-unreadable-array-destructuring': 'error',
48
+ 'unicorn/no-unreadable-iife': 'error',
49
+ 'unicorn/no-unused-properties': 'off',
50
+ 'unicorn/no-useless-fallback-in-spread': 'error',
51
+ 'unicorn/no-useless-length-check': 'error',
52
+ 'unicorn/no-useless-promise-resolve-reject': 'error',
53
+ 'unicorn/no-useless-spread': 'error',
54
+ 'unicorn/no-useless-switch-case': 'error',
55
+ 'unicorn/no-useless-undefined': 'error',
56
+ 'unicorn/no-zero-fractions': 'error',
57
+ 'unicorn/number-literal-case': 'error',
58
+ 'unicorn/numeric-separators-style': 'error',
59
+ 'unicorn/prefer-add-event-listener': 'error',
60
+ 'unicorn/prefer-array-find': 'error',
61
+ 'unicorn/prefer-array-flat': 'error',
62
+ 'unicorn/prefer-array-flat-map': 'error',
63
+ 'unicorn/prefer-array-index-of': 'error',
64
+ 'unicorn/prefer-array-some': 'error',
65
+ 'unicorn/prefer-at': 'error',
66
+ 'unicorn/prefer-blob-reading-methods': 'error',
67
+ 'unicorn/prefer-code-point': 'error',
68
+ 'unicorn/prefer-date-now': 'error',
69
+ 'unicorn/prefer-default-parameters': 'error',
70
+ 'unicorn/prefer-dom-node-append': 'error',
71
+ 'unicorn/prefer-dom-node-dataset': 'error',
72
+ 'unicorn/prefer-dom-node-remove': 'error',
73
+ 'unicorn/prefer-dom-node-text-content': 'error',
74
+ 'unicorn/prefer-event-target': 'error',
75
+ 'unicorn/prefer-export-from': 'error',
76
+ 'unicorn/prefer-includes': 'error',
77
+ 'unicorn/prefer-json-parse-buffer': 'off',
78
+ 'unicorn/prefer-keyboard-event-key': 'error',
79
+ 'unicorn/prefer-logical-operator-over-ternary': 'error',
80
+ 'unicorn/prefer-math-trunc': 'error',
81
+ 'unicorn/prefer-modern-dom-apis': 'error',
82
+ 'unicorn/prefer-modern-math-apis': 'error',
83
+ 'unicorn/prefer-module': 'error',
84
+ 'unicorn/prefer-native-coercion-functions': 'error',
85
+ 'unicorn/prefer-negative-index': 'error',
86
+ 'unicorn/prefer-node-protocol': 'error',
87
+ 'unicorn/prefer-number-properties': 'error',
88
+ 'unicorn/prefer-object-from-entries': 'error',
89
+ 'unicorn/prefer-optional-catch-binding': 'error',
90
+ 'unicorn/prefer-prototype-methods': 'error',
91
+ 'unicorn/prefer-query-selector': 'error',
92
+ 'unicorn/prefer-reflect-apply': 'error',
93
+ 'unicorn/prefer-regexp-test': 'error',
94
+ 'unicorn/prefer-set-has': 'error',
95
+ 'unicorn/prefer-set-size': 'error',
96
+ 'unicorn/prefer-spread': 'error',
97
+ 'unicorn/prefer-string-replace-all': 'error',
98
+ 'unicorn/prefer-string-slice': 'error',
99
+ 'unicorn/prefer-string-starts-ends-with': 'error',
100
+ 'unicorn/prefer-string-trim-start-end': 'error',
101
+ 'unicorn/prefer-switch': 'error',
102
+ 'unicorn/prefer-ternary': 'error',
103
+ 'unicorn/prefer-top-level-await': 'error',
104
+ 'unicorn/prefer-type-error': 'error',
105
+ 'unicorn/prevent-abbreviations': 'error',
106
+ 'unicorn/relative-url-style': 'error',
107
+ 'unicorn/require-array-join-separator': 'error',
108
+ 'unicorn/require-number-to-fixed-digits-argument': 'error',
109
+ // Turned off because we can't distinguish `widow.postMessage` and `{Worker,MessagePort,Client,BroadcastChannel}#postMessage()`
110
+ // See #1396
111
+ 'unicorn/require-post-message-target-origin': 'off',
112
+ 'unicorn/string-content': 'off',
113
+ 'unicorn/switch-case-braces': 'error',
114
+ 'unicorn/template-indent': 'error',
115
+ 'unicorn/text-encoding-identifier-case': 'error',
116
+ 'unicorn/throw-new-error': 'error',
128
117
  };
package/index.js CHANGED
@@ -1,8 +1,10 @@
1
1
  'use strict';
2
2
  const createDeprecatedRules = require('./rules/utils/create-deprecated-rules.js');
3
3
  const {loadRules} = require('./rules/utils/rule.js');
4
- const recommendedConfig = require('./configs/recommended.js');
5
- const allRulesEnabledConfig = require('./configs/all.js');
4
+ const legacyConfigBase = require('./configs/legacy-config-base.js');
5
+ const flatConfigBase = require('./configs/flat-config-base.js');
6
+ const recommendedRules = require('./configs/recommended.js');
7
+ const allRules = require('./configs/all.js');
6
8
  const {name, version} = require('./package.json');
7
9
 
8
10
  const deprecatedRules = createDeprecatedRules({
@@ -26,7 +28,13 @@ const deprecatedRules = createDeprecatedRules({
26
28
  'regex-shorthand': 'unicorn/better-regex',
27
29
  });
28
30
 
29
- module.exports = {
31
+ const createConfig = (rules, isLegacyConfig = false) => ({
32
+ ...(isLegacyConfig ? legacyConfigBase : flatConfigBase),
33
+ plugins: isLegacyConfig ? ['unicorn'] : {unicorn},
34
+ rules,
35
+ });
36
+
37
+ const unicorn = {
30
38
  meta: {
31
39
  name,
32
40
  version,
@@ -35,8 +43,13 @@ module.exports = {
35
43
  ...loadRules(),
36
44
  ...deprecatedRules,
37
45
  },
38
- configs: {
39
- recommended: recommendedConfig,
40
- all: allRulesEnabledConfig,
41
- },
42
46
  };
47
+
48
+ const configs = {
49
+ recommended: createConfig(recommendedRules, /* isLegacyConfig */ true),
50
+ all: createConfig(allRules, /* isLegacyConfig */ true),
51
+ 'flat/recommended': createConfig(recommendedRules),
52
+ 'flat/all': createConfig(allRules),
53
+ };
54
+
55
+ module.exports = {...unicorn, configs};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-unicorn",
3
- "version": "48.0.1",
3
+ "version": "50.0.0",
4
4
  "description": "More than 100 powerful ESLint rules",
5
5
  "license": "MIT",
6
6
  "repository": "sindresorhus/eslint-plugin-unicorn",
@@ -10,6 +10,8 @@
10
10
  "email": "sindresorhus@gmail.com",
11
11
  "url": "https://sindresorhus.com"
12
12
  },
13
+ "main": "index.js",
14
+ "sideEffects": false,
13
15
  "engines": {
14
16
  "node": ">=16"
15
17
  },
@@ -18,14 +20,15 @@
18
20
  "fix": "run-p --continue-on-error fix:*",
19
21
  "fix:eslint-docs": "eslint-doc-generator",
20
22
  "fix:js": "npm run lint:js -- --fix",
21
- "fix:md": "npm run lint:md -- --fix",
23
+ "fix:markdown": "npm run lint:markdown -- --fix",
22
24
  "integration": "node ./test/integration/test.mjs",
23
25
  "lint": "run-p --continue-on-error lint:*",
24
26
  "lint:eslint-docs": "npm run fix:eslint-docs -- --check",
25
27
  "lint:js": "xo",
26
- "lint:md": "markdownlint \"**/*.md\"",
28
+ "lint:markdown": "markdownlint \"**/*.md\"",
27
29
  "lint:package-json": "npmPkgJsonLint .",
28
30
  "run-rules-on-codebase": "node ./test/run-rules-on-codebase/lint.mjs",
31
+ "bundle-lodash": "echo \"export {defaultsDeep, camelCase, kebabCase, snakeCase, upperFirst, lowerFirst} from 'lodash-es';\" | npx esbuild --bundle --outfile=rules/utils/lodash.js --format=cjs",
29
32
  "smoke": "eslint-remote-tester --config ./test/smoke/eslint-remote-tester.config.js",
30
33
  "test": "npm-run-all --continue-on-error lint test:*",
31
34
  "test:js": "c8 ava"
@@ -46,15 +49,16 @@
46
49
  "xo"
47
50
  ],
48
51
  "dependencies": {
49
- "@babel/helper-validator-identifier": "^7.22.5",
52
+ "@babel/helper-validator-identifier": "^7.22.20",
50
53
  "@eslint-community/eslint-utils": "^4.4.0",
51
- "ci-info": "^3.8.0",
54
+ "@eslint/eslintrc": "^2.1.4",
55
+ "ci-info": "^4.0.0",
52
56
  "clean-regexp": "^1.0.0",
57
+ "core-js-compat": "^3.34.0",
53
58
  "esquery": "^1.5.0",
54
59
  "indent-string": "^4.0.0",
55
60
  "is-builtin-module": "^3.2.1",
56
61
  "jsesc": "^3.0.2",
57
- "lodash": "^4.17.21",
58
62
  "pluralize": "^8.0.0",
59
63
  "read-pkg-up": "^7.0.1",
60
64
  "regexp-tree": "^0.1.27",
@@ -63,37 +67,37 @@
63
67
  "strip-indent": "^3.0.0"
64
68
  },
65
69
  "devDependencies": {
66
- "@babel/code-frame": "^7.22.5",
67
- "@babel/core": "^7.22.8",
68
- "@babel/eslint-parser": "^7.22.7",
70
+ "@babel/code-frame": "^7.23.5",
71
+ "@babel/core": "^7.23.6",
72
+ "@babel/eslint-parser": "^7.23.3",
69
73
  "@lubien/fixture-beta-package": "^1.0.0-beta.1",
70
- "@typescript-eslint/parser": "^6.2.0",
71
- "ava": "^3.15.0",
72
- "c8": "^8.0.0",
74
+ "@typescript-eslint/parser": "^6.15.0",
75
+ "ava": "^6.0.1",
76
+ "c8": "^8.0.1",
73
77
  "chalk": "^5.3.0",
74
- "enquirer": "^2.3.6",
75
- "eslint": "^8.44.0",
76
- "eslint-ava-rule-tester": "^4.0.0",
77
- "eslint-doc-generator": "^1.4.3",
78
- "eslint-plugin-eslint-plugin": "^5.1.0",
78
+ "enquirer": "^2.4.1",
79
+ "eslint": "^8.56.0",
80
+ "eslint-ava-rule-tester": "^4.2.0",
81
+ "eslint-doc-generator": "^1.6.1",
82
+ "eslint-plugin-eslint-plugin": "^5.2.1",
79
83
  "eslint-plugin-internal-rules": "file:./scripts/internal-rules/",
80
- "eslint-remote-tester": "^3.0.0",
84
+ "eslint-remote-tester": "^3.0.1",
81
85
  "eslint-remote-tester-repositories": "^1.0.1",
82
- "execa": "^7.1.1",
86
+ "execa": "^8.0.1",
83
87
  "listr": "^0.14.3",
84
88
  "lodash-es": "^4.17.21",
85
- "markdownlint-cli": "^0.35.0",
86
- "mem": "^9.0.2",
87
- "npm-package-json-lint": "^7.0.0",
88
- "npm-run-all": "^4.1.5",
89
+ "markdownlint-cli": "^0.38.0",
90
+ "memoize": "^10.0.0",
91
+ "npm-package-json-lint": "^7.1.0",
92
+ "npm-run-all2": "^6.1.1",
89
93
  "outdent": "^0.8.0",
90
- "typescript": "^5.1.6",
91
- "vue-eslint-parser": "^9.3.1",
92
- "xo": "^0.54.2",
93
- "yaml": "^2.3.1"
94
+ "typescript": "^5.3.3",
95
+ "vue-eslint-parser": "^9.3.2",
96
+ "xo": "^0.56.0",
97
+ "yaml": "^2.3.4"
94
98
  },
95
99
  "peerDependencies": {
96
- "eslint": ">=8.44.0"
100
+ "eslint": ">=8.56.0"
97
101
  },
98
102
  "ava": {
99
103
  "files": [
@@ -114,6 +118,7 @@
114
118
  "ignores": [
115
119
  ".cache-eslint-remote-tester",
116
120
  "eslint-remote-tester-results",
121
+ "rules/utils/lodash.js",
117
122
  "test/integration/{fixtures,fixtures-local}/**"
118
123
  ],
119
124
  "rules": {