Repository: vuejs/eslint-plugin-vue
Pull request #2146 (2023-05-06 10:26:48)

Update eslint-plugin-unicorn to v47
Related issues: nothing

currently, main branch of eslint-plugin-vue cannot run lint.
Due to a bug in eslint-plugin-unicorn, if eslint-plugin-vue installs ESLint v42.0, eslint-plugin-unicorn must be v46.0.1 or higher.

```
> eslint-plugin-vue@9.11.0 lint
> eslint . --rulesdir eslint-internal-rules && markdownlint "**/*.md"


Oops! Something went wrong! :(

ESLint: 8.40.0

TypeError: Cannot read properties of undefined (reading 'getAllComments')
```
ref: https://github.com/sindresorhus/eslint-plugin-unicorn/issues/2076


## What I did

1. update eslint-plugin-unicorn
2. ~~fix lint error~~ turn off rules

## ~~How to fix lint error~~

1. precondition => `254 problems (253 errors, 1 warning)`
1. `npm run lint:fix` => ` 4 problems (3 errors, 1 warning)`
1. set top-level await manually => `1 problem (0 errors, 1 warning)`



TatsuyaYamamoto: It seems to have another problem of eslint-plugin-vue and ESLint.

If ESLint v8.**40** is installed, eslint-plugin-vue’s tests failed.
If ESLint v8.**39**.1 is installed, the test succeeds
ota-meshi: Thank you for this PR.
However, source code changes contain many breaking changes.
Could you change the eslintrc so that we don't have to change the source code?
TatsuyaYamamoto: > Could you change the eslintrc so that we don't have to change the source code?

I turned off some rules

> Also, could you revert the changed source code?

I reverted 92305cc, adf77e9

Patch:
diff --git a/.eslintrc.js b/.eslintrc.js
index 8c4c791b..e7f17d88 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -128,16 +128,19 @@ module.exports = {
     'unicorn/filename-case': 'off',
     'unicorn/no-null': 'off',
     'unicorn/no-array-callback-reference': 'off', // doesn't work well with TypeScript's custom type guards
+    'unicorn/no-negated-condition': 'off', // remove when there are few pull requests (ref: #2146)
     'unicorn/no-useless-undefined': 'off',
     'unicorn/prefer-optional-catch-binding': 'off', // not supported by current ESLint parser version
     'unicorn/prefer-module': 'off',
     'unicorn/prevent-abbreviations': 'off',
+    'unicorn/prefer-at': 'off', //                 turn off to prevent make breaking changes (ref: #2146)
+    'unicorn/prefer-node-protocol': 'off', //      turn off to prevent make breaking changes (ref: #2146)
+    'unicorn/prefer-string-replace-all': 'off', // turn off to prevent make breaking changes (ref: #2146)
+    'unicorn/prefer-ternary': 'off', //            remove when there are few pull requests (ref: #2146)
+    'unicorn/prefer-top-level-await': 'off', //    turn off to prevent make breaking changes (ref: #2146)
+    'unicorn/switch-case-braces': 'off', //        remove when there are few pull requests (ref: #2146)
 
-    'require-eslint-community': ['error'],
-
-    // FIXME: The version we are currently using is not compatible.
-    // May be removed in #2146. https://github.com/vuejs/eslint-plugin-vue/pull/2146
-    'unicorn/expiring-todo-comments': 'off'
+    'require-eslint-community': ['error']
   },
   overrides: [
     {
diff --git a/docs/rules/array-bracket-newline.md b/docs/rules/array-bracket-newline.md
index 8b5e9bee..e4f9000b 100644
--- a/docs/rules/array-bracket-newline.md
+++ b/docs/rules/array-bracket-newline.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v7.1.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/array-bracket-newline.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/array-bracket-newline.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/array-bracket-newline)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/array-bracket-newline)</sup>
diff --git a/docs/rules/array-bracket-spacing.md b/docs/rules/array-bracket-spacing.md
index d3c93765..b0a8f2fa 100644
--- a/docs/rules/array-bracket-spacing.md
+++ b/docs/rules/array-bracket-spacing.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v5.2.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/array-bracket-spacing.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/array-bracket-spacing.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/array-bracket-spacing)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/array-bracket-spacing)</sup>
diff --git a/docs/rules/array-element-newline.md b/docs/rules/array-element-newline.md
index edf3770b..c6179029 100644
--- a/docs/rules/array-element-newline.md
+++ b/docs/rules/array-element-newline.md
@@ -32,4 +32,4 @@ This rule was introduced in eslint-plugin-vue v9.9.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/array-element-newline.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/array-element-newline.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/array-element-newline)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/array-element-newline)</sup>
diff --git a/docs/rules/arrow-spacing.md b/docs/rules/arrow-spacing.md
index 07e30e63..0c143d1c 100644
--- a/docs/rules/arrow-spacing.md
+++ b/docs/rules/arrow-spacing.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v5.2.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/arrow-spacing.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/arrow-spacing.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/arrow-spacing)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/arrow-spacing)</sup>
diff --git a/docs/rules/block-spacing.md b/docs/rules/block-spacing.md
index a486c76c..33ca4266 100644
--- a/docs/rules/block-spacing.md
+++ b/docs/rules/block-spacing.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v5.2.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/block-spacing.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/block-spacing.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/block-spacing)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/block-spacing)</sup>
diff --git a/docs/rules/brace-style.md b/docs/rules/brace-style.md
index ac917267..8b57aa6e 100644
--- a/docs/rules/brace-style.md
+++ b/docs/rules/brace-style.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v5.2.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/brace-style.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/brace-style.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/brace-style)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/brace-style)</sup>
diff --git a/docs/rules/camelcase.md b/docs/rules/camelcase.md
index 62c5891f..c1c26a30 100644
--- a/docs/rules/camelcase.md
+++ b/docs/rules/camelcase.md
@@ -26,4 +26,4 @@ This rule was introduced in eslint-plugin-vue v5.2.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/camelcase.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/camelcase.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/camelcase)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/camelcase)</sup>
diff --git a/docs/rules/comma-dangle.md b/docs/rules/comma-dangle.md
index 565cbef7..135fde5c 100644
--- a/docs/rules/comma-dangle.md
+++ b/docs/rules/comma-dangle.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v5.2.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/comma-dangle.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/comma-dangle.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/comma-dangle)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/comma-dangle)</sup>
diff --git a/docs/rules/comma-spacing.md b/docs/rules/comma-spacing.md
index e318fb65..b5d7a726 100644
--- a/docs/rules/comma-spacing.md
+++ b/docs/rules/comma-spacing.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v7.0.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/comma-spacing.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/comma-spacing.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/comma-spacing)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/comma-spacing)</sup>
diff --git a/docs/rules/comma-style.md b/docs/rules/comma-style.md
index 17c5dd25..c7ce0868 100644
--- a/docs/rules/comma-style.md
+++ b/docs/rules/comma-style.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v7.0.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/comma-style.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/comma-style.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/comma-style)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/comma-style)</sup>
diff --git a/docs/rules/dot-location.md b/docs/rules/dot-location.md
index fa58a26a..cf4095d7 100644
--- a/docs/rules/dot-location.md
+++ b/docs/rules/dot-location.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v6.0.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/dot-location.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/dot-location.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/dot-location)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/dot-location)</sup>
diff --git a/docs/rules/dot-notation.md b/docs/rules/dot-notation.md
index 6e8264c2..2fc253ba 100644
--- a/docs/rules/dot-notation.md
+++ b/docs/rules/dot-notation.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v7.0.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/dot-notation.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/dot-notation.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/dot-notation)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/dot-notation)</sup>
diff --git a/docs/rules/eqeqeq.md b/docs/rules/eqeqeq.md
index d6bdf970..eeecfc56 100644
--- a/docs/rules/eqeqeq.md
+++ b/docs/rules/eqeqeq.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v5.2.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/eqeqeq.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/eqeqeq.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/eqeqeq)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/eqeqeq)</sup>
diff --git a/docs/rules/func-call-spacing.md b/docs/rules/func-call-spacing.md
index 41c79562..c31a19fa 100644
--- a/docs/rules/func-call-spacing.md
+++ b/docs/rules/func-call-spacing.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v7.0.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/func-call-spacing.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/func-call-spacing.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/func-call-spacing)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/func-call-spacing)</sup>
diff --git a/docs/rules/key-spacing.md b/docs/rules/key-spacing.md
index 41ba2f85..c7ba77b2 100644
--- a/docs/rules/key-spacing.md
+++ b/docs/rules/key-spacing.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v5.2.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/key-spacing.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/key-spacing.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/key-spacing)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/key-spacing)</sup>
diff --git a/docs/rules/keyword-spacing.md b/docs/rules/keyword-spacing.md
index 68e9e7cd..907746b7 100644
--- a/docs/rules/keyword-spacing.md
+++ b/docs/rules/keyword-spacing.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v6.0.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/keyword-spacing.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/keyword-spacing.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/keyword-spacing)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/keyword-spacing)</sup>
diff --git a/docs/rules/multiline-ternary.md b/docs/rules/multiline-ternary.md
index c962b4b0..d9d9d208 100644
--- a/docs/rules/multiline-ternary.md
+++ b/docs/rules/multiline-ternary.md
@@ -60,4 +60,4 @@ This rule was introduced in eslint-plugin-vue v9.7.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/multiline-ternary.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/multiline-ternary.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/multiline-ternary)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/multiline-ternary)</sup>
diff --git a/docs/rules/no-constant-condition.md b/docs/rules/no-constant-condition.md
index 7b583597..90be93dd 100644
--- a/docs/rules/no-constant-condition.md
+++ b/docs/rules/no-constant-condition.md
@@ -26,4 +26,4 @@ This rule was introduced in eslint-plugin-vue v7.5.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/no-constant-condition.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/no-constant-condition.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/no-constant-condition)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/no-constant-condition)</sup>
diff --git a/docs/rules/no-empty-pattern.md b/docs/rules/no-empty-pattern.md
index 99e2152f..8f788ad2 100644
--- a/docs/rules/no-empty-pattern.md
+++ b/docs/rules/no-empty-pattern.md
@@ -26,4 +26,4 @@ This rule was introduced in eslint-plugin-vue v6.0.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/no-empty-pattern.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/no-empty-pattern.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/no-empty-pattern)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/no-empty-pattern)</sup>
diff --git a/docs/rules/no-extra-parens.md b/docs/rules/no-extra-parens.md
index 0297304b..8abe90ff 100644
--- a/docs/rules/no-extra-parens.md
+++ b/docs/rules/no-extra-parens.md
@@ -50,4 +50,4 @@ This rule was introduced in eslint-plugin-vue v7.0.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/no-extra-parens.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/no-extra-parens.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/no-extra-parens)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/no-extra-parens)</sup>
diff --git a/docs/rules/no-loss-of-precision.md b/docs/rules/no-loss-of-precision.md
index bee468e7..b8ada172 100644
--- a/docs/rules/no-loss-of-precision.md
+++ b/docs/rules/no-loss-of-precision.md
@@ -30,4 +30,4 @@ This rule was introduced in eslint-plugin-vue v8.0.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/no-loss-of-precision.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/no-loss-of-precision.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/no-loss-of-precision)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/no-loss-of-precision)</sup>
diff --git a/docs/rules/no-restricted-syntax.md b/docs/rules/no-restricted-syntax.md
index 590e94d6..8058ecf5 100644
--- a/docs/rules/no-restricted-syntax.md
+++ b/docs/rules/no-restricted-syntax.md
@@ -59,4 +59,4 @@ This rule was introduced in eslint-plugin-vue v5.2.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/no-restricted-syntax.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/no-restricted-syntax.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/no-restricted-syntax)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/no-restricted-syntax)</sup>
diff --git a/docs/rules/no-sparse-arrays.md b/docs/rules/no-sparse-arrays.md
index e8cd1000..3d00dc36 100644
--- a/docs/rules/no-sparse-arrays.md
+++ b/docs/rules/no-sparse-arrays.md
@@ -26,4 +26,4 @@ This rule was introduced in eslint-plugin-vue v7.0.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/no-sparse-arrays.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/no-sparse-arrays.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/no-sparse-arrays)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/no-sparse-arrays)</sup>
diff --git a/docs/rules/no-useless-concat.md b/docs/rules/no-useless-concat.md
index 6c4afd42..647cd7c3 100644
--- a/docs/rules/no-useless-concat.md
+++ b/docs/rules/no-useless-concat.md
@@ -26,4 +26,4 @@ This rule was introduced in eslint-plugin-vue v7.0.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/no-useless-concat.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/no-useless-concat.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/no-useless-concat)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/no-useless-concat)</sup>
diff --git a/docs/rules/object-curly-newline.md b/docs/rules/object-curly-newline.md
index 9e07953f..cf98b092 100644
--- a/docs/rules/object-curly-newline.md
+++ b/docs/rules/object-curly-newline.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v7.0.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/object-curly-newline.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/object-curly-newline.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/object-curly-newline)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/object-curly-newline)</sup>
diff --git a/docs/rules/object-curly-spacing.md b/docs/rules/object-curly-spacing.md
index dacdf267..926ebfb7 100644
--- a/docs/rules/object-curly-spacing.md
+++ b/docs/rules/object-curly-spacing.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v5.2.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/object-curly-spacing.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/object-curly-spacing.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/object-curly-spacing)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/object-curly-spacing)</sup>
diff --git a/docs/rules/object-property-newline.md b/docs/rules/object-property-newline.md
index fb934acf..b294c3fc 100644
--- a/docs/rules/object-property-newline.md
+++ b/docs/rules/object-property-newline.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v7.0.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/object-property-newline.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/object-property-newline.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/object-property-newline)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/object-property-newline)</sup>
diff --git a/docs/rules/object-shorthand.md b/docs/rules/object-shorthand.md
index dafe616b..d51ea65c 100644
--- a/docs/rules/object-shorthand.md
+++ b/docs/rules/object-shorthand.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v8.4.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/object-shorthand.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/object-shorthand.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/object-shorthand)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/object-shorthand)</sup>
diff --git a/docs/rules/operator-linebreak.md b/docs/rules/operator-linebreak.md
index 71847d82..a10765f9 100644
--- a/docs/rules/operator-linebreak.md
+++ b/docs/rules/operator-linebreak.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v7.0.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/operator-linebreak.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/operator-linebreak.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/operator-linebreak)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/operator-linebreak)</sup>
diff --git a/docs/rules/prefer-template.md b/docs/rules/prefer-template.md
index 4b668f4c..bdd46315 100644
--- a/docs/rules/prefer-template.md
+++ b/docs/rules/prefer-template.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v7.0.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/prefer-template.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/prefer-template.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/prefer-template)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/prefer-template)</sup>
diff --git a/docs/rules/quote-props.md b/docs/rules/quote-props.md
index facf28ce..7c280a6e 100644
--- a/docs/rules/quote-props.md
+++ b/docs/rules/quote-props.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v8.4.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/quote-props.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/quote-props.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/quote-props)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/quote-props)</sup>
diff --git a/docs/rules/space-in-parens.md b/docs/rules/space-in-parens.md
index a29c298a..0d3135f5 100644
--- a/docs/rules/space-in-parens.md
+++ b/docs/rules/space-in-parens.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v7.0.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/space-in-parens.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/space-in-parens.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/space-in-parens)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/space-in-parens)</sup>
diff --git a/docs/rules/space-infix-ops.md b/docs/rules/space-infix-ops.md
index e9262366..be10d0dc 100644
--- a/docs/rules/space-infix-ops.md
+++ b/docs/rules/space-infix-ops.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v5.2.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/space-infix-ops.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/space-infix-ops.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/space-infix-ops)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/space-infix-ops)</sup>
diff --git a/docs/rules/space-unary-ops.md b/docs/rules/space-unary-ops.md
index 10e54540..1d038588 100644
--- a/docs/rules/space-unary-ops.md
+++ b/docs/rules/space-unary-ops.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v5.2.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/space-unary-ops.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/space-unary-ops.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/space-unary-ops)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/space-unary-ops)</sup>
diff --git a/docs/rules/template-curly-spacing.md b/docs/rules/template-curly-spacing.md
index 8760b038..e1ca6190 100644
--- a/docs/rules/template-curly-spacing.md
+++ b/docs/rules/template-curly-spacing.md
@@ -28,4 +28,4 @@ This rule was introduced in eslint-plugin-vue v7.0.0
 - [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/template-curly-spacing.js)
 - [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/template-curly-spacing.js)
 
-<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/template-curly-spacing)</sup>
+<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/latest/rules/template-curly-spacing)</sup>
diff --git a/lib/index.js b/lib/index.js
index aef60a60..879a4905 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -6,6 +6,7 @@
 'use strict'
 
 module.exports = {
+  meta: require('./meta'),
   rules: {
     'array-bracket-newline': require('./rules/array-bracket-newline'),
     'array-bracket-spacing': require('./rules/array-bracket-spacing'),
diff --git a/lib/meta.js b/lib/meta.js
new file mode 100644
index 00000000..d7006995
--- /dev/null
+++ b/lib/meta.js
@@ -0,0 +1,3 @@
+'use strict'
+const { name, version } = require('../package.json')
+module.exports = { name, version }
diff --git a/lib/processor.js b/lib/processor.js
index e0c10ef7..f0a89fd8 100644
--- a/lib/processor.js
+++ b/lib/processor.js
@@ -124,7 +124,9 @@ module.exports = {
     return filteredMessages
   },
 
-  supportsAutofix: true
+  supportsAutofix: true,
+
+  meta: require('./meta')
 }
 
 /**
diff --git a/package.json b/package.json
index 3449d474..ea0ce229 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "eslint-plugin-vue",
-  "version": "9.11.0",
+  "version": "9.11.1",
   "description": "Official ESLint plugin for Vue.js",
   "main": "lib/index.js",
   "scripts": {
@@ -81,7 +81,7 @@
     "eslint-plugin-jsonc": "^2.2.1",
     "eslint-plugin-node-dependencies": ">=0.5.0 <1.0.0",
     "eslint-plugin-prettier": "^4.0.0",
-    "eslint-plugin-unicorn": "^42.0.0",
+    "eslint-plugin-unicorn": "^47.0.0",
     "eslint-plugin-vue": "file:.",
     "espree": "^9.3.2",
     "events": "^3.3.0",
diff --git a/tools/update-lib-index.js b/tools/update-lib-index.js
index f57ae1e5..5a53b52b 100644
--- a/tools/update-lib-index.js
+++ b/tools/update-lib-index.js
@@ -25,6 +25,7 @@ const content = `/*
 'use strict'
 
 module.exports = {
+  meta: require('./meta'),
   rules: {
     ${rules
       .map((rule) => `'${rule.name}': require('./rules/${rule.name}')`)


Test patch:
diff --git a/tests/lib/meta.js b/tests/lib/meta.js
new file mode 100644
index 00000000..f9012ce0
--- /dev/null
+++ b/tests/lib/meta.js
@@ -0,0 +1,20 @@
+'use strict'
+
+const assert = require('assert')
+const plugin = require('../..')
+const expectedMeta = {
+  name: 'eslint-plugin-vue',
+  version: require('../../package.json').version
+}
+
+describe('Test for meta object', () => {
+  it('A plugin should have a meta object.', () => {
+    assert.deepStrictEqual(plugin.meta, expectedMeta)
+  })
+
+  for (const [name, processor] of Object.entries(plugin.processors)) {
+    it(`"${name}" processor should have a meta object.`, () => {
+      assert.deepStrictEqual(processor.meta, expectedMeta)
+    })
+  }
+})