Repository: spear-ai/citizen (language: python)

Issue:
Ignore dependabot commits in Commitlint config
Dependabot doesn't allow message body length to be limited yet, but there's an issue tracking it here:
https://github.com/dependabot/dependabot-core/issues/2445


Discussion / hints:

Fix patch:
diff --git a/.changeset/strange-drinks-love.md b/.changeset/strange-drinks-love.md
new file mode 100644
index 00000000..389fa61e
--- /dev/null
+++ b/.changeset/strange-drinks-love.md
@@ -0,0 +1,5 @@
+---
+"@spear-ai/commitlint-config": minor
+---
+
+Added ignore rule that ignores commits from Dependabot by checking if the message includes 'dependabot[bot]' in the body.
diff --git a/.yarn/cache/@esbuild-darwin-arm64-npm-0.19.11-9294a47a38-10.zip b/.yarn/cache/@esbuild-darwin-arm64-npm-0.19.11-9294a47a38-10.zip
new file mode 100644
index 00000000..a37d5c24
Binary files /dev/null and b/.yarn/cache/@esbuild-darwin-arm64-npm-0.19.11-9294a47a38-10.zip differ
diff --git a/.yarn/cache/@esbuild-darwin-x64-npm-0.19.11-cbbb06eafc-10.zip b/.yarn/cache/@esbuild-darwin-x64-npm-0.19.11-cbbb06eafc-10.zip
new file mode 100644
index 00000000..779527e7
Binary files /dev/null and b/.yarn/cache/@esbuild-darwin-x64-npm-0.19.11-cbbb06eafc-10.zip differ
diff --git a/.yarn/cache/@esbuild-linux-arm64-npm-0.19.11-8a4a69d138-10.zip b/.yarn/cache/@esbuild-linux-arm64-npm-0.19.11-8a4a69d138-10.zip
new file mode 100644
index 00000000..ea76e4e7
Binary files /dev/null and b/.yarn/cache/@esbuild-linux-arm64-npm-0.19.11-8a4a69d138-10.zip differ
diff --git a/.yarn/cache/@esbuild-linux-x64-npm-0.19.11-2afe281ab0-10.zip b/.yarn/cache/@esbuild-linux-x64-npm-0.19.11-2afe281ab0-10.zip
new file mode 100644
index 00000000..1937416d
Binary files /dev/null and b/.yarn/cache/@esbuild-linux-x64-npm-0.19.11-2afe281ab0-10.zip differ
diff --git a/.yarn/cache/@esbuild-win32-arm64-npm-0.19.11-de4fd16dc2-10.zip b/.yarn/cache/@esbuild-win32-arm64-npm-0.19.11-de4fd16dc2-10.zip
new file mode 100644
index 00000000..538a86f2
Binary files /dev/null and b/.yarn/cache/@esbuild-win32-arm64-npm-0.19.11-de4fd16dc2-10.zip differ
diff --git a/.yarn/cache/@esbuild-win32-x64-npm-0.19.11-45828b663c-10.zip b/.yarn/cache/@esbuild-win32-x64-npm-0.19.11-45828b663c-10.zip
new file mode 100644
index 00000000..afc30edb
Binary files /dev/null and b/.yarn/cache/@esbuild-win32-x64-npm-0.19.11-45828b663c-10.zip differ
diff --git a/.yarn/cache/@jest-schemas-npm-29.6.3-292730e442-910040425f.zip b/.yarn/cache/@jest-schemas-npm-29.6.3-292730e442-910040425f.zip
new file mode 100644
index 00000000..ce56da45
Binary files /dev/null and b/.yarn/cache/@jest-schemas-npm-29.6.3-292730e442-910040425f.zip differ
diff --git a/.yarn/cache/@rollup-rollup-darwin-arm64-npm-4.9.5-16e34a3e7b-10.zip b/.yarn/cache/@rollup-rollup-darwin-arm64-npm-4.9.5-16e34a3e7b-10.zip
new file mode 100644
index 00000000..cba2f4bc
Binary files /dev/null and b/.yarn/cache/@rollup-rollup-darwin-arm64-npm-4.9.5-16e34a3e7b-10.zip differ
diff --git a/.yarn/cache/@rollup-rollup-darwin-x64-npm-4.9.5-b519416430-10.zip b/.yarn/cache/@rollup-rollup-darwin-x64-npm-4.9.5-b519416430-10.zip
new file mode 100644
index 00000000..aeb03f1b
Binary files /dev/null and b/.yarn/cache/@rollup-rollup-darwin-x64-npm-4.9.5-b519416430-10.zip differ
diff --git a/.yarn/cache/@rollup-rollup-linux-arm64-gnu-npm-4.9.5-9441a712f1-10.zip b/.yarn/cache/@rollup-rollup-linux-arm64-gnu-npm-4.9.5-9441a712f1-10.zip
new file mode 100644
index 00000000..5c4fc2fc
Binary files /dev/null and b/.yarn/cache/@rollup-rollup-linux-arm64-gnu-npm-4.9.5-9441a712f1-10.zip differ
diff --git a/.yarn/cache/@rollup-rollup-linux-arm64-musl-npm-4.9.5-f4080391bd-10.zip b/.yarn/cache/@rollup-rollup-linux-arm64-musl-npm-4.9.5-f4080391bd-10.zip
new file mode 100644
index 00000000..28afab21
Binary files /dev/null and b/.yarn/cache/@rollup-rollup-linux-arm64-musl-npm-4.9.5-f4080391bd-10.zip differ
diff --git a/.yarn/cache/@rollup-rollup-linux-x64-gnu-npm-4.9.5-dc241948bc-10.zip b/.yarn/cache/@rollup-rollup-linux-x64-gnu-npm-4.9.5-dc241948bc-10.zip
new file mode 100644
index 00000000..fa837334
Binary files /dev/null and b/.yarn/cache/@rollup-rollup-linux-x64-gnu-npm-4.9.5-dc241948bc-10.zip differ
diff --git a/.yarn/cache/@rollup-rollup-linux-x64-musl-npm-4.9.5-fed94cd7c4-10.zip b/.yarn/cache/@rollup-rollup-linux-x64-musl-npm-4.9.5-fed94cd7c4-10.zip
new file mode 100644
index 00000000..2f5b7199
Binary files /dev/null and b/.yarn/cache/@rollup-rollup-linux-x64-musl-npm-4.9.5-fed94cd7c4-10.zip differ
diff --git a/.yarn/cache/@rollup-rollup-win32-arm64-msvc-npm-4.9.5-ffba176332-10.zip b/.yarn/cache/@rollup-rollup-win32-arm64-msvc-npm-4.9.5-ffba176332-10.zip
new file mode 100644
index 00000000..e968974a
Binary files /dev/null and b/.yarn/cache/@rollup-rollup-win32-arm64-msvc-npm-4.9.5-ffba176332-10.zip differ
diff --git a/.yarn/cache/@rollup-rollup-win32-x64-msvc-npm-4.9.5-b56946ea61-10.zip b/.yarn/cache/@rollup-rollup-win32-x64-msvc-npm-4.9.5-b56946ea61-10.zip
new file mode 100644
index 00000000..065b4d54
Binary files /dev/null and b/.yarn/cache/@rollup-rollup-win32-x64-msvc-npm-4.9.5-b56946ea61-10.zip differ
diff --git a/.yarn/cache/@sinclair-typebox-npm-0.27.8-23e206d653-297f95ff77.zip b/.yarn/cache/@sinclair-typebox-npm-0.27.8-23e206d653-297f95ff77.zip
new file mode 100644
index 00000000..471c008b
Binary files /dev/null and b/.yarn/cache/@sinclair-typebox-npm-0.27.8-23e206d653-297f95ff77.zip differ
diff --git a/.yarn/cache/@types-estree-npm-1.0.5-5b7faed3b4-7de6d928dd.zip b/.yarn/cache/@types-estree-npm-1.0.5-5b7faed3b4-7de6d928dd.zip
new file mode 100644
index 00000000..022b94a1
Binary files /dev/null and b/.yarn/cache/@types-estree-npm-1.0.5-5b7faed3b4-7de6d928dd.zip differ
diff --git a/.yarn/cache/acorn-npm-8.11.3-0d7ab48b38-b688e7e3c6.zip b/.yarn/cache/acorn-npm-8.11.3-0d7ab48b38-b688e7e3c6.zip
new file mode 100644
index 00000000..7cca3a27
Binary files /dev/null and b/.yarn/cache/acorn-npm-8.11.3-0d7ab48b38-b688e7e3c6.zip differ
diff --git a/.yarn/cache/acorn-walk-npm-8.3.2-df039a42bf-57dbe2fd8c.zip b/.yarn/cache/acorn-walk-npm-8.3.2-df039a42bf-57dbe2fd8c.zip
new file mode 100644
index 00000000..9280f788
Binary files /dev/null and b/.yarn/cache/acorn-walk-npm-8.3.2-df039a42bf-57dbe2fd8c.zip differ
diff --git a/.yarn/cache/ansi-styles-npm-5.2.0-72fc7003e3-d7f4e97ce0.zip b/.yarn/cache/ansi-styles-npm-5.2.0-72fc7003e3-d7f4e97ce0.zip
new file mode 100644
index 00000000..62c09039
Binary files /dev/null and b/.yarn/cache/ansi-styles-npm-5.2.0-72fc7003e3-d7f4e97ce0.zip differ
diff --git a/.yarn/cache/assertion-error-npm-1.1.0-66b893015e-fd9429d3a3.zip b/.yarn/cache/assertion-error-npm-1.1.0-66b893015e-fd9429d3a3.zip
new file mode 100644
index 00000000..e7b45eee
Binary files /dev/null and b/.yarn/cache/assertion-error-npm-1.1.0-66b893015e-fd9429d3a3.zip differ
diff --git a/.yarn/cache/chai-npm-4.4.1-ffd006b4b1-c6d7aba913.zip b/.yarn/cache/chai-npm-4.4.1-ffd006b4b1-c6d7aba913.zip
new file mode 100644
index 00000000..42779031
Binary files /dev/null and b/.yarn/cache/chai-npm-4.4.1-ffd006b4b1-c6d7aba913.zip differ
diff --git a/.yarn/cache/check-error-npm-1.0.3-137994eabc-e2131025cf.zip b/.yarn/cache/check-error-npm-1.0.3-137994eabc-e2131025cf.zip
new file mode 100644
index 00000000..4a3d2b53
Binary files /dev/null and b/.yarn/cache/check-error-npm-1.0.3-137994eabc-e2131025cf.zip differ
diff --git a/.yarn/cache/deep-eql-npm-4.1.3-020a64f862-12ce93ae63.zip b/.yarn/cache/deep-eql-npm-4.1.3-020a64f862-12ce93ae63.zip
new file mode 100644
index 00000000..5a4a1dd0
Binary files /dev/null and b/.yarn/cache/deep-eql-npm-4.1.3-020a64f862-12ce93ae63.zip differ
diff --git a/.yarn/cache/diff-sequences-npm-29.6.3-18ab2c9949-179daf9d2f.zip b/.yarn/cache/diff-sequences-npm-29.6.3-18ab2c9949-179daf9d2f.zip
new file mode 100644
index 00000000..03fe8b07
Binary files /dev/null and b/.yarn/cache/diff-sequences-npm-29.6.3-18ab2c9949-179daf9d2f.zip differ
diff --git a/.yarn/cache/esbuild-npm-0.19.11-b091158d92-a40b3858c2.zip b/.yarn/cache/esbuild-npm-0.19.11-b091158d92-a40b3858c2.zip
new file mode 100644
index 00000000..2b0450f2
Binary files /dev/null and b/.yarn/cache/esbuild-npm-0.19.11-b091158d92-a40b3858c2.zip differ
diff --git a/.yarn/cache/estree-walker-npm-3.0.3-0372979673-a65728d572.zip b/.yarn/cache/estree-walker-npm-3.0.3-0372979673-a65728d572.zip
new file mode 100644
index 00000000..45ecddd4
Binary files /dev/null and b/.yarn/cache/estree-walker-npm-3.0.3-0372979673-a65728d572.zip differ
diff --git a/.yarn/cache/execa-npm-8.0.1-0211bd404c-d2ab5fe1e2.zip b/.yarn/cache/execa-npm-8.0.1-0211bd404c-d2ab5fe1e2.zip
new file mode 100644
index 00000000..8f05a61e
Binary files /dev/null and b/.yarn/cache/execa-npm-8.0.1-0211bd404c-d2ab5fe1e2.zip differ
diff --git a/.yarn/cache/get-func-name-npm-2.0.2-409dbe3703-3f62f4c236.zip b/.yarn/cache/get-func-name-npm-2.0.2-409dbe3703-3f62f4c236.zip
new file mode 100644
index 00000000..d80affc5
Binary files /dev/null and b/.yarn/cache/get-func-name-npm-2.0.2-409dbe3703-3f62f4c236.zip differ
diff --git a/.yarn/cache/human-signals-npm-5.0.0-ed25a9f58c-30f8870d83.zip b/.yarn/cache/human-signals-npm-5.0.0-ed25a9f58c-30f8870d83.zip
new file mode 100644
index 00000000..19a499e4
Binary files /dev/null and b/.yarn/cache/human-signals-npm-5.0.0-ed25a9f58c-30f8870d83.zip differ
diff --git a/.yarn/cache/local-pkg-npm-0.5.0-c126c7ec8b-20f4caba50.zip b/.yarn/cache/local-pkg-npm-0.5.0-c126c7ec8b-20f4caba50.zip
new file mode 100644
index 00000000..b46fd0e5
Binary files /dev/null and b/.yarn/cache/local-pkg-npm-0.5.0-c126c7ec8b-20f4caba50.zip differ
diff --git a/.yarn/cache/loupe-npm-2.3.7-f294c2ef33-635c8f0914.zip b/.yarn/cache/loupe-npm-2.3.7-f294c2ef33-635c8f0914.zip
new file mode 100644
index 00000000..891d9624
Binary files /dev/null and b/.yarn/cache/loupe-npm-2.3.7-f294c2ef33-635c8f0914.zip differ
diff --git a/.yarn/cache/magic-string-npm-0.30.5-dffb7e6a73-c8a6b25f81.zip b/.yarn/cache/magic-string-npm-0.30.5-dffb7e6a73-c8a6b25f81.zip
new file mode 100644
index 00000000..aa92f2c7
Binary files /dev/null and b/.yarn/cache/magic-string-npm-0.30.5-dffb7e6a73-c8a6b25f81.zip differ
diff --git a/.yarn/cache/mlly-npm-1.5.0-dc7923db5f-c030ecb7f1.zip b/.yarn/cache/mlly-npm-1.5.0-dc7923db5f-c030ecb7f1.zip
new file mode 100644
index 00000000..2814c167
Binary files /dev/null and b/.yarn/cache/mlly-npm-1.5.0-dc7923db5f-c030ecb7f1.zip differ
diff --git a/.yarn/cache/nanoid-npm-3.3.7-98824ba130-ac1eb60f61.zip b/.yarn/cache/nanoid-npm-3.3.7-98824ba130-ac1eb60f61.zip
new file mode 100644
index 00000000..2207db73
Binary files /dev/null and b/.yarn/cache/nanoid-npm-3.3.7-98824ba130-ac1eb60f61.zip differ
diff --git a/.yarn/cache/p-limit-npm-5.0.0-cc102b17d7-87bf5837de.zip b/.yarn/cache/p-limit-npm-5.0.0-cc102b17d7-87bf5837de.zip
new file mode 100644
index 00000000..92f97332
Binary files /dev/null and b/.yarn/cache/p-limit-npm-5.0.0-cc102b17d7-87bf5837de.zip differ
diff --git a/.yarn/cache/pathe-npm-1.1.2-b80d94db55-f201d79635.zip b/.yarn/cache/pathe-npm-1.1.2-b80d94db55-f201d79635.zip
new file mode 100644
index 00000000..1597e85e
Binary files /dev/null and b/.yarn/cache/pathe-npm-1.1.2-b80d94db55-f201d79635.zip differ
diff --git a/.yarn/cache/pathval-npm-1.1.1-ce0311d7e0-b50a475106.zip b/.yarn/cache/pathval-npm-1.1.1-ce0311d7e0-b50a475106.zip
new file mode 100644
index 00000000..cd6ec67c
Binary files /dev/null and b/.yarn/cache/pathval-npm-1.1.1-ce0311d7e0-b50a475106.zip differ
diff --git a/.yarn/cache/pkg-types-npm-1.0.3-dce22a705c-e17e1819ce.zip b/.yarn/cache/pkg-types-npm-1.0.3-dce22a705c-e17e1819ce.zip
new file mode 100644
index 00000000..f99011fa
Binary files /dev/null and b/.yarn/cache/pkg-types-npm-1.0.3-dce22a705c-e17e1819ce.zip differ
diff --git a/.yarn/cache/postcss-npm-8.4.33-6ba8157009-e22a4594c2.zip b/.yarn/cache/postcss-npm-8.4.33-6ba8157009-e22a4594c2.zip
new file mode 100644
index 00000000..a913699c
Binary files /dev/null and b/.yarn/cache/postcss-npm-8.4.33-6ba8157009-e22a4594c2.zip differ
diff --git a/.yarn/cache/pretty-format-npm-29.7.0-7d330b2ea2-dea96bc83c.zip b/.yarn/cache/pretty-format-npm-29.7.0-7d330b2ea2-dea96bc83c.zip
new file mode 100644
index 00000000..dc231885
Binary files /dev/null and b/.yarn/cache/pretty-format-npm-29.7.0-7d330b2ea2-dea96bc83c.zip differ
diff --git a/.yarn/cache/react-is-npm-18.2.0-0cc5edb910-200cd65bf2.zip b/.yarn/cache/react-is-npm-18.2.0-0cc5edb910-200cd65bf2.zip
new file mode 100644
index 00000000..5dc7612b
Binary files /dev/null and b/.yarn/cache/react-is-npm-18.2.0-0cc5edb910-200cd65bf2.zip differ
diff --git a/.yarn/cache/rollup-npm-4.9.5-deca2874bb-4debf528e6.zip b/.yarn/cache/rollup-npm-4.9.5-deca2874bb-4debf528e6.zip
new file mode 100644
index 00000000..0bc8a74f
Binary files /dev/null and b/.yarn/cache/rollup-npm-4.9.5-deca2874bb-4debf528e6.zip differ
diff --git a/.yarn/cache/siginfo-npm-2.0.0-9bbac931f8-e93ff66c65.zip b/.yarn/cache/siginfo-npm-2.0.0-9bbac931f8-e93ff66c65.zip
new file mode 100644
index 00000000..a3fd5dfb
Binary files /dev/null and b/.yarn/cache/siginfo-npm-2.0.0-9bbac931f8-e93ff66c65.zip differ
diff --git a/.yarn/cache/signal-exit-npm-4.1.0-61fb957687-c9fa63bbbd.zip b/.yarn/cache/signal-exit-npm-4.1.0-61fb957687-c9fa63bbbd.zip
new file mode 100644
index 00000000..60f59d0e
Binary files /dev/null and b/.yarn/cache/signal-exit-npm-4.1.0-61fb957687-c9fa63bbbd.zip differ
diff --git a/.yarn/cache/stackback-npm-0.0.2-73273dc92e-2d4dc4e64e.zip b/.yarn/cache/stackback-npm-0.0.2-73273dc92e-2d4dc4e64e.zip
new file mode 100644
index 00000000..4bd2185c
Binary files /dev/null and b/.yarn/cache/stackback-npm-0.0.2-73273dc92e-2d4dc4e64e.zip differ
diff --git a/.yarn/cache/std-env-npm-3.7.0-5261c3c3c3-6ee0cca1ad.zip b/.yarn/cache/std-env-npm-3.7.0-5261c3c3c3-6ee0cca1ad.zip
new file mode 100644
index 00000000..c8cdcbef
Binary files /dev/null and b/.yarn/cache/std-env-npm-3.7.0-5261c3c3c3-6ee0cca1ad.zip differ
diff --git a/.yarn/cache/strip-literal-npm-1.3.0-217e69590c-f5fa7e289d.zip b/.yarn/cache/strip-literal-npm-1.3.0-217e69590c-f5fa7e289d.zip
new file mode 100644
index 00000000..b173a104
Binary files /dev/null and b/.yarn/cache/strip-literal-npm-1.3.0-217e69590c-f5fa7e289d.zip differ
diff --git a/.yarn/cache/tinybench-npm-2.5.1-0c7b25aad4-f64ea142e0.zip b/.yarn/cache/tinybench-npm-2.5.1-0c7b25aad4-f64ea142e0.zip
new file mode 100644
index 00000000..47cc4f4b
Binary files /dev/null and b/.yarn/cache/tinybench-npm-2.5.1-0c7b25aad4-f64ea142e0.zip differ
diff --git a/.yarn/cache/tinypool-npm-0.8.1-635da00e3a-3fae8acc22.zip b/.yarn/cache/tinypool-npm-0.8.1-635da00e3a-3fae8acc22.zip
new file mode 100644
index 00000000..6db5c235
Binary files /dev/null and b/.yarn/cache/tinypool-npm-0.8.1-635da00e3a-3fae8acc22.zip differ
diff --git a/.yarn/cache/tinyspy-npm-2.2.0-226debb582-bcc5a08c2d.zip b/.yarn/cache/tinyspy-npm-2.2.0-226debb582-bcc5a08c2d.zip
new file mode 100644
index 00000000..ea37e0a3
Binary files /dev/null and b/.yarn/cache/tinyspy-npm-2.2.0-226debb582-bcc5a08c2d.zip differ
diff --git a/.yarn/cache/type-detect-npm-4.0.8-8d8127b901-5179e3b8eb.zip b/.yarn/cache/type-detect-npm-4.0.8-8d8127b901-5179e3b8eb.zip
new file mode 100644
index 00000000..46f32097
Binary files /dev/null and b/.yarn/cache/type-detect-npm-4.0.8-8d8127b901-5179e3b8eb.zip differ
diff --git a/.yarn/cache/ufo-npm-1.3.2-dcaf8105d0-7133290d49.zip b/.yarn/cache/ufo-npm-1.3.2-dcaf8105d0-7133290d49.zip
new file mode 100644
index 00000000..3254bcca
Binary files /dev/null and b/.yarn/cache/ufo-npm-1.3.2-dcaf8105d0-7133290d49.zip differ
diff --git a/.yarn/cache/vite-node-npm-1.2.0-7696a5cd70-7e975f0fa3.zip b/.yarn/cache/vite-node-npm-1.2.0-7696a5cd70-7e975f0fa3.zip
new file mode 100644
index 00000000..7c07ad09
Binary files /dev/null and b/.yarn/cache/vite-node-npm-1.2.0-7696a5cd70-7e975f0fa3.zip differ
diff --git a/.yarn/cache/vite-npm-5.0.11-d5457a8b86-f1a8fea35e.zip b/.yarn/cache/vite-npm-5.0.11-d5457a8b86-f1a8fea35e.zip
new file mode 100644
index 00000000..d9eeb800
Binary files /dev/null and b/.yarn/cache/vite-npm-5.0.11-d5457a8b86-f1a8fea35e.zip differ
diff --git a/.yarn/cache/why-is-node-running-npm-2.2.2-881f898bf3-f3582e0337.zip b/.yarn/cache/why-is-node-running-npm-2.2.2-881f898bf3-f3582e0337.zip
new file mode 100644
index 00000000..b73d48f8
Binary files /dev/null and b/.yarn/cache/why-is-node-running-npm-2.2.2-881f898bf3-f3582e0337.zip differ
diff --git a/.yarn/cache/yocto-queue-npm-1.0.0-7b502f1987-2cac84540f.zip b/.yarn/cache/yocto-queue-npm-1.0.0-7b502f1987-2cac84540f.zip
new file mode 100644
index 00000000..c08ff193
Binary files /dev/null and b/.yarn/cache/yocto-queue-npm-1.0.0-7b502f1987-2cac84540f.zip differ
diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz
index e1465462..bfd582dc 100644
Binary files a/.yarn/install-state.gz and b/.yarn/install-state.gz differ
diff --git a/packages/commitlint-config/package.json b/packages/commitlint-config/package.json
index 04b0b1b5..d1345d7b 100644
--- a/packages/commitlint-config/package.json
+++ b/packages/commitlint-config/package.json
@@ -15,7 +15,8 @@
     "npm-package-json-lint": "7.1.0",
     "prettier": "3.1.1",
     "tsup": "8.0.1",
-    "typescript": "5.3.3"
+    "typescript": "5.3.3",
+    "vitest": "^1.2.0"
   },
   "license": "MIT",
   "main": "./dist/index.cjs",
@@ -30,12 +31,14 @@
   },
   "scripts": {
     "build": "tsup src --cjsInterop --clean --dts --format cjs,esm --splitting",
-    "dev": "yarn build --watch",
+    "dev": "yarn build --watch & yarn test:dev",
     "eslint:check": "eslint --max-warnings 0 .",
     "eslint:fix": "yarn eslint:check --fix",
     "npmpkgjsonlint:check": "npmPkgJsonLint .",
     "prettier:check": "prettier --check .",
     "prettier:fix": "prettier --write .",
+    "test": "vitest run",
+    "test:dev": "vitest watch",
     "typescript:check": "tsc --noEmit"
   },
   "types": "./dist/index.d.ts"
diff --git a/packages/commitlint-config/src/index.ts b/packages/commitlint-config/src/index.ts
index 0c2f348c..6d6c7361 100644
--- a/packages/commitlint-config/src/index.ts
+++ b/packages/commitlint-config/src/index.ts
@@ -1,8 +1,10 @@
 /* eslint-disable import/no-default-export */
 
 import type { UserConfig } from "@commitlint/types";
+import { ignoreDependabot } from "./rules/ignore-rules";
 
 const commitlintConfig: UserConfig = {
+  ignores: [ignoreDependabot],
   rules: {
     "body-case": [2, "always", ["sentence-case"]],
     "body-leading-blank": [2, "always"],
diff --git a/packages/commitlint-config/src/rules/ignore-rules.ts b/packages/commitlint-config/src/rules/ignore-rules.ts
new file mode 100644
index 00000000..acacdce0
--- /dev/null
+++ b/packages/commitlint-config/src/rules/ignore-rules.ts
@@ -0,0 +1,6 @@
+/**
+ * Checks if a commit message should be ignored due to being from Dependabot.
+ * @param message - The commit message to check.
+ * @returns True if the commit message should be ignored, false otherwise.
+ */
+export const ignoreDependabot = (message: string): boolean => message.includes("dependabot[bot]");
diff --git a/yarn.lock b/yarn.lock
index 65df7561..42abf650 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -653,6 +653,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/aix-ppc64@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/aix-ppc64@npm:0.19.11"
+  conditions: os=aix & cpu=ppc64
+  languageName: node
+  linkType: hard
+
 "@esbuild/android-arm64@npm:0.18.20":
   version: 0.18.20
   resolution: "@esbuild/android-arm64@npm:0.18.20"
@@ -660,6 +667,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/android-arm64@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/android-arm64@npm:0.19.11"
+  conditions: os=android & cpu=arm64
+  languageName: node
+  linkType: hard
+
 "@esbuild/android-arm64@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/android-arm64@npm:0.19.7"
@@ -674,6 +688,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/android-arm@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/android-arm@npm:0.19.11"
+  conditions: os=android & cpu=arm
+  languageName: node
+  linkType: hard
+
 "@esbuild/android-arm@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/android-arm@npm:0.19.7"
@@ -688,6 +709,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/android-x64@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/android-x64@npm:0.19.11"
+  conditions: os=android & cpu=x64
+  languageName: node
+  linkType: hard
+
 "@esbuild/android-x64@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/android-x64@npm:0.19.7"
@@ -702,6 +730,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/darwin-arm64@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/darwin-arm64@npm:0.19.11"
+  conditions: os=darwin & cpu=arm64
+  languageName: node
+  linkType: hard
+
 "@esbuild/darwin-arm64@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/darwin-arm64@npm:0.19.7"
@@ -716,6 +751,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/darwin-x64@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/darwin-x64@npm:0.19.11"
+  conditions: os=darwin & cpu=x64
+  languageName: node
+  linkType: hard
+
 "@esbuild/darwin-x64@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/darwin-x64@npm:0.19.7"
@@ -730,6 +772,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/freebsd-arm64@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/freebsd-arm64@npm:0.19.11"
+  conditions: os=freebsd & cpu=arm64
+  languageName: node
+  linkType: hard
+
 "@esbuild/freebsd-arm64@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/freebsd-arm64@npm:0.19.7"
@@ -744,6 +793,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/freebsd-x64@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/freebsd-x64@npm:0.19.11"
+  conditions: os=freebsd & cpu=x64
+  languageName: node
+  linkType: hard
+
 "@esbuild/freebsd-x64@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/freebsd-x64@npm:0.19.7"
@@ -758,6 +814,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/linux-arm64@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/linux-arm64@npm:0.19.11"
+  conditions: os=linux & cpu=arm64
+  languageName: node
+  linkType: hard
+
 "@esbuild/linux-arm64@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/linux-arm64@npm:0.19.7"
@@ -772,6 +835,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/linux-arm@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/linux-arm@npm:0.19.11"
+  conditions: os=linux & cpu=arm
+  languageName: node
+  linkType: hard
+
 "@esbuild/linux-arm@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/linux-arm@npm:0.19.7"
@@ -786,6 +856,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/linux-ia32@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/linux-ia32@npm:0.19.11"
+  conditions: os=linux & cpu=ia32
+  languageName: node
+  linkType: hard
+
 "@esbuild/linux-ia32@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/linux-ia32@npm:0.19.7"
@@ -800,6 +877,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/linux-loong64@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/linux-loong64@npm:0.19.11"
+  conditions: os=linux & cpu=loong64
+  languageName: node
+  linkType: hard
+
 "@esbuild/linux-loong64@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/linux-loong64@npm:0.19.7"
@@ -814,6 +898,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/linux-mips64el@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/linux-mips64el@npm:0.19.11"
+  conditions: os=linux & cpu=mips64el
+  languageName: node
+  linkType: hard
+
 "@esbuild/linux-mips64el@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/linux-mips64el@npm:0.19.7"
@@ -828,6 +919,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/linux-ppc64@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/linux-ppc64@npm:0.19.11"
+  conditions: os=linux & cpu=ppc64
+  languageName: node
+  linkType: hard
+
 "@esbuild/linux-ppc64@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/linux-ppc64@npm:0.19.7"
@@ -842,6 +940,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/linux-riscv64@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/linux-riscv64@npm:0.19.11"
+  conditions: os=linux & cpu=riscv64
+  languageName: node
+  linkType: hard
+
 "@esbuild/linux-riscv64@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/linux-riscv64@npm:0.19.7"
@@ -856,6 +961,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/linux-s390x@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/linux-s390x@npm:0.19.11"
+  conditions: os=linux & cpu=s390x
+  languageName: node
+  linkType: hard
+
 "@esbuild/linux-s390x@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/linux-s390x@npm:0.19.7"
@@ -870,6 +982,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/linux-x64@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/linux-x64@npm:0.19.11"
+  conditions: os=linux & cpu=x64
+  languageName: node
+  linkType: hard
+
 "@esbuild/linux-x64@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/linux-x64@npm:0.19.7"
@@ -884,6 +1003,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/netbsd-x64@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/netbsd-x64@npm:0.19.11"
+  conditions: os=netbsd & cpu=x64
+  languageName: node
+  linkType: hard
+
 "@esbuild/netbsd-x64@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/netbsd-x64@npm:0.19.7"
@@ -898,6 +1024,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/openbsd-x64@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/openbsd-x64@npm:0.19.11"
+  conditions: os=openbsd & cpu=x64
+  languageName: node
+  linkType: hard
+
 "@esbuild/openbsd-x64@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/openbsd-x64@npm:0.19.7"
@@ -912,6 +1045,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/sunos-x64@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/sunos-x64@npm:0.19.11"
+  conditions: os=sunos & cpu=x64
+  languageName: node
+  linkType: hard
+
 "@esbuild/sunos-x64@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/sunos-x64@npm:0.19.7"
@@ -926,6 +1066,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/win32-arm64@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/win32-arm64@npm:0.19.11"
+  conditions: os=win32 & cpu=arm64
+  languageName: node
+  linkType: hard
+
 "@esbuild/win32-arm64@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/win32-arm64@npm:0.19.7"
@@ -940,6 +1087,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/win32-ia32@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/win32-ia32@npm:0.19.11"
+  conditions: os=win32 & cpu=ia32
+  languageName: node
+  linkType: hard
+
 "@esbuild/win32-ia32@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/win32-ia32@npm:0.19.7"
@@ -954,6 +1108,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@esbuild/win32-x64@npm:0.19.11":
+  version: 0.19.11
+  resolution: "@esbuild/win32-x64@npm:0.19.11"
+  conditions: os=win32 & cpu=x64
+  languageName: node
+  linkType: hard
+
 "@esbuild/win32-x64@npm:0.19.7":
   version: 0.19.7
   resolution: "@esbuild/win32-x64@npm:0.19.7"
@@ -1435,6 +1596,15 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@jest/schemas@npm:^29.6.3":
+  version: 29.6.3
+  resolution: "@jest/schemas@npm:29.6.3"
+  dependencies:
+    "@sinclair/typebox": "npm:^0.27.8"
+  checksum: 910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93
+  languageName: node
+  linkType: hard
+
 "@jridgewell/gen-mapping@npm:^0.3.2":
   version: 0.3.3
   resolution: "@jridgewell/gen-mapping@npm:0.3.3"
@@ -1467,7 +1637,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13":
+"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13, @jridgewell/sourcemap-codec@npm:^1.4.15":
   version: 1.4.15
   resolution: "@jridgewell/sourcemap-codec@npm:1.4.15"
   checksum: 89960ac087781b961ad918978975bcdf2051cd1741880469783c42de64239703eab9db5230d776d8e6a09d73bb5e4cb964e07d93ee6e2e7aea5a7d726e865c09
@@ -1937,6 +2107,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@rollup/rollup-android-arm-eabi@npm:4.9.5":
+  version: 4.9.5
+  resolution: "@rollup/rollup-android-arm-eabi@npm:4.9.5"
+  conditions: os=android & cpu=arm
+  languageName: node
+  linkType: hard
+
 "@rollup/rollup-android-arm64@npm:4.5.1":
   version: 4.5.1
   resolution: "@rollup/rollup-android-arm64@npm:4.5.1"
@@ -1944,6 +2121,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@rollup/rollup-android-arm64@npm:4.9.5":
+  version: 4.9.5
+  resolution: "@rollup/rollup-android-arm64@npm:4.9.5"
+  conditions: os=android & cpu=arm64
+  languageName: node
+  linkType: hard
+
 "@rollup/rollup-darwin-arm64@npm:4.5.1":
   version: 4.5.1
   resolution: "@rollup/rollup-darwin-arm64@npm:4.5.1"
@@ -1951,6 +2135,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@rollup/rollup-darwin-arm64@npm:4.9.5":
+  version: 4.9.5
+  resolution: "@rollup/rollup-darwin-arm64@npm:4.9.5"
+  conditions: os=darwin & cpu=arm64
+  languageName: node
+  linkType: hard
+
 "@rollup/rollup-darwin-x64@npm:4.5.1":
   version: 4.5.1
   resolution: "@rollup/rollup-darwin-x64@npm:4.5.1"
@@ -1958,6 +2149,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@rollup/rollup-darwin-x64@npm:4.9.5":
+  version: 4.9.5
+  resolution: "@rollup/rollup-darwin-x64@npm:4.9.5"
+  conditions: os=darwin & cpu=x64
+  languageName: node
+  linkType: hard
+
 "@rollup/rollup-linux-arm-gnueabihf@npm:4.5.1":
   version: 4.5.1
   resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.5.1"
@@ -1965,6 +2163,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@rollup/rollup-linux-arm-gnueabihf@npm:4.9.5":
+  version: 4.9.5
+  resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.9.5"
+  conditions: os=linux & cpu=arm
+  languageName: node
+  linkType: hard
+
 "@rollup/rollup-linux-arm64-gnu@npm:4.5.1":
   version: 4.5.1
   resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.5.1"
@@ -1972,6 +2177,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@rollup/rollup-linux-arm64-gnu@npm:4.9.5":
+  version: 4.9.5
+  resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.9.5"
+  conditions: os=linux & cpu=arm64 & libc=glibc
+  languageName: node
+  linkType: hard
+
 "@rollup/rollup-linux-arm64-musl@npm:4.5.1":
   version: 4.5.1
   resolution: "@rollup/rollup-linux-arm64-musl@npm:4.5.1"
@@ -1979,6 +2191,20 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@rollup/rollup-linux-arm64-musl@npm:4.9.5":
+  version: 4.9.5
+  resolution: "@rollup/rollup-linux-arm64-musl@npm:4.9.5"
+  conditions: os=linux & cpu=arm64 & libc=musl
+  languageName: node
+  linkType: hard
+
+"@rollup/rollup-linux-riscv64-gnu@npm:4.9.5":
+  version: 4.9.5
+  resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.9.5"
+  conditions: os=linux & cpu=riscv64 & libc=glibc
+  languageName: node
+  linkType: hard
+
 "@rollup/rollup-linux-x64-gnu@npm:4.5.1":
   version: 4.5.1
   resolution: "@rollup/rollup-linux-x64-gnu@npm:4.5.1"
@@ -1986,6 +2212,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@rollup/rollup-linux-x64-gnu@npm:4.9.5":
+  version: 4.9.5
+  resolution: "@rollup/rollup-linux-x64-gnu@npm:4.9.5"
+  conditions: os=linux & cpu=x64 & libc=glibc
+  languageName: node
+  linkType: hard
+
 "@rollup/rollup-linux-x64-musl@npm:4.5.1":
   version: 4.5.1
   resolution: "@rollup/rollup-linux-x64-musl@npm:4.5.1"
@@ -1993,6 +2226,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@rollup/rollup-linux-x64-musl@npm:4.9.5":
+  version: 4.9.5
+  resolution: "@rollup/rollup-linux-x64-musl@npm:4.9.5"
+  conditions: os=linux & cpu=x64 & libc=musl
+  languageName: node
+  linkType: hard
+
 "@rollup/rollup-win32-arm64-msvc@npm:4.5.1":
   version: 4.5.1
   resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.5.1"
@@ -2000,6 +2240,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@rollup/rollup-win32-arm64-msvc@npm:4.9.5":
+  version: 4.9.5
+  resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.9.5"
+  conditions: os=win32 & cpu=arm64
+  languageName: node
+  linkType: hard
+
 "@rollup/rollup-win32-ia32-msvc@npm:4.5.1":
   version: 4.5.1
   resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.5.1"
@@ -2007,6 +2254,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@rollup/rollup-win32-ia32-msvc@npm:4.9.5":
+  version: 4.9.5
+  resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.9.5"
+  conditions: os=win32 & cpu=ia32
+  languageName: node
+  linkType: hard
+
 "@rollup/rollup-win32-x64-msvc@npm:4.5.1":
   version: 4.5.1
   resolution: "@rollup/rollup-win32-x64-msvc@npm:4.5.1"
@@ -2014,6 +2268,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@rollup/rollup-win32-x64-msvc@npm:4.9.5":
+  version: 4.9.5
+  resolution: "@rollup/rollup-win32-x64-msvc@npm:4.9.5"
+  conditions: os=win32 & cpu=x64
+  languageName: node
+  linkType: hard
+
 "@rushstack/eslint-patch@npm:^1.3.3":
   version: 1.6.0
   resolution: "@rushstack/eslint-patch@npm:1.6.0"
@@ -2021,6 +2282,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@sinclair/typebox@npm:^0.27.8":
+  version: 0.27.8
+  resolution: "@sinclair/typebox@npm:0.27.8"
+  checksum: 297f95ff77c82c54de8c9907f186076e715ff2621c5222ba50b8d40a170661c0c5242c763cba2a4791f0f91cb1d8ffa53ea1d7294570cf8cd4694c0e383e484d
+  languageName: node
+  linkType: hard
+
 "@spear-ai/citizen@workspace:.":
   version: 0.0.0-use.local
   resolution: "@spear-ai/citizen@workspace:."
@@ -2052,6 +2320,7 @@ __metadata:
     prettier: "npm:3.1.1"
     tsup: "npm:8.0.1"
     typescript: "npm:5.3.3"
+    vitest: "npm:^1.2.0"
   peerDependencies:
     commitlint: ^18.4.3
   languageName: unknown
@@ -2222,6 +2491,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@types/estree@npm:1.0.5, @types/estree@npm:^1.0.0":
+  version: 1.0.5
+  resolution: "@types/estree@npm:1.0.5"
+  checksum: 7de6d928dd4010b0e20c6919e1a6c27b61f8d4567befa89252055fad503d587ecb9a1e3eab1b1901f923964d7019796db810b7fd6430acb26c32866d126fd408
+  languageName: node
+  linkType: hard
+
 "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.9":
   version: 7.0.11
   resolution: "@types/json-schema@npm:7.0.11"
@@ -2735,6 +3011,60 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@vitest/expect@npm:1.2.0":
+  version: 1.2.0
+  resolution: "@vitest/expect@npm:1.2.0"
+  dependencies:
+    "@vitest/spy": "npm:1.2.0"
+    "@vitest/utils": "npm:1.2.0"
+    chai: "npm:^4.3.10"
+  checksum: 279aff5e6c62794b3ad00aacf67e0003dfb40f2e4e54a5811145163711ec0ca6da7fbcf96e775184f7170948fca34508c260fbc31169d1d83a0c9a11a0547fbf
+  languageName: node
+  linkType: hard
+
+"@vitest/runner@npm:1.2.0":
+  version: 1.2.0
+  resolution: "@vitest/runner@npm:1.2.0"
+  dependencies:
+    "@vitest/utils": "npm:1.2.0"
+    p-limit: "npm:^5.0.0"
+    pathe: "npm:^1.1.1"
+  checksum: 0d2798c5c768195d63f441566ccab1bf361bf0a2f9f2616d1800788c2f8cc72939b3fe3af1c92170b9489f716526bf70e4a0e8b805b85fdef5d4ab723256a88a
+  languageName: node
+  linkType: hard
+
+"@vitest/snapshot@npm:1.2.0":
+  version: 1.2.0
+  resolution: "@vitest/snapshot@npm:1.2.0"
+  dependencies:
+    magic-string: "npm:^0.30.5"
+    pathe: "npm:^1.1.1"
+    pretty-format: "npm:^29.7.0"
+  checksum: c3115bbd23695803a22d89c10074f0fa5cf325160a7015d470bebf41abe8f902b46de33aaa9e08688e5bd49fb5ceb7c1c7f7942bb3c62582a929db2f677b03d7
+  languageName: node
+  linkType: hard
+
+"@vitest/spy@npm:1.2.0":
+  version: 1.2.0
+  resolution: "@vitest/spy@npm:1.2.0"
+  dependencies:
+    tinyspy: "npm:^2.2.0"
+  checksum: cb277034b709a31b66b87f79285cf757ee818b91bbd0cdcd7368b3af97ac09b56e0d4d8420e0c4f305524b1901a04c9781a32360e704ed5a0807d8b3b5f227c6
+  languageName: node
+  linkType: hard
+
+"@vitest/utils@npm:1.2.0":
+  version: 1.2.0
+  resolution: "@vitest/utils@npm:1.2.0"
+  dependencies:
+    diff-sequences: "npm:^29.6.3"
+    estree-walker: "npm:^3.0.3"
+    loupe: "npm:^2.3.7"
+    pretty-format: "npm:^29.7.0"
+  checksum: 514397c7d68dc4928561cdb4ebe7b8d2ef5b14cf512c66ee07a0114fa785d1db0870df134a8bdcd8fbdadc371ff6a71d1233db3ebed9c1f048918e8b10bf1d8b
+  languageName: node
+  linkType: hard
+
 "@whatwg-node/events@npm:^0.0.3":
   version: 0.0.3
   resolution: "@whatwg-node/events@npm:0.0.3"
@@ -2796,6 +3126,22 @@ __metadata:
   languageName: node
   linkType: hard
 
+"acorn-walk@npm:^8.3.1":
+  version: 8.3.2
+  resolution: "acorn-walk@npm:8.3.2"
+  checksum: 57dbe2fd8cf744f562431775741c5c087196cd7a65ce4ccb3f3981cdfad25cd24ad2bad404997b88464ac01e789a0a61e5e355b2a84876f13deef39fb39686ca
+  languageName: node
+  linkType: hard
+
+"acorn@npm:^8.10.0, acorn@npm:^8.11.3":
+  version: 8.11.3
+  resolution: "acorn@npm:8.11.3"
+  bin:
+    acorn: bin/acorn
+  checksum: b688e7e3c64d9bfb17b596e1b35e4da9d50553713b3b3630cf5690f2b023a84eac90c56851e6912b483fe60e8b4ea28b254c07e92f17ef83d72d78745a8352dd
+  languageName: node
+  linkType: hard
+
 "acorn@npm:^8.5.0, acorn@npm:^8.8.0":
   version: 8.8.2
   resolution: "acorn@npm:8.8.2"
@@ -2923,6 +3269,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"ansi-styles@npm:^5.0.0":
+  version: 5.2.0
+  resolution: "ansi-styles@npm:5.2.0"
+  checksum: d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469
+  languageName: node
+  linkType: hard
+
 "any-promise@npm:^1.0.0":
   version: 1.3.0
   resolution: "any-promise@npm:1.3.0"
@@ -3214,6 +3567,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"assertion-error@npm:^1.1.0":
+  version: 1.1.0
+  resolution: "assertion-error@npm:1.1.0"
+  checksum: fd9429d3a3d4fd61782eb3962ae76b6d08aa7383123fca0596020013b3ebd6647891a85b05ce821c47d1471ed1271f00b0545cf6a4326cf2fc91efcc3b0fbecf
+  languageName: node
+  linkType: hard
+
 "ast-types-flow@npm:^0.0.7":
   version: 0.0.7
   resolution: "ast-types-flow@npm:0.0.7"
@@ -3456,7 +3816,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"cac@npm:^6.7.12":
+"cac@npm:^6.7.12, cac@npm:^6.7.14":
   version: 6.7.14
   resolution: "cac@npm:6.7.14"
   checksum: 002769a0fbfc51c062acd2a59df465a2a947916b02ac50b56c69ec6c018ee99ac3e7f4dd7366334ea847f1ecacf4defaa61bcd2ac283db50156ce1f1d8c8ad42
@@ -3542,6 +3902,21 @@ __metadata:
   languageName: node
   linkType: hard
 
+"chai@npm:^4.3.10":
+  version: 4.4.1
+  resolution: "chai@npm:4.4.1"
+  dependencies:
+    assertion-error: "npm:^1.1.0"
+    check-error: "npm:^1.0.3"
+    deep-eql: "npm:^4.1.3"
+    get-func-name: "npm:^2.0.2"
+    loupe: "npm:^2.3.6"
+    pathval: "npm:^1.1.1"
+    type-detect: "npm:^4.0.8"
+  checksum: c6d7aba913a67529c68dbec3673f94eb9c586c5474cc5142bd0b587c9c9ec9e5fbaa937e038ecaa6475aea31433752d5fabdd033b9248bde6ae53befcde774ae
+  languageName: node
+  linkType: hard
+
 "chalk@npm:^2.0.0, chalk@npm:^2.1.0":
   version: 2.4.2
   resolution: "chalk@npm:2.4.2"
@@ -3598,6 +3973,15 @@ __metadata:
   languageName: node
   linkType: hard
 
+"check-error@npm:^1.0.3":
+  version: 1.0.3
+  resolution: "check-error@npm:1.0.3"
+  dependencies:
+    get-func-name: "npm:^2.0.2"
+  checksum: e2131025cf059b21080f4813e55b3c480419256914601750b0fee3bd9b2b8315b531e551ef12560419b8b6d92a3636511322752b1ce905703239e7cc451b6399
+  languageName: node
+  linkType: hard
+
 "chokidar@npm:^3.5.1, chokidar@npm:^3.5.3":
   version: 3.5.3
   resolution: "chokidar@npm:3.5.3"
@@ -4009,6 +4393,15 @@ __metadata:
   languageName: node
   linkType: hard
 
+"deep-eql@npm:^4.1.3":
+  version: 4.1.3
+  resolution: "deep-eql@npm:4.1.3"
+  dependencies:
+    type-detect: "npm:^4.0.0"
+  checksum: 12ce93ae63de187e77b076d3d51bfc28b11f98910a22c18714cce112791195e86a94f97788180994614b14562a86c9763f67c69f785e4586f806b5df39bf9301
+  languageName: node
+  linkType: hard
+
 "deep-equal@npm:^2.0.5":
   version: 2.2.1
   resolution: "deep-equal@npm:2.2.1"
@@ -4157,6 +4550,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"diff-sequences@npm:^29.6.3":
+  version: 29.6.3
+  resolution: "diff-sequences@npm:29.6.3"
+  checksum: 179daf9d2f9af5c57ad66d97cb902a538bcf8ed64963fa7aa0c329b3de3665ce2eb6ffdc2f69f29d445fa4af2517e5e55e5b6e00c00a9ae4f43645f97f7078cb
+  languageName: node
+  linkType: hard
+
 "diff@npm:^3.1.0":
   version: 3.5.0
   resolution: "diff@npm:3.5.0"
@@ -4608,6 +5008,86 @@ __metadata:
   languageName: node
   linkType: hard
 
+"esbuild@npm:^0.19.3":
+  version: 0.19.11
+  resolution: "esbuild@npm:0.19.11"
+  dependencies:
+    "@esbuild/aix-ppc64": "npm:0.19.11"
+    "@esbuild/android-arm": "npm:0.19.11"
+    "@esbuild/android-arm64": "npm:0.19.11"
+    "@esbuild/android-x64": "npm:0.19.11"
+    "@esbuild/darwin-arm64": "npm:0.19.11"
+    "@esbuild/darwin-x64": "npm:0.19.11"
+    "@esbuild/freebsd-arm64": "npm:0.19.11"
+    "@esbuild/freebsd-x64": "npm:0.19.11"
+    "@esbuild/linux-arm": "npm:0.19.11"
+    "@esbuild/linux-arm64": "npm:0.19.11"
+    "@esbuild/linux-ia32": "npm:0.19.11"
+    "@esbuild/linux-loong64": "npm:0.19.11"
+    "@esbuild/linux-mips64el": "npm:0.19.11"
+    "@esbuild/linux-ppc64": "npm:0.19.11"
+    "@esbuild/linux-riscv64": "npm:0.19.11"
+    "@esbuild/linux-s390x": "npm:0.19.11"
+    "@esbuild/linux-x64": "npm:0.19.11"
+    "@esbuild/netbsd-x64": "npm:0.19.11"
+    "@esbuild/openbsd-x64": "npm:0.19.11"
+    "@esbuild/sunos-x64": "npm:0.19.11"
+    "@esbuild/win32-arm64": "npm:0.19.11"
+    "@esbuild/win32-ia32": "npm:0.19.11"
+    "@esbuild/win32-x64": "npm:0.19.11"
+  dependenciesMeta:
+    "@esbuild/aix-ppc64":
+      optional: true
+    "@esbuild/android-arm":
+      optional: true
+    "@esbuild/android-arm64":
+      optional: true
+    "@esbuild/android-x64":
+      optional: true
+    "@esbuild/darwin-arm64":
+      optional: true
+    "@esbuild/darwin-x64":
+      optional: true
+    "@esbuild/freebsd-arm64":
+      optional: true
+    "@esbuild/freebsd-x64":
+      optional: true
+    "@esbuild/linux-arm":
+      optional: true
+    "@esbuild/linux-arm64":
+      optional: true
+    "@esbuild/linux-ia32":
+      optional: true
+    "@esbuild/linux-loong64":
+      optional: true
+    "@esbuild/linux-mips64el":
+      optional: true
+    "@esbuild/linux-ppc64":
+      optional: true
+    "@esbuild/linux-riscv64":
+      optional: true
+    "@esbuild/linux-s390x":
+      optional: true
+    "@esbuild/linux-x64":
+      optional: true
+    "@esbuild/netbsd-x64":
+      optional: true
+    "@esbuild/openbsd-x64":
+      optional: true
+    "@esbuild/sunos-x64":
+      optional: true
+    "@esbuild/win32-arm64":
+      optional: true
+    "@esbuild/win32-ia32":
+      optional: true
+    "@esbuild/win32-x64":
+      optional: true
+  bin:
+    esbuild: bin/esbuild
+  checksum: a40b3858c29618c8c893389372f469245a6b2d1319782af75d33d8ba5dcadfe181fcc935f8e1a907be667946384950a4cf482ebe1e79c99c932d2b8eb35a09d0
+  languageName: node
+  linkType: hard
+
 "esbuild@npm:~0.18.20":
   version: 0.18.20
   resolution: "esbuild@npm:0.18.20"
@@ -5436,6 +5916,15 @@ __metadata:
   languageName: node
   linkType: hard
 
+"estree-walker@npm:^3.0.3":
+  version: 3.0.3
+  resolution: "estree-walker@npm:3.0.3"
+  dependencies:
+    "@types/estree": "npm:^1.0.0"
+  checksum: a65728d5727b71de172c5df323385755a16c0fdab8234dc756c3854cfee343261ddfbb72a809a5660fac8c75d960bb3e21aa898c2d7e9b19bb298482ca58a3af
+  languageName: node
+  linkType: hard
+
 "esutils@npm:^2.0.2":
   version: 2.0.3
   resolution: "esutils@npm:2.0.3"
@@ -5484,6 +5973,23 @@ __metadata:
   languageName: node
   linkType: hard
 
+"execa@npm:^8.0.1":
+  version: 8.0.1
+  resolution: "execa@npm:8.0.1"
+  dependencies:
+    cross-spawn: "npm:^7.0.3"
+    get-stream: "npm:^8.0.1"
+    human-signals: "npm:^5.0.0"
+    is-stream: "npm:^3.0.0"
+    merge-stream: "npm:^2.0.0"
+    npm-run-path: "npm:^5.1.0"
+    onetime: "npm:^6.0.0"
+    signal-exit: "npm:^4.1.0"
+    strip-final-newline: "npm:^3.0.0"
+  checksum: d2ab5fe1e2bb92b9788864d0713f1fce9a07c4594e272c0c97bc18c90569897ab262e4ea58d27a694d288227a2e24f16f5e2575b44224ad9983b799dc7f1098d
+  languageName: node
+  linkType: hard
+
 "extendable-error@npm:^0.1.5":
   version: 0.1.7
   resolution: "extendable-error@npm:0.1.7"
@@ -5862,6 +6368,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2":
+  version: 2.0.2
+  resolution: "get-func-name@npm:2.0.2"
+  checksum: 3f62f4c23647de9d46e6f76d2b3eafe58933a9b3830c60669e4180d6c601ce1b4aa310ba8366143f55e52b139f992087a9f0647274e8745621fa2af7e0acf13b
+  languageName: node
+  linkType: hard
+
 "get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0":
   version: 1.2.0
   resolution: "get-intrinsic@npm:1.2.0"
@@ -5911,6 +6424,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"get-stream@npm:^8.0.1":
+  version: 8.0.1
+  resolution: "get-stream@npm:8.0.1"
+  checksum: dde5511e2e65a48e9af80fea64aff11b4921b14b6e874c6f8294c50975095af08f41bfb0b680c887f28b566dd6ec2cb2f960f9d36a323359be324ce98b766e9e
+  languageName: node
+  linkType: hard
+
 "get-symbol-description@npm:^1.0.0":
   version: 1.0.0
   resolution: "get-symbol-description@npm:1.0.0"
@@ -6334,6 +6854,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"human-signals@npm:^5.0.0":
+  version: 5.0.0
+  resolution: "human-signals@npm:5.0.0"
+  checksum: 30f8870d831cdcd2d6ec0486a7d35d49384996742052cee792854273fa9dd9e7d5db06bb7985d4953e337e10714e994e0302e90dc6848069171b05ec836d65b0
+  languageName: node
+  linkType: hard
+
 "humanize-ms@npm:^1.2.1":
   version: 1.2.1
   resolution: "humanize-ms@npm:1.2.1"
@@ -7361,6 +7888,16 @@ __metadata:
   languageName: node
   linkType: hard
 
+"local-pkg@npm:^0.5.0":
+  version: 0.5.0
+  resolution: "local-pkg@npm:0.5.0"
+  dependencies:
+    mlly: "npm:^1.4.2"
+    pkg-types: "npm:^1.0.3"
+  checksum: 20f4caba50dc6fb00ffcc1a78bc94b5acb33995e0aadf4d4edcdeab257e891aa08f50afddf02f3240b2c3d02432bc2078f2a916a280ed716b64753a3d250db70
+  languageName: node
+  linkType: hard
+
 "locate-path@npm:^5.0.0":
   version: 5.0.0
   resolution: "locate-path@npm:5.0.0"
@@ -7505,6 +8042,15 @@ __metadata:
   languageName: node
   linkType: hard
 
+"loupe@npm:^2.3.6, loupe@npm:^2.3.7":
+  version: 2.3.7
+  resolution: "loupe@npm:2.3.7"
+  dependencies:
+    get-func-name: "npm:^2.0.1"
+  checksum: 635c8f0914c2ce7ecfe4e239fbaf0ce1d2c00e4246fafcc4ed000bfdb1b8f89d05db1a220054175cca631ebf3894872a26fffba0124477fcb562f78762848fb1
+  languageName: node
+  linkType: hard
+
 "lowercase-keys@npm:^1.0.0":
   version: 1.0.1
   resolution: "lowercase-keys@npm:1.0.1"
@@ -7547,6 +8093,15 @@ __metadata:
   languageName: node
   linkType: hard
 
+"magic-string@npm:^0.30.5":
+  version: 0.30.5
+  resolution: "magic-string@npm:0.30.5"
+  dependencies:
+    "@jridgewell/sourcemap-codec": "npm:^1.4.15"
+  checksum: c8a6b25f813215ca9db526f3a407d6dc0bf35429c2b8111d6f1c2cf6cf6afd5e2d9f9cd189416a0e3959e20ecd635f73639f9825c73de1074b29331fe36ace59
+  languageName: node
+  linkType: hard
+
 "make-error@npm:^1.1.1":
   version: 1.3.6
   resolution: "make-error@npm:1.3.6"
@@ -7911,6 +8466,18 @@ __metadata:
   languageName: node
   linkType: hard
 
+"mlly@npm:^1.2.0, mlly@npm:^1.4.2":
+  version: 1.5.0
+  resolution: "mlly@npm:1.5.0"
+  dependencies:
+    acorn: "npm:^8.11.3"
+    pathe: "npm:^1.1.2"
+    pkg-types: "npm:^1.0.3"
+    ufo: "npm:^1.3.2"
+  checksum: c030ecb7f17a9080f04746cc9bf1a73f55a86dcad55c1597d20349737e07ec66a09ea1bcac0d36984cb1d532b79200c235086ab2291d678224f9082946cf530e
+  languageName: node
+  linkType: hard
+
 "module-details-from-path@npm:^1.0.3":
   version: 1.0.3
   resolution: "module-details-from-path@npm:1.0.3"
@@ -7952,6 +8519,15 @@ __metadata:
   languageName: node
   linkType: hard
 
+"nanoid@npm:^3.3.7":
+  version: 3.3.7
+  resolution: "nanoid@npm:3.3.7"
+  bin:
+    nanoid: bin/nanoid.cjs
+  checksum: ac1eb60f615b272bccb0e2b9cd933720dad30bf9708424f691b8113826bb91aca7e9d14ef5d9415a6ba15c266b37817256f58d8ce980c82b0ba3185352565679
+  languageName: node
+  linkType: hard
+
 "natural-compare-lite@npm:^1.4.0":
   version: 1.4.0
   resolution: "natural-compare-lite@npm:1.4.0"
@@ -8402,6 +8978,15 @@ __metadata:
   languageName: node
   linkType: hard
 
+"p-limit@npm:^5.0.0":
+  version: 5.0.0
+  resolution: "p-limit@npm:5.0.0"
+  dependencies:
+    yocto-queue: "npm:^1.0.0"
+  checksum: 87bf5837dee6942f0dbeff318436179931d9a97848d1b07dbd86140a477a5d2e6b90d9701b210b4e21fe7beaea2979dfde366e4f576fa644a59bd4d6a6371da7
+  languageName: node
+  linkType: hard
+
 "p-locate@npm:^4.1.0":
   version: 4.1.0
   resolution: "p-locate@npm:4.1.0"
@@ -8520,6 +9105,20 @@ __metadata:
   languageName: node
   linkType: hard
 
+"pathe@npm:^1.1.0, pathe@npm:^1.1.1, pathe@npm:^1.1.2":
+  version: 1.1.2
+  resolution: "pathe@npm:1.1.2"
+  checksum: f201d796351bf7433d147b92c20eb154a4e0ea83512017bf4ec4e492a5d6e738fb45798be4259a61aa81270179fce11026f6ff0d3fa04173041de044defe9d80
+  languageName: node
+  linkType: hard
+
+"pathval@npm:^1.1.1":
+  version: 1.1.1
+  resolution: "pathval@npm:1.1.1"
+  checksum: b50a4751068aa3a5428f5a0b480deecedc6f537666a3630a0c2ae2d5e7c0f4bf0ee77b48404441ec1220bef0c91625e6030b3d3cf5a32ab0d9764018d1d9dbb6
+  languageName: node
+  linkType: hard
+
 "picocolors@npm:^1.0.0":
   version: 1.0.0
   resolution: "picocolors@npm:1.0.0"
@@ -8564,6 +9163,17 @@ __metadata:
   languageName: node
   linkType: hard
 
+"pkg-types@npm:^1.0.3":
+  version: 1.0.3
+  resolution: "pkg-types@npm:1.0.3"
+  dependencies:
+    jsonc-parser: "npm:^3.2.0"
+    mlly: "npm:^1.2.0"
+    pathe: "npm:^1.1.0"
+  checksum: e17e1819ce579c9ea390e4c41a9ed9701d8cff14b463f9577cc4f94688da8917c66dabc40feacd47a21eb3de9b532756a78becd882b76add97053af307c1240a
+  languageName: node
+  linkType: hard
+
 "plur@npm:^4.0.0":
   version: 4.0.0
   resolution: "plur@npm:4.0.0"
@@ -8661,6 +9271,17 @@ __metadata:
   languageName: node
   linkType: hard
 
+"postcss@npm:^8.4.32":
+  version: 8.4.33
+  resolution: "postcss@npm:8.4.33"
+  dependencies:
+    nanoid: "npm:^3.3.7"
+    picocolors: "npm:^1.0.0"
+    source-map-js: "npm:^1.0.2"
+  checksum: e22a4594c255f26117f38419fb494d7ecab0f596cd409f7aadc8a6173abf180ed7ea970cd13fd366ab12b5840be901d2a09b25197700c2ebcb5a8077326bf519
+  languageName: node
+  linkType: hard
+
 "preferred-pm@npm:^3.0.0":
   version: 3.0.3
   resolution: "preferred-pm@npm:3.0.3"
@@ -8707,6 +9328,17 @@ __metadata:
   languageName: node
   linkType: hard
 
+"pretty-format@npm:^29.7.0":
+  version: 29.7.0
+  resolution: "pretty-format@npm:29.7.0"
+  dependencies:
+    "@jest/schemas": "npm:^29.6.3"
+    ansi-styles: "npm:^5.0.0"
+    react-is: "npm:^18.0.0"
+  checksum: dea96bc83c83cd91b2bfc55757b6b2747edcaac45b568e46de29deee80742f17bc76fe8898135a70d904f4928eafd8bb693cd1da4896e8bdd3c5e82cadf1d2bb
+  languageName: node
+  linkType: hard
+
 "promise-inflight@npm:^1.0.1":
   version: 1.0.1
   resolution: "promise-inflight@npm:1.0.1"
@@ -8858,6 +9490,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"react-is@npm:^18.0.0":
+  version: 18.2.0
+  resolution: "react-is@npm:18.2.0"
+  checksum: 200cd65bf2e0be7ba6055f647091b725a45dd2a6abef03bf2380ce701fd5edccee40b49b9d15edab7ac08a762bf83cb4081e31ec2673a5bfb549a36ba21570df
+  languageName: node
+  linkType: hard
+
 "react@npm:18.2.0":
   version: 18.2.0
   resolution: "react@npm:18.2.0"
@@ -9357,6 +9996,60 @@ __metadata:
   languageName: node
   linkType: hard
 
+"rollup@npm:^4.2.0":
+  version: 4.9.5
+  resolution: "rollup@npm:4.9.5"
+  dependencies:
+    "@rollup/rollup-android-arm-eabi": "npm:4.9.5"
+    "@rollup/rollup-android-arm64": "npm:4.9.5"
+    "@rollup/rollup-darwin-arm64": "npm:4.9.5"
+    "@rollup/rollup-darwin-x64": "npm:4.9.5"
+    "@rollup/rollup-linux-arm-gnueabihf": "npm:4.9.5"
+    "@rollup/rollup-linux-arm64-gnu": "npm:4.9.5"
+    "@rollup/rollup-linux-arm64-musl": "npm:4.9.5"
+    "@rollup/rollup-linux-riscv64-gnu": "npm:4.9.5"
+    "@rollup/rollup-linux-x64-gnu": "npm:4.9.5"
+    "@rollup/rollup-linux-x64-musl": "npm:4.9.5"
+    "@rollup/rollup-win32-arm64-msvc": "npm:4.9.5"
+    "@rollup/rollup-win32-ia32-msvc": "npm:4.9.5"
+    "@rollup/rollup-win32-x64-msvc": "npm:4.9.5"
+    "@types/estree": "npm:1.0.5"
+    fsevents: "npm:~2.3.2"
+  dependenciesMeta:
+    "@rollup/rollup-android-arm-eabi":
+      optional: true
+    "@rollup/rollup-android-arm64":
+      optional: true
+    "@rollup/rollup-darwin-arm64":
+      optional: true
+    "@rollup/rollup-darwin-x64":
+      optional: true
+    "@rollup/rollup-linux-arm-gnueabihf":
+      optional: true
+    "@rollup/rollup-linux-arm64-gnu":
+      optional: true
+    "@rollup/rollup-linux-arm64-musl":
+      optional: true
+    "@rollup/rollup-linux-riscv64-gnu":
+      optional: true
+    "@rollup/rollup-linux-x64-gnu":
+      optional: true
+    "@rollup/rollup-linux-x64-musl":
+      optional: true
+    "@rollup/rollup-win32-arm64-msvc":
+      optional: true
+    "@rollup/rollup-win32-ia32-msvc":
+      optional: true
+    "@rollup/rollup-win32-x64-msvc":
+      optional: true
+    fsevents:
+      optional: true
+  bin:
+    rollup: dist/bin/rollup
+  checksum: 4debf528e63edea5c3f5d38e399c6dd7287e2977d90d2d3ce38d4b3412289e2081aff8f8488a11b1699c786f2e904e9e150f30d576fe9316b5b97df0e80b1bce
+  languageName: node
+  linkType: hard
+
 "run-applescript@npm:^5.0.0":
   version: 5.0.0
   resolution: "run-applescript@npm:5.0.0"
@@ -9617,6 +10310,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"siginfo@npm:^2.0.0":
+  version: 2.0.0
+  resolution: "siginfo@npm:2.0.0"
+  checksum: e93ff66c6531a079af8fb217240df01f980155b5dc408d2d7bebc398dd284e383eb318153bf8acd4db3c4fe799aa5b9a641e38b0ba3b1975700b1c89547ea4e7
+  languageName: node
+  linkType: hard
+
 "signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7":
   version: 3.0.7
   resolution: "signal-exit@npm:3.0.7"
@@ -9624,6 +10324,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"signal-exit@npm:^4.1.0":
+  version: 4.1.0
+  resolution: "signal-exit@npm:4.1.0"
+  checksum: c9fa63bbbd7431066174a48ba2dd9986dfd930c3a8b59de9c29d7b6854ec1c12a80d15310869ea5166d413b99f041bfa3dd80a7947bcd44ea8e6eb3ffeabfa1f
+  languageName: node
+  linkType: hard
+
 "slash@npm:^3.0.0":
   version: 3.0.0
   resolution: "slash@npm:3.0.0"
@@ -9791,6 +10498,20 @@ __metadata:
   languageName: node
   linkType: hard
 
+"stackback@npm:0.0.2":
+  version: 0.0.2
+  resolution: "stackback@npm:0.0.2"
+  checksum: 2d4dc4e64e2db796de4a3c856d5943daccdfa3dd092e452a1ce059c81e9a9c29e0b9badba91b43ef0d5ff5c04ee62feb3bcc559a804e16faf447bac2d883aa99
+  languageName: node
+  linkType: hard
+
+"std-env@npm:^3.5.0":
+  version: 3.7.0
+  resolution: "std-env@npm:3.7.0"
+  checksum: 6ee0cca1add3fd84656b0002cfbc5bfa20340389d9ba4720569840f1caa34bce74322aef4c93f046391583e50649d0cf81a5f8fe1d411e50b659571690a45f12
+  languageName: node
+  linkType: hard
+
 "stop-iteration-iterator@npm:^1.0.0":
   version: 1.0.0
   resolution: "stop-iteration-iterator@npm:1.0.0"
@@ -9971,6 +10692,15 @@ __metadata:
   languageName: node
   linkType: hard
 
+"strip-literal@npm:^1.3.0":
+  version: 1.3.0
+  resolution: "strip-literal@npm:1.3.0"
+  dependencies:
+    acorn: "npm:^8.10.0"
+  checksum: f5fa7e289df8ebe82e90091fd393974faf8871be087ca50114327506519323cf15f2f8fee6ebe68b5e58bfc795269cae8bdc7cb5a83e27b02b3fe953f37b0a89
+  languageName: node
+  linkType: hard
+
 "sucrase@npm:^3.20.3, sucrase@npm:^3.32.0":
   version: 3.32.0
   resolution: "sucrase@npm:3.32.0"
@@ -10133,6 +10863,27 @@ __metadata:
   languageName: node
   linkType: hard
 
+"tinybench@npm:^2.5.1":
+  version: 2.5.1
+  resolution: "tinybench@npm:2.5.1"
+  checksum: f64ea142e048edc5010027eca36aff5aef74cd849ab9c6ba6e39475f911309694cb5a7ff894d47216ab4a3abcf4291e4bdc7a57796e96bf5b06e67452b5ac54d
+  languageName: node
+  linkType: hard
+
+"tinypool@npm:^0.8.1":
+  version: 0.8.1
+  resolution: "tinypool@npm:0.8.1"
+  checksum: 3fae8acc22b7d0364eb202b64f61f0d8b10dcead6bef9b8fab1836857dcecd0e34fadc47ab309754ead2cb29bfa4b3467a9fc0daae23669b19ff403ae1364b5c
+  languageName: node
+  linkType: hard
+
+"tinyspy@npm:^2.2.0":
+  version: 2.2.0
+  resolution: "tinyspy@npm:2.2.0"
+  checksum: bcc5a08c2dc7574d32e6dcc2e760ad95a3cf30249c22799815b6389179427c95573d27d2d965ebc5fca2b6d338c46678cd7337ea2a9cebacee3dc662176b07cb
+  languageName: node
+  linkType: hard
+
 "titleize@npm:^3.0.0":
   version: 3.0.0
   resolution: "titleize@npm:3.0.0"
@@ -10469,6 +11220,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"type-detect@npm:^4.0.0, type-detect@npm:^4.0.8":
+  version: 4.0.8
+  resolution: "type-detect@npm:4.0.8"
+  checksum: 5179e3b8ebc51fce1b13efb75fdea4595484433f9683bbc2dca6d99789dba4e602ab7922d2656f2ce8383987467f7770131d4a7f06a26287db0615d2f4c4ce7d
+  languageName: node
+  linkType: hard
+
 "type-fest@npm:^0.13.1":
   version: 0.13.1
   resolution: "type-fest@npm:0.13.1"
@@ -10618,6 +11376,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"ufo@npm:^1.3.2":
+  version: 1.3.2
+  resolution: "ufo@npm:1.3.2"
+  checksum: 7133290d495e2b3f9416de69982019e81cff40d28cfd3a07accff1122ee52f23d9165e495a140a1b34b183244e88fc4001cb649591385ecbad1d3d0d2264fa6e
+  languageName: node
+  linkType: hard
+
 "unbox-primitive@npm:^1.0.2":
   version: 1.0.2
   resolution: "unbox-primitive@npm:1.0.2"
@@ -10800,6 +11565,112 @@ __metadata:
   languageName: node
   linkType: hard
 
+"vite-node@npm:1.2.0":
+  version: 1.2.0
+  resolution: "vite-node@npm:1.2.0"
+  dependencies:
+    cac: "npm:^6.7.14"
+    debug: "npm:^4.3.4"
+    pathe: "npm:^1.1.1"
+    picocolors: "npm:^1.0.0"
+    vite: "npm:^5.0.0"
+  bin:
+    vite-node: vite-node.mjs
+  checksum: 7e975f0fa3fc243d96a4056cac36309b726a7317dcb6ca612a788aa2bb3f95a172ef7f5d410054ae7a57f4b6e2bc3613fb898b7e8e9dac121acecca46fe1085c
+  languageName: node
+  linkType: hard
+
+"vite@npm:^5.0.0":
+  version: 5.0.11
+  resolution: "vite@npm:5.0.11"
+  dependencies:
+    esbuild: "npm:^0.19.3"
+    fsevents: "npm:~2.3.3"
+    postcss: "npm:^8.4.32"
+    rollup: "npm:^4.2.0"
+  peerDependencies:
+    "@types/node": ^18.0.0 || >=20.0.0
+    less: "*"
+    lightningcss: ^1.21.0
+    sass: "*"
+    stylus: "*"
+    sugarss: "*"
+    terser: ^5.4.0
+  dependenciesMeta:
+    fsevents:
+      optional: true
+  peerDependenciesMeta:
+    "@types/node":
+      optional: true
+    less:
+      optional: true
+    lightningcss:
+      optional: true
+    sass:
+      optional: true
+    stylus:
+      optional: true
+    sugarss:
+      optional: true
+    terser:
+      optional: true
+  bin:
+    vite: bin/vite.js
+  checksum: f1a8fea35ed9f162d7a10fd13efb2c96637028b0a319d726aeec8b31e20e4d047272bda5df82167618e7774a520236c66f3093ed172802660aec5227814072f4
+  languageName: node
+  linkType: hard
+
+"vitest@npm:^1.2.0":
+  version: 1.2.0
+  resolution: "vitest@npm:1.2.0"
+  dependencies:
+    "@vitest/expect": "npm:1.2.0"
+    "@vitest/runner": "npm:1.2.0"
+    "@vitest/snapshot": "npm:1.2.0"
+    "@vitest/spy": "npm:1.2.0"
+    "@vitest/utils": "npm:1.2.0"
+    acorn-walk: "npm:^8.3.1"
+    cac: "npm:^6.7.14"
+    chai: "npm:^4.3.10"
+    debug: "npm:^4.3.4"
+    execa: "npm:^8.0.1"
+    local-pkg: "npm:^0.5.0"
+    magic-string: "npm:^0.30.5"
+    pathe: "npm:^1.1.1"
+    picocolors: "npm:^1.0.0"
+    std-env: "npm:^3.5.0"
+    strip-literal: "npm:^1.3.0"
+    tinybench: "npm:^2.5.1"
+    tinypool: "npm:^0.8.1"
+    vite: "npm:^5.0.0"
+    vite-node: "npm:1.2.0"
+    why-is-node-running: "npm:^2.2.2"
+  peerDependencies:
+    "@edge-runtime/vm": "*"
+    "@types/node": ^18.0.0 || >=20.0.0
+    "@vitest/browser": ^1.0.0
+    "@vitest/ui": ^1.0.0
+    happy-dom: "*"
+    jsdom: "*"
+  peerDependenciesMeta:
+    "@edge-runtime/vm":
+      optional: true
+    "@types/node":
+      optional: true
+    "@vitest/browser":
+      optional: true
+    "@vitest/ui":
+      optional: true
+    happy-dom:
+      optional: true
+    jsdom:
+      optional: true
+  bin:
+    vitest: vitest.mjs
+  checksum: 6ad4ffc76a8e364eaebc3c745c699638445b0f96259fcc028d95d521c01df84f0d00fea72beee73d48ea2ce93640cf7bbe76ad541230e076d6435946bb764f8e
+  languageName: node
+  linkType: hard
+
 "wcwidth@npm:^1.0.1":
   version: 1.0.1
   resolution: "wcwidth@npm:1.0.1"
@@ -10988,6 +11859,18 @@ __metadata:
   languageName: node
   linkType: hard
 
+"why-is-node-running@npm:^2.2.2":
+  version: 2.2.2
+  resolution: "why-is-node-running@npm:2.2.2"
+  dependencies:
+    siginfo: "npm:^2.0.0"
+    stackback: "npm:0.0.2"
+  bin:
+    why-is-node-running: cli.js
+  checksum: f3582e0337f4b25537d492b1d40f00b978ce04b1d1eeea8f310bfa8aae8a7d11d118d672e2f0760c164ce3753a620a70aa29ff3620e340197624940cf9c08615
+  languageName: node
+  linkType: hard
+
 "wide-align@npm:^1.1.5":
   version: 1.1.5
   resolution: "wide-align@npm:1.1.5"
@@ -11184,3 +12067,10 @@ __metadata:
   checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700
   languageName: node
   linkType: hard
+
+"yocto-queue@npm:^1.0.0":
+  version: 1.0.0
+  resolution: "yocto-queue@npm:1.0.0"
+  checksum: 2cac84540f65c64ccc1683c267edce396b26b1e931aa429660aefac8fbe0188167b7aee815a3c22fa59a28a58d898d1a2b1825048f834d8d629f4c2a5d443801
+  languageName: node
+  linkType: hard


Test patch:
diff --git a/.yarn/cache/@vitest-expect-npm-1.2.0-744f75cbd5-279aff5e6c.zip b/.yarn/cache/@vitest-expect-npm-1.2.0-744f75cbd5-279aff5e6c.zip
new file mode 100644
index 00000000..78d0a2bf
Binary files /dev/null and b/.yarn/cache/@vitest-expect-npm-1.2.0-744f75cbd5-279aff5e6c.zip differ
diff --git a/.yarn/cache/@vitest-runner-npm-1.2.0-48fb29f6f7-0d2798c5c7.zip b/.yarn/cache/@vitest-runner-npm-1.2.0-48fb29f6f7-0d2798c5c7.zip
new file mode 100644
index 00000000..6286fefe
Binary files /dev/null and b/.yarn/cache/@vitest-runner-npm-1.2.0-48fb29f6f7-0d2798c5c7.zip differ
diff --git a/.yarn/cache/@vitest-snapshot-npm-1.2.0-31b9921ad5-c3115bbd23.zip b/.yarn/cache/@vitest-snapshot-npm-1.2.0-31b9921ad5-c3115bbd23.zip
new file mode 100644
index 00000000..f393159f
Binary files /dev/null and b/.yarn/cache/@vitest-snapshot-npm-1.2.0-31b9921ad5-c3115bbd23.zip differ
diff --git a/.yarn/cache/@vitest-spy-npm-1.2.0-9d36531c4b-cb277034b7.zip b/.yarn/cache/@vitest-spy-npm-1.2.0-9d36531c4b-cb277034b7.zip
new file mode 100644
index 00000000..5f17744a
Binary files /dev/null and b/.yarn/cache/@vitest-spy-npm-1.2.0-9d36531c4b-cb277034b7.zip differ
diff --git a/.yarn/cache/@vitest-utils-npm-1.2.0-9c40ba76ac-514397c7d6.zip b/.yarn/cache/@vitest-utils-npm-1.2.0-9c40ba76ac-514397c7d6.zip
new file mode 100644
index 00000000..01e11cf5
Binary files /dev/null and b/.yarn/cache/@vitest-utils-npm-1.2.0-9c40ba76ac-514397c7d6.zip differ
diff --git a/.yarn/cache/get-stream-npm-8.0.1-c921b4840e-dde5511e2e.zip b/.yarn/cache/get-stream-npm-8.0.1-c921b4840e-dde5511e2e.zip
new file mode 100644
index 00000000..ebe7123f
Binary files /dev/null and b/.yarn/cache/get-stream-npm-8.0.1-c921b4840e-dde5511e2e.zip differ
diff --git a/.yarn/cache/vitest-npm-1.2.0-f3bf096c0e-6ad4ffc76a.zip b/.yarn/cache/vitest-npm-1.2.0-f3bf096c0e-6ad4ffc76a.zip
new file mode 100644
index 00000000..b44e3588
Binary files /dev/null and b/.yarn/cache/vitest-npm-1.2.0-f3bf096c0e-6ad4ffc76a.zip differ
diff --git a/packages/commitlint-config/src/rules/ignore-rules.test.ts b/packages/commitlint-config/src/rules/ignore-rules.test.ts
new file mode 100644
index 00000000..5f1adf04
--- /dev/null
+++ b/packages/commitlint-config/src/rules/ignore-rules.test.ts
@@ -0,0 +1,16 @@
+import { describe, expect, test } from "vitest";
+import { ignoreDependabot } from "./ignore-rules";
+
+describe("ignoreDependabot", () => {
+  test("Should return true when the message includes `dependabot[bot]`", () => {
+    expect(ignoreDependabot("message with dependabot[bot] in it")).toBe(true);
+  });
+
+  test("Should return false when the message doesn't include `dependabot[bot]`", () => {
+    expect(ignoreDependabot("not-dependabot")).toBe(false);
+  });
+
+  test("Should return false when the username is empty", () => {
+    expect(ignoreDependabot("")).toBe(false);
+  });
+});