Repository: intlify/eslint-plugin-vue-i18n
Pull request #556 (2024-10-06 10:11:24)

fix(deps): update dependency @intlify/core-base to v10
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@intlify/core-base](https://redirect.github.com/intlify/vue-i18n/tree/master/packages/core-base#readme) ([source](https://redirect.github.com/intlify/vue-i18n/tree/HEAD/packages/core)) | [`^9.12.0` -> `^10.0.0`](https://renovatebot.com/diffs/npm/@intlify%2fcore-base/9.14.2/10.0.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@intlify%2fcore-base/10.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@intlify%2fcore-base/10.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@intlify%2fcore-base/9.14.2/10.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@intlify%2fcore-base/9.14.2/10.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>intlify/vue-i18n (@&#8203;intlify/core-base)</summary>

### [`v10.0.5`](https://redirect.github.com/intlify/vue-i18n/releases/tag/v10.0.5)

[Compare Source](https://redirect.github.com/intlify/vue-i18n/compare/v10.0.4...v10.0.5)

<!-- Release notes generated using configuration in .github/release.yml at v10.0.5 -->

#### What's Changed

##### 🔒 Security Fixes

-   fix: XSS vulnerability with prototype pollution on AST: https://github.com/intlify/vue-i18n/security/advisories/GHSA-9r9m-ffp6-9x4v
-   fix: prototype pollusion on deepCopy: https://github.com/intlify/vue-i18n/security/advisories/GHSA-hjwq-mjwj-4x6c

**Full Changelog**: https://github.com/intlify/vue-i18n/compare/v10.0.4...v10.0.5

### [`v10.0.4`](https://redirect.github.com/intlify/vue-i18n/blob/HEAD/CHANGELOG.md#v1004-2024-10-06T074231Z)

[Compare Source](https://redirect.github.com/intlify/vue-i18n/compare/v10.0.3...v10.0.4)

This changelog is generated by [GitHub Releases](https://redirect.github.com/intlify/vue-i18n/releases/tag/v10.0.4)

<!-- Release notes generated using configuration in .github/release.yml at v10.0.4 -->

#### What's Changed

##### 🐛 Bug Fixes

-   fix: cannot resolve empty string on plural by [@&#8203;kazupon](https://redirect.github.com/kazupon) in [https://github.com/intlify/vue-i18n/pull/1985](https://redirect.github.com/intlify/vue-i18n/pull/1985)

##### 📝️ Documentations

-   Add petite-vue-i18n package to README by [@&#8203;vikingair](https://redirect.github.com/vikingair) in [https://github.com/intlify/vue-i18n/pull/1971](https://redirect.github.com/intlify/vue-i18n/pull/1971)

#### New Contributors

-   [@&#8203;vikingair](https://redirect.github.com/vikingair) made their first contribution in [https://github.com/intlify/vue-i18n/pull/1971](https://redirect.github.com/intlify/vue-i18n/pull/1971)

**Full Changelog**: https://github.com/intlify/vue-i18n/compare/v10.0.3...v10.0.4

### [`v10.0.3`](https://redirect.github.com/intlify/vue-i18n/blob/HEAD/CHANGELOG.md#v1003-2024-09-22T110922Z)

[Compare Source](https://redirect.github.com/intlify/vue-i18n/compare/v10.0.2...v10.0.3)

This changelog is generated by [GitHub Releases](https://redirect.github.com/intlify/vue-i18n/releases/tag/v10.0.3)

<!-- Release notes generated using configuration in .github/release.yml at v10.0.3 -->

#### What's Changed

##### 🐛 Bug Fixes

-   fix(petite-vue-i18n): cannot register correctly message resolver and locale fallbacker by [@&#8203;kazupon](https://redirect.github.com/kazupon) in [https://github.com/intlify/vue-i18n/pull/1967](https://redirect.github.com/intlify/vue-i18n/pull/1967)

##### 📝️ Documentations

-   docs: add unplugin-vue-i18n setting for petite-vue-i18n by [@&#8203;kazupon](https://redirect.github.com/kazupon) in [https://github.com/intlify/vue-i18n/pull/1968](https://redirect.github.com/intlify/vue-i18n/pull/1968)

**Full Changelog**: https://github.com/intlify/vue-i18n/compare/v10.0.2...v10.0.3

### [`v10.0.2`](https://redirect.github.com/intlify/vue-i18n/blob/HEAD/CHANGELOG.md#v1002-2024-09-21T180606Z)

[Compare Source](https://redirect.github.com/intlify/vue-i18n/compare/v10.0.1...v10.0.2)

This changelog is generated by [GitHub Releases](https://redirect.github.com/intlify/vue-i18n/releases/tag/v10.0.2)

<!-- Release notes generated using configuration in .github/release.yml at v10.0.2 -->

#### What's Changed

##### ⚡ Improvement Features

-   fix: revert [#&#8203;1379](https://redirect.github.com/intlify/vue-i18n/issues/1379) by [@&#8203;BobbieGoede](https://redirect.github.com/BobbieGoede) in [https://github.com/intlify/vue-i18n/pull/1953](https://redirect.github.com/intlify/vue-i18n/pull/1953)
-   fix: messages `deepCopy` mutates `src` arguments by [@&#8203;BobbieGoede](https://redirect.github.com/BobbieGoede) in [https://github.com/intlify/vue-i18n/pull/1947](https://redirect.github.com/intlify/vue-i18n/pull/1947)

##### 📝️ Documentations

-   docs: add team members by [@&#8203;kazupon](https://redirect.github.com/kazupon) in [https://github.com/intlify/vue-i18n/pull/1951](https://redirect.github.com/intlify/vue-i18n/pull/1951)
-   docs: add how to use shared locale messages on composition api by [@&#8203;kazupon](https://redirect.github.com/kazupon) in [https://github.com/intlify/vue-i18n/pull/1964](https://redirect.github.com/intlify/vue-i18n/pull/1964)

**Full Changelog**: https://github.com/intlify/vue-i18n/compare/v10.0.1...v10.0.2

### [`v10.0.1`](https://redirect.github.com/intlify/vue-i18n/blob/HEAD/CHANGELOG.md#v1001-2024-09-12T053356Z)

[Compare Source](https://redirect.github.com/intlify/vue-i18n/compare/v10.0.0...v10.0.1)

This changelog is generated by [GitHub Releases](https://redirect.github.com/intlify/vue-i18n/releases/tag/v10.0.1)

<!-- Release notes generated using configuration in .github/release.yml at v10.0.1 -->

#### What's Changed

##### 🐛 Bug Fixes

-   fix: petite-vue-i18n type errors by [@&#8203;TPORL](https://redirect.github.com/TPORL) in [https://github.com/intlify/vue-i18n/pull/1945](https://redirect.github.com/intlify/vue-i18n/pull/1945)

#### New Contributors

-   [@&#8203;TPORL](https://redirect.github.com/TPORL) made their first contribution in [https://github.com/intlify/vue-i18n/pull/1945](https://redirect.github.com/intlify/vue-i18n/pull/1945)

**Full Changelog**: https://github.com/intlify/vue-i18n/compare/v10.0.0...v10.0.1

### [`v10.0.0`](https://redirect.github.com/intlify/vue-i18n/blob/HEAD/CHANGELOG.md#v1000-2024-09-10T044141Z)

[Compare Source](https://redirect.github.com/intlify/vue-i18n/compare/v9.14.2...v10.0.0)

We are excited to announce the release of Vue I18n v10.
We had many contributors.

Thanks for your contributing ❤️

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/intlify/eslint-plugin-vue-i18n).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC45Ny4wIiwidXBkYXRlZEluVmVyIjoiMzkuNDIuNCIsInRhcmdldEJyYW5jaCI6Im1hc3RlciIsImxhYmVscyI6WyJUeXBlOiBEZXBlbmRlbmN5Il19-->


changeset-bot[bot]: ###  ⚠️  No Changeset found

Latest commit: 04a22b7e97b48bc03cc30a8592e72161b2589e41

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. **If these changes should result in a version bump, you need to add a changeset.**

<details><summary>This PR includes no changesets</summary>

  When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

</details>

[Click here to learn what changesets are, and how to add one](https://github.com/changesets/changesets/blob/main/docs/adding-a-changeset.md).

[Click here if you're a maintainer who wants to add a changeset to this PR](https://github.com/intlify/eslint-plugin-vue-i18n/new/renovate/intlify-core-base-10.x?filename=.changeset/poor-stingrays-fold.md&value=---%0A%22%40intlify%2Feslint-plugin-vue-i18n%22%3A%20patch%0A---%0A%0Afix(deps)%3A%20update%20dependency%20%40intlify%2Fcore-base%20to%20v10%0A)


cloudflare-workers-and-pages[bot]: ## Deploying eslint-plugin-vue-i18n with &nbsp;<a href="https://pages.dev"><img alt="Cloudflare Pages" src="https://user-images.githubusercontent.com/23264/106598434-9e719e00-654f-11eb-9e59-6167043cfa01.png" width="16"></a> &nbsp;Cloudflare Pages

<table><tr><td><strong>Latest commit:</strong> </td><td>
<code>04a22b7</code>
</td></tr>
<tr><td><strong>Status:</strong></td><td>&nbsp;✅&nbsp; Deploy successful!</td></tr>
<tr><td><strong>Preview URL:</strong></td><td>
<a href='https://fcec5eb5.eslint-plugin-vue-i18n.pages.dev'>https://fcec5eb5.eslint-plugin-vue-i18n.pages.dev</a>
</td></tr>
<tr><td><strong>Branch Preview URL:</strong></td><td>
<a href='https://renovate-intlify-core-base-1.eslint-plugin-vue-i18n.pages.dev'>https://renovate-intlify-core-base-1.eslint-plugin-vue-i18n.pages.dev</a>
</td></tr>
</table>

[View logs](https://dash.cloudflare.com/?to=/:account/pages/view/eslint-plugin-vue-i18n/fcec5eb5-b1f0-4251-876b-b695221846d0)


Patch:
diff --git a/.changeset/afraid-queens-shave.md b/.changeset/afraid-queens-shave.md
new file mode 100644
index 0000000..25fd455
--- /dev/null
+++ b/.changeset/afraid-queens-shave.md
@@ -0,0 +1,5 @@
+---
+"@intlify/eslint-plugin-vue-i18n": major
+---
+
+fix(deps): update dependency @intlify/core-base to v10
diff --git a/.changeset/pre.json b/.changeset/pre.json
new file mode 100644
index 0000000..6283743
--- /dev/null
+++ b/.changeset/pre.json
@@ -0,0 +1,8 @@
+{
+  "mode": "pre",
+  "tag": "next",
+  "initialVersions": {
+    "@intlify/eslint-plugin-vue-i18n": "3.2.0"
+  },
+  "changesets": []
+}
diff --git a/.node-version b/.node-version
index 209e3ef..2bd5a0a 100644
--- a/.node-version
+++ b/.node-version
@@ -1,1 +1,1 @@
-20
+22
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 02b5006..ae6bcf6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # @intlify/eslint-plugin-vue-i18n
 
+## 3.2.0
+
+### Minor Changes
+
+- [#580](https://github.com/intlify/eslint-plugin-vue-i18n/pull/580) [`14dfda5`](https://github.com/intlify/eslint-plugin-vue-i18n/commit/14dfda5f54cf6e721967b83a6b7e6fbfd77841a7) Thanks [@kazupon](https://github.com/kazupon)! - feat: add `no-deprecated-v-t` rule
+
 ## 3.1.0
 
 ### Minor Changes
diff --git a/docs/rules/index.md b/docs/rules/index.md
index 93c5d88..10cb434 100644
--- a/docs/rules/index.md
+++ b/docs/rules/index.md
@@ -13,6 +13,7 @@
 | [@intlify/vue-i18n/<wbr>no-deprecated-i18n-places-prop](./no-deprecated-i18n-places-prop.html) | disallow using deprecated `places` prop (Removed in Vue I18n 9.0.0+) | :star: |
 | [@intlify/vue-i18n/<wbr>no-deprecated-modulo-syntax](./no-deprecated-modulo-syntax.html) | enforce modulo interpolation to be named interpolation | :star::black_nib: |
 | [@intlify/vue-i18n/<wbr>no-deprecated-tc](./no-deprecated-tc.html) | disallow using deprecated `tc` or `$tc` (Deprecated in Vue I18n 10.0.0, removed fully in Vue I18n 11.0.0) | :star: |
+| [@intlify/vue-i18n/<wbr>no-deprecated-v-t](./no-deprecated-v-t.html) | disallow using deprecated `v-t` custom directive (Deprecated in Vue I18n 11.0.0, removed fully in Vue I18n 12.0.0) |  |
 | [@intlify/vue-i18n/<wbr>no-html-messages](./no-html-messages.html) | disallow use HTML localization messages | :star: |
 | [@intlify/vue-i18n/<wbr>no-i18n-t-path-prop](./no-i18n-t-path-prop.html) | disallow using `path` prop with `<i18n-t>` | :star::black_nib: |
 | [@intlify/vue-i18n/<wbr>no-missing-keys](./no-missing-keys.html) | disallow missing locale message key at localization methods | :star: |
diff --git a/docs/rules/no-deprecated-v-t.md b/docs/rules/no-deprecated-v-t.md
new file mode 100644
index 0000000..33c4cba
--- /dev/null
+++ b/docs/rules/no-deprecated-v-t.md
@@ -0,0 +1,64 @@
+---
+title: '@intlify/vue-i18n/no-deprecated-v-t'
+description: disallow using deprecated `v-t` custom directive (Deprecated in Vue I18n 11.0.0, removed fully in Vue I18n 12.0.0)
+since: v3.2.0
+---
+
+# @intlify/vue-i18n/no-deprecated-v-t
+
+> disallow using deprecated `v-t` custom directive (Deprecated in Vue I18n 11.0.0, removed fully in Vue I18n 12.0.0)
+
+If you are migrating from Vue I18n v10 to v11, `v-t` custom direcitve should be replaced with `t` or `$t`.
+
+## :book: Rule Details
+
+This rule reports use of deprecated `v-t` custom directive (Deprecated in Vue I18n 11.0.0, removed fully in Vue I18n 12.0.0)
+
+:-1: Examples of **incorrect** code for this rule:
+
+<eslint-code-block>
+
+<!-- eslint-skip -->
+
+```vue
+<script>
+/* eslint @intlify/vue-i18n/no-deprecated-v-t: 'error' */
+</script>
+<template>
+  <!-- ✗ BAD -->
+  <p v-t="'banana'"></p>
+</template>
+```
+
+</eslint-code-block>
+
+:+1: Examples of **correct** code for this rule:
+
+<eslint-code-block>
+
+<!-- eslint-skip -->
+
+```vue
+<script>
+/* eslint @intlify/vue-i18n/no-deprecated-v-t: 'error' */
+</script>
+<template>
+  <!-- ✓ GOOD -->
+  <p>{{ $t('banana') }}</p>
+</template>
+```
+
+</eslint-code-block>
+
+## :books: Further reading
+
+- [Vue I18n > Breaking Changes in v11 - Deprecate Custom Directive `v-t`](https://vue-i18n.intlify.dev/guide/migration/breaking11.html#deprecate-custom-directive-v-t)
+
+## :rocket: Version
+
+This rule was introduced in `@intlify/eslint-plugin-vue-i18n` v3.2.0
+
+## :mag: Implementation
+
+- [Rule source](https://github.com/intlify/eslint-plugin-vue-i18n/blob/master/lib/rules/no-deprecated-v-t.ts)
+- [Test source](https://github.com/intlify/eslint-plugin-vue-i18n/tree/master/tests/lib/rules/no-deprecated-v-t.ts)
diff --git a/lib/index.ts b/lib/index.ts
index 3bad70a..75ef61b 100644
--- a/lib/index.ts
+++ b/lib/index.ts
@@ -12,6 +12,7 @@ import noDeprecatedI18nPlaceAttr from './rules/no-deprecated-i18n-place-attr'
 import noDeprecatedI18nPlacesProp from './rules/no-deprecated-i18n-places-prop'
 import noDeprecatedModuloSyntax from './rules/no-deprecated-modulo-syntax'
 import noDeprecatedTc from './rules/no-deprecated-tc'
+import noDeprecatedVT from './rules/no-deprecated-v-t'
 import noDuplicateKeysInLocale from './rules/no-duplicate-keys-in-locale'
 import noDynamicKeys from './rules/no-dynamic-keys'
 import noHtmlMessages from './rules/no-html-messages'
@@ -45,6 +46,7 @@ export = {
     'no-deprecated-i18n-places-prop': noDeprecatedI18nPlacesProp,
     'no-deprecated-modulo-syntax': noDeprecatedModuloSyntax,
     'no-deprecated-tc': noDeprecatedTc,
+    'no-deprecated-v-t': noDeprecatedVT,
     'no-duplicate-keys-in-locale': noDuplicateKeysInLocale,
     'no-dynamic-keys': noDynamicKeys,
     'no-html-messages': noHtmlMessages,
diff --git a/lib/rules/no-deprecated-v-t.ts b/lib/rules/no-deprecated-v-t.ts
new file mode 100644
index 0000000..f34fae9
--- /dev/null
+++ b/lib/rules/no-deprecated-v-t.ts
@@ -0,0 +1,43 @@
+/**
+ * @author kazuya kawaguchi (a.k.a. kazupon)
+ */
+import { defineTemplateBodyVisitor } from '../utils/index'
+import { createRule } from '../utils/rule'
+
+import type { RuleContext, RuleListener } from '../types'
+import type { AST as VAST } from 'vue-eslint-parser'
+
+function checkDirective(context: RuleContext, node: VAST.VDirective) {
+  context.report({
+    node,
+    message: `'v-t' custom directive is used, but it is deprecated. Use 't' or '$t' instead.`
+  })
+}
+
+function create(context: RuleContext): RuleListener {
+  return defineTemplateBodyVisitor(context, {
+    "VAttribute[directive=true][key.name='t']"(node: VAST.VDirective) {
+      checkDirective(context, node)
+    },
+
+    "VAttribute[directive=true][key.name.name='t']"(node: VAST.VDirective) {
+      checkDirective(context, node)
+    }
+  })
+}
+
+export = createRule({
+  meta: {
+    type: 'problem',
+    docs: {
+      description:
+        'disallow using deprecated `v-t` custom directive (Deprecated in Vue I18n 11.0.0, removed fully in Vue I18n 12.0.0)',
+      category: 'Recommended',
+      url: 'https://eslint-plugin-vue-i18n.intlify.dev/rules/no-deprecated-v-t.html',
+      recommended: false
+    },
+    fixable: null,
+    schema: []
+  },
+  create
+})
diff --git a/package.json b/package.json
index 5c6b6ff..6851f0d 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@intlify/eslint-plugin-vue-i18n",
   "description": "ESLint plugin for Vue I18n",
-  "version": "3.1.0",
+  "version": "3.2.0",
   "license": "MIT",
   "homepage": "https://github.com/intlify/eslint-plugin-vue-i18n#readme",
   "keywords": [
@@ -60,7 +60,7 @@
   },
   "dependencies": {
     "@eslint/eslintrc": "^3.0.0",
-    "@intlify/core-base": "^9.12.0",
+    "@intlify/core-base": "^10.0.0",
     "@intlify/message-compiler": "^9.12.0",
     "debug": "^4.3.4",
     "eslint-compat-utils": "^0.6.0",
@@ -90,7 +90,7 @@
     "@types/json-schema": "^7.0.12",
     "@types/lodash": "^4.14.196",
     "@types/mocha": "^10.0.1",
-    "@types/node": "^20.4.5",
+    "@types/node": "^22.0.0",
     "@types/prettier": "^3.0.0",
     "@types/semver": "^7.5.0",
     "@typescript-eslint/eslint-plugin": "^7.0.0",
@@ -108,13 +108,13 @@
     "jiti": "^1.21.0",
     "json-schema": "^0.4.0",
     "lint-staged": "^15.0.0",
-    "mocha": "^10.2.0",
+    "mocha": "^11.0.0",
     "monaco-editor": "^0.52.0",
     "npm-run-all2": "7.0.1",
     "nyc": "^17.0.0",
     "opener": "^1.5.2",
     "path-scurry": "^1.10.1",
-    "prettier": "^3.3.0",
+    "prettier": "^3.4.2",
     "ts-node": "^10.9.2",
     "typescript": "^5.1.6",
     "typescript-eslint": "^7.11.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f34fb8c..4a3d35e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -12,14 +12,14 @@ importers:
         specifier: ^3.0.0
         version: 3.0.0
       '@intlify/core-base':
-        specifier: ^9.12.0
-        version: 9.14.2
+        specifier: ^10.0.0
+        version: 10.0.5
       '@intlify/message-compiler':
         specifier: ^9.12.0
         version: 9.12.0
       debug:
         specifier: ^4.3.4
-        version: 4.3.4(supports-color@8.1.1)
+        version: 4.3.4
       eslint-compat-utils:
         specifier: ^0.6.0
         version: 0.6.3(eslint@9.4.0)
@@ -97,8 +97,8 @@ importers:
         specifier: ^10.0.1
         version: 10.0.1
       '@types/node':
-        specifier: ^20.4.5
-        version: 20.4.5
+        specifier: ^22.0.0
+        version: 22.9.0
       '@types/prettier':
         specifier: ^3.0.0
         version: 3.0.0
@@ -128,7 +128,7 @@ importers:
         version: 5.0.0(eslint@9.4.0)
       eslint-plugin-prettier:
         specifier: ^5.1.3
-        version: 5.1.3(@types/eslint@8.44.1)(eslint-config-prettier@9.0.0(eslint@9.4.0))(eslint@9.4.0)(prettier@3.3.0)
+        version: 5.1.3(@types/eslint@8.44.1)(eslint-config-prettier@9.0.0(eslint@9.4.0))(eslint@9.4.0)(prettier@3.4.2)
       eslint-plugin-vue:
         specifier: ^9.24.1
         version: 9.24.1(eslint@9.4.0)
@@ -151,8 +151,8 @@ importers:
         specifier: ^15.0.0
         version: 15.2.2
       mocha:
-        specifier: ^10.2.0
-        version: 10.2.0
+        specifier: ^11.0.0
+        version: 11.0.1
       monaco-editor:
         specifier: ^0.52.0
         version: 0.52.0
@@ -169,11 +169,11 @@ importers:
         specifier: ^1.10.1
         version: 1.10.1
       prettier:
-        specifier: ^3.3.0
-        version: 3.3.0
+        specifier: ^3.4.2
+        version: 3.4.2
       ts-node:
         specifier: ^10.9.2
-        version: 10.9.2(@types/node@20.4.5)(typescript@5.1.6)
+        version: 10.9.2(@types/node@22.9.0)(typescript@5.1.6)
       typescript:
         specifier: ^5.1.6
         version: 5.1.6
@@ -182,7 +182,7 @@ importers:
         version: 7.11.0(eslint@9.4.0)(typescript@5.1.6)
       vitepress:
         specifier: ^1.0.2
-        version: 1.0.2(@algolia/client-search@4.19.1)(@types/node@20.4.5)(postcss@8.4.47)(search-insights@2.7.0)(typescript@5.1.6)
+        version: 1.0.2(@algolia/client-search@4.19.1)(@types/node@22.9.0)(postcss@8.4.47)(search-insights@2.7.0)(typescript@5.1.6)
       vue-eslint-editor:
         specifier: ^1.1.0
         version: 1.1.0
@@ -646,26 +646,26 @@ packages:
     resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==}
     engines: {node: '>=18.18'}
 
-  '@intlify/core-base@9.14.2':
-    resolution: {integrity: sha512-DZyQ4Hk22sC81MP4qiCDuU+LdaYW91A6lCjq8AWPvY3+mGMzhGDfOCzvyR6YBQxtlPjFqMoFk9ylnNYRAQwXtQ==}
+  '@intlify/core-base@10.0.5':
+    resolution: {integrity: sha512-F3snDTQs0MdvnnyzTDTVkOYVAZOE/MHwRvF7mn7Jw1yuih4NrFYLNYIymGlLmq4HU2iIdzYsZ7f47bOcwY73XQ==}
+    engines: {node: '>= 16'}
+
+  '@intlify/message-compiler@10.0.5':
+    resolution: {integrity: sha512-6GT1BJ852gZ0gItNZN2krX5QAmea+cmdjMvsWohArAZ3GmHdnNANEcF9JjPXAMRtQ6Ux5E269ymamg/+WU6tQA==}
     engines: {node: '>= 16'}
 
   '@intlify/message-compiler@9.12.0':
     resolution: {integrity: sha512-2c6VwhvVJ1nur+2cN2NjdrmrV6vXjvyxYVvtUYMXKsWSUwoNURHGds0xJVJmWxbF8qV9oGepcVV6xl9bvadEIg==}
     engines: {node: '>= 16'}
 
-  '@intlify/message-compiler@9.14.2':
-    resolution: {integrity: sha512-YsKKuV4Qv4wrLNsvgWbTf0E40uRv+Qiw1BeLQ0LAxifQuhiMe+hfTIzOMdWj/ZpnTDj4RSZtkXjJM7JDiiB5LQ==}
+  '@intlify/shared@10.0.5':
+    resolution: {integrity: sha512-bmsP4L2HqBF6i6uaMqJMcFBONVjKt+siGluRq4Ca4C0q7W2eMaVZr8iCgF9dKbcVXutftkC7D6z2SaSMmLiDyA==}
     engines: {node: '>= 16'}
 
   '@intlify/shared@9.12.0':
     resolution: {integrity: sha512-uBcH55x5CfZynnerWHQxrXbT6yD6j6T7Nt+R2+dHAOAneoMd6BoGvfEzfYscE94rgmjoDqdr+PdGDBLk5I5EjA==}
     engines: {node: '>= 16'}
 
-  '@intlify/shared@9.14.2':
-    resolution: {integrity: sha512-uRAHAxYPeF+G5DBIboKpPgC/Waecd4Jz8ihtkpJQD5ycb5PwXp0k/+hBGl5dAjwF7w+l74kz/PKA8r8OK//RUw==}
-    engines: {node: '>= 16'}
-
   '@isaacs/cliui@8.0.2':
     resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
     engines: {node: '>=12'}
@@ -894,8 +894,8 @@ packages:
   '@types/node@12.20.55':
     resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
 
-  '@types/node@20.4.5':
-    resolution: {integrity: sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==}
+  '@types/node@22.9.0':
+    resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==}
 
   '@types/normalize-package-data@2.4.1':
     resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
@@ -1102,10 +1102,6 @@ packages:
   algoliasearch@4.19.1:
     resolution: {integrity: sha512-IJF5b93b2MgAzcE/tuzW0yOPnuUyRgGAtaPv5UUywXM8kzqfdwZTO4sPJBzoGz1eOy6H9uEchsJsBFTELZSu+g==}
 
-  ansi-colors@4.1.1:
-    resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==}
-    engines: {node: '>=6'}
-
   ansi-colors@4.1.3:
     resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
     engines: {node: '>=6'}
@@ -1375,6 +1371,15 @@ packages:
       supports-color:
         optional: true
 
+  debug@4.3.7:
+    resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
+    engines: {node: '>=6.0'}
+    peerDependencies:
+      supports-color: '*'
+    peerDependenciesMeta:
+      supports-color:
+        optional: true
+
   decamelize-keys@1.1.1:
     resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==}
     engines: {node: '>=0.10.0'}
@@ -1409,8 +1414,8 @@ packages:
     resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
     engines: {node: '>=0.3.1'}
 
-  diff@5.0.0:
-    resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==}
+  diff@5.2.0:
+    resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==}
     engines: {node: '>=0.3.1'}
 
   dir-glob@3.0.1:
@@ -1782,9 +1787,9 @@ packages:
     engines: {node: '>=16 || 14 >=14.17'}
     hasBin: true
 
-  glob@7.2.0:
-    resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==}
-    deprecated: Glob versions prior to v9 are no longer supported
+  glob@10.4.5:
+    resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
+    hasBin: true
 
   glob@7.2.3:
     resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
@@ -2106,6 +2111,9 @@ packages:
     resolution: {integrity: sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg==}
     engines: {node: '>=14'}
 
+  jackspeak@3.4.3:
+    resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
+
   jiti@1.21.0:
     resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
     hasBin: true
@@ -2224,6 +2232,9 @@ packages:
     resolution: {integrity: sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==}
     engines: {node: 14 || >=16.14}
 
+  lru-cache@10.4.3:
+    resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
+
   lru-cache@4.1.5:
     resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
 
@@ -2303,8 +2314,8 @@ packages:
   minimatch@3.1.2:
     resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
 
-  minimatch@5.0.1:
-    resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==}
+  minimatch@5.1.6:
+    resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
     engines: {node: '>=10'}
 
   minimatch@9.0.3:
@@ -2323,6 +2334,10 @@ packages:
     resolution: {integrity: sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==}
     engines: {node: '>=16 || 14 >=14.17'}
 
+  minipass@7.1.2:
+    resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
+    engines: {node: '>=16 || 14 >=14.17'}
+
   minisearch@6.3.0:
     resolution: {integrity: sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==}
 
@@ -2333,9 +2348,9 @@ packages:
     resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==}
     engines: {node: '>= 8.0.0'}
 
-  mocha@10.2.0:
-    resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==}
-    engines: {node: '>= 14.0.0'}
+  mocha@11.0.1:
+    resolution: {integrity: sha512-+3GkODfsDG71KSCQhc4IekSW+ItCK/kiez1Z28ksWvYhKXV/syxMlerR/sC7whDp7IyreZ4YxceMLdTs5hQE8A==}
+    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
     hasBin: true
 
   monaco-editor@0.52.0:
@@ -2347,11 +2362,6 @@ packages:
   ms@2.1.3:
     resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
 
-  nanoid@3.3.3:
-    resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==}
-    engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
-    hasBin: true
-
   nanoid@3.3.7:
     resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
     engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@@ -2477,6 +2487,9 @@ packages:
     resolution: {integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==}
     engines: {node: '>=8'}
 
+  package-json-from-dist@1.0.1:
+    resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
+
   parent-module@1.0.1:
     resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
     engines: {node: '>=6'}
@@ -2514,6 +2527,10 @@ packages:
     resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==}
     engines: {node: '>=16 || 14 >=14.17'}
 
+  path-scurry@1.11.1:
+    resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
+    engines: {node: '>=16 || 14 >=14.18'}
+
   path-type@4.0.0:
     resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
     engines: {node: '>=8'}
@@ -2576,8 +2593,8 @@ packages:
     engines: {node: '>=10.13.0'}
     hasBin: true
 
-  prettier@3.3.0:
-    resolution: {integrity: sha512-J9odKxERhCQ10OC2yb93583f6UnYutOeiV5i0zEDS7UGTdUt0u+y8erxl3lBKvwo/JHyyoEdXjwp4dke9oyZ/g==}
+  prettier@3.4.2:
+    resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==}
     engines: {node: '>=14'}
     hasBin: true
 
@@ -2719,8 +2736,8 @@ packages:
     engines: {node: '>=10'}
     hasBin: true
 
-  serialize-javascript@6.0.0:
-    resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==}
+  serialize-javascript@6.0.2:
+    resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==}
 
   set-blocking@2.0.0:
     resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
@@ -3010,6 +3027,9 @@ packages:
   unbox-primitive@1.0.2:
     resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
 
+  undici-types@6.19.8:
+    resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
+
   unist-util-stringify-position@2.0.3:
     resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==}
 
@@ -3157,8 +3177,8 @@ packages:
     engines: {node: ^18.17.0 || >=20.5.0}
     hasBin: true
 
-  workerpool@6.2.1:
-    resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==}
+  workerpool@6.5.1:
+    resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==}
 
   wrap-ansi@6.2.0:
     resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
@@ -3218,8 +3238,8 @@ packages:
     resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
     engines: {node: '>=6'}
 
-  yargs-parser@20.2.4:
-    resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==}
+  yargs-parser@20.2.9:
+    resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
     engines: {node: '>=10'}
 
   yargs-parser@21.1.1:
@@ -3374,7 +3394,7 @@ snapshots:
       '@babel/traverse': 7.24.7
       '@babel/types': 7.24.7
       convert-source-map: 2.0.0
-      debug: 4.3.4(supports-color@8.1.1)
+      debug: 4.3.4
       gensync: 1.0.0-beta.2
       json5: 2.2.3
       semver: 6.3.1
@@ -3494,7 +3514,7 @@ snapshots:
       '@babel/helper-split-export-declaration': 7.24.7
       '@babel/parser': 7.24.7
       '@babel/types': 7.24.7
-      debug: 4.3.4(supports-color@8.1.1)
+      debug: 4.3.4
       globals: 11.12.0
     transitivePeerDependencies:
       - supports-color
@@ -3786,7 +3806,7 @@ snapshots:
   '@eslint/config-array@0.15.1':
     dependencies:
       '@eslint/object-schema': 2.1.3
-      debug: 4.3.4(supports-color@8.1.1)
+      debug: 4.3.4
       minimatch: 3.1.2
     transitivePeerDependencies:
       - supports-color
@@ -3794,7 +3814,7 @@ snapshots:
   '@eslint/eslintrc@3.0.0':
     dependencies:
       ajv: 6.12.6
-      debug: 4.3.4(supports-color@8.1.1)
+      debug: 4.3.4
       espree: 9.6.1
       globals: 13.20.0
       ignore: 5.3.1
@@ -3808,7 +3828,7 @@ snapshots:
   '@eslint/eslintrc@3.1.0':
     dependencies:
       ajv: 6.12.6
-      debug: 4.3.4(supports-color@8.1.1)
+      debug: 4.3.4
       espree: 10.0.1
       globals: 14.0.0
       ignore: 5.3.1
@@ -3827,25 +3847,25 @@ snapshots:
 
   '@humanwhocodes/retry@0.3.0': {}
 
-  '@intlify/core-base@9.14.2':
+  '@intlify/core-base@10.0.5':
+    dependencies:
+      '@intlify/message-compiler': 10.0.5
+      '@intlify/shared': 10.0.5
+
+  '@intlify/message-compiler@10.0.5':
     dependencies:
-      '@intlify/message-compiler': 9.14.2
-      '@intlify/shared': 9.14.2
+      '@intlify/shared': 10.0.5
+      source-map-js: 1.2.1
 
   '@intlify/message-compiler@9.12.0':
     dependencies:
       '@intlify/shared': 9.12.0
       source-map-js: 1.2.0
 
-  '@intlify/message-compiler@9.14.2':
-    dependencies:
-      '@intlify/shared': 9.14.2
-      source-map-js: 1.2.1
+  '@intlify/shared@10.0.5': {}
 
   '@intlify/shared@9.12.0': {}
 
-  '@intlify/shared@9.14.2': {}
-
   '@isaacs/cliui@8.0.2':
     dependencies:
       string-width: 5.1.2
@@ -4018,7 +4038,7 @@ snapshots:
   '@types/glob@8.1.0':
     dependencies:
       '@types/minimatch': 5.1.2
-      '@types/node': 20.4.5
+      '@types/node': 22.9.0
 
   '@types/is-ci@3.0.0':
     dependencies:
@@ -4053,13 +4073,15 @@ snapshots:
 
   '@types/node@12.20.55': {}
 
-  '@types/node@20.4.5': {}
+  '@types/node@22.9.0':
+    dependencies:
+      undici-types: 6.19.8
 
   '@types/normalize-package-data@2.4.1': {}
 
   '@types/prettier@3.0.0':
     dependencies:
-      prettier: 3.3.0
+      prettier: 3.4.2
 
   '@types/semver@7.5.0': {}
 
@@ -4091,7 +4113,7 @@ snapshots:
       '@typescript-eslint/types': 7.11.0
       '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.1.6)
       '@typescript-eslint/visitor-keys': 7.11.0
-      debug: 4.3.4(supports-color@8.1.1)
+      debug: 4.3.4
       eslint: 9.4.0
     optionalDependencies:
       typescript: 5.1.6
@@ -4107,7 +4129,7 @@ snapshots:
     dependencies:
       '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.1.6)
       '@typescript-eslint/utils': 7.11.0(eslint@9.4.0)(typescript@5.1.6)
-      debug: 4.3.4(supports-color@8.1.1)
+      debug: 4.3.4
       eslint: 9.4.0
       ts-api-utils: 1.3.0(typescript@5.1.6)
     optionalDependencies:
@@ -4121,7 +4143,7 @@ snapshots:
     dependencies:
       '@typescript-eslint/types': 7.11.0
       '@typescript-eslint/visitor-keys': 7.11.0
-      debug: 4.3.4(supports-color@8.1.1)
+      debug: 4.3.4
       globby: 11.1.0
       is-glob: 4.0.3
       minimatch: 9.0.4
@@ -4148,9 +4170,9 @@ snapshots:
       '@typescript-eslint/types': 7.11.0
       eslint-visitor-keys: 3.4.3
 
-  '@vitejs/plugin-vue@5.0.4(vite@5.4.8(@types/node@20.4.5))(vue@3.4.21(typescript@5.1.6))':
+  '@vitejs/plugin-vue@5.0.4(vite@5.4.8(@types/node@22.9.0))(vue@3.4.21(typescript@5.1.6))':
     dependencies:
-      vite: 5.4.8(@types/node@20.4.5)
+      vite: 5.4.8(@types/node@22.9.0)
       vue: 3.4.21(typescript@5.1.6)
 
   '@vue/compiler-core@3.4.21':
@@ -4304,8 +4326,6 @@ snapshots:
       '@algolia/requester-node-http': 4.19.1
       '@algolia/transporter': 4.19.1
 
-  ansi-colors@4.1.1: {}
-
   ansi-colors@4.1.3: {}
 
   ansi-escapes@6.2.1: {}
@@ -4557,9 +4577,13 @@ snapshots:
 
   dataloader@1.4.0: {}
 
-  debug@4.3.4(supports-color@8.1.1):
+  debug@4.3.4:
     dependencies:
       ms: 2.1.2
+
+  debug@4.3.7(supports-color@8.1.1):
+    dependencies:
+      ms: 2.1.3
     optionalDependencies:
       supports-color: 8.1.1
 
@@ -4591,7 +4615,7 @@ snapshots:
 
   diff@4.0.2: {}
 
-  diff@5.0.0: {}
+  diff@5.2.0: {}
 
   dir-glob@3.0.1:
     dependencies:
@@ -4740,10 +4764,10 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  eslint-plugin-prettier@5.1.3(@types/eslint@8.44.1)(eslint-config-prettier@9.0.0(eslint@9.4.0))(eslint@9.4.0)(prettier@3.3.0):
+  eslint-plugin-prettier@5.1.3(@types/eslint@8.44.1)(eslint-config-prettier@9.0.0(eslint@9.4.0))(eslint@9.4.0)(prettier@3.4.2):
     dependencies:
       eslint: 9.4.0
-      prettier: 3.3.0
+      prettier: 3.4.2
       prettier-linter-helpers: 1.0.0
       synckit: 0.8.8
     optionalDependencies:
@@ -4800,7 +4824,7 @@ snapshots:
 
   eslint4b@7.32.0:
     dependencies:
-      debug: 4.3.4(supports-color@8.1.1)
+      debug: 4.3.4
       doctrine: 3.0.0
       escape-string-regexp: 4.0.0
       eslint-scope: 5.1.1
@@ -4832,7 +4856,7 @@ snapshots:
       ajv: 6.12.6
       chalk: 4.1.2
       cross-spawn: 7.0.3
-      debug: 4.3.4(supports-color@8.1.1)
+      debug: 4.3.4
       escape-string-regexp: 4.0.0
       eslint-scope: 8.0.1
       eslint-visitor-keys: 4.0.0
@@ -5064,14 +5088,14 @@ snapshots:
       minipass: 7.0.2
       path-scurry: 1.10.1
 
-  glob@7.2.0:
+  glob@10.4.5:
     dependencies:
-      fs.realpath: 1.0.0
-      inflight: 1.0.6
-      inherits: 2.0.4
-      minimatch: 3.1.2
-      once: 1.4.0
-      path-is-absolute: 1.0.1
+      foreground-child: 3.1.1
+      jackspeak: 3.4.3
+      minimatch: 9.0.4
+      minipass: 7.1.2
+      package-json-from-dist: 1.0.1
+      path-scurry: 1.11.1
 
   glob@7.2.3:
     dependencies:
@@ -5348,7 +5372,7 @@ snapshots:
 
   istanbul-lib-source-maps@4.0.1:
     dependencies:
-      debug: 4.3.4(supports-color@8.1.1)
+      debug: 4.3.4
       istanbul-lib-coverage: 3.2.0
       source-map: 0.6.1
     transitivePeerDependencies:
@@ -5365,6 +5389,12 @@ snapshots:
     optionalDependencies:
       '@pkgjs/parseargs': 0.11.0
 
+  jackspeak@3.4.3:
+    dependencies:
+      '@isaacs/cliui': 8.0.2
+    optionalDependencies:
+      '@pkgjs/parseargs': 0.11.0
+
   jiti@1.21.0: {}
 
   js-tokens@4.0.0: {}
@@ -5426,7 +5456,7 @@ snapshots:
     dependencies:
       chalk: 5.3.0
       commander: 11.1.0
-      debug: 4.3.4(supports-color@8.1.1)
+      debug: 4.3.4
       execa: 8.0.1
       lilconfig: 3.0.0
       listr2: 8.0.1
@@ -5484,6 +5514,8 @@ snapshots:
 
   lru-cache@10.0.0: {}
 
+  lru-cache@10.4.3: {}
+
   lru-cache@4.1.5:
     dependencies:
       pseudomap: 1.0.2
@@ -5551,7 +5583,7 @@ snapshots:
 
   micromark@2.11.4:
     dependencies:
-      debug: 4.3.4(supports-color@8.1.1)
+      debug: 4.3.4
       parse-entities: 2.0.0
     transitivePeerDependencies:
       - supports-color
@@ -5571,7 +5603,7 @@ snapshots:
     dependencies:
       brace-expansion: 1.1.11
 
-  minimatch@5.0.1:
+  minimatch@5.1.6:
     dependencies:
       brace-expansion: 2.0.1
 
@@ -5591,34 +5623,35 @@ snapshots:
 
   minipass@7.0.2: {}
 
+  minipass@7.1.2: {}
+
   minisearch@6.3.0: {}
 
   mitt@3.0.1: {}
 
   mixme@0.5.9: {}
 
-  mocha@10.2.0:
+  mocha@11.0.1:
     dependencies:
-      ansi-colors: 4.1.1
+      ansi-colors: 4.1.3
       browser-stdout: 1.3.1
       chokidar: 3.5.3
-      debug: 4.3.4(supports-color@8.1.1)
-      diff: 5.0.0
+      debug: 4.3.7(supports-color@8.1.1)
+      diff: 5.2.0
       escape-string-regexp: 4.0.0
       find-up: 5.0.0
-      glob: 7.2.0
+      glob: 10.4.5
       he: 1.2.0
       js-yaml: 4.1.0
       log-symbols: 4.1.0
-      minimatch: 5.0.1
+      minimatch: 5.1.6
       ms: 2.1.3
-      nanoid: 3.3.3
-      serialize-javascript: 6.0.0
+      serialize-javascript: 6.0.2
       strip-json-comments: 3.1.1
       supports-color: 8.1.1
-      workerpool: 6.2.1
+      workerpool: 6.5.1
       yargs: 16.2.0
-      yargs-parser: 20.2.4
+      yargs-parser: 20.2.9
       yargs-unparser: 2.0.0
 
   monaco-editor@0.52.0: {}
@@ -5627,8 +5660,6 @@ snapshots:
 
   ms@2.1.3: {}
 
-  nanoid@3.3.3: {}
-
   nanoid@3.3.7: {}
 
   natural-compare@1.4.0: {}
@@ -5778,6 +5809,8 @@ snapshots:
       lodash.flattendeep: 4.4.0
       release-zalgo: 1.0.0
 
+  package-json-from-dist@1.0.1: {}
+
   parent-module@1.0.1:
     dependencies:
       callsites: 3.1.0
@@ -5817,6 +5850,11 @@ snapshots:
       lru-cache: 10.0.0
       minipass: 7.0.2
 
+  path-scurry@1.11.1:
+    dependencies:
+      lru-cache: 10.4.3
+      minipass: 7.1.2
+
   path-type@4.0.0: {}
 
   perfect-debounce@1.0.0: {}
@@ -5869,7 +5907,7 @@ snapshots:
 
   prettier@2.8.8: {}
 
-  prettier@3.3.0: {}
+  prettier@3.4.2: {}
 
   process-on-spawn@1.0.0:
     dependencies:
@@ -6019,7 +6057,7 @@ snapshots:
     dependencies:
       lru-cache: 6.0.0
 
-  serialize-javascript@6.0.0:
+  serialize-javascript@6.0.2:
     dependencies:
       randombytes: 2.1.0
 
@@ -6228,14 +6266,14 @@ snapshots:
     dependencies:
       typescript: 5.1.6
 
-  ts-node@10.9.2(@types/node@20.4.5)(typescript@5.1.6):
+  ts-node@10.9.2(@types/node@22.9.0)(typescript@5.1.6):
     dependencies:
       '@cspotcode/source-map-support': 0.8.1
       '@tsconfig/node10': 1.0.11
       '@tsconfig/node12': 1.0.11
       '@tsconfig/node14': 1.0.3
       '@tsconfig/node16': 1.0.4
-      '@types/node': 20.4.5
+      '@types/node': 22.9.0
       acorn: 8.10.0
       acorn-walk: 8.3.2
       arg: 4.1.3
@@ -6321,6 +6359,8 @@ snapshots:
       has-symbols: 1.0.3
       which-boxed-primitive: 1.0.2
 
+  undici-types@6.19.8: {}
+
   unist-util-stringify-position@2.0.3:
     dependencies:
       '@types/unist': 2.0.7
@@ -6348,23 +6388,23 @@ snapshots:
       spdx-correct: 3.2.0
       spdx-expression-parse: 3.0.1
 
-  vite@5.4.8(@types/node@20.4.5):
+  vite@5.4.8(@types/node@22.9.0):
     dependencies:
       esbuild: 0.21.5
       postcss: 8.4.47
       rollup: 4.24.0
     optionalDependencies:
-      '@types/node': 20.4.5
+      '@types/node': 22.9.0
       fsevents: 2.3.3
 
-  vitepress@1.0.2(@algolia/client-search@4.19.1)(@types/node@20.4.5)(postcss@8.4.47)(search-insights@2.7.0)(typescript@5.1.6):
+  vitepress@1.0.2(@algolia/client-search@4.19.1)(@types/node@22.9.0)(postcss@8.4.47)(search-insights@2.7.0)(typescript@5.1.6):
     dependencies:
       '@docsearch/css': 3.6.0
       '@docsearch/js': 3.6.0(@algolia/client-search@4.19.1)(search-insights@2.7.0)
       '@shikijs/core': 1.2.3
       '@shikijs/transformers': 1.2.3
       '@types/markdown-it': 13.0.7
-      '@vitejs/plugin-vue': 5.0.4(vite@5.4.8(@types/node@20.4.5))(vue@3.4.21(typescript@5.1.6))
+      '@vitejs/plugin-vue': 5.0.4(vite@5.4.8(@types/node@22.9.0))(vue@3.4.21(typescript@5.1.6))
       '@vue/devtools-api': 7.0.25(vue@3.4.21(typescript@5.1.6))
       '@vueuse/core': 10.9.0(vue@3.4.21(typescript@5.1.6))
       '@vueuse/integrations': 10.9.0(focus-trap@7.5.4)(vue@3.4.21(typescript@5.1.6))
@@ -6372,7 +6412,7 @@ snapshots:
       mark.js: 8.11.1
       minisearch: 6.3.0
       shiki: 1.2.3
-      vite: 5.4.8(@types/node@20.4.5)
+      vite: 5.4.8(@types/node@22.9.0)
       vue: 3.4.21(typescript@5.1.6)
     optionalDependencies:
       postcss: 8.4.47
@@ -6412,7 +6452,7 @@ snapshots:
 
   vue-eslint-parser@9.3.1(eslint@9.4.0):
     dependencies:
-      debug: 4.3.4(supports-color@8.1.1)
+      debug: 4.3.4
       eslint: 9.4.0
       eslint-scope: 7.2.1
       eslint-visitor-keys: 3.4.1
@@ -6425,7 +6465,7 @@ snapshots:
 
   vue-eslint-parser@9.4.2(eslint@9.4.0):
     dependencies:
-      debug: 4.3.4(supports-color@8.1.1)
+      debug: 4.3.4
       eslint: 9.4.0
       eslint-scope: 7.2.2
       eslint-visitor-keys: 3.4.3
@@ -6496,7 +6536,7 @@ snapshots:
     dependencies:
       isexe: 3.1.1
 
-  workerpool@6.2.1: {}
+  workerpool@6.5.1: {}
 
   wrap-ansi@6.2.0:
     dependencies:
@@ -6558,7 +6598,7 @@ snapshots:
       camelcase: 5.3.1
       decamelize: 1.2.0
 
-  yargs-parser@20.2.4: {}
+  yargs-parser@20.2.9: {}
 
   yargs-parser@21.1.1: {}
 
@@ -6586,12 +6626,12 @@ snapshots:
   yargs@16.2.0:
     dependencies:
       cliui: 7.0.4
-      escalade: 3.1.1
+      escalade: 3.1.2
       get-caller-file: 2.0.5
       require-directory: 2.1.1
       string-width: 4.2.3
       y18n: 5.0.8
-      yargs-parser: 20.2.4
+      yargs-parser: 20.2.9
 
   yargs@17.7.2:
     dependencies:
diff --git a/scripts/lib/changesets-util.ts b/scripts/lib/changesets-util.ts
index db97625..d600d09 100644
--- a/scripts/lib/changesets-util.ts
+++ b/scripts/lib/changesets-util.ts
@@ -5,6 +5,7 @@ import path from 'path'
 export async function getNewVersion(): Promise<string> {
   const releasePlan = await getReleasePlan(path.resolve(__dirname, '../..'))
 
-  return releasePlan.releases.find(({ name }) => name === 'eslint-plugin-css')!
-    .newVersion
+  return releasePlan.releases.find(
+    ({ name }) => name === '@intlify/eslint-plugin-vue-i18n'
+  )!.newVersion
 }


Test patch:
diff --git a/tests/lib/rules/no-deprecated-v-t.ts b/tests/lib/rules/no-deprecated-v-t.ts
new file mode 100644
index 0000000..b27d396
--- /dev/null
+++ b/tests/lib/rules/no-deprecated-v-t.ts
@@ -0,0 +1,30 @@
+/**
+ * @author kazuya kawaguchi (a.k.a. kazupon)
+ */
+import { RuleTester } from '../eslint-compat'
+import rule from '../../../lib/rules/no-deprecated-v-t'
+import * as vueParser from 'vue-eslint-parser'
+
+const tester = new RuleTester({
+  languageOptions: {
+    parser: vueParser,
+    ecmaVersion: 2020,
+    sourceType: 'module'
+  }
+})
+
+tester.run('no-deprecated-v-t', rule as never, {
+  valid: [
+    {
+      code: `<template><p v-html="$t('hello')"></p></template>`
+    }
+  ],
+  invalid: [
+    {
+      code: `<template><p v-t="'banana'"></p></template>`,
+      errors: [
+        `'v-t' custom directive is used, but it is deprecated. Use 't' or '$t' instead.`
+      ]
+    }
+  ]
+})