« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.prettierrc.json13
-rw-r--r--.taprc2
-rw-r--r--coverage-map.js24
-rw-r--r--eslint.config.js2
-rw-r--r--package-lock.json6125
-rw-r--r--package.json21
-rw-r--r--src/common-util/wiki-data.js2
-rw-r--r--src/content/dependencies/generatePageLayout.js2
-rw-r--r--src/data/cacheable-object.js5
-rw-r--r--src/data/composite.js10
-rw-r--r--src/data/composite/things/contribution/withContainingReverseContributionList.js2
-rw-r--r--src/data/things/MusicVideo.js1
-rw-r--r--src/static/css/search.css4
-rw-r--r--src/static/js/client/index.js7
-rw-r--r--src/static/js/client/sidebar-search.js4
-rw-r--r--src/web-routes.js1
-rw-r--r--test/lib/composite.js33
-rw-r--r--test/lib/content-function.js285
-rw-r--r--test/lib/generic-mock.js314
-rw-r--r--test/lib/index.js7
-rw-r--r--test/lib/wiki-data.js156
-rw-r--r--test/test-lib.js (renamed from test/lib/strict-match-error.js)36
-rw-r--r--test/unit/content/dependencies/generateAlbumTrackList.js43
-rw-r--r--test/unit/content/dependencies/linkArtist.js31
-rw-r--r--test/unit/content/dependencies/linkContribution.js145
-rw-r--r--test/unit/data/cacheable-object.js12
-rw-r--r--test/unit/data/composite/control-flow/exposeConstant.js42
-rw-r--r--test/unit/data/composite/control-flow/exposeDependency.js64
-rw-r--r--test/unit/data/composite/control-flow/withResultOfAvailabilityCheck.js197
-rw-r--r--test/unit/data/composite/data/withPropertiesFromObject.js241
-rw-r--r--test/unit/data/composite/data/withPropertyFromObject.js195
-rw-r--r--test/unit/data/composite/data/withUniqueItemsOnly.js69
-rw-r--r--test/unit/data/validators.js16
33 files changed, 2331 insertions, 5780 deletions
diff --git a/.prettierrc.json b/.prettierrc.json
deleted file mode 100644
index bba89feb..00000000
--- a/.prettierrc.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "arrowParens": "always",
-  "bracketSpacing": false,
-  "printWidth": 80,
-  "proseWrap": "never",
-  "quoteProps": "as-needed",
-  "requirePragma": true,
-  "semi": true,
-  "singleQuote": true,
-  "tabWidth": 2,
-  "trailingComma": "es5",
-  "useTabs": false
-}
diff --git a/.taprc b/.taprc
index 01ac7b62..3d4523f3 100644
--- a/.taprc
+++ b/.taprc
@@ -1,6 +1,6 @@
 # vim: set filetype=yaml :
 coverage-map: coverage-map.js
 exclude:
-  - test/lib/*
+  - test/test-lib.js
 test-env:
   - CLICOLOR_FORCE=0
diff --git a/coverage-map.js b/coverage-map.js
index beff9e8a..b3b0c83f 100644
--- a/coverage-map.js
+++ b/coverage-map.js
@@ -4,18 +4,6 @@
 export default function map(F) {
   let match;
 
-  // unit/content/...
-
-  match = F.match(/^test\/unit\/content\/(.*)$/);
-  if (match) {
-    const f = match[1];
-
-    match = f.match(/^dependencies\/(.*)\.js$/);
-    if (match) {
-      return `src/content/dependencies/${match[1]}.js`;
-    }
-  }
-
   // unit/data/...
 
   match = F.match(/^test\/unit\/data\/(.*)$/);
@@ -55,17 +43,5 @@ export default function map(F) {
     }
   }
 
-  // snapshot/...
-
-  match = F.match(/^test\/snapshot\/(.*)$/);
-  if (match) {
-    const f = match[1];
-
-    match = f.match(/^(.*)\.js$/);
-    if (match) {
-      return `src/content/dependencies/${match[1]}.js`;
-    }
-  }
-
   return null;
 }
diff --git a/eslint.config.js b/eslint.config.js
index 9d969f57..5041423e 100644
--- a/eslint.config.js
+++ b/eslint.config.js
@@ -55,7 +55,9 @@ export default defineConfig([
       'no-constant-condition': ['off'],
       'no-unsafe-finally': ['off'],
       'no-self-assign': ['off'],
+      'no-useless-assignment': ['off'],
       'require-yield': ['off'],
+      'preserve-caught-error': ['off'],
     },
   },
 
diff --git a/package-lock.json b/package-lock.json
index 7cd27198..c884f9b0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,18 +9,19 @@
             "version": "0.1.0",
             "license": "MIT",
             "dependencies": {
-                "@eslint/js": "9.37.0",
+                "@eslint/js": "10.0.1",
                 "@js-temporal/polyfill": "0.4.4",
-                "chroma-js": "2.4.2",
+                "chokidar": "5.0.0",
+                "chroma-js": "3.2.0",
                 "command-exists": "1.2.9",
                 "compress-json": "3.4.0",
-                "eslint": "9.37.0",
+                "eslint": "10.1.0",
                 "flexsearch": "0.7.43",
                 "image-size": "2.0.2",
-                "js-yaml": "4.1.0",
-                "marked": "16.4.1",
-                "msgpackr": "1.11.1",
-                "rimraf": "5.0.7",
+                "js-yaml": "4.1.1",
+                "marked": "17.0.5",
+                "msgpackr": "1.11.9",
+                "rimraf": "6.1.3",
                 "striptags": "4.0.0-alpha.4",
                 "word-count": "0.3.1",
                 "word-wrap": "1.2.5"
@@ -29,9 +30,7 @@
                 "hsmusic": "src/upd8.js"
             },
             "devDependencies": {
-                "chokidar": "^3.5.3",
-                "tap": "^21.1.1",
-                "tcompare": "^6.0.0"
+                "tap": "21.6.2"
             },
             "engines": {
                 "node": ">= 22.13.0"
@@ -51,19 +50,6 @@
                 "node": ">=14.13.1"
             }
         },
-        "node_modules/@alcalzone/ansi-tokenize/node_modules/ansi-styles": {
-            "version": "6.2.3",
-            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
-            "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": ">=12"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-            }
-        },
         "node_modules/@base2/pretty-print-object": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz",
@@ -124,107 +110,102 @@
             }
         },
         "node_modules/@eslint-community/regexpp": {
-            "version": "4.12.1",
-            "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
-            "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
+            "version": "4.12.2",
+            "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
+            "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
             "license": "MIT",
             "engines": {
                 "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
             }
         },
         "node_modules/@eslint/config-array": {
-            "version": "0.21.0",
-            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz",
-            "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==",
+            "version": "0.23.3",
+            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.3.tgz",
+            "integrity": "sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@eslint/object-schema": "^2.1.6",
+                "@eslint/object-schema": "^3.0.3",
                 "debug": "^4.3.1",
-                "minimatch": "^3.1.2"
+                "minimatch": "^10.2.4"
             },
             "engines": {
-                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                "node": "^20.19.0 || ^22.13.0 || >=24"
             }
         },
         "node_modules/@eslint/config-helpers": {
-            "version": "0.4.0",
-            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.0.tgz",
-            "integrity": "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==",
+            "version": "0.5.3",
+            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.3.tgz",
+            "integrity": "sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@eslint/core": "^0.16.0"
+                "@eslint/core": "^1.1.1"
             },
             "engines": {
-                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                "node": "^20.19.0 || ^22.13.0 || >=24"
             }
         },
         "node_modules/@eslint/core": {
-            "version": "0.16.0",
-            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz",
-            "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==",
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.1.tgz",
+            "integrity": "sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@types/json-schema": "^7.0.15"
             },
             "engines": {
-                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-            }
-        },
-        "node_modules/@eslint/eslintrc": {
-            "version": "3.3.1",
-            "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
-            "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
-            "license": "MIT",
-            "dependencies": {
-                "ajv": "^6.12.4",
-                "debug": "^4.3.2",
-                "espree": "^10.0.1",
-                "globals": "^14.0.0",
-                "ignore": "^5.2.0",
-                "import-fresh": "^3.2.1",
-                "js-yaml": "^4.1.0",
-                "minimatch": "^3.1.2",
-                "strip-json-comments": "^3.1.1"
-            },
-            "engines": {
-                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-            },
-            "funding": {
-                "url": "https://opencollective.com/eslint"
+                "node": "^20.19.0 || ^22.13.0 || >=24"
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.37.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.37.0.tgz",
-            "integrity": "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==",
+            "version": "10.0.1",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz",
+            "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==",
             "license": "MIT",
             "engines": {
-                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                "node": "^20.19.0 || ^22.13.0 || >=24"
             },
             "funding": {
                 "url": "https://eslint.org/donate"
+            },
+            "peerDependencies": {
+                "eslint": "^10.0.0"
+            },
+            "peerDependenciesMeta": {
+                "eslint": {
+                    "optional": true
+                }
             }
         },
         "node_modules/@eslint/object-schema": {
-            "version": "2.1.6",
-            "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz",
-            "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==",
+            "version": "3.0.3",
+            "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.3.tgz",
+            "integrity": "sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==",
             "license": "Apache-2.0",
             "engines": {
-                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                "node": "^20.19.0 || ^22.13.0 || >=24"
             }
         },
         "node_modules/@eslint/plugin-kit": {
-            "version": "0.4.0",
-            "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz",
-            "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==",
+            "version": "0.6.1",
+            "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.1.tgz",
+            "integrity": "sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@eslint/core": "^0.16.0",
+                "@eslint/core": "^1.1.1",
                 "levn": "^0.4.1"
             },
             "engines": {
-                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                "node": "^20.19.0 || ^22.13.0 || >=24"
+            }
+        },
+        "node_modules/@gar/promise-retry": {
+            "version": "1.0.3",
+            "resolved": "https://registry.npmjs.org/@gar/promise-retry/-/promise-retry-1.0.3.tgz",
+            "integrity": "sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA==",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/@humanfs/core": {
@@ -287,68 +268,14 @@
                 "url": "https://github.com/sponsors/nzakas"
             }
         },
-        "node_modules/@isaacs/balanced-match": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
-            "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": "20 || >=22"
-            }
-        },
-        "node_modules/@isaacs/brace-expansion": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
-            "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@isaacs/balanced-match": "^4.0.1"
-            },
-            "engines": {
-                "node": "20 || >=22"
-            }
-        },
         "node_modules/@isaacs/cliui": {
-            "version": "8.0.2",
-            "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
-            "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
-            "dependencies": {
-                "string-width": "^5.1.2",
-                "string-width-cjs": "npm:string-width@^4.2.0",
-                "strip-ansi": "^7.0.1",
-                "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
-                "wrap-ansi": "^8.1.0",
-                "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
-            },
-            "engines": {
-                "node": ">=12"
-            }
-        },
-        "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
-            "version": "6.0.1",
-            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-            "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-            "engines": {
-                "node": ">=12"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-            }
-        },
-        "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
-            "version": "7.1.0",
-            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-            "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-            "dependencies": {
-                "ansi-regex": "^6.0.1"
-            },
+            "version": "9.0.0",
+            "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz",
+            "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==",
+            "dev": true,
+            "license": "BlueOak-1.0.0",
             "engines": {
-                "node": ">=12"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+                "node": ">=18"
             }
         },
         "node_modules/@isaacs/fs-minipass": {
@@ -406,15 +333,38 @@
             }
         },
         "node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/node_modules/diff": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
-            "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+            "version": "4.0.4",
+            "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz",
+            "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==",
             "dev": true,
             "license": "BSD-3-Clause",
             "engines": {
                 "node": ">=0.3.1"
             }
         },
+        "node_modules/@isaacs/which": {
+            "version": "7.0.4",
+            "resolved": "https://registry.npmjs.org/@isaacs/which/-/which-7.0.4.tgz",
+            "integrity": "sha512-qXToWZFY9CKvWsveV3R5VHNJLQkHTIJXO9J4Xa1UgNwVCRA2LEsmvWC84MIdnezFLsjn2Q+GzbL/8yVF1/ozJw==",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "isexe": "^4.0.0"
+            },
+            "engines": {
+                "node": "^20.17.0 || >=22.9.0"
+            }
+        },
+        "node_modules/@isaacs/which/node_modules/isexe": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz",
+            "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==",
+            "dev": true,
+            "license": "BlueOak-1.0.0",
+            "engines": {
+                "node": ">=20"
+            }
+        },
         "node_modules/@istanbuljs/schema": {
             "version": "0.1.3",
             "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
@@ -538,234 +488,199 @@
             ]
         },
         "node_modules/@npmcli/agent": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-3.0.0.tgz",
-            "integrity": "sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==",
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz",
+            "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
                 "agent-base": "^7.1.0",
                 "http-proxy-agent": "^7.0.0",
                 "https-proxy-agent": "^7.0.1",
-                "lru-cache": "^10.0.1",
+                "lru-cache": "^11.2.1",
                 "socks-proxy-agent": "^8.0.3"
             },
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/@npmcli/fs": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz",
-            "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==",
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-5.0.0.tgz",
+            "integrity": "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
                 "semver": "^7.3.5"
             },
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/@npmcli/git": {
-            "version": "7.0.0",
-            "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.0.tgz",
-            "integrity": "sha512-vnz7BVGtOctJAIHouCJdvWBhsTVSICMeUgZo2c7XAi5d5Rrl80S1H7oPym7K03cRuinK5Q6s2dw36+PgXQTcMA==",
+            "version": "7.0.2",
+            "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.2.tgz",
+            "integrity": "sha512-oeolHDjExNAJAnlYP2qzNjMX/Xi9bmu78C9dIGr4xjobrSKbuMYCph8lTzn4vnW3NjIqVmw/f8BCfouqyJXlRg==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
-                "@npmcli/promise-spawn": "^8.0.0",
-                "ini": "^5.0.0",
+                "@gar/promise-retry": "^1.0.0",
+                "@npmcli/promise-spawn": "^9.0.0",
+                "ini": "^6.0.0",
                 "lru-cache": "^11.2.1",
                 "npm-pick-manifest": "^11.0.1",
-                "proc-log": "^5.0.0",
-                "promise-retry": "^2.0.1",
+                "proc-log": "^6.0.0",
                 "semver": "^7.3.5",
-                "which": "^5.0.0"
+                "which": "^6.0.0"
             },
             "engines": {
                 "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/@npmcli/git/node_modules/isexe": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
-            "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
-            "dev": true,
-            "license": "ISC",
-            "engines": {
-                "node": ">=16"
-            }
-        },
-        "node_modules/@npmcli/git/node_modules/lru-cache": {
-            "version": "11.2.2",
-            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
-            "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz",
+            "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==",
             "dev": true,
-            "license": "ISC",
+            "license": "BlueOak-1.0.0",
             "engines": {
-                "node": "20 || >=22"
+                "node": ">=20"
             }
         },
         "node_modules/@npmcli/git/node_modules/which": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
-            "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz",
+            "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
-                "isexe": "^3.1.1"
+                "isexe": "^4.0.0"
             },
             "bin": {
                 "node-which": "bin/which.js"
             },
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/@npmcli/installed-package-contents": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-3.0.0.tgz",
-            "integrity": "sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q==",
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-4.0.0.tgz",
+            "integrity": "sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
-                "npm-bundled": "^4.0.0",
-                "npm-normalize-package-bin": "^4.0.0"
+                "npm-bundled": "^5.0.0",
+                "npm-normalize-package-bin": "^5.0.0"
             },
             "bin": {
                 "installed-package-contents": "bin/index.js"
             },
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/@npmcli/node-gyp": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-4.0.0.tgz",
-            "integrity": "sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA==",
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-5.0.0.tgz",
+            "integrity": "sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==",
             "dev": true,
             "license": "ISC",
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/@npmcli/package-json": {
-            "version": "7.0.1",
-            "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.1.tgz",
-            "integrity": "sha512-956YUeI0YITbk2+KnirCkD19HLzES0habV+Els+dyZaVsaM6VGSiNwnRu6t3CZaqDLz4KXy2zx+0N/Zy6YjlAA==",
+            "version": "7.0.5",
+            "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.5.tgz",
+            "integrity": "sha512-iVuTlG3ORq2iaVa1IWUxAO/jIp77tUKBhoMjuzYW2kL4MLN1bi/ofqkZ7D7OOwh8coAx1/S2ge0rMdGv8sLSOQ==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
                 "@npmcli/git": "^7.0.0",
-                "glob": "^11.0.3",
+                "glob": "^13.0.0",
                 "hosted-git-info": "^9.0.0",
-                "json-parse-even-better-errors": "^4.0.0",
-                "proc-log": "^5.0.0",
+                "json-parse-even-better-errors": "^5.0.0",
+                "proc-log": "^6.0.0",
                 "semver": "^7.5.3",
-                "validate-npm-package-license": "^3.0.4"
+                "spdx-expression-parse": "^4.0.0"
             },
             "engines": {
                 "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/@npmcli/promise-spawn": {
-            "version": "8.0.3",
-            "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-8.0.3.tgz",
-            "integrity": "sha512-Yb00SWaL4F8w+K8YGhQ55+xE4RUNdMHV43WZGsiTM92gS+lC0mGsn7I4hLug7pbao035S6bj3Y3w0cUNGLfmkg==",
+            "version": "9.0.1",
+            "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-9.0.1.tgz",
+            "integrity": "sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
-                "which": "^5.0.0"
+                "which": "^6.0.0"
             },
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/@npmcli/promise-spawn/node_modules/isexe": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
-            "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz",
+            "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==",
             "dev": true,
-            "license": "ISC",
+            "license": "BlueOak-1.0.0",
             "engines": {
-                "node": ">=16"
+                "node": ">=20"
             }
         },
         "node_modules/@npmcli/promise-spawn/node_modules/which": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
-            "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz",
+            "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
-                "isexe": "^3.1.1"
+                "isexe": "^4.0.0"
             },
             "bin": {
                 "node-which": "bin/which.js"
             },
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/@npmcli/redact": {
-            "version": "3.2.2",
-            "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-3.2.2.tgz",
-            "integrity": "sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg==",
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-4.0.0.tgz",
+            "integrity": "sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==",
             "dev": true,
             "license": "ISC",
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/@npmcli/run-script": {
-            "version": "10.0.0",
-            "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.0.tgz",
-            "integrity": "sha512-vaQj4nccJbAslopIvd49pQH2NhUp7G9pY4byUtmwhe37ZZuubGrx0eB9hW2F37uVNRuDDK6byFGXF+7JCuMSZg==",
+            "version": "10.0.4",
+            "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.4.tgz",
+            "integrity": "sha512-mGUWr1uMnf0le2TwfOZY4SFxZGXGfm4Jtay/nwAa2FLNAKXUoUwaGwBMNH36UHPtinWfTSJ3nqFQr0091CxVGg==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
-                "@npmcli/node-gyp": "^4.0.0",
+                "@npmcli/node-gyp": "^5.0.0",
                 "@npmcli/package-json": "^7.0.0",
-                "@npmcli/promise-spawn": "^8.0.0",
-                "node-gyp": "^11.0.0",
-                "proc-log": "^5.0.0",
-                "which": "^5.0.0"
+                "@npmcli/promise-spawn": "^9.0.0",
+                "node-gyp": "^12.1.0",
+                "proc-log": "^6.0.0"
             },
             "engines": {
                 "node": "^20.17.0 || >=22.9.0"
             }
         },
-        "node_modules/@npmcli/run-script/node_modules/isexe": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
-            "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
-            "dev": true,
-            "license": "ISC",
-            "engines": {
-                "node": ">=16"
-            }
-        },
-        "node_modules/@npmcli/run-script/node_modules/which": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
-            "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "isexe": "^3.1.1"
-            },
-            "bin": {
-                "node-which": "bin/which.js"
-            },
-            "engines": {
-                "node": "^18.17.0 || >=20.5.0"
-            }
-        },
         "node_modules/@pkgjs/parseargs": {
             "version": "0.11.0",
             "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
             "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+            "dev": true,
+            "license": "MIT",
             "optional": true,
             "engines": {
                 "node": ">=14"
@@ -785,9 +700,9 @@
             }
         },
         "node_modules/@sigstore/core": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.0.0.tgz",
-            "integrity": "sha512-NgbJ+aW9gQl/25+GIEGYcCyi8M+ng2/5X04BMuIgoDfgvp18vDcoNHOQjQsG9418HGNYRxG3vfEXaR1ayD37gg==",
+            "version": "3.2.0",
+            "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.2.0.tgz",
+            "integrity": "sha512-kxHrDQ9YgfrWUSXU0cjsQGv8JykOFZQ9ErNKbFPWzk3Hgpwu8x2hHrQ9IdA8yl+j9RTLTC3sAF3Tdq1IQCP4oA==",
             "dev": true,
             "license": "Apache-2.0",
             "engines": {
@@ -805,96 +720,46 @@
             }
         },
         "node_modules/@sigstore/sign": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.0.1.tgz",
-            "integrity": "sha512-KFNGy01gx9Y3IBPG/CergxR9RZpN43N+lt3EozEfeoyqm8vEiLxwRl3ZO5sPx3Obv1ix/p7FWOlPc2Jgwfp9PA==",
+            "version": "4.1.1",
+            "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.1.1.tgz",
+            "integrity": "sha512-Hf4xglukg0XXQ2RiD5vSoLjdPe8OBUPA8XeVjUObheuDcWdYWrnH/BNmxZCzkAy68MzmNCxXLeurJvs6hcP2OQ==",
             "dev": true,
             "license": "Apache-2.0",
             "dependencies": {
+                "@gar/promise-retry": "^1.0.2",
                 "@sigstore/bundle": "^4.0.0",
-                "@sigstore/core": "^3.0.0",
+                "@sigstore/core": "^3.2.0",
                 "@sigstore/protobuf-specs": "^0.5.0",
-                "make-fetch-happen": "^15.0.2",
-                "proc-log": "^5.0.0",
-                "promise-retry": "^2.0.1"
-            },
-            "engines": {
-                "node": "^20.17.0 || >=22.9.0"
-            }
-        },
-        "node_modules/@sigstore/sign/node_modules/@npmcli/agent": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz",
-            "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "agent-base": "^7.1.0",
-                "http-proxy-agent": "^7.0.0",
-                "https-proxy-agent": "^7.0.1",
-                "lru-cache": "^11.2.1",
-                "socks-proxy-agent": "^8.0.3"
-            },
-            "engines": {
-                "node": "^20.17.0 || >=22.9.0"
-            }
-        },
-        "node_modules/@sigstore/sign/node_modules/lru-cache": {
-            "version": "11.2.2",
-            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
-            "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
-            "dev": true,
-            "license": "ISC",
-            "engines": {
-                "node": "20 || >=22"
-            }
-        },
-        "node_modules/@sigstore/sign/node_modules/make-fetch-happen": {
-            "version": "15.0.2",
-            "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.2.tgz",
-            "integrity": "sha512-sI1NY4lWlXBAfjmCtVWIIpBypbBdhHtcjnwnv+gtCnsaOffyFil3aidszGC8hgzJe+fT1qix05sWxmD/Bmf/oQ==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "@npmcli/agent": "^4.0.0",
-                "cacache": "^20.0.1",
-                "http-cache-semantics": "^4.1.1",
-                "minipass": "^7.0.2",
-                "minipass-fetch": "^4.0.0",
-                "minipass-flush": "^1.0.5",
-                "minipass-pipeline": "^1.2.4",
-                "negotiator": "^1.0.0",
-                "proc-log": "^5.0.0",
-                "promise-retry": "^2.0.1",
-                "ssri": "^12.0.0"
+                "make-fetch-happen": "^15.0.4",
+                "proc-log": "^6.1.0"
             },
             "engines": {
                 "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/@sigstore/tuf": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.0.tgz",
-            "integrity": "sha512-0QFuWDHOQmz7t66gfpfNO6aEjoFrdhkJaej/AOqb4kqWZVbPWFZifXZzkxyQBB1OwTbkhdT3LNpMFxwkTvf+2w==",
+            "version": "4.0.2",
+            "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.2.tgz",
+            "integrity": "sha512-TCAzTy0xzdP79EnxSjq9KQ3eaR7+FmudLC6eRKknVKZbV7ZNlGLClAAQb/HMNJ5n2OBNk2GT1tEmU0xuPr+SLQ==",
             "dev": true,
             "license": "Apache-2.0",
             "dependencies": {
                 "@sigstore/protobuf-specs": "^0.5.0",
-                "tuf-js": "^4.0.0"
+                "tuf-js": "^4.1.0"
             },
             "engines": {
                 "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/@sigstore/verify": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-3.0.0.tgz",
-            "integrity": "sha512-moXtHH33AobOhTZF8xcX1MpOFqdvfCk7v6+teJL8zymBiDXwEsQH6XG9HGx2VIxnJZNm4cNSzflTLDnQLmIdmw==",
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-3.1.0.tgz",
+            "integrity": "sha512-mNe0Iigql08YupSOGv197YdHpPPr+EzDZmfCgMc7RPNaZTw5aLN01nBl6CHJOh3BGtnMIj83EeN4butBchc8Ag==",
             "dev": true,
             "license": "Apache-2.0",
             "dependencies": {
                 "@sigstore/bundle": "^4.0.0",
-                "@sigstore/core": "^3.0.0",
+                "@sigstore/core": "^3.1.0",
                 "@sigstore/protobuf-specs": "^0.5.0"
             },
             "engines": {
@@ -902,9 +767,9 @@
             }
         },
         "node_modules/@tapjs/after": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/after/-/after-3.0.2.tgz",
-            "integrity": "sha512-Xb0bqJWXfp6VVSx1T96lNJM67v2XxJCG3o7mH77weB+RzwAuf0uzGYy/hxP+nUAWh9yH+lHzuHclL+DR8Zlu3Q==",
+            "version": "3.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/after/-/after-3.3.4.tgz",
+            "integrity": "sha512-Y8DL0F9Ux6Swe7b5g4qLFgJUEFrVr5fhmVOENw4D/x7rDRyx/3c86Ya1p9iJrpkE2RnvdGq9AxR/rTM137Y7Lg==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
@@ -914,13 +779,13 @@
                 "node": "20 || >=22"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2"
+                "@tapjs/core": "4.5.2"
             }
         },
         "node_modules/@tapjs/after-each": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/after-each/-/after-each-4.0.2.tgz",
-            "integrity": "sha512-OQEENy55qtJ7WaMnIQvf0YaV4/YjI2B9+ezn679Vrptg/xMbaG5fSJz/Z5BFroh05HiWRo+MGu66q7Lb00kDJg==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/after-each/-/after-each-4.3.4.tgz",
+            "integrity": "sha512-TM1OWz7Ht3aimbT/MLYnoywI9SBGsTus6TQ+94n1yjr1izO3K21PP5Q9UYdqZ2Qq1WiZmGa+CZKUZANUn1ZcvQ==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
@@ -930,19 +795,19 @@
                 "node": "20 || >=22"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2"
+                "@tapjs/core": "4.5.2"
             }
         },
         "node_modules/@tapjs/asserts": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/asserts/-/asserts-4.0.2.tgz",
-            "integrity": "sha512-XeAYvYMu61/Gc9Dpn+0QZCjUTbbQE7DckiZNhQNMuMwAXUDEZR/TbxJNysIdMWq2ag75TQQ6ylCUJovy7HPDlg==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/asserts/-/asserts-4.3.4.tgz",
+            "integrity": "sha512-1kf2q0oQ7LCZKy5l4Oe7/ZVijhJ9YxbS4qmqGtj7cYwOw4Q78KNLwthh14c9EBbI2QHKUDS2LaLM8a1qMLmPiA==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
-                "@tapjs/stack": "4.0.1",
+                "@tapjs/stack": "4.3.0",
                 "is-actual-promise": "^1.0.1",
-                "tcompare": "9.0.1",
+                "tcompare": "9.3.0",
                 "trivial-deferred": "^2.0.0"
             },
             "engines": {
@@ -952,13 +817,13 @@
                 "url": "https://github.com/sponsors/isaacs"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2"
+                "@tapjs/core": "4.5.2"
             }
         },
         "node_modules/@tapjs/asserts/node_modules/diff": {
-            "version": "8.0.2",
-            "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz",
-            "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==",
+            "version": "8.0.4",
+            "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz",
+            "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==",
             "dev": true,
             "license": "BSD-3-Clause",
             "engines": {
@@ -966,9 +831,9 @@
             }
         },
         "node_modules/@tapjs/asserts/node_modules/tcompare": {
-            "version": "9.0.1",
-            "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.0.1.tgz",
-            "integrity": "sha512-P9i7K3RnKWb3mH0AmDCChVd7FP0LEo4VSBJMhjKB+Rg+Tvq09ytnys8ygsx5ve1di2fI4IW+HhjhIXoeiRVogw==",
+            "version": "9.3.0",
+            "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.3.0.tgz",
+            "integrity": "sha512-6kFTU2xlXNFU88/DAAIQvjBu5znTGx8QPnFtaKiLin2OtspHXyevSu0iUTZt4UrSfuRC6fIahRCqaQIhXlsTVQ==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
@@ -980,9 +845,9 @@
             }
         },
         "node_modules/@tapjs/before": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/before/-/before-4.0.2.tgz",
-            "integrity": "sha512-ODi0rXOqCWZLS1j6fJ2iyqaXy6B/y75x8Y940hRAe0DfPPf48IgZY84+GfWWVIkRqmbYZS/F0rwcegPHxI/xHg==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/before/-/before-4.3.4.tgz",
+            "integrity": "sha512-53n/8/RktPkbCuZveDTYiplbrzWjFkYAnmYCrFixESsFoUrkfTCPjeCRmojBS14zuRdVe4kLsX6XWYkaUpLdZA==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
@@ -992,13 +857,13 @@
                 "node": "20 || >=22"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2"
+                "@tapjs/core": "4.5.2"
             }
         },
         "node_modules/@tapjs/before-each": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/before-each/-/before-each-4.0.2.tgz",
-            "integrity": "sha512-CXNWJ/pvqu3DwNjgnOX9zfmxYz7OvxQ4w7X/1uyFUblWarYYOUqtLsF/FrBHn3rqOowNtP5KJAzY9Wx5UT3r+g==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/before-each/-/before-each-4.3.4.tgz",
+            "integrity": "sha512-WkLsDvCjBrxrRkyhEBpfmGObUsf8Eb+tsqlxnGUG67XbPMkwkP/AoUPonc/g1Nv+pwtR+t5j6maNblrubWuG3A==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
@@ -1008,35 +873,35 @@
                 "node": "20 || >=22"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2"
+                "@tapjs/core": "4.5.2"
             }
         },
         "node_modules/@tapjs/chdir": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/chdir/-/chdir-3.0.2.tgz",
-            "integrity": "sha512-KYDxkkzGeEhAT33VDWqIx8FRLk+cOzVsj/E0JBRd45n18EHT7C/wE/Nqhu+843nVhABp/c5BZMb+Rib/fCQV1g==",
+            "version": "3.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/chdir/-/chdir-3.3.4.tgz",
+            "integrity": "sha512-B37eGrs47xseJ7dm9ikhStX7KNqflvZViT2lMqVACeNvoxSpRgy1pu7cPix4wKvBlZCtNYaOD8iDNm+5nDfvSQ==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "engines": {
                 "node": "20 || >=22"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2"
+                "@tapjs/core": "4.5.2"
             }
         },
         "node_modules/@tapjs/config": {
-            "version": "5.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/config/-/config-5.0.2.tgz",
-            "integrity": "sha512-VfvYwcRGC3fbBAuRZs8VheA4YTa1CaJlYonHM2YM1Uu+UGeLCmvxJjIOBauhtp+F/QczUsJxqOjDy9z9ny1UYQ==",
+            "version": "5.5.2",
+            "resolved": "https://registry.npmjs.org/@tapjs/config/-/config-5.5.2.tgz",
+            "integrity": "sha512-GQyKl40fGamoSvT4SsfQfZyaHT8fboNW5OhrA1hhMc34di5j/efiD15VlNVbPGE51BZSs5M3Jw7YukF2/Cg8CA==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
-                "@tapjs/core": "4.0.2",
-                "@tapjs/test": "4.0.2",
+                "@tapjs/core": "4.5.2",
+                "@tapjs/test": "4.4.2",
                 "chalk": "^5.6.2",
-                "jackspeak": "^4.0.1",
+                "jackspeak": "^4.2.3",
                 "polite-json": "^5.0.0",
-                "tap-yaml": "4.0.1",
+                "tap-yaml": "4.3.0",
                 "walk-up-path": "^4.0.0"
             },
             "engines": {
@@ -1046,57 +911,28 @@
                 "url": "https://github.com/sponsors/isaacs"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2",
-                "@tapjs/test": "4.0.2"
-            }
-        },
-        "node_modules/@tapjs/config/node_modules/chalk": {
-            "version": "5.6.2",
-            "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
-            "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": "^12.17.0 || ^14.13 || >=16.0.0"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/chalk?sponsor=1"
-            }
-        },
-        "node_modules/@tapjs/config/node_modules/jackspeak": {
-            "version": "4.1.1",
-            "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz",
-            "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==",
-            "dev": true,
-            "license": "BlueOak-1.0.0",
-            "dependencies": {
-                "@isaacs/cliui": "^8.0.2"
-            },
-            "engines": {
-                "node": "20 || >=22"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
+                "@tapjs/core": "4.5.2",
+                "@tapjs/test": "4.4.2"
             }
         },
         "node_modules/@tapjs/core": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/core/-/core-4.0.2.tgz",
-            "integrity": "sha512-kzM90qsqHAJOTUMVjB3G26c3Ka4/HFg253lSt3pxBFesIHneIZe6Fre1NEWnHZPLmmzBO6HRRffc9zDxXcaeRw==",
+            "version": "4.5.2",
+            "resolved": "https://registry.npmjs.org/@tapjs/core/-/core-4.5.2.tgz",
+            "integrity": "sha512-0KKabYyBN4W2CRgnD0rOhDvexbMLMPuT0OElQTz5ezCsx1QGtuUHP9TmRXEGCJAoeL44Us0L2DxPpS4BUW1KEQ==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
-                "@tapjs/processinfo": "^3.1.8",
-                "@tapjs/stack": "4.0.1",
-                "@tapjs/test": "4.0.2",
+                "@tapjs/processinfo": "^3.1.9",
+                "@tapjs/stack": "4.3.0",
+                "@tapjs/test": "4.4.2",
                 "async-hook-domain": "^4.0.1",
                 "diff": "^8.0.2",
                 "is-actual-promise": "^1.0.1",
                 "minipass": "^7.0.4",
                 "signal-exit": "4.1",
-                "tap-parser": "18.0.1",
-                "tap-yaml": "4.0.1",
-                "tcompare": "9.0.1",
+                "tap-parser": "18.3.0",
+                "tap-yaml": "4.3.0",
+                "tcompare": "9.3.0",
                 "trivial-deferred": "^2.0.0"
             },
             "engines": {
@@ -1104,9 +940,9 @@
             }
         },
         "node_modules/@tapjs/core/node_modules/diff": {
-            "version": "8.0.2",
-            "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz",
-            "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==",
+            "version": "8.0.4",
+            "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz",
+            "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==",
             "dev": true,
             "license": "BSD-3-Clause",
             "engines": {
@@ -1114,9 +950,9 @@
             }
         },
         "node_modules/@tapjs/core/node_modules/tcompare": {
-            "version": "9.0.1",
-            "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.0.1.tgz",
-            "integrity": "sha512-P9i7K3RnKWb3mH0AmDCChVd7FP0LEo4VSBJMhjKB+Rg+Tvq09ytnys8ygsx5ve1di2fI4IW+HhjhIXoeiRVogw==",
+            "version": "9.3.0",
+            "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.3.0.tgz",
+            "integrity": "sha512-6kFTU2xlXNFU88/DAAIQvjBu5znTGx8QPnFtaKiLin2OtspHXyevSu0iUTZt4UrSfuRC6fIahRCqaQIhXlsTVQ==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
@@ -1128,9 +964,9 @@
             }
         },
         "node_modules/@tapjs/error-serdes": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/@tapjs/error-serdes/-/error-serdes-4.0.1.tgz",
-            "integrity": "sha512-8GiOXbgGIRBcSGnPXYuiboy0xJQDMP2OcILnghHX/jzJKi2l9mxX6FTonOWj/0qsf5Ji5Z4/DIKRcYINIxaejg==",
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/@tapjs/error-serdes/-/error-serdes-4.3.0.tgz",
+            "integrity": "sha512-qP266uvPm2G95ClPFpqAN6n4nicLbHrZYbZWl0UO+biOdmvjSSuxeY5f7YFygTl+UuzlyxjlRgHTq8qifnqTcw==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
@@ -1144,9 +980,9 @@
             }
         },
         "node_modules/@tapjs/filter": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/filter/-/filter-4.0.2.tgz",
-            "integrity": "sha512-Pfi1u1naoUL4G4AoJOUEUQauaZeF4gGk8MZ8It2ht60gopYsxy9sSmIKlKPvZm13f110pZxJfO+hogappAmDfw==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/filter/-/filter-4.3.4.tgz",
+            "integrity": "sha512-Bpbahk/Bv30ZfGoDpZVjGhvg8Cq2yqCZcawd+4qtTTSDY+V7GEpdJGu2/2EvwXP+s4PklPx2kFry8X9m6OtAog==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "engines": {
@@ -1156,13 +992,13 @@
                 "url": "https://github.com/sponsors/isaacs"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2"
+                "@tapjs/core": "4.5.2"
             }
         },
         "node_modules/@tapjs/fixture": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/fixture/-/fixture-4.0.2.tgz",
-            "integrity": "sha512-h161PA9ngT3zG6iLybAUlrSWx31OFx7Av1aR4FHvui9IkseXaF0x6gxS0MMaXwdyRYrD7lFvmU7SRTDlvvdeBA==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/fixture/-/fixture-4.3.4.tgz",
+            "integrity": "sha512-zRv1vD2H/2abt0S5Yr5ICV/ZaIqXmusBZ6H4Qbih9oE2jvbs6AVDz5Td0adZbWurtHrPLuOFTIz2UsbJfhCCcw==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
@@ -1176,56 +1012,36 @@
                 "url": "https://github.com/sponsors/isaacs"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2"
-            }
-        },
-        "node_modules/@tapjs/fixture/node_modules/rimraf": {
-            "version": "6.0.1",
-            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz",
-            "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "glob": "^11.0.0",
-                "package-json-from-dist": "^1.0.0"
-            },
-            "bin": {
-                "rimraf": "dist/esm/bin.mjs"
-            },
-            "engines": {
-                "node": "20 || >=22"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
+                "@tapjs/core": "4.5.2"
             }
         },
         "node_modules/@tapjs/intercept": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/intercept/-/intercept-4.0.2.tgz",
-            "integrity": "sha512-rlZcO/Yf9vU8ypfQEO0c/QUCcGCr0IMJltg53805ILuNhTDR7x0vlJSvJ7fLsuoezkUwXlWdlED6ZqIID7RokA==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/intercept/-/intercept-4.3.4.tgz",
+            "integrity": "sha512-7ifEMPmp4yKHQ7PqdPwCetipFLvCegbIyKigEDds/p03ZNFJjgF06D9T4vc/m0sA5SKkPrHVTOU0UzaSrliP7w==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
-                "@tapjs/after": "3.0.2",
-                "@tapjs/stack": "4.0.1"
+                "@tapjs/after": "3.3.4",
+                "@tapjs/stack": "4.3.0"
             },
             "engines": {
                 "node": "20 || >=22"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2"
+                "@tapjs/core": "4.5.2"
             }
         },
         "node_modules/@tapjs/mock": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/mock/-/mock-4.0.2.tgz",
-            "integrity": "sha512-48o3xz3Xl83Ei25KOR5aWytbCYUl33GQAoQm4khFpTyI/v3fjyR9jDgFLAT7IWix8tRrrkMf+PynmZkWVQ4oKA==",
+            "version": "4.4.2",
+            "resolved": "https://registry.npmjs.org/@tapjs/mock/-/mock-4.4.2.tgz",
+            "integrity": "sha512-B6SfNWjWCPvjN9CaHe45lEcl2ZFDkQIUoF5jPthwi2mYxHLfyFFEqorZJhguoTs7ToeXvIqquqE/Luk9IeuKBQ==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
-                "@tapjs/after": "3.0.2",
-                "@tapjs/stack": "4.0.1",
-                "resolve-import": "^2.0.0",
+                "@tapjs/after": "3.3.4",
+                "@tapjs/stack": "4.3.0",
+                "resolve-import": "^2.4.0",
                 "walk-up-path": "^4.0.0"
             },
             "engines": {
@@ -1235,19 +1051,19 @@
                 "url": "https://github.com/sponsors/isaacs"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2"
+                "@tapjs/core": "4.5.2"
             }
         },
         "node_modules/@tapjs/node-serialize": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/node-serialize/-/node-serialize-4.0.2.tgz",
-            "integrity": "sha512-oparVnZqbwF7O7IQn4nfpnsddtmlkWPB033uzZbvSW6v0U6T8DBENgKAfzJ2sNQH3f2Xaa3dqK+N5brwQa3P2g==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/node-serialize/-/node-serialize-4.3.4.tgz",
+            "integrity": "sha512-SECDvjBS7NVCiCZ6vEtMwtxxSuR61NHBva+PlIQ1mU0asoTYxV9lpRNEAb9UHFKpquEDlk+bLg2iN01a2nfMuw==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
-                "@tapjs/error-serdes": "4.0.1",
-                "@tapjs/stack": "4.0.1",
-                "tap-parser": "18.0.1"
+                "@tapjs/error-serdes": "4.3.0",
+                "@tapjs/stack": "4.3.0",
+                "tap-parser": "18.3.0"
             },
             "engines": {
                 "node": "20 || >=22"
@@ -1256,16 +1072,17 @@
                 "url": "https://github.com/sponsors/isaacs"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2"
+                "@tapjs/core": "4.5.2"
             }
         },
         "node_modules/@tapjs/processinfo": {
-            "version": "3.1.8",
-            "resolved": "https://registry.npmjs.org/@tapjs/processinfo/-/processinfo-3.1.8.tgz",
-            "integrity": "sha512-FIriEB+qqArPhmVYc1PZwRHD99myRdl7C9Oe/uts04Q2LOxQ5MEmqP9XOP8vVYzpDOYwmL8OmL6eOYt9eZlQKQ==",
+            "version": "3.1.9",
+            "resolved": "https://registry.npmjs.org/@tapjs/processinfo/-/processinfo-3.1.9.tgz",
+            "integrity": "sha512-yIbYH9ROI5m5F2B5Hpk6t89OkHBrDbL3qncPO9OfPuSvJsvAIDG91I0hxGQNohdaxmqz5L4QiIYc5Y0KmtLzCQ==",
             "dev": true,
-            "license": "ISC",
+            "license": "BlueOak-1.0.0",
             "dependencies": {
+                "node-options-to-argv": "^1.0.0",
                 "pirates": "^4.0.5",
                 "process-on-spawn": "^1.0.0",
                 "signal-exit": "^4.0.2",
@@ -1276,14 +1093,14 @@
             }
         },
         "node_modules/@tapjs/reporter": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/@tapjs/reporter/-/reporter-4.0.3.tgz",
-            "integrity": "sha512-Mdx3+C3f4q3llawja5V2RVIfFzr1KhEm57i9xUJTgM5kHcPjrMw14aQUCwYxLSYSd5esOubnnV5lD9rxQb+tyQ==",
+            "version": "4.4.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/reporter/-/reporter-4.4.4.tgz",
+            "integrity": "sha512-svWmpJgMQxe4iiKOVr/Hi5kGHJNBDp2Nr8gD0aQuAQ4fp9gOh2LFQXa2Jv7LBKhMjC7UaiW/X7k1qEVk2nOfvg==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
-                "@tapjs/config": "5.0.2",
-                "@tapjs/stack": "4.0.1",
+                "@tapjs/config": "5.5.2",
+                "@tapjs/stack": "4.3.0",
                 "chalk": "^5.6.2",
                 "ink": "^5.2.1",
                 "minipass": "^7.0.4",
@@ -1292,9 +1109,9 @@
                 "prismjs-terminal": "^1.2.3",
                 "react": "^18.2.0",
                 "string-length": "^6.0.0",
-                "tap-parser": "18.0.1",
-                "tap-yaml": "4.0.1",
-                "tcompare": "9.0.1"
+                "tap-parser": "18.3.0",
+                "tap-yaml": "4.3.0",
+                "tcompare": "9.3.0"
             },
             "engines": {
                 "node": "20 || >=22"
@@ -1303,26 +1120,13 @@
                 "url": "https://github.com/sponsors/isaacs"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2"
-            }
-        },
-        "node_modules/@tapjs/reporter/node_modules/chalk": {
-            "version": "5.6.2",
-            "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
-            "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": "^12.17.0 || ^14.13 || >=16.0.0"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/chalk?sponsor=1"
+                "@tapjs/core": "4.5.2"
             }
         },
         "node_modules/@tapjs/reporter/node_modules/diff": {
-            "version": "8.0.2",
-            "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz",
-            "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==",
+            "version": "8.0.4",
+            "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz",
+            "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==",
             "dev": true,
             "license": "BSD-3-Clause",
             "engines": {
@@ -1330,9 +1134,9 @@
             }
         },
         "node_modules/@tapjs/reporter/node_modules/tcompare": {
-            "version": "9.0.1",
-            "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.0.1.tgz",
-            "integrity": "sha512-P9i7K3RnKWb3mH0AmDCChVd7FP0LEo4VSBJMhjKB+Rg+Tvq09ytnys8ygsx5ve1di2fI4IW+HhjhIXoeiRVogw==",
+            "version": "9.3.0",
+            "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.3.0.tgz",
+            "integrity": "sha512-6kFTU2xlXNFU88/DAAIQvjBu5znTGx8QPnFtaKiLin2OtspHXyevSu0iUTZt4UrSfuRC6fIahRCqaQIhXlsTVQ==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
@@ -1344,39 +1148,40 @@
             }
         },
         "node_modules/@tapjs/run": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/@tapjs/run/-/run-4.0.3.tgz",
-            "integrity": "sha512-kkoMk5OJPgxigZZwu47ix2Zo8U64t8YiFiz+Iec5HrSW1BNgQyhurfMbc8uGjBHh3OhvJBaWhWuzctn0ROJrEQ==",
+            "version": "4.5.2",
+            "resolved": "https://registry.npmjs.org/@tapjs/run/-/run-4.5.2.tgz",
+            "integrity": "sha512-Oq5YZvoGxEohRWK8P1wHPIAnudEOHPd/bIWawFtRn0ZGvF7bRduZlHpf4eEIrRHKY84G/I3fmC354604cejxiQ==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
-                "@tapjs/after": "3.0.2",
-                "@tapjs/before": "4.0.2",
-                "@tapjs/config": "5.0.2",
-                "@tapjs/processinfo": "^3.1.8",
-                "@tapjs/reporter": "4.0.3",
-                "@tapjs/spawn": "4.0.2",
-                "@tapjs/stdin": "4.0.2",
-                "@tapjs/test": "4.0.2",
+                "@isaacs/which": "^7.0.4",
+                "@tapjs/after": "3.3.4",
+                "@tapjs/before": "4.3.4",
+                "@tapjs/config": "5.5.2",
+                "@tapjs/processinfo": "^3.1.9",
+                "@tapjs/reporter": "4.4.4",
+                "@tapjs/spawn": "4.3.4",
+                "@tapjs/stdin": "4.3.4",
+                "@tapjs/test": "4.4.2",
                 "c8": "^10.1.3",
                 "chalk": "^5.6.2",
                 "chokidar": "^4.0.2",
-                "foreground-child": "^3.1.1",
-                "glob": "^11.0.0",
+                "foreground-child": "^4.0.0",
+                "glob": "^13.0.2",
                 "minipass": "^7.0.4",
                 "mkdirp": "^3.0.1",
+                "node-options-to-argv": "^1.0.0",
                 "opener": "^1.5.2",
-                "pacote": "^21.0.3",
+                "pacote": "^21.0.4",
                 "path-scurry": "^2.0.0",
-                "resolve-import": "^2.0.0",
+                "resolve-import": "^2.4.0",
                 "rimraf": "^6.0.0",
                 "semver": "^7.7.2",
                 "signal-exit": "^4.1.0",
-                "tap-parser": "18.0.1",
-                "tap-yaml": "4.0.1",
-                "tcompare": "9.0.1",
-                "trivial-deferred": "^2.0.0",
-                "which": "^5.0.0"
+                "tap-parser": "18.3.0",
+                "tap-yaml": "4.3.0",
+                "tcompare": "9.3.0",
+                "trivial-deferred": "^2.0.0"
             },
             "bin": {
                 "tap-run": "dist/esm/index.js"
@@ -1388,20 +1193,7 @@
                 "url": "https://github.com/sponsors/isaacs"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2"
-            }
-        },
-        "node_modules/@tapjs/run/node_modules/chalk": {
-            "version": "5.6.2",
-            "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
-            "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": "^12.17.0 || ^14.13 || >=16.0.0"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/chalk?sponsor=1"
+                "@tapjs/core": "4.5.2"
             }
         },
         "node_modules/@tapjs/run/node_modules/chokidar": {
@@ -1421,52 +1213,15 @@
             }
         },
         "node_modules/@tapjs/run/node_modules/diff": {
-            "version": "8.0.2",
-            "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz",
-            "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==",
+            "version": "8.0.4",
+            "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz",
+            "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==",
             "dev": true,
             "license": "BSD-3-Clause",
             "engines": {
                 "node": ">=0.3.1"
             }
         },
-        "node_modules/@tapjs/run/node_modules/isexe": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
-            "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
-            "dev": true,
-            "license": "ISC",
-            "engines": {
-                "node": ">=16"
-            }
-        },
-        "node_modules/@tapjs/run/node_modules/lru-cache": {
-            "version": "11.2.2",
-            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
-            "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
-            "dev": true,
-            "license": "ISC",
-            "engines": {
-                "node": "20 || >=22"
-            }
-        },
-        "node_modules/@tapjs/run/node_modules/path-scurry": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz",
-            "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==",
-            "dev": true,
-            "license": "BlueOak-1.0.0",
-            "dependencies": {
-                "lru-cache": "^11.0.0",
-                "minipass": "^7.1.2"
-            },
-            "engines": {
-                "node": "20 || >=22"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
-            }
-        },
         "node_modules/@tapjs/run/node_modules/readdirp": {
             "version": "4.1.2",
             "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
@@ -1481,30 +1236,10 @@
                 "url": "https://paulmillr.com/funding/"
             }
         },
-        "node_modules/@tapjs/run/node_modules/rimraf": {
-            "version": "6.0.1",
-            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz",
-            "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "glob": "^11.0.0",
-                "package-json-from-dist": "^1.0.0"
-            },
-            "bin": {
-                "rimraf": "dist/esm/bin.mjs"
-            },
-            "engines": {
-                "node": "20 || >=22"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
-            }
-        },
         "node_modules/@tapjs/run/node_modules/tcompare": {
-            "version": "9.0.1",
-            "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.0.1.tgz",
-            "integrity": "sha512-P9i7K3RnKWb3mH0AmDCChVd7FP0LEo4VSBJMhjKB+Rg+Tvq09ytnys8ygsx5ve1di2fI4IW+HhjhIXoeiRVogw==",
+            "version": "9.3.0",
+            "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.3.0.tgz",
+            "integrity": "sha512-6kFTU2xlXNFU88/DAAIQvjBu5znTGx8QPnFtaKiLin2OtspHXyevSu0iUTZt4UrSfuRC6fIahRCqaQIhXlsTVQ==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
@@ -1515,31 +1250,15 @@
                 "node": "20 || >=22"
             }
         },
-        "node_modules/@tapjs/run/node_modules/which": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
-            "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "isexe": "^3.1.1"
-            },
-            "bin": {
-                "node-which": "bin/which.js"
-            },
-            "engines": {
-                "node": "^18.17.0 || >=20.5.0"
-            }
-        },
         "node_modules/@tapjs/snapshot": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/snapshot/-/snapshot-4.0.2.tgz",
-            "integrity": "sha512-PWlWNEH+4x0oN8nemk+2rk3jub2L/7c6A383SD15GadGOT4hYvckqY2mCZarMAoV5xErFZOglGTD9do83TWMPQ==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/snapshot/-/snapshot-4.3.4.tgz",
+            "integrity": "sha512-2sJXaGLJUMakkdJd5iDWRucgyHX7f5eP05m4weqWq9dLzX7p1JFOrWXUwns8RCIY7VX9Vx+4jENlxJOywYjyqg==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
                 "is-actual-promise": "^1.0.1",
-                "tcompare": "9.0.1",
+                "tcompare": "9.3.0",
                 "trivial-deferred": "^2.0.0"
             },
             "engines": {
@@ -1549,13 +1268,13 @@
                 "url": "https://github.com/sponsors/isaacs"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2"
+                "@tapjs/core": "4.5.2"
             }
         },
         "node_modules/@tapjs/snapshot/node_modules/diff": {
-            "version": "8.0.2",
-            "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz",
-            "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==",
+            "version": "8.0.4",
+            "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz",
+            "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==",
             "dev": true,
             "license": "BSD-3-Clause",
             "engines": {
@@ -1563,9 +1282,9 @@
             }
         },
         "node_modules/@tapjs/snapshot/node_modules/tcompare": {
-            "version": "9.0.1",
-            "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.0.1.tgz",
-            "integrity": "sha512-P9i7K3RnKWb3mH0AmDCChVd7FP0LEo4VSBJMhjKB+Rg+Tvq09ytnys8ygsx5ve1di2fI4IW+HhjhIXoeiRVogw==",
+            "version": "9.3.0",
+            "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.3.0.tgz",
+            "integrity": "sha512-6kFTU2xlXNFU88/DAAIQvjBu5znTGx8QPnFtaKiLin2OtspHXyevSu0iUTZt4UrSfuRC6fIahRCqaQIhXlsTVQ==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
@@ -1577,22 +1296,22 @@
             }
         },
         "node_modules/@tapjs/spawn": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/spawn/-/spawn-4.0.2.tgz",
-            "integrity": "sha512-CNOrZFXh+mm2iul/cGRgVA4HMv9GxmtbgQSICMjRrj8VLDzMboW862P+wEvfYrHeXdCGAGWKqTIcsX5pXQVQRA==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/spawn/-/spawn-4.3.4.tgz",
+            "integrity": "sha512-qQY2SSLkXknpL1kndLS1bCPo9vYKV8Ka93UPIllvDEwaY3oUMghh++EOE4dyUxQPgMFpmoUoj8kSbm2hotevbQ==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "engines": {
                 "node": "20 || >=22"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2"
+                "@tapjs/core": "4.5.2"
             }
         },
         "node_modules/@tapjs/stack": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/@tapjs/stack/-/stack-4.0.1.tgz",
-            "integrity": "sha512-Rbyz4XMuZWNxCs+/j0c5idFz4MKBo7uSaNvk6R7Al9jQJzk7Lv0WC2lWW0CV+7t/TUynTFxEwAaY5pIM752WQg==",
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/@tapjs/stack/-/stack-4.3.0.tgz",
+            "integrity": "sha512-SFASe4YaVBzMr/FXTm/QsSzbzXZOmgDNpmY3EU0JNiDCN4izHMUnoXY+Kh0EY35hx9C4JDvRjgv2MSIM7bBygg==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "engines": {
@@ -1603,51 +1322,51 @@
             }
         },
         "node_modules/@tapjs/stdin": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/stdin/-/stdin-4.0.2.tgz",
-            "integrity": "sha512-6e/jQ0I9G6DC9m6Yj3jC6sNAmiwvrPVni3iMpJn3GICs0dROyx1m9wnMBK5wgKNgN2AXfvEOtf5Cby124eHeJQ==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/stdin/-/stdin-4.3.4.tgz",
+            "integrity": "sha512-0kFeaPEGwNWx8R0z9Uq93/CNhAg+9NbTPZW+GXsjuHQSG125g7VZBNBAg2IMeQmVQ9bUWa3+f5TNp/JnLVvJmg==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "engines": {
                 "node": "20 || >=22"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2"
+                "@tapjs/core": "4.5.2"
             }
         },
         "node_modules/@tapjs/test": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/test/-/test-4.0.2.tgz",
-            "integrity": "sha512-J8WOSesfqp6/P5UbChDI5xzREQ96787ZFHLliPva4oi5XevG1TWtfSL47HtbQUtKvWSC7YIWW3CQhcBHRGk6Vg==",
+            "version": "4.4.2",
+            "resolved": "https://registry.npmjs.org/@tapjs/test/-/test-4.4.2.tgz",
+            "integrity": "sha512-YuUgTffPNGzodjeHOsaF/j0/5B/bAqtfgwqUkqa3mWdwqzlmB2AcIA6lBtLaQfbjG8wgGNwYfs3McgxkGRqxfA==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
                 "@isaacs/ts-node-temp-fork-for-pr-2009": "^10.9.7",
-                "@tapjs/after": "3.0.2",
-                "@tapjs/after-each": "4.0.2",
-                "@tapjs/asserts": "4.0.2",
-                "@tapjs/before": "4.0.2",
-                "@tapjs/before-each": "4.0.2",
-                "@tapjs/chdir": "3.0.2",
-                "@tapjs/filter": "4.0.2",
-                "@tapjs/fixture": "4.0.2",
-                "@tapjs/intercept": "4.0.2",
-                "@tapjs/mock": "4.0.2",
-                "@tapjs/node-serialize": "4.0.2",
-                "@tapjs/snapshot": "4.0.2",
-                "@tapjs/spawn": "4.0.2",
-                "@tapjs/stdin": "4.0.2",
-                "@tapjs/typescript": "3.1.1",
-                "@tapjs/worker": "4.0.2",
-                "glob": "^11.0.3",
-                "jackspeak": "^4.0.1",
+                "@tapjs/after": "3.3.4",
+                "@tapjs/after-each": "4.3.4",
+                "@tapjs/asserts": "4.3.4",
+                "@tapjs/before": "4.3.4",
+                "@tapjs/before-each": "4.3.4",
+                "@tapjs/chdir": "3.3.4",
+                "@tapjs/filter": "4.3.4",
+                "@tapjs/fixture": "4.3.4",
+                "@tapjs/intercept": "4.3.4",
+                "@tapjs/mock": "4.4.2",
+                "@tapjs/node-serialize": "4.3.4",
+                "@tapjs/snapshot": "4.3.4",
+                "@tapjs/spawn": "4.3.4",
+                "@tapjs/stdin": "4.3.4",
+                "@tapjs/typescript": "3.5.4",
+                "@tapjs/worker": "4.3.4",
+                "glob": "^13.0.2",
+                "jackspeak": "^4.2.3",
                 "mkdirp": "^3.0.0",
                 "package-json-from-dist": "^1.0.0",
-                "resolve-import": "^2.0.0",
+                "resolve-import": "^2.4.0",
                 "rimraf": "^6.0.0",
-                "sync-content": "^2.0.1",
-                "tap-parser": "18.0.1",
-                "tshy": "^3.0.3",
+                "sync-content": "^2.0.4",
+                "tap-parser": "18.3.0",
+                "tshy": "^3.3.2",
                 "typescript": "5.9",
                 "walk-up-path": "^4.0.0"
             },
@@ -1658,49 +1377,13 @@
                 "node": "20 || >=22"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2"
-            }
-        },
-        "node_modules/@tapjs/test/node_modules/jackspeak": {
-            "version": "4.1.1",
-            "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz",
-            "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==",
-            "dev": true,
-            "license": "BlueOak-1.0.0",
-            "dependencies": {
-                "@isaacs/cliui": "^8.0.2"
-            },
-            "engines": {
-                "node": "20 || >=22"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
-            }
-        },
-        "node_modules/@tapjs/test/node_modules/rimraf": {
-            "version": "6.0.1",
-            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz",
-            "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "glob": "^11.0.0",
-                "package-json-from-dist": "^1.0.0"
-            },
-            "bin": {
-                "rimraf": "dist/esm/bin.mjs"
-            },
-            "engines": {
-                "node": "20 || >=22"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
+                "@tapjs/core": "4.5.2"
             }
         },
         "node_modules/@tapjs/typescript": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/@tapjs/typescript/-/typescript-3.1.1.tgz",
-            "integrity": "sha512-2fxDTeL8X3sm9g0KnHZSD/p9o8tFWYhswRKUq//jv9FA/4XetsKs+ApddPUJEi3AX8+Ma1P1EzjSy/f0z5KIJA==",
+            "version": "3.5.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/typescript/-/typescript-3.5.4.tgz",
+            "integrity": "sha512-z8O10CpbPYoHA876Dlg40qXtM058akP76HNQy+EdNE+AhFo7kold4YBgyjYRU7WDWNlp2B/MPgsy/OZ4PRXQWw==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
@@ -1710,47 +1393,47 @@
                 "node": "20 || >=22"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2"
+                "@tapjs/core": "4.5.2"
             }
         },
         "node_modules/@tapjs/worker": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/worker/-/worker-4.0.2.tgz",
-            "integrity": "sha512-o2jzyjEnpRf3xHmduIfO/HXb5m9qRz+tCoiiFmPav+LC7eilSrDP3eGiQwMGbew64PK52KQwQW/LYNRrQsuMxA==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/worker/-/worker-4.3.4.tgz",
+            "integrity": "sha512-AvmfwMgJXB/eOwIti/rOvw1l1eHsxUex3lyrhiC6uK5iOmbHWBOFsGHwEfc7Z4eertPM6FUqnZxkxkTEVGueig==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "engines": {
                 "node": "20 || >=22"
             },
             "peerDependencies": {
-                "@tapjs/core": "4.0.2"
+                "@tapjs/core": "4.5.2"
             }
         },
         "node_modules/@tsconfig/node14": {
-            "version": "14.1.5",
-            "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-14.1.5.tgz",
-            "integrity": "sha512-hsldDMdbjF18BgvqFX6rHwqb0wlDh4lxyXmo3VATa7LwL4AFrHijv8Or9ySXBSg9TyysRkldJyAC/kplyF/Mmg==",
+            "version": "14.1.8",
+            "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-14.1.8.tgz",
+            "integrity": "sha512-SjGT+qPvh8Uhc849yNMD0ZIPr69AyB7Z46nMqhrI3gCVocd6mhI0jP4YE4onO/ufpmengRfTxNMpdpKEp2xRIg==",
             "dev": true,
             "license": "MIT"
         },
         "node_modules/@tsconfig/node16": {
-            "version": "16.1.5",
-            "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-16.1.5.tgz",
-            "integrity": "sha512-P4GBZdpi6i5NGB12pwLH4oAIPrxl1ZvD8gxA4E7VdUUCik34J7FerrxzoDXtT4ugbrRjLbK5WuHPOUNZJOxuaQ==",
+            "version": "16.1.8",
+            "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-16.1.8.tgz",
+            "integrity": "sha512-T/CfdwFry660WjZor56z0F3pxeCllt8KOxWcHFW6ZEuULKUObTDEMdgtctyuJPxwqyWDsvHRfxHaJ4FIICyoqQ==",
             "dev": true,
             "license": "MIT"
         },
         "node_modules/@tsconfig/node18": {
-            "version": "18.2.4",
-            "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.4.tgz",
-            "integrity": "sha512-5xxU8vVs9/FNcvm3gE07fPbn9tl6tqGGWA9tSlwsUEkBxtRnTsNmwrV8gasZ9F/EobaSv9+nu8AxUKccw77JpQ==",
+            "version": "18.2.6",
+            "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.6.tgz",
+            "integrity": "sha512-eAWQzAjPj18tKnDzmWstz4OyWewLUNBm9tdoN9LayzoboRktYx3Enk1ZXPmThj55L7c4VWYq/Bzq0A51znZfhw==",
             "dev": true,
             "license": "MIT"
         },
         "node_modules/@tsconfig/node20": {
-            "version": "20.1.6",
-            "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.6.tgz",
-            "integrity": "sha512-sz+Hqx9zwZDpZIV871WSbUzSqNIsXzghZydypnfgzPKLltVJfkINfUeTct31n/tTSa9ZE1ZOfKdRre1uHHquYQ==",
+            "version": "20.1.9",
+            "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.9.tgz",
+            "integrity": "sha512-IjlTv1RsvnPtUcjTqtVsZExKVq+KQx4g5pCP5tI7rAs6Xesl2qFwSz/tPDBC4JajkL/MlezBu3gPUwqRHl+RIg==",
             "dev": true,
             "license": "MIT"
         },
@@ -1765,49 +1448,29 @@
             }
         },
         "node_modules/@tufjs/models": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-4.0.0.tgz",
-            "integrity": "sha512-h5x5ga/hh82COe+GoD4+gKUeV4T3iaYOxqLt41GRKApinPI7DMidhCmNVTjKfhCWFJIGXaFJee07XczdT4jdZQ==",
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-4.1.0.tgz",
+            "integrity": "sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
                 "@tufjs/canonical-json": "2.0.0",
-                "minimatch": "^9.0.5"
+                "minimatch": "^10.1.1"
             },
             "engines": {
                 "node": "^20.17.0 || >=22.9.0"
             }
         },
-        "node_modules/@tufjs/models/node_modules/brace-expansion": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
-            "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "balanced-match": "^1.0.0"
-            }
-        },
-        "node_modules/@tufjs/models/node_modules/minimatch": {
-            "version": "9.0.5",
-            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-            "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "brace-expansion": "^2.0.1"
-            },
-            "engines": {
-                "node": ">=16 || 14 >=14.17"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
-            }
+        "node_modules/@types/esrecurse": {
+            "version": "4.3.1",
+            "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz",
+            "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==",
+            "license": "MIT"
         },
         "node_modules/@types/estree": {
-            "version": "1.0.7",
-            "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
-            "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
+            "version": "1.0.8",
+            "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
+            "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
             "license": "MIT"
         },
         "node_modules/@types/istanbul-lib-coverage": {
@@ -1824,30 +1487,147 @@
             "license": "MIT"
         },
         "node_modules/@types/node": {
-            "version": "24.7.2",
-            "resolved": "https://registry.npmjs.org/@types/node/-/node-24.7.2.tgz",
-            "integrity": "sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==",
+            "version": "25.5.0",
+            "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz",
+            "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==",
             "dev": true,
             "license": "MIT",
             "peer": true,
             "dependencies": {
-                "undici-types": "~7.14.0"
+                "undici-types": "~7.18.0"
             }
         },
+        "node_modules/@typescript/native-preview": {
+            "version": "7.0.0-dev.20260331.1",
+            "resolved": "https://registry.npmjs.org/@typescript/native-preview/-/native-preview-7.0.0-dev.20260331.1.tgz",
+            "integrity": "sha512-Gfy2J/LhydkOHOw+ZWRw0M8Xl3O2bzQXLXIYITdMz2N4GpMm8misAvvCzhqMacOGvazKr1FsL9LIIW2kxk6kzw==",
+            "dev": true,
+            "license": "Apache-2.0",
+            "bin": {
+                "tsgo": "bin/tsgo.js"
+            },
+            "optionalDependencies": {
+                "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20260331.1",
+                "@typescript/native-preview-darwin-x64": "7.0.0-dev.20260331.1",
+                "@typescript/native-preview-linux-arm": "7.0.0-dev.20260331.1",
+                "@typescript/native-preview-linux-arm64": "7.0.0-dev.20260331.1",
+                "@typescript/native-preview-linux-x64": "7.0.0-dev.20260331.1",
+                "@typescript/native-preview-win32-arm64": "7.0.0-dev.20260331.1",
+                "@typescript/native-preview-win32-x64": "7.0.0-dev.20260331.1"
+            }
+        },
+        "node_modules/@typescript/native-preview-darwin-arm64": {
+            "version": "7.0.0-dev.20260331.1",
+            "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-arm64/-/native-preview-darwin-arm64-7.0.0-dev.20260331.1.tgz",
+            "integrity": "sha512-1PRnBCN2csiCzj76YaSBtP4jPLEGBUmVhXHplC+yHOKaxx9nf3HFiFCg/19raInvN/lJ8+Bp1fZ/qIsWAAHiBw==",
+            "cpu": [
+                "arm64"
+            ],
+            "dev": true,
+            "license": "Apache-2.0",
+            "optional": true,
+            "os": [
+                "darwin"
+            ]
+        },
+        "node_modules/@typescript/native-preview-darwin-x64": {
+            "version": "7.0.0-dev.20260331.1",
+            "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-x64/-/native-preview-darwin-x64-7.0.0-dev.20260331.1.tgz",
+            "integrity": "sha512-llXnfLGjl+gXsANLD7UI/gSb3lj7aZW13Rf8sVXQnHJ3/dkJRAm/MgLqdjuuyvYq3pFaleiep+zoLd96rLRqUw==",
+            "cpu": [
+                "x64"
+            ],
+            "dev": true,
+            "license": "Apache-2.0",
+            "optional": true,
+            "os": [
+                "darwin"
+            ]
+        },
+        "node_modules/@typescript/native-preview-linux-arm": {
+            "version": "7.0.0-dev.20260331.1",
+            "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm/-/native-preview-linux-arm-7.0.0-dev.20260331.1.tgz",
+            "integrity": "sha512-+8AZzA0BRjMkLDvdQKZOMuheRxNGpSWn7sOtoKqo70R915D0TyEynEXX6B7/aw3+Jfn1H5hLRiBjxoVsmdKENw==",
+            "cpu": [
+                "arm"
+            ],
+            "dev": true,
+            "license": "Apache-2.0",
+            "optional": true,
+            "os": [
+                "linux"
+            ]
+        },
+        "node_modules/@typescript/native-preview-linux-arm64": {
+            "version": "7.0.0-dev.20260331.1",
+            "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm64/-/native-preview-linux-arm64-7.0.0-dev.20260331.1.tgz",
+            "integrity": "sha512-sH5gALi89jl5ZjAL/UsLDPsjT/nCLRfHl/pw86ablRX10tYsJhJ/RD6J/cl3g39kJ18tIISSbsuIBn+ncanfSA==",
+            "cpu": [
+                "arm64"
+            ],
+            "dev": true,
+            "license": "Apache-2.0",
+            "optional": true,
+            "os": [
+                "linux"
+            ]
+        },
+        "node_modules/@typescript/native-preview-linux-x64": {
+            "version": "7.0.0-dev.20260331.1",
+            "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-x64/-/native-preview-linux-x64-7.0.0-dev.20260331.1.tgz",
+            "integrity": "sha512-Yic6MYfX7Uit5jLLENzWFIi6tjp4LTLF37KBiVaHZSvEFyX1kqVwu4j9WNeaz81O6fcB/1dZ1MrILgfcqalNBg==",
+            "cpu": [
+                "x64"
+            ],
+            "dev": true,
+            "license": "Apache-2.0",
+            "optional": true,
+            "os": [
+                "linux"
+            ]
+        },
+        "node_modules/@typescript/native-preview-win32-arm64": {
+            "version": "7.0.0-dev.20260331.1",
+            "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-arm64/-/native-preview-win32-arm64-7.0.0-dev.20260331.1.tgz",
+            "integrity": "sha512-vGxK6gtGF97zSx9wOpiVME3h9v0tbZbrHHdKA+fLFNvDV0Df8ud89DEePL7l2yKnVVmf0OnjJy6sYoVyj+LIPA==",
+            "cpu": [
+                "arm64"
+            ],
+            "dev": true,
+            "license": "Apache-2.0",
+            "optional": true,
+            "os": [
+                "win32"
+            ]
+        },
+        "node_modules/@typescript/native-preview-win32-x64": {
+            "version": "7.0.0-dev.20260331.1",
+            "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-x64/-/native-preview-win32-x64-7.0.0-dev.20260331.1.tgz",
+            "integrity": "sha512-oJnNiU9UTDPJp6dOmOUW+/Wzt3MQZXIHsDaU4qM0RiAjFE6S+PIX8s5z/ID0orr4MMroUMiLdolL4OVZolNDSw==",
+            "cpu": [
+                "x64"
+            ],
+            "dev": true,
+            "license": "Apache-2.0",
+            "optional": true,
+            "os": [
+                "win32"
+            ]
+        },
         "node_modules/abbrev": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz",
-            "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==",
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz",
+            "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==",
             "dev": true,
             "license": "ISC",
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/acorn": {
-            "version": "8.15.0",
-            "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
-            "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+            "version": "8.16.0",
+            "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
+            "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
             "license": "MIT",
             "bin": {
                 "acorn": "bin/acorn"
@@ -1866,9 +1646,9 @@
             }
         },
         "node_modules/acorn-walk": {
-            "version": "8.3.4",
-            "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz",
-            "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==",
+            "version": "8.3.5",
+            "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz",
+            "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -1889,9 +1669,9 @@
             }
         },
         "node_modules/ajv": {
-            "version": "6.12.6",
-            "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-            "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+            "version": "6.14.0",
+            "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
+            "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
             "license": "MIT",
             "dependencies": {
                 "fast-deep-equal": "^3.1.1",
@@ -1905,9 +1685,9 @@
             }
         },
         "node_modules/ansi-escapes": {
-            "version": "7.1.1",
-            "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.1.1.tgz",
-            "integrity": "sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==",
+            "version": "7.3.0",
+            "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz",
+            "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -1921,40 +1701,31 @@
             }
         },
         "node_modules/ansi-regex": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-            "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+            "version": "6.2.2",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+            "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+            "dev": true,
+            "license": "MIT",
             "engines": {
-                "node": ">=8"
+                "node": ">=12"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/ansi-regex?sponsor=1"
             }
         },
         "node_modules/ansi-styles": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-            "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-            "dependencies": {
-                "color-convert": "^2.0.1"
-            },
+            "version": "6.2.3",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+            "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+            "dev": true,
+            "license": "MIT",
             "engines": {
-                "node": ">=8"
+                "node": ">=12"
             },
             "funding": {
                 "url": "https://github.com/chalk/ansi-styles?sponsor=1"
             }
         },
-        "node_modules/anymatch": {
-            "version": "3.1.3",
-            "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
-            "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
-            "dev": true,
-            "dependencies": {
-                "normalize-path": "^3.0.0",
-                "picomatch": "^2.0.4"
-            },
-            "engines": {
-                "node": ">= 8"
-            }
-        },
         "node_modules/arg": {
             "version": "4.1.3",
             "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
@@ -1993,38 +1764,29 @@
         "node_modules/balanced-match": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-            "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
-        },
-        "node_modules/binary-extensions": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
-            "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+            "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
             "dev": true,
-            "engines": {
-                "node": ">=8"
-            }
+            "license": "MIT"
         },
         "node_modules/brace-expansion": {
-            "version": "1.1.12",
-            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
-            "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+            "version": "5.0.5",
+            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz",
+            "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==",
             "license": "MIT",
             "dependencies": {
-                "balanced-match": "^1.0.0",
-                "concat-map": "0.0.1"
+                "balanced-match": "^4.0.2"
+            },
+            "engines": {
+                "node": "18 || 20 || >=22"
             }
         },
-        "node_modules/braces": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
-            "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
-            "dev": true,
+        "node_modules/brace-expansion/node_modules/balanced-match": {
+            "version": "4.0.4",
+            "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+            "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
             "license": "MIT",
-            "dependencies": {
-                "fill-range": "^7.1.1"
-            },
             "engines": {
-                "node": ">=8"
+                "node": "18 || 20 || >=22"
             }
         },
         "node_modules/c8": {
@@ -2061,97 +1823,71 @@
                 }
             }
         },
+        "node_modules/c8/node_modules/foreground-child": {
+            "version": "3.3.1",
+            "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
+            "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "cross-spawn": "^7.0.6",
+                "signal-exit": "^4.0.1"
+            },
+            "engines": {
+                "node": ">=14"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/isaacs"
+            }
+        },
         "node_modules/cacache": {
-            "version": "20.0.1",
-            "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.1.tgz",
-            "integrity": "sha512-+7LYcYGBYoNqTp1Rv7Ny1YjUo5E0/ftkQtraH3vkfAGgVHc+ouWdC8okAwQgQR7EVIdW6JTzTmhKFwzb+4okAQ==",
+            "version": "20.0.4",
+            "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.4.tgz",
+            "integrity": "sha512-M3Lab8NPYlZU2exsL3bMVvMrMqgwCnMWfdZbK28bn3pK6APT/Te/I8hjRPNu1uwORY9a1eEQoifXbKPQMfMTOA==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
-                "@npmcli/fs": "^4.0.0",
+                "@npmcli/fs": "^5.0.0",
                 "fs-minipass": "^3.0.0",
-                "glob": "^11.0.3",
+                "glob": "^13.0.0",
                 "lru-cache": "^11.1.0",
                 "minipass": "^7.0.3",
                 "minipass-collect": "^2.0.1",
                 "minipass-flush": "^1.0.5",
                 "minipass-pipeline": "^1.2.4",
                 "p-map": "^7.0.2",
-                "ssri": "^12.0.0",
-                "unique-filename": "^4.0.0"
+                "ssri": "^13.0.0"
             },
             "engines": {
                 "node": "^20.17.0 || >=22.9.0"
             }
         },
-        "node_modules/cacache/node_modules/lru-cache": {
-            "version": "11.2.2",
-            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
-            "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
+        "node_modules/chalk": {
+            "version": "5.6.2",
+            "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+            "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
             "dev": true,
-            "license": "ISC",
-            "engines": {
-                "node": "20 || >=22"
-            }
-        },
-        "node_modules/callsites": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-            "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
             "license": "MIT",
             "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/chalk": {
-            "version": "4.1.2",
-            "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-            "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-            "dependencies": {
-                "ansi-styles": "^4.1.0",
-                "supports-color": "^7.1.0"
-            },
-            "engines": {
-                "node": ">=10"
+                "node": "^12.17.0 || ^14.13 || >=16.0.0"
             },
             "funding": {
                 "url": "https://github.com/chalk/chalk?sponsor=1"
             }
         },
         "node_modules/chokidar": {
-            "version": "3.6.0",
-            "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
-            "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
-            "dev": true,
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz",
+            "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==",
+            "license": "MIT",
             "dependencies": {
-                "anymatch": "~3.1.2",
-                "braces": "~3.0.2",
-                "glob-parent": "~5.1.2",
-                "is-binary-path": "~2.1.0",
-                "is-glob": "~4.0.1",
-                "normalize-path": "~3.0.0",
-                "readdirp": "~3.6.0"
+                "readdirp": "^5.0.0"
             },
             "engines": {
-                "node": ">= 8.10.0"
+                "node": ">= 20.19.0"
             },
             "funding": {
                 "url": "https://paulmillr.com/funding/"
-            },
-            "optionalDependencies": {
-                "fsevents": "~2.3.2"
-            }
-        },
-        "node_modules/chokidar/node_modules/glob-parent": {
-            "version": "5.1.2",
-            "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-            "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-            "dev": true,
-            "dependencies": {
-                "is-glob": "^4.0.1"
-            },
-            "engines": {
-                "node": ">= 6"
             }
         },
         "node_modules/chownr": {
@@ -2165,9 +1901,10 @@
             }
         },
         "node_modules/chroma-js": {
-            "version": "2.4.2",
-            "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz",
-            "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A=="
+            "version": "3.2.0",
+            "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-3.2.0.tgz",
+            "integrity": "sha512-os/OippSlX1RlWWr+QDPcGUZs0uoqr32urfxESG9U93lhUfbnlyckte84Q8P1UQY/qth983AS1JONKmLS4T0nw==",
+            "license": "(BSD-3-Clause AND Apache-2.0)"
         },
         "node_modules/cli-boxes": {
             "version": "3.0.0",
@@ -2215,39 +1952,6 @@
                 "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "node_modules/cli-truncate/node_modules/ansi-regex": {
-            "version": "6.2.2",
-            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
-            "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": ">=12"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-            }
-        },
-        "node_modules/cli-truncate/node_modules/ansi-styles": {
-            "version": "6.2.3",
-            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
-            "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": ">=12"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-            }
-        },
-        "node_modules/cli-truncate/node_modules/emoji-regex": {
-            "version": "10.6.0",
-            "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
-            "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
-            "dev": true,
-            "license": "MIT"
-        },
         "node_modules/cli-truncate/node_modules/slice-ansi": {
             "version": "5.0.0",
             "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz",
@@ -2265,53 +1969,45 @@
                 "url": "https://github.com/chalk/slice-ansi?sponsor=1"
             }
         },
-        "node_modules/cli-truncate/node_modules/string-width": {
-            "version": "7.2.0",
-            "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
-            "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+        "node_modules/cliui": {
+            "version": "8.0.1",
+            "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+            "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
             "dev": true,
-            "license": "MIT",
+            "license": "ISC",
             "dependencies": {
-                "emoji-regex": "^10.3.0",
-                "get-east-asian-width": "^1.0.0",
-                "strip-ansi": "^7.1.0"
+                "string-width": "^4.2.0",
+                "strip-ansi": "^6.0.1",
+                "wrap-ansi": "^7.0.0"
             },
             "engines": {
-                "node": ">=18"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/sindresorhus"
+                "node": ">=12"
             }
         },
-        "node_modules/cli-truncate/node_modules/strip-ansi": {
-            "version": "7.1.2",
-            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
-            "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+        "node_modules/cliui/node_modules/ansi-regex": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+            "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
             "dev": true,
             "license": "MIT",
-            "dependencies": {
-                "ansi-regex": "^6.0.1"
-            },
             "engines": {
-                "node": ">=12"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+                "node": ">=8"
             }
         },
-        "node_modules/cliui": {
-            "version": "8.0.1",
-            "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
-            "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+        "node_modules/cliui/node_modules/ansi-styles": {
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+            "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
             "dev": true,
-            "license": "ISC",
+            "license": "MIT",
             "dependencies": {
-                "string-width": "^4.2.0",
-                "strip-ansi": "^6.0.1",
-                "wrap-ansi": "^7.0.0"
+                "color-convert": "^2.0.1"
             },
             "engines": {
-                "node": ">=12"
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/ansi-styles?sponsor=1"
             }
         },
         "node_modules/cliui/node_modules/emoji-regex": {
@@ -2346,6 +2042,19 @@
                 "node": ">=8"
             }
         },
+        "node_modules/cliui/node_modules/strip-ansi": {
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-regex": "^5.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
         "node_modules/cliui/node_modules/wrap-ansi": {
             "version": "7.0.0",
             "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
@@ -2381,6 +2090,8 @@
             "version": "2.0.1",
             "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
             "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+            "dev": true,
+            "license": "MIT",
             "dependencies": {
                 "color-name": "~1.1.4"
             },
@@ -2391,7 +2102,9 @@
         "node_modules/color-name": {
             "version": "1.1.4",
             "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-            "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+            "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+            "dev": true,
+            "license": "MIT"
         },
         "node_modules/command-exists": {
             "version": "1.2.9",
@@ -2404,11 +2117,6 @@
             "integrity": "sha512-SxT8uFOacRbP3gfi4aVAulr4KzE933eZWBguVBwuVWv3GTGQAToqpq8rFtdbIVgeCOH7RpPuXKQrPPd087b8uA==",
             "license": "BSD-2-Clause"
         },
-        "node_modules/concat-map": {
-            "version": "0.0.1",
-            "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-            "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
-        },
         "node_modules/convert-source-map": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
@@ -2463,35 +2171,19 @@
             "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
             "license": "MIT"
         },
-        "node_modules/diff": {
-            "version": "5.2.0",
-            "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
-            "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.3.1"
-            }
-        },
         "node_modules/eastasianwidth": {
             "version": "0.2.0",
             "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
-            "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
+            "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+            "dev": true,
+            "license": "MIT"
         },
         "node_modules/emoji-regex": {
-            "version": "9.2.2",
-            "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
-            "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
-        },
-        "node_modules/encoding": {
-            "version": "0.1.13",
-            "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
-            "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+            "version": "10.6.0",
+            "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
+            "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
             "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "dependencies": {
-                "iconv-lite": "^0.6.2"
-            }
+            "license": "MIT"
         },
         "node_modules/env-paths": {
             "version": "2.2.1",
@@ -2516,17 +2208,10 @@
                 "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "node_modules/err-code": {
-            "version": "2.0.3",
-            "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
-            "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
-            "dev": true,
-            "license": "MIT"
-        },
         "node_modules/es-toolkit": {
-            "version": "1.40.0",
-            "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.40.0.tgz",
-            "integrity": "sha512-8o6w0KFmU0CiIl0/Q/BCEOabF2IJaELM1T2PWj6e8KqzHv1gdx+7JtFnDwOx1kJH/isJ5NwlDG1nCr1HrRF94Q==",
+            "version": "1.45.1",
+            "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.45.1.tgz",
+            "integrity": "sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw==",
             "dev": true,
             "license": "MIT",
             "workspaces": [
@@ -2556,33 +2241,29 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.37.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.37.0.tgz",
-            "integrity": "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==",
+            "version": "10.1.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.1.0.tgz",
+            "integrity": "sha512-S9jlY/ELKEUwwQnqWDO+f+m6sercqOPSqXM5Go94l7DOmxHVDgmSFGWEzeE/gwgTAr0W103BWt0QLe/7mabIvA==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.8.0",
-                "@eslint-community/regexpp": "^4.12.1",
-                "@eslint/config-array": "^0.21.0",
-                "@eslint/config-helpers": "^0.4.0",
-                "@eslint/core": "^0.16.0",
-                "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.37.0",
-                "@eslint/plugin-kit": "^0.4.0",
+                "@eslint-community/regexpp": "^4.12.2",
+                "@eslint/config-array": "^0.23.3",
+                "@eslint/config-helpers": "^0.5.3",
+                "@eslint/core": "^1.1.1",
+                "@eslint/plugin-kit": "^0.6.1",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
                 "@humanwhocodes/retry": "^0.4.2",
                 "@types/estree": "^1.0.6",
-                "@types/json-schema": "^7.0.15",
-                "ajv": "^6.12.4",
-                "chalk": "^4.0.0",
+                "ajv": "^6.14.0",
                 "cross-spawn": "^7.0.6",
                 "debug": "^4.3.2",
                 "escape-string-regexp": "^4.0.0",
-                "eslint-scope": "^8.4.0",
-                "eslint-visitor-keys": "^4.2.1",
-                "espree": "^10.4.0",
-                "esquery": "^1.5.0",
+                "eslint-scope": "^9.1.2",
+                "eslint-visitor-keys": "^5.0.1",
+                "espree": "^11.2.0",
+                "esquery": "^1.7.0",
                 "esutils": "^2.0.2",
                 "fast-deep-equal": "^3.1.3",
                 "file-entry-cache": "^8.0.0",
@@ -2592,8 +2273,7 @@
                 "imurmurhash": "^0.1.4",
                 "is-glob": "^4.0.0",
                 "json-stable-stringify-without-jsonify": "^1.0.1",
-                "lodash.merge": "^4.6.2",
-                "minimatch": "^3.1.2",
+                "minimatch": "^10.2.4",
                 "natural-compare": "^1.4.0",
                 "optionator": "^0.9.3"
             },
@@ -2601,7 +2281,7 @@
                 "eslint": "bin/eslint.js"
             },
             "engines": {
-                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                "node": "^20.19.0 || ^22.13.0 || >=24"
             },
             "funding": {
                 "url": "https://eslint.org/donate"
@@ -2616,54 +2296,57 @@
             }
         },
         "node_modules/eslint-scope": {
-            "version": "8.4.0",
-            "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
-            "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
+            "version": "9.1.2",
+            "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz",
+            "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==",
             "license": "BSD-2-Clause",
             "dependencies": {
+                "@types/esrecurse": "^4.3.1",
+                "@types/estree": "^1.0.8",
                 "esrecurse": "^4.3.0",
                 "estraverse": "^5.2.0"
             },
             "engines": {
-                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                "node": "^20.19.0 || ^22.13.0 || >=24"
             },
             "funding": {
                 "url": "https://opencollective.com/eslint"
             }
         },
         "node_modules/eslint-visitor-keys": {
-            "version": "4.2.1",
-            "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
-            "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
+            "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==",
             "license": "Apache-2.0",
             "engines": {
-                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                "node": "^20.19.0 || ^22.13.0 || >=24"
             },
             "funding": {
                 "url": "https://opencollective.com/eslint"
             }
         },
         "node_modules/espree": {
-            "version": "10.4.0",
-            "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
-            "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
+            "version": "11.2.0",
+            "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz",
+            "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==",
             "license": "BSD-2-Clause",
             "dependencies": {
-                "acorn": "^8.15.0",
+                "acorn": "^8.16.0",
                 "acorn-jsx": "^5.3.2",
-                "eslint-visitor-keys": "^4.2.1"
+                "eslint-visitor-keys": "^5.0.1"
             },
             "engines": {
-                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                "node": "^20.19.0 || ^22.13.0 || >=24"
             },
             "funding": {
                 "url": "https://opencollective.com/eslint"
             }
         },
         "node_modules/esquery": {
-            "version": "1.5.0",
-            "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
-            "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+            "version": "1.7.0",
+            "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
+            "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
+            "license": "BSD-3-Clause",
             "dependencies": {
                 "estraverse": "^5.1.0"
             },
@@ -2687,6 +2370,7 @@
             "version": "5.3.0",
             "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
             "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+            "license": "BSD-2-Clause",
             "engines": {
                 "node": ">=4.0"
             }
@@ -2747,19 +2431,6 @@
                 "node": ">=16.0.0"
             }
         },
-        "node_modules/fill-range": {
-            "version": "7.1.1",
-            "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
-            "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "to-regex-range": "^5.0.1"
-            },
-            "engines": {
-                "node": ">=8"
-            }
-        },
         "node_modules/find-up": {
             "version": "5.0.0",
             "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
@@ -2789,9 +2460,9 @@
             }
         },
         "node_modules/flatted": {
-            "version": "3.3.3",
-            "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
-            "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+            "version": "3.4.2",
+            "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz",
+            "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==",
             "license": "ISC"
         },
         "node_modules/flexsearch": {
@@ -2800,16 +2471,16 @@
             "integrity": "sha512-c5o/+Um8aqCSOXGcZoqZOm+NqtVwNsvVpWv6lfmSclU954O3wvQKxxK8zj74fPaSJbXpSLTs4PRhh+wnoCXnKg=="
         },
         "node_modules/foreground-child": {
-            "version": "3.3.1",
-            "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
-            "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
-            "license": "ISC",
+            "version": "4.0.3",
+            "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-4.0.3.tgz",
+            "integrity": "sha512-yeXZaNbCBGaT9giTpLPBdtedzjwhlJBUoL/R4BVQU5mn0TQXOHwVIl1Q2DMuBIdNno4ktA1abZ7dQFVxD6uHxw==",
+            "dev": true,
+            "license": "BlueOak-1.0.0",
             "dependencies": {
-                "cross-spawn": "^7.0.6",
                 "signal-exit": "^4.0.1"
             },
             "engines": {
-                "node": ">=14"
+                "node": ">=16"
             },
             "funding": {
                 "url": "https://github.com/sponsors/isaacs"
@@ -2849,20 +2520,6 @@
                 "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
             }
         },
-        "node_modules/fsevents": {
-            "version": "2.3.2",
-            "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-            "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-            "dev": true,
-            "hasInstallScript": true,
-            "optional": true,
-            "os": [
-                "darwin"
-            ],
-            "engines": {
-                "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-            }
-        },
         "node_modules/function-loop": {
             "version": "4.0.0",
             "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-4.0.0.tgz",
@@ -2881,9 +2538,9 @@
             }
         },
         "node_modules/get-east-asian-width": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz",
-            "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==",
+            "version": "1.5.0",
+            "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz",
+            "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==",
             "dev": true,
             "license": "MIT",
             "engines": {
@@ -2894,24 +2551,17 @@
             }
         },
         "node_modules/glob": {
-            "version": "11.0.3",
-            "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz",
-            "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==",
-            "dev": true,
-            "license": "ISC",
+            "version": "13.0.6",
+            "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz",
+            "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",
+            "license": "BlueOak-1.0.0",
             "dependencies": {
-                "foreground-child": "^3.3.1",
-                "jackspeak": "^4.1.1",
-                "minimatch": "^10.0.3",
-                "minipass": "^7.1.2",
-                "package-json-from-dist": "^1.0.0",
-                "path-scurry": "^2.0.0"
-            },
-            "bin": {
-                "glob": "dist/esm/bin.mjs"
+                "minimatch": "^10.2.2",
+                "minipass": "^7.1.3",
+                "path-scurry": "^2.0.2"
             },
             "engines": {
-                "node": "20 || >=22"
+                "node": "18 || 20 || >=22"
             },
             "funding": {
                 "url": "https://github.com/sponsors/isaacs"
@@ -2928,77 +2578,6 @@
                 "node": ">=10.13.0"
             }
         },
-        "node_modules/glob/node_modules/jackspeak": {
-            "version": "4.1.1",
-            "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz",
-            "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==",
-            "dev": true,
-            "license": "BlueOak-1.0.0",
-            "dependencies": {
-                "@isaacs/cliui": "^8.0.2"
-            },
-            "engines": {
-                "node": "20 || >=22"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
-            }
-        },
-        "node_modules/glob/node_modules/lru-cache": {
-            "version": "11.2.2",
-            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
-            "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
-            "dev": true,
-            "license": "ISC",
-            "engines": {
-                "node": "20 || >=22"
-            }
-        },
-        "node_modules/glob/node_modules/minimatch": {
-            "version": "10.0.3",
-            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz",
-            "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "@isaacs/brace-expansion": "^5.0.0"
-            },
-            "engines": {
-                "node": "20 || >=22"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
-            }
-        },
-        "node_modules/glob/node_modules/path-scurry": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz",
-            "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==",
-            "dev": true,
-            "license": "BlueOak-1.0.0",
-            "dependencies": {
-                "lru-cache": "^11.0.0",
-                "minipass": "^7.1.2"
-            },
-            "engines": {
-                "node": "20 || >=22"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
-            }
-        },
-        "node_modules/globals": {
-            "version": "14.0.0",
-            "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
-            "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
-            "license": "MIT",
-            "engines": {
-                "node": ">=18"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/sindresorhus"
-            }
-        },
         "node_modules/graceful-fs": {
             "version": "4.2.11",
             "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
@@ -3010,6 +2589,8 @@
             "version": "4.0.0",
             "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
             "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+            "dev": true,
+            "license": "MIT",
             "engines": {
                 "node": ">=8"
             }
@@ -3027,16 +2608,6 @@
                 "node": "^20.17.0 || >=22.9.0"
             }
         },
-        "node_modules/hosted-git-info/node_modules/lru-cache": {
-            "version": "11.2.2",
-            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
-            "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
-            "dev": true,
-            "license": "ISC",
-            "engines": {
-                "node": "20 || >=22"
-            }
-        },
         "node_modules/html-escaper": {
             "version": "2.0.2",
             "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
@@ -3080,9 +2651,9 @@
             }
         },
         "node_modules/iconv-lite": {
-            "version": "0.6.3",
-            "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
-            "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+            "version": "0.7.2",
+            "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz",
+            "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==",
             "dev": true,
             "license": "MIT",
             "optional": true,
@@ -3091,6 +2662,10 @@
             },
             "engines": {
                 "node": ">=0.10.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/express"
             }
         },
         "node_modules/ignore": {
@@ -3115,22 +2690,6 @@
                 "node": "^20.17.0 || >=22.9.0"
             }
         },
-        "node_modules/ignore-walk/node_modules/minimatch": {
-            "version": "10.0.3",
-            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz",
-            "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "@isaacs/brace-expansion": "^5.0.0"
-            },
-            "engines": {
-                "node": "20 || >=22"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
-            }
-        },
         "node_modules/image-size": {
             "version": "2.0.2",
             "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz",
@@ -3143,22 +2702,6 @@
                 "node": ">=16.x"
             }
         },
-        "node_modules/import-fresh": {
-            "version": "3.3.1",
-            "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
-            "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
-            "license": "MIT",
-            "dependencies": {
-                "parent-module": "^1.0.0",
-                "resolve-from": "^4.0.0"
-            },
-            "engines": {
-                "node": ">=6"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/sindresorhus"
-            }
-        },
         "node_modules/imurmurhash": {
             "version": "0.1.4",
             "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
@@ -3181,13 +2724,13 @@
             }
         },
         "node_modules/ini": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/ini/-/ini-5.0.0.tgz",
-            "integrity": "sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==",
+            "version": "6.0.0",
+            "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz",
+            "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==",
             "dev": true,
             "license": "ISC",
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/ink": {
@@ -3239,52 +2782,6 @@
                 }
             }
         },
-        "node_modules/ink/node_modules/ansi-regex": {
-            "version": "6.2.2",
-            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
-            "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": ">=12"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-            }
-        },
-        "node_modules/ink/node_modules/ansi-styles": {
-            "version": "6.2.3",
-            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
-            "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": ">=12"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-            }
-        },
-        "node_modules/ink/node_modules/chalk": {
-            "version": "5.6.2",
-            "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
-            "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": "^12.17.0 || ^14.13 || >=16.0.0"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/chalk?sponsor=1"
-            }
-        },
-        "node_modules/ink/node_modules/emoji-regex": {
-            "version": "10.6.0",
-            "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
-            "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
-            "dev": true,
-            "license": "MIT"
-        },
         "node_modules/ink/node_modules/signal-exit": {
             "version": "3.0.7",
             "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
@@ -3292,62 +2789,10 @@
             "dev": true,
             "license": "ISC"
         },
-        "node_modules/ink/node_modules/string-width": {
-            "version": "7.2.0",
-            "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
-            "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "emoji-regex": "^10.3.0",
-                "get-east-asian-width": "^1.0.0",
-                "strip-ansi": "^7.1.0"
-            },
-            "engines": {
-                "node": ">=18"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/sindresorhus"
-            }
-        },
-        "node_modules/ink/node_modules/strip-ansi": {
-            "version": "7.1.2",
-            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
-            "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "ansi-regex": "^6.0.1"
-            },
-            "engines": {
-                "node": ">=12"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-            }
-        },
-        "node_modules/ink/node_modules/wrap-ansi": {
-            "version": "9.0.2",
-            "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
-            "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "ansi-styles": "^6.2.1",
-                "string-width": "^7.0.0",
-                "strip-ansi": "^7.1.0"
-            },
-            "engines": {
-                "node": ">=18"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
-            }
-        },
         "node_modules/ip-address": {
-            "version": "10.0.1",
-            "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz",
-            "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==",
+            "version": "10.1.0",
+            "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz",
+            "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==",
             "dev": true,
             "license": "MIT",
             "engines": {
@@ -3361,18 +2806,6 @@
             "dev": true,
             "license": "BlueOak-1.0.0"
         },
-        "node_modules/is-binary-path": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-            "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-            "dev": true,
-            "dependencies": {
-                "binary-extensions": "^2.0.0"
-            },
-            "engines": {
-                "node": ">=8"
-            }
-        },
         "node_modules/is-extglob": {
             "version": "2.1.1",
             "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -3421,16 +2854,6 @@
                 "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "node_modules/is-number": {
-            "version": "7.0.0",
-            "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-            "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": ">=0.12.0"
-            }
-        },
         "node_modules/is-plain-object": {
             "version": "5.0.0",
             "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
@@ -3485,20 +2908,19 @@
             }
         },
         "node_modules/jackspeak": {
-            "version": "3.1.2",
-            "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.1.2.tgz",
-            "integrity": "sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==",
+            "version": "4.2.3",
+            "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz",
+            "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==",
+            "dev": true,
+            "license": "BlueOak-1.0.0",
             "dependencies": {
-                "@isaacs/cliui": "^8.0.2"
+                "@isaacs/cliui": "^9.0.0"
             },
             "engines": {
-                "node": ">=14"
+                "node": "20 || >=22"
             },
             "funding": {
                 "url": "https://github.com/sponsors/isaacs"
-            },
-            "optionalDependencies": {
-                "@pkgjs/parseargs": "^0.11.0"
             }
         },
         "node_modules/js-tokens": {
@@ -3508,9 +2930,10 @@
             "dev": true
         },
         "node_modules/js-yaml": {
-            "version": "4.1.0",
-            "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
-            "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+            "version": "4.1.1",
+            "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+            "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+            "license": "MIT",
             "dependencies": {
                 "argparse": "^2.0.1"
             },
@@ -3530,13 +2953,13 @@
             "license": "MIT"
         },
         "node_modules/json-parse-even-better-errors": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz",
-            "integrity": "sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==",
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-5.0.0.tgz",
+            "integrity": "sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==",
             "dev": true,
             "license": "MIT",
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/json-schema-traverse": {
@@ -3550,6 +2973,15 @@
             "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
             "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="
         },
+        "node_modules/jsonc-simple-parser": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/jsonc-simple-parser/-/jsonc-simple-parser-3.0.0.tgz",
+            "integrity": "sha512-0qi9Kuj4JPar4/3b9wZteuPZrTeFzXsQyOZj7hksnReCZN3Vr17Doz7w/i3E9XH7vRkVTHhHES+r1h97I+hfww==",
+            "dev": true,
+            "dependencies": {
+                "reghex": "^3.0.2"
+            }
+        },
         "node_modules/jsonparse": {
             "version": "1.3.1",
             "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
@@ -3596,11 +3028,6 @@
                 "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "node_modules/lodash.merge": {
-            "version": "4.6.2",
-            "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
-            "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
-        },
         "node_modules/loose-envify": {
             "version": "1.4.0",
             "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -3614,11 +3041,12 @@
             }
         },
         "node_modules/lru-cache": {
-            "version": "10.2.2",
-            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz",
-            "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==",
+            "version": "11.2.7",
+            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz",
+            "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==",
+            "license": "BlueOak-1.0.0",
             "engines": {
-                "node": "14 || >=16.14"
+                "node": "20 || >=22"
             }
         },
         "node_modules/make-dir": {
@@ -3645,103 +3073,33 @@
             "license": "ISC"
         },
         "node_modules/make-fetch-happen": {
-            "version": "14.0.3",
-            "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz",
-            "integrity": "sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==",
+            "version": "15.0.5",
+            "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.5.tgz",
+            "integrity": "sha512-uCbIa8jWWmQZt4dSnEStkVC6gdakiinAm4PiGsywIkguF0eWMdcjDz0ECYhUolFU3pFLOev9VNPCEygydXnddg==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
-                "@npmcli/agent": "^3.0.0",
-                "cacache": "^19.0.1",
+                "@gar/promise-retry": "^1.0.0",
+                "@npmcli/agent": "^4.0.0",
+                "@npmcli/redact": "^4.0.0",
+                "cacache": "^20.0.1",
                 "http-cache-semantics": "^4.1.1",
                 "minipass": "^7.0.2",
-                "minipass-fetch": "^4.0.0",
+                "minipass-fetch": "^5.0.0",
                 "minipass-flush": "^1.0.5",
                 "minipass-pipeline": "^1.2.4",
                 "negotiator": "^1.0.0",
-                "proc-log": "^5.0.0",
-                "promise-retry": "^2.0.1",
-                "ssri": "^12.0.0"
-            },
-            "engines": {
-                "node": "^18.17.0 || >=20.5.0"
-            }
-        },
-        "node_modules/make-fetch-happen/node_modules/brace-expansion": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
-            "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "balanced-match": "^1.0.0"
-            }
-        },
-        "node_modules/make-fetch-happen/node_modules/cacache": {
-            "version": "19.0.1",
-            "resolved": "https://registry.npmjs.org/cacache/-/cacache-19.0.1.tgz",
-            "integrity": "sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "@npmcli/fs": "^4.0.0",
-                "fs-minipass": "^3.0.0",
-                "glob": "^10.2.2",
-                "lru-cache": "^10.0.1",
-                "minipass": "^7.0.3",
-                "minipass-collect": "^2.0.1",
-                "minipass-flush": "^1.0.5",
-                "minipass-pipeline": "^1.2.4",
-                "p-map": "^7.0.2",
-                "ssri": "^12.0.0",
-                "tar": "^7.4.3",
-                "unique-filename": "^4.0.0"
-            },
-            "engines": {
-                "node": "^18.17.0 || >=20.5.0"
-            }
-        },
-        "node_modules/make-fetch-happen/node_modules/glob": {
-            "version": "10.4.5",
-            "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
-            "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "foreground-child": "^3.1.0",
-                "jackspeak": "^3.1.2",
-                "minimatch": "^9.0.4",
-                "minipass": "^7.1.2",
-                "package-json-from-dist": "^1.0.0",
-                "path-scurry": "^1.11.1"
-            },
-            "bin": {
-                "glob": "dist/esm/bin.mjs"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
-            }
-        },
-        "node_modules/make-fetch-happen/node_modules/minimatch": {
-            "version": "9.0.5",
-            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-            "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "brace-expansion": "^2.0.1"
+                "proc-log": "^6.0.0",
+                "ssri": "^13.0.0"
             },
             "engines": {
-                "node": ">=16 || 14 >=14.17"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/marked": {
-            "version": "16.4.1",
-            "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.1.tgz",
-            "integrity": "sha512-ntROs7RaN3EvWfy3EZi14H4YxmT6A5YvywfhO+0pm+cH/dnSQRmdAmoFIc3B9aiwTehyk7pESH4ofyBY+V5hZg==",
+            "version": "17.0.5",
+            "resolved": "https://registry.npmjs.org/marked/-/marked-17.0.5.tgz",
+            "integrity": "sha512-6hLvc0/JEbRjRgzI6wnT2P1XuM1/RrrDEX0kPt0N7jGm1133g6X7DlxFasUIx+72aKAr904GTxhSLDrd5DIlZg==",
             "license": "MIT",
             "bin": {
                 "marked": "bin/marked.js"
@@ -3761,20 +3119,25 @@
             }
         },
         "node_modules/minimatch": {
-            "version": "3.1.2",
-            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-            "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+            "version": "10.2.5",
+            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
+            "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
+            "license": "BlueOak-1.0.0",
             "dependencies": {
-                "brace-expansion": "^1.1.7"
+                "brace-expansion": "^5.0.5"
             },
             "engines": {
-                "node": "*"
+                "node": "18 || 20 || >=22"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/isaacs"
             }
         },
         "node_modules/minipass": {
-            "version": "7.1.2",
-            "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
-            "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+            "version": "7.1.3",
+            "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+            "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
+            "license": "BlueOak-1.0.0",
             "engines": {
                 "node": ">=16 || 14 >=14.17"
             }
@@ -3793,29 +3156,29 @@
             }
         },
         "node_modules/minipass-fetch": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-4.0.1.tgz",
-            "integrity": "sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==",
+            "version": "5.0.2",
+            "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.2.tgz",
+            "integrity": "sha512-2d0q2a8eCi2IRg/IGubCNRJoYbA1+YPXAzQVRFmB45gdGZafyivnZ5YSEfo3JikbjGxOdntGFvBQGqaSMXlAFQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
                 "minipass": "^7.0.3",
-                "minipass-sized": "^1.0.3",
+                "minipass-sized": "^2.0.0",
                 "minizlib": "^3.0.1"
             },
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             },
             "optionalDependencies": {
-                "encoding": "^0.1.13"
+                "iconv-lite": "^0.7.2"
             }
         },
         "node_modules/minipass-flush": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
-            "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+            "version": "1.0.7",
+            "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.7.tgz",
+            "integrity": "sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==",
             "dev": true,
-            "license": "ISC",
+            "license": "BlueOak-1.0.0",
             "dependencies": {
                 "minipass": "^3.0.0"
             },
@@ -3877,38 +3240,18 @@
             "license": "ISC"
         },
         "node_modules/minipass-sized": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
-            "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "minipass": "^3.0.0"
-            },
-            "engines": {
-                "node": ">=8"
-            }
-        },
-        "node_modules/minipass-sized/node_modules/minipass": {
-            "version": "3.3.6",
-            "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
-            "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-2.0.0.tgz",
+            "integrity": "sha512-zSsHhto5BcUVM2m1LurnXY6M//cGhVaegT71OfOXoprxT6o780GZd792ea6FfrQkuU4usHZIUczAQMRUE2plzA==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
-                "yallist": "^4.0.0"
+                "minipass": "^7.1.2"
             },
             "engines": {
                 "node": ">=8"
             }
         },
-        "node_modules/minipass-sized/node_modules/yallist": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-            "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
-            "dev": true,
-            "license": "ISC"
-        },
         "node_modules/minizlib": {
             "version": "3.1.0",
             "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz",
@@ -3945,9 +3288,9 @@
             "license": "MIT"
         },
         "node_modules/msgpackr": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.1.tgz",
-            "integrity": "sha512-P6RWMjddZDjSndqKd5XhmHhpnxohGEj4+55w9tSACji7X/P6gTP/KzYGj7/U2RfE2D3HONS6Y63eGkuFXJEMtA==",
+            "version": "1.11.9",
+            "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.9.tgz",
+            "integrity": "sha512-FkoAAyyA6HM8wL882EcEyFZ9s7hVADSwG9xrVx3dxxNQAtgADTrJoEWivID82Iv1zWDsv/OtbrrcZAzGzOMdNw==",
             "license": "MIT",
             "optionalDependencies": {
                 "msgpackr-extract": "^3.0.2"
@@ -3990,28 +3333,28 @@
             }
         },
         "node_modules/node-gyp": {
-            "version": "11.5.0",
-            "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.5.0.tgz",
-            "integrity": "sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ==",
+            "version": "12.2.0",
+            "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-12.2.0.tgz",
+            "integrity": "sha512-q23WdzrQv48KozXlr0U1v9dwO/k59NHeSzn6loGcasyf0UnSrtzs8kRxM+mfwJSf0DkX0s43hcqgnSO4/VNthQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
                 "env-paths": "^2.2.0",
                 "exponential-backoff": "^3.1.1",
                 "graceful-fs": "^4.2.6",
-                "make-fetch-happen": "^14.0.3",
-                "nopt": "^8.0.0",
-                "proc-log": "^5.0.0",
+                "make-fetch-happen": "^15.0.0",
+                "nopt": "^9.0.0",
+                "proc-log": "^6.0.0",
                 "semver": "^7.3.5",
-                "tar": "^7.4.3",
+                "tar": "^7.5.4",
                 "tinyglobby": "^0.2.12",
-                "which": "^5.0.0"
+                "which": "^6.0.0"
             },
             "bin": {
                 "node-gyp": "bin/node-gyp.js"
             },
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/node-gyp-build-optional-packages": {
@@ -4026,131 +3369,129 @@
             }
         },
         "node_modules/node-gyp/node_modules/isexe": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
-            "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz",
+            "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==",
             "dev": true,
-            "license": "ISC",
+            "license": "BlueOak-1.0.0",
             "engines": {
-                "node": ">=16"
+                "node": ">=20"
             }
         },
         "node_modules/node-gyp/node_modules/which": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
-            "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz",
+            "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
-                "isexe": "^3.1.1"
+                "isexe": "^4.0.0"
             },
             "bin": {
                 "node-which": "bin/which.js"
             },
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
+        "node_modules/node-options-to-argv": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/node-options-to-argv/-/node-options-to-argv-1.0.0.tgz",
+            "integrity": "sha512-99rLlP+Cn/FsSV9kjpk2UmF2Ltmrpv/L9U7fUfws/MVXkeZWPpPDsQkMr79qCvSF/oTKVVJBTm5sHzmK2j6IIg==",
+            "dev": true,
+            "license": "BlueOak-1.0.0"
+        },
         "node_modules/nopt": {
-            "version": "8.1.0",
-            "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz",
-            "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==",
+            "version": "9.0.0",
+            "resolved": "https://registry.npmjs.org/nopt/-/nopt-9.0.0.tgz",
+            "integrity": "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
-                "abbrev": "^3.0.0"
+                "abbrev": "^4.0.0"
             },
             "bin": {
                 "nopt": "bin/nopt.js"
             },
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
-            }
-        },
-        "node_modules/normalize-path": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-            "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/npm-bundled": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-4.0.0.tgz",
-            "integrity": "sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA==",
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-5.0.0.tgz",
+            "integrity": "sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
-                "npm-normalize-package-bin": "^4.0.0"
+                "npm-normalize-package-bin": "^5.0.0"
             },
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/npm-install-checks": {
-            "version": "7.1.2",
-            "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-7.1.2.tgz",
-            "integrity": "sha512-z9HJBCYw9Zr8BqXcllKIs5nI+QggAImbBdHphOzVYrz2CB4iQ6FzWyKmlqDZua+51nAu7FcemlbTc9VgQN5XDQ==",
+            "version": "8.0.0",
+            "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-8.0.0.tgz",
+            "integrity": "sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==",
             "dev": true,
             "license": "BSD-2-Clause",
             "dependencies": {
                 "semver": "^7.1.1"
             },
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/npm-normalize-package-bin": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz",
-            "integrity": "sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==",
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-5.0.0.tgz",
+            "integrity": "sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==",
             "dev": true,
             "license": "ISC",
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/npm-package-arg": {
-            "version": "13.0.1",
-            "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-13.0.1.tgz",
-            "integrity": "sha512-6zqls5xFvJbgFjB1B2U6yITtyGBjDBORB7suI4zA4T/sZ1OmkMFlaQSNB/4K0LtXNA1t4OprAFxPisadK5O2ag==",
+            "version": "13.0.2",
+            "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-13.0.2.tgz",
+            "integrity": "sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
                 "hosted-git-info": "^9.0.0",
-                "proc-log": "^5.0.0",
+                "proc-log": "^6.0.0",
                 "semver": "^7.3.5",
-                "validate-npm-package-name": "^6.0.0"
+                "validate-npm-package-name": "^7.0.0"
             },
             "engines": {
                 "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/npm-packlist": {
-            "version": "10.0.2",
-            "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.2.tgz",
-            "integrity": "sha512-DrIWNiWT0FTdDRjGOYfEEZUNe1IzaSZ+up7qBTKnrQDySpdmuOQvytrqQlpK5QrCA4IThMvL4wTumqaa1ZvVIQ==",
+            "version": "10.0.4",
+            "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.4.tgz",
+            "integrity": "sha512-uMW73iajD8hiH4ZBxEV3HC+eTnppIqwakjOYuvgddnalIw2lJguKviK1pcUJDlIWm1wSJkchpDZDSVVsZEYRng==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
                 "ignore-walk": "^8.0.0",
-                "proc-log": "^5.0.0"
+                "proc-log": "^6.0.0"
             },
             "engines": {
                 "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/npm-pick-manifest": {
-            "version": "11.0.1",
-            "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-11.0.1.tgz",
-            "integrity": "sha512-HnU7FYSWbo7dTVHtK0G+BXbZ0aIfxz/aUCVLN0979Ec6rGUX5cJ6RbgVx5fqb5G31ufz+BVFA7y1SkRTPVNoVQ==",
+            "version": "11.0.3",
+            "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-11.0.3.tgz",
+            "integrity": "sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
-                "npm-install-checks": "^7.1.0",
-                "npm-normalize-package-bin": "^4.0.0",
+                "npm-install-checks": "^8.0.0",
+                "npm-normalize-package-bin": "^5.0.0",
                 "npm-package-arg": "^13.0.0",
                 "semver": "^7.3.5"
             },
@@ -4159,70 +3500,20 @@
             }
         },
         "node_modules/npm-registry-fetch": {
-            "version": "19.0.0",
-            "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-19.0.0.tgz",
-            "integrity": "sha512-DFxSAemHUwT/POaXAOY4NJmEWBPB0oKbwD6FFDE9hnt1nORkt/FXvgjD4hQjoKoHw9u0Ezws9SPXwV7xE/Gyww==",
+            "version": "19.1.1",
+            "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-19.1.1.tgz",
+            "integrity": "sha512-TakBap6OM1w0H73VZVDf44iFXsOS3h+L4wVMXmbWOQroZgFhMch0juN6XSzBNlD965yIKvWg2dfu7NSiaYLxtw==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
-                "@npmcli/redact": "^3.0.0",
+                "@npmcli/redact": "^4.0.0",
                 "jsonparse": "^1.3.1",
                 "make-fetch-happen": "^15.0.0",
                 "minipass": "^7.0.2",
-                "minipass-fetch": "^4.0.0",
+                "minipass-fetch": "^5.0.0",
                 "minizlib": "^3.0.1",
                 "npm-package-arg": "^13.0.0",
-                "proc-log": "^5.0.0"
-            },
-            "engines": {
-                "node": "^20.17.0 || >=22.9.0"
-            }
-        },
-        "node_modules/npm-registry-fetch/node_modules/@npmcli/agent": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz",
-            "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "agent-base": "^7.1.0",
-                "http-proxy-agent": "^7.0.0",
-                "https-proxy-agent": "^7.0.1",
-                "lru-cache": "^11.2.1",
-                "socks-proxy-agent": "^8.0.3"
-            },
-            "engines": {
-                "node": "^20.17.0 || >=22.9.0"
-            }
-        },
-        "node_modules/npm-registry-fetch/node_modules/lru-cache": {
-            "version": "11.2.2",
-            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
-            "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
-            "dev": true,
-            "license": "ISC",
-            "engines": {
-                "node": "20 || >=22"
-            }
-        },
-        "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": {
-            "version": "15.0.2",
-            "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.2.tgz",
-            "integrity": "sha512-sI1NY4lWlXBAfjmCtVWIIpBypbBdhHtcjnwnv+gtCnsaOffyFil3aidszGC8hgzJe+fT1qix05sWxmD/Bmf/oQ==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "@npmcli/agent": "^4.0.0",
-                "cacache": "^20.0.1",
-                "http-cache-semantics": "^4.1.1",
-                "minipass": "^7.0.2",
-                "minipass-fetch": "^4.0.0",
-                "minipass-flush": "^1.0.5",
-                "minipass-pipeline": "^1.2.4",
-                "negotiator": "^1.0.0",
-                "proc-log": "^5.0.0",
-                "promise-retry": "^2.0.1",
-                "ssri": "^12.0.0"
+                "proc-log": "^6.0.0"
             },
             "engines": {
                 "node": "^20.17.0 || >=22.9.0"
@@ -4300,9 +3591,9 @@
             }
         },
         "node_modules/p-map": {
-            "version": "7.0.3",
-            "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz",
-            "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==",
+            "version": "7.0.4",
+            "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz",
+            "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==",
             "dev": true,
             "license": "MIT",
             "engines": {
@@ -4316,20 +3607,20 @@
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
             "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
-            "dev": true,
             "license": "BlueOak-1.0.0"
         },
         "node_modules/pacote": {
-            "version": "21.0.3",
-            "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.0.3.tgz",
-            "integrity": "sha512-itdFlanxO0nmQv4ORsvA9K1wv40IPfB9OmWqfaJWvoJ30VKyHsqNgDVeG+TVhI7Gk7XW8slUy7cA9r6dF5qohw==",
+            "version": "21.5.0",
+            "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.5.0.tgz",
+            "integrity": "sha512-VtZ0SB8mb5Tzw3dXDfVAIjhyVKUHZkS/ZH9/5mpKenwC9sFOXNI0JI7kEF7IMkwOnsWMFrvAZHzx1T5fmrp9FQ==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
+                "@gar/promise-retry": "^1.0.0",
                 "@npmcli/git": "^7.0.0",
-                "@npmcli/installed-package-contents": "^3.0.0",
+                "@npmcli/installed-package-contents": "^4.0.0",
                 "@npmcli/package-json": "^7.0.0",
-                "@npmcli/promise-spawn": "^8.0.0",
+                "@npmcli/promise-spawn": "^9.0.0",
                 "@npmcli/run-script": "^10.0.0",
                 "cacache": "^20.0.0",
                 "fs-minipass": "^3.0.0",
@@ -4338,10 +3629,9 @@
                 "npm-packlist": "^10.0.1",
                 "npm-pick-manifest": "^11.0.1",
                 "npm-registry-fetch": "^19.0.0",
-                "proc-log": "^5.0.0",
-                "promise-retry": "^2.0.1",
+                "proc-log": "^6.0.0",
                 "sigstore": "^4.0.0",
-                "ssri": "^12.0.0",
+                "ssri": "^13.0.0",
                 "tar": "^7.4.3"
             },
             "bin": {
@@ -4351,18 +3641,6 @@
                 "node": "^20.17.0 || >=22.9.0"
             }
         },
-        "node_modules/parent-module": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
-            "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
-            "license": "MIT",
-            "dependencies": {
-                "callsites": "^3.0.0"
-            },
-            "engines": {
-                "node": ">=6"
-            }
-        },
         "node_modules/patch-console": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/patch-console/-/patch-console-2.0.0.tgz",
@@ -4390,32 +3668,21 @@
             }
         },
         "node_modules/path-scurry": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
-            "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz",
+            "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==",
+            "license": "BlueOak-1.0.0",
             "dependencies": {
-                "lru-cache": "^10.2.0",
-                "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+                "lru-cache": "^11.0.0",
+                "minipass": "^7.1.2"
             },
             "engines": {
-                "node": ">=16 || 14 >=14.18"
+                "node": "18 || 20 || >=22"
             },
             "funding": {
                 "url": "https://github.com/sponsors/isaacs"
             }
         },
-        "node_modules/picomatch": {
-            "version": "2.3.1",
-            "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-            "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-            "dev": true,
-            "engines": {
-                "node": ">=8.6"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/jonschlinkert"
-            }
-        },
         "node_modules/pirates": {
             "version": "4.0.7",
             "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz",
@@ -4459,14 +3726,14 @@
             }
         },
         "node_modules/prismjs-terminal": {
-            "version": "1.2.3",
-            "resolved": "https://registry.npmjs.org/prismjs-terminal/-/prismjs-terminal-1.2.3.tgz",
-            "integrity": "sha512-xc0zuJ5FMqvW+DpiRkvxURlz98DdfDsZcFHdO699+oL+ykbFfgI7O4VDEgUyc07BSL2NHl3zdb8m/tZ/aaqUrw==",
+            "version": "1.2.4",
+            "resolved": "https://registry.npmjs.org/prismjs-terminal/-/prismjs-terminal-1.2.4.tgz",
+            "integrity": "sha512-S2nsjy6s2x2jF4uTW8ulX19rvmRfe9R1wmnNwI5wmBgQEErB0vuKueVPMzN6KsFRCCJ2IQrWUS0BqhcNsrR9xg==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
                 "chalk": "^5.2.0",
-                "prismjs": "^1.29.0",
+                "prismjs": "^1.30.0",
                 "string-length": "^6.0.0"
             },
             "engines": {
@@ -4476,27 +3743,14 @@
                 "url": "https://github.com/sponsors/isaacs"
             }
         },
-        "node_modules/prismjs-terminal/node_modules/chalk": {
-            "version": "5.6.2",
-            "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
-            "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": "^12.17.0 || ^14.13 || >=16.0.0"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/chalk?sponsor=1"
-            }
-        },
         "node_modules/proc-log": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-5.0.0.tgz",
-            "integrity": "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==",
+            "version": "6.1.0",
+            "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz",
+            "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==",
             "dev": true,
             "license": "ISC",
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/process-on-spawn": {
@@ -4512,20 +3766,6 @@
                 "node": ">=8"
             }
         },
-        "node_modules/promise-retry": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
-            "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "err-code": "^2.0.2",
-                "retry": "^0.12.0"
-            },
-            "engines": {
-                "node": ">=10"
-            }
-        },
         "node_modules/punycode": {
             "version": "2.3.1",
             "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
@@ -4600,17 +3840,25 @@
             }
         },
         "node_modules/readdirp": {
-            "version": "3.6.0",
-            "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
-            "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-            "dev": true,
-            "dependencies": {
-                "picomatch": "^2.2.1"
-            },
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz",
+            "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==",
+            "license": "MIT",
             "engines": {
-                "node": ">=8.10.0"
+                "node": ">= 20.19.0"
+            },
+            "funding": {
+                "type": "individual",
+                "url": "https://paulmillr.com/funding/"
             }
         },
+        "node_modules/reghex": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/reghex/-/reghex-3.0.2.tgz",
+            "integrity": "sha512-Zb9DJ5u6GhgqRSBnxV2QSnLqEwcKxHWFA1N2yUa4ZUAO1P8jlWKYtWZ6/ooV6yylspGXJX0O/uNzEv0xrCtwaA==",
+            "dev": true,
+            "license": "MIT"
+        },
         "node_modules/require-directory": {
             "version": "2.1.1",
             "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -4621,23 +3869,14 @@
                 "node": ">=0.10.0"
             }
         },
-        "node_modules/resolve-from": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
-            "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-            "license": "MIT",
-            "engines": {
-                "node": ">=4"
-            }
-        },
         "node_modules/resolve-import": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/resolve-import/-/resolve-import-2.0.0.tgz",
-            "integrity": "sha512-jpKjLibLuc8D1XEV2+7zb0aqN7I8d12u89g/v6IsgCzdVlccMQJq4TKkPw5fbhHdxhm7nbVtN+KvOTnjFf+nEA==",
+            "version": "2.4.0",
+            "resolved": "https://registry.npmjs.org/resolve-import/-/resolve-import-2.4.0.tgz",
+            "integrity": "sha512-gLWKdA5tiv5j/D7ipR47u3ovbVfzFPrctTdw2Ulnpmr6PPVVSvPKGNWu09jXVNlOSLLAeD6CA13bjIelpWttSw==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
-                "glob": "^11.0.0",
+                "glob": "^13.0.0",
                 "walk-up-path": "^4.0.0"
             },
             "engines": {
@@ -4671,75 +3910,20 @@
             "dev": true,
             "license": "ISC"
         },
-        "node_modules/retry": {
-            "version": "0.12.0",
-            "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
-            "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": ">= 4"
-            }
-        },
         "node_modules/rimraf": {
-            "version": "5.0.7",
-            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz",
-            "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==",
-            "license": "ISC",
+            "version": "6.1.3",
+            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz",
+            "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==",
+            "license": "BlueOak-1.0.0",
             "dependencies": {
-                "glob": "^10.3.7"
+                "glob": "^13.0.3",
+                "package-json-from-dist": "^1.0.1"
             },
             "bin": {
                 "rimraf": "dist/esm/bin.mjs"
             },
             "engines": {
-                "node": ">=14.18"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
-            }
-        },
-        "node_modules/rimraf/node_modules/brace-expansion": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
-            "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
-            "license": "MIT",
-            "dependencies": {
-                "balanced-match": "^1.0.0"
-            }
-        },
-        "node_modules/rimraf/node_modules/glob": {
-            "version": "10.4.1",
-            "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz",
-            "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==",
-            "license": "ISC",
-            "dependencies": {
-                "foreground-child": "^3.1.0",
-                "jackspeak": "^3.1.2",
-                "minimatch": "^9.0.4",
-                "minipass": "^7.1.2",
-                "path-scurry": "^1.11.1"
-            },
-            "bin": {
-                "glob": "dist/esm/bin.mjs"
-            },
-            "engines": {
-                "node": ">=16 || 14 >=14.18"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
-            }
-        },
-        "node_modules/rimraf/node_modules/minimatch": {
-            "version": "9.0.4",
-            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
-            "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
-            "license": "ISC",
-            "dependencies": {
-                "brace-expansion": "^2.0.1"
-            },
-            "engines": {
-                "node": ">=16 || 14 >=14.17"
+                "node": "20 || >=22"
             },
             "funding": {
                 "url": "https://github.com/sponsors/isaacs"
@@ -4763,9 +3947,9 @@
             }
         },
         "node_modules/semver": {
-            "version": "7.7.3",
-            "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
-            "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+            "version": "7.7.4",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+            "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
             "dev": true,
             "license": "ISC",
             "bin": {
@@ -4798,6 +3982,8 @@
             "version": "4.1.0",
             "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
             "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+            "dev": true,
+            "license": "ISC",
             "engines": {
                 "node": ">=14"
             },
@@ -4806,18 +3992,18 @@
             }
         },
         "node_modules/sigstore": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-4.0.0.tgz",
-            "integrity": "sha512-Gw/FgHtrLM9WP8P5lLcSGh9OQcrTruWCELAiS48ik1QbL0cH+dfjomiRTUE9zzz+D1N6rOLkwXUvVmXZAsNE0Q==",
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-4.1.0.tgz",
+            "integrity": "sha512-/fUgUhYghuLzVT/gaJoeVehLCgZiUxPCPMcyVNY0lIf/cTCz58K/WTI7PefDarXxp9nUKpEwg1yyz3eSBMTtgA==",
             "dev": true,
             "license": "Apache-2.0",
             "dependencies": {
                 "@sigstore/bundle": "^4.0.0",
-                "@sigstore/core": "^3.0.0",
+                "@sigstore/core": "^3.1.0",
                 "@sigstore/protobuf-specs": "^0.5.0",
-                "@sigstore/sign": "^4.0.0",
-                "@sigstore/tuf": "^4.0.0",
-                "@sigstore/verify": "^3.0.0"
+                "@sigstore/sign": "^4.1.0",
+                "@sigstore/tuf": "^4.0.1",
+                "@sigstore/verify": "^3.1.0"
             },
             "engines": {
                 "node": "^20.17.0 || >=22.9.0"
@@ -4840,19 +4026,6 @@
                 "url": "https://github.com/chalk/slice-ansi?sponsor=1"
             }
         },
-        "node_modules/slice-ansi/node_modules/ansi-styles": {
-            "version": "6.2.3",
-            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
-            "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": ">=12"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-            }
-        },
         "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": {
             "version": "5.1.0",
             "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz",
@@ -4910,17 +4083,6 @@
                 "node": ">= 14"
             }
         },
-        "node_modules/spdx-correct": {
-            "version": "3.2.0",
-            "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
-            "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
-            "dev": true,
-            "license": "Apache-2.0",
-            "dependencies": {
-                "spdx-expression-parse": "^3.0.0",
-                "spdx-license-ids": "^3.0.0"
-            }
-        },
         "node_modules/spdx-exceptions": {
             "version": "2.5.0",
             "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
@@ -4929,9 +4091,9 @@
             "license": "CC-BY-3.0"
         },
         "node_modules/spdx-expression-parse": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
-            "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz",
+            "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -4940,23 +4102,23 @@
             }
         },
         "node_modules/spdx-license-ids": {
-            "version": "3.0.22",
-            "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz",
-            "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==",
+            "version": "3.0.23",
+            "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz",
+            "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==",
             "dev": true,
             "license": "CC0-1.0"
         },
         "node_modules/ssri": {
-            "version": "12.0.0",
-            "resolved": "https://registry.npmjs.org/ssri/-/ssri-12.0.0.tgz",
-            "integrity": "sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==",
+            "version": "13.0.1",
+            "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.1.tgz",
+            "integrity": "sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
                 "minipass": "^7.0.3"
             },
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/stack-utils": {
@@ -4998,46 +4160,19 @@
                 "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "node_modules/string-length/node_modules/ansi-regex": {
-            "version": "6.2.2",
-            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
-            "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": ">=12"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-            }
-        },
-        "node_modules/string-length/node_modules/strip-ansi": {
-            "version": "7.1.2",
-            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
-            "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+        "node_modules/string-width": {
+            "version": "7.2.0",
+            "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+            "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "ansi-regex": "^6.0.1"
-            },
-            "engines": {
-                "node": ">=12"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-            }
-        },
-        "node_modules/string-width": {
-            "version": "5.1.2",
-            "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
-            "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
-            "dependencies": {
-                "eastasianwidth": "^0.2.0",
-                "emoji-regex": "^9.2.2",
-                "strip-ansi": "^7.0.1"
+                "emoji-regex": "^10.3.0",
+                "get-east-asian-width": "^1.0.0",
+                "strip-ansi": "^7.1.0"
             },
             "engines": {
-                "node": ">=12"
+                "node": ">=18"
             },
             "funding": {
                 "url": "https://github.com/sponsors/sindresorhus"
@@ -5048,6 +4183,8 @@
             "version": "4.2.3",
             "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
             "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+            "dev": true,
+            "license": "MIT",
             "dependencies": {
                 "emoji-regex": "^8.0.0",
                 "is-fullwidth-code-point": "^3.0.0",
@@ -5057,36 +4194,54 @@
                 "node": ">=8"
             }
         },
+        "node_modules/string-width-cjs/node_modules/ansi-regex": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+            "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=8"
+            }
+        },
         "node_modules/string-width-cjs/node_modules/emoji-regex": {
             "version": "8.0.0",
             "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-            "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+            "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+            "dev": true,
+            "license": "MIT"
         },
         "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": {
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
             "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+            "dev": true,
+            "license": "MIT",
             "engines": {
                 "node": ">=8"
             }
         },
-        "node_modules/string-width/node_modules/ansi-regex": {
+        "node_modules/string-width-cjs/node_modules/strip-ansi": {
             "version": "6.0.1",
-            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-            "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-            "engines": {
-                "node": ">=12"
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-regex": "^5.0.1"
             },
-            "funding": {
-                "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+            "engines": {
+                "node": ">=8"
             }
         },
-        "node_modules/string-width/node_modules/strip-ansi": {
-            "version": "7.1.0",
-            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-            "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+        "node_modules/strip-ansi": {
+            "version": "7.2.0",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
+            "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
+            "dev": true,
+            "license": "MIT",
             "dependencies": {
-                "ansi-regex": "^6.0.1"
+                "ansi-regex": "^6.2.2"
             },
             "engines": {
                 "node": ">=12"
@@ -5095,22 +4250,13 @@
                 "url": "https://github.com/chalk/strip-ansi?sponsor=1"
             }
         },
-        "node_modules/strip-ansi": {
-            "version": "6.0.1",
-            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-            "dependencies": {
-                "ansi-regex": "^5.0.1"
-            },
-            "engines": {
-                "node": ">=8"
-            }
-        },
         "node_modules/strip-ansi-cjs": {
             "name": "strip-ansi",
             "version": "6.0.1",
             "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
             "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+            "dev": true,
+            "license": "MIT",
             "dependencies": {
                 "ansi-regex": "^5.0.1"
             },
@@ -5118,16 +4264,14 @@
                 "node": ">=8"
             }
         },
-        "node_modules/strip-json-comments": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
-            "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+        "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+            "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+            "dev": true,
             "license": "MIT",
             "engines": {
                 "node": ">=8"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
         "node_modules/striptags": {
@@ -5139,6 +4283,8 @@
             "version": "7.2.0",
             "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
             "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+            "dev": true,
+            "license": "MIT",
             "dependencies": {
                 "has-flag": "^4.0.0"
             },
@@ -5147,17 +4293,16 @@
             }
         },
         "node_modules/sync-content": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/sync-content/-/sync-content-2.0.1.tgz",
-            "integrity": "sha512-NI1mo514yFhr8pV/5Etvgh+pSBUIpoAKoiBIUwALVlQQNAwb40bTw8hhPFaip/dvv0GhpHVOq0vq8iY02ppLTg==",
+            "version": "2.0.4",
+            "resolved": "https://registry.npmjs.org/sync-content/-/sync-content-2.0.4.tgz",
+            "integrity": "sha512-w3ioiBmbaogob33WdLnuwFk+8tpePI58CTWKqtdAgEqc2hfGuSwP02gPETqNX/3PLS5skv5a1wQR0gbaa2W0XQ==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
-                "glob": "^11.0.0",
+                "glob": "^13.0.1",
                 "mkdirp": "^3.0.1",
                 "path-scurry": "^2.0.0",
-                "rimraf": "^6.0.0",
-                "tshy": "^3.0.0"
+                "rimraf": "^6.0.0"
             },
             "bin": {
                 "sync-content": "dist/esm/bin.mjs"
@@ -5169,80 +4314,33 @@
                 "url": "https://github.com/sponsors/isaacs"
             }
         },
-        "node_modules/sync-content/node_modules/lru-cache": {
-            "version": "11.2.2",
-            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
-            "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
-            "dev": true,
-            "license": "ISC",
-            "engines": {
-                "node": "20 || >=22"
-            }
-        },
-        "node_modules/sync-content/node_modules/path-scurry": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz",
-            "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==",
-            "dev": true,
-            "license": "BlueOak-1.0.0",
-            "dependencies": {
-                "lru-cache": "^11.0.0",
-                "minipass": "^7.1.2"
-            },
-            "engines": {
-                "node": "20 || >=22"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
-            }
-        },
-        "node_modules/sync-content/node_modules/rimraf": {
-            "version": "6.0.1",
-            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz",
-            "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "glob": "^11.0.0",
-                "package-json-from-dist": "^1.0.0"
-            },
-            "bin": {
-                "rimraf": "dist/esm/bin.mjs"
-            },
-            "engines": {
-                "node": "20 || >=22"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
-            }
-        },
         "node_modules/tap": {
-            "version": "21.1.1",
-            "resolved": "https://registry.npmjs.org/tap/-/tap-21.1.1.tgz",
-            "integrity": "sha512-WQQkoJw2LbusXPq9d6A3N4SHCpiog1AbjSVyNlqRh6uiCrtra24bZRCURX8cgBjKV4W22dcRevvhMp24+N/oVg==",
+            "version": "21.6.2",
+            "resolved": "https://registry.npmjs.org/tap/-/tap-21.6.2.tgz",
+            "integrity": "sha512-rEuxX+EVGQ6JOEyRnLQ80fa7v5s8yutpRA11LAjP6t/B6I0/mTWkaW0NfVoX5XDX3z5x9HVEt2dojSrJLcyp9A==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
-                "@tapjs/after": "3.0.2",
-                "@tapjs/after-each": "4.0.2",
-                "@tapjs/asserts": "4.0.2",
-                "@tapjs/before": "4.0.2",
-                "@tapjs/before-each": "4.0.2",
-                "@tapjs/chdir": "3.0.2",
-                "@tapjs/core": "4.0.2",
-                "@tapjs/filter": "4.0.2",
-                "@tapjs/fixture": "4.0.2",
-                "@tapjs/intercept": "4.0.2",
-                "@tapjs/mock": "4.0.2",
-                "@tapjs/node-serialize": "4.0.2",
-                "@tapjs/run": "4.0.3",
-                "@tapjs/snapshot": "4.0.2",
-                "@tapjs/spawn": "4.0.2",
-                "@tapjs/stdin": "4.0.2",
-                "@tapjs/test": "4.0.2",
-                "@tapjs/typescript": "3.1.1",
-                "@tapjs/worker": "4.0.2",
-                "resolve-import": "2"
+                "@tapjs/after": "3.3.4",
+                "@tapjs/after-each": "4.3.4",
+                "@tapjs/asserts": "4.3.4",
+                "@tapjs/before": "4.3.4",
+                "@tapjs/before-each": "4.3.4",
+                "@tapjs/chdir": "3.3.4",
+                "@tapjs/core": "4.5.2",
+                "@tapjs/filter": "4.3.4",
+                "@tapjs/fixture": "4.3.4",
+                "@tapjs/intercept": "4.3.4",
+                "@tapjs/mock": "4.4.2",
+                "@tapjs/node-serialize": "4.3.4",
+                "@tapjs/run": "4.5.2",
+                "@tapjs/snapshot": "4.3.4",
+                "@tapjs/spawn": "4.3.4",
+                "@tapjs/stdin": "4.3.4",
+                "@tapjs/test": "4.4.2",
+                "@tapjs/typescript": "3.5.4",
+                "@tapjs/worker": "4.3.4",
+                "resolve-import": "^2.4.0"
             },
             "bin": {
                 "tap": "dist/esm/run.mjs"
@@ -5255,14 +4353,14 @@
             }
         },
         "node_modules/tap-parser": {
-            "version": "18.0.1",
-            "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-18.0.1.tgz",
-            "integrity": "sha512-Jcu51jzPCDXzuFvyCDGRfJWm2mJ0yRLf+aqWINk4P03HM9uyrq2SLavn26N8qwVz//GZysNt3DQNvKrYjidB3g==",
+            "version": "18.3.0",
+            "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-18.3.0.tgz",
+            "integrity": "sha512-sa0M18e6RARfO0Lrm1zbQvb+7G4G/ThkFIJFvjeH1DKenl4xwyUgpRUCb5Jq64Xe086p4auiLvRzfpRjGd3Zow==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
                 "events-to-array": "^2.0.3",
-                "tap-yaml": "4.0.1"
+                "tap-yaml": "4.3.0"
             },
             "bin": {
                 "tap-parser": "bin/cmd.cjs"
@@ -5272,9 +4370,9 @@
             }
         },
         "node_modules/tap-yaml": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-4.0.1.tgz",
-            "integrity": "sha512-2D5FSjxSP8v3LCh3N1KZa+FoIaVh2f7bFaUNd4mm74Kx/a5JqKu6QspEQZpAwH1Ez2SlbguOMWKHPTels2xbzA==",
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-4.3.0.tgz",
+            "integrity": "sha512-48BiwXj3cUa1Lt6BLzfawJGZVihfRCY19gyjaHftQpe8ulEmB9gZW9kChQkdb0+L4YUlGWUJMpWRAJ/9bPSgVA==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
@@ -5286,11 +4384,11 @@
             }
         },
         "node_modules/tar": {
-            "version": "7.5.1",
-            "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.1.tgz",
-            "integrity": "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==",
+            "version": "7.5.13",
+            "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz",
+            "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==",
             "dev": true,
-            "license": "ISC",
+            "license": "BlueOak-1.0.0",
             "dependencies": {
                 "@isaacs/fs-minipass": "^4.0.0",
                 "chownr": "^3.0.0",
@@ -5302,48 +4400,78 @@
                 "node": ">=18"
             }
         },
-        "node_modules/tcompare": {
-            "version": "6.4.5",
-            "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-6.4.5.tgz",
-            "integrity": "sha512-Whuz9xlKKI2XXICKDSDRKjXdBuC6gBNOgmEUtH7UFyQeYzfUMQ19DyjZULarGKDGFhgOg3CJ+IQUEfpkOPg0Uw==",
+        "node_modules/test-exclude": {
+            "version": "7.0.2",
+            "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.2.tgz",
+            "integrity": "sha512-u9E6A+ZDYdp7a4WnarkXPZOx8Ilz46+kby6p1yZ8zsGTz9gYa6FIS7lj2oezzNKmtdyyJNNmmXDppga5GB7kSw==",
             "dev": true,
+            "license": "ISC",
             "dependencies": {
-                "diff": "^5.1.0",
-                "react-element-to-jsx-string": "^15.0.0"
+                "@istanbuljs/schema": "^0.1.2",
+                "glob": "^10.4.1",
+                "minimatch": "^10.2.2"
             },
             "engines": {
-                "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20"
+                "node": ">=18"
             }
         },
-        "node_modules/test-exclude": {
-            "version": "7.0.1",
-            "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz",
-            "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==",
+        "node_modules/test-exclude/node_modules/@isaacs/cliui": {
+            "version": "8.0.2",
+            "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+            "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
-                "@istanbuljs/schema": "^0.1.2",
-                "glob": "^10.4.1",
-                "minimatch": "^9.0.4"
+                "string-width": "^5.1.2",
+                "string-width-cjs": "npm:string-width@^4.2.0",
+                "strip-ansi": "^7.0.1",
+                "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+                "wrap-ansi": "^8.1.0",
+                "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
             },
             "engines": {
-                "node": ">=18"
+                "node": ">=12"
             }
         },
         "node_modules/test-exclude/node_modules/brace-expansion": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
-            "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+            "version": "2.0.3",
+            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
+            "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
                 "balanced-match": "^1.0.0"
             }
         },
+        "node_modules/test-exclude/node_modules/emoji-regex": {
+            "version": "9.2.2",
+            "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+            "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/test-exclude/node_modules/foreground-child": {
+            "version": "3.3.1",
+            "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
+            "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "cross-spawn": "^7.0.6",
+                "signal-exit": "^4.0.1"
+            },
+            "engines": {
+                "node": ">=14"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/isaacs"
+            }
+        },
         "node_modules/test-exclude/node_modules/glob": {
-            "version": "10.4.5",
-            "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
-            "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+            "version": "10.5.0",
+            "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
+            "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
+            "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
             "dev": true,
             "license": "ISC",
             "dependencies": {
@@ -5361,14 +4489,14 @@
                 "url": "https://github.com/sponsors/isaacs"
             }
         },
-        "node_modules/test-exclude/node_modules/minimatch": {
-            "version": "9.0.5",
-            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-            "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+        "node_modules/test-exclude/node_modules/glob/node_modules/minimatch": {
+            "version": "9.0.9",
+            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+            "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
-                "brace-expansion": "^2.0.1"
+                "brace-expansion": "^2.0.2"
             },
             "engines": {
                 "node": ">=16 || 14 >=14.17"
@@ -5377,6 +4505,82 @@
                 "url": "https://github.com/sponsors/isaacs"
             }
         },
+        "node_modules/test-exclude/node_modules/jackspeak": {
+            "version": "3.4.3",
+            "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+            "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+            "dev": true,
+            "license": "BlueOak-1.0.0",
+            "dependencies": {
+                "@isaacs/cliui": "^8.0.2"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/isaacs"
+            },
+            "optionalDependencies": {
+                "@pkgjs/parseargs": "^0.11.0"
+            }
+        },
+        "node_modules/test-exclude/node_modules/lru-cache": {
+            "version": "10.4.3",
+            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+            "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/test-exclude/node_modules/path-scurry": {
+            "version": "1.11.1",
+            "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+            "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+            "dev": true,
+            "license": "BlueOak-1.0.0",
+            "dependencies": {
+                "lru-cache": "^10.2.0",
+                "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+            },
+            "engines": {
+                "node": ">=16 || 14 >=14.18"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/isaacs"
+            }
+        },
+        "node_modules/test-exclude/node_modules/string-width": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+            "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "eastasianwidth": "^0.2.0",
+                "emoji-regex": "^9.2.2",
+                "strip-ansi": "^7.0.1"
+            },
+            "engines": {
+                "node": ">=12"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/test-exclude/node_modules/wrap-ansi": {
+            "version": "8.1.0",
+            "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+            "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-styles": "^6.1.0",
+                "string-width": "^5.0.1",
+                "strip-ansi": "^7.0.1"
+            },
+            "engines": {
+                "node": ">=12"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+            }
+        },
         "node_modules/tinyglobby": {
             "version": "0.2.15",
             "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
@@ -5413,9 +4617,9 @@
             }
         },
         "node_modules/tinyglobby/node_modules/picomatch": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
-            "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+            "version": "4.0.4",
+            "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+            "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
             "dev": true,
             "license": "MIT",
             "engines": {
@@ -5425,19 +4629,6 @@
                 "url": "https://github.com/sponsors/jonschlinkert"
             }
         },
-        "node_modules/to-regex-range": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-            "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "is-number": "^7.0.0"
-            },
-            "engines": {
-                "node": ">=8.0"
-            }
-        },
         "node_modules/trivial-deferred": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-2.0.0.tgz",
@@ -5449,44 +4640,33 @@
             }
         },
         "node_modules/tshy": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/tshy/-/tshy-3.0.3.tgz",
-            "integrity": "sha512-bUX6HQCvVdPyPLy2VZuKw95CtYD5aRSEgYEK7IPV9l9xN/z284kl5/hIwOfLY/mZOOdhrO34dFOOcL1VUMVyaw==",
+            "version": "3.3.2",
+            "resolved": "https://registry.npmjs.org/tshy/-/tshy-3.3.2.tgz",
+            "integrity": "sha512-vOIXkqMtBWNjKUR/c99+6N50LhWdnKG1xE3+5wf8IPdzxx2lcIFPvbGgFdBBgoTMbdNb8mz06MUm7hY+TFnJcw==",
             "dev": true,
             "license": "BlueOak-1.0.0",
             "dependencies": {
+                "@typescript/native-preview": "^7.0.0-dev.20260218.1",
                 "chalk": "^5.6.2",
                 "chokidar": "^4.0.3",
-                "foreground-child": "^3.3.1",
+                "foreground-child": "^4.0.0",
+                "jsonc-simple-parser": "^3.0.0",
                 "minimatch": "^10.0.3",
                 "mkdirp": "^3.0.1",
                 "polite-json": "^5.0.0",
-                "resolve-import": "^2.0.0",
-                "rimraf": "^6.0.1",
-                "sync-content": "^2.0.1",
+                "resolve-import": "^2.4.0",
+                "rimraf": "^6.1.2",
+                "sync-content": "^2.0.3",
                 "typescript": "^5.9.3",
                 "walk-up-path": "^4.0.0"
             },
             "bin": {
-                "tshy": "dist/esm/index.js"
+                "tshy": "dist/esm/bin-min.mjs"
             },
             "engines": {
                 "node": "20 || >=22"
             }
         },
-        "node_modules/tshy/node_modules/chalk": {
-            "version": "5.6.2",
-            "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
-            "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": "^12.17.0 || ^14.13 || >=16.0.0"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/chalk?sponsor=1"
-            }
-        },
         "node_modules/tshy/node_modules/chokidar": {
             "version": "4.0.3",
             "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
@@ -5503,22 +4683,6 @@
                 "url": "https://paulmillr.com/funding/"
             }
         },
-        "node_modules/tshy/node_modules/minimatch": {
-            "version": "10.0.3",
-            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz",
-            "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "@isaacs/brace-expansion": "^5.0.0"
-            },
-            "engines": {
-                "node": "20 || >=22"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
-            }
-        },
         "node_modules/tshy/node_modules/readdirp": {
             "version": "4.1.2",
             "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
@@ -5533,91 +4697,21 @@
                 "url": "https://paulmillr.com/funding/"
             }
         },
-        "node_modules/tshy/node_modules/rimraf": {
-            "version": "6.0.1",
-            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz",
-            "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "glob": "^11.0.0",
-                "package-json-from-dist": "^1.0.0"
-            },
-            "bin": {
-                "rimraf": "dist/esm/bin.mjs"
-            },
-            "engines": {
-                "node": "20 || >=22"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/isaacs"
-            }
-        },
         "node_modules/tslib": {
             "version": "2.6.2",
             "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
             "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
         },
         "node_modules/tuf-js": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-4.0.0.tgz",
-            "integrity": "sha512-Lq7ieeGvXDXwpoSmOSgLWVdsGGV9J4a77oDTAPe/Ltrqnnm/ETaRlBAQTH5JatEh8KXuE6sddf9qAv1Q2282Hg==",
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-4.1.0.tgz",
+            "integrity": "sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@tufjs/models": "4.0.0",
-                "debug": "^4.4.1",
-                "make-fetch-happen": "^15.0.0"
-            },
-            "engines": {
-                "node": "^20.17.0 || >=22.9.0"
-            }
-        },
-        "node_modules/tuf-js/node_modules/@npmcli/agent": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz",
-            "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "agent-base": "^7.1.0",
-                "http-proxy-agent": "^7.0.0",
-                "https-proxy-agent": "^7.0.1",
-                "lru-cache": "^11.2.1",
-                "socks-proxy-agent": "^8.0.3"
-            },
-            "engines": {
-                "node": "^20.17.0 || >=22.9.0"
-            }
-        },
-        "node_modules/tuf-js/node_modules/lru-cache": {
-            "version": "11.2.2",
-            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
-            "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
-            "dev": true,
-            "license": "ISC",
-            "engines": {
-                "node": "20 || >=22"
-            }
-        },
-        "node_modules/tuf-js/node_modules/make-fetch-happen": {
-            "version": "15.0.2",
-            "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.2.tgz",
-            "integrity": "sha512-sI1NY4lWlXBAfjmCtVWIIpBypbBdhHtcjnwnv+gtCnsaOffyFil3aidszGC8hgzJe+fT1qix05sWxmD/Bmf/oQ==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "@npmcli/agent": "^4.0.0",
-                "cacache": "^20.0.1",
-                "http-cache-semantics": "^4.1.1",
-                "minipass": "^7.0.2",
-                "minipass-fetch": "^4.0.0",
-                "minipass-flush": "^1.0.5",
-                "minipass-pipeline": "^1.2.4",
-                "negotiator": "^1.0.0",
-                "proc-log": "^5.0.0",
-                "promise-retry": "^2.0.1",
-                "ssri": "^12.0.0"
+                "@tufjs/models": "4.1.0",
+                "debug": "^4.4.3",
+                "make-fetch-happen": "^15.0.1"
             },
             "engines": {
                 "node": "^20.17.0 || >=22.9.0"
@@ -5663,39 +4757,13 @@
             }
         },
         "node_modules/undici-types": {
-            "version": "7.14.0",
-            "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.14.0.tgz",
-            "integrity": "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==",
+            "version": "7.18.2",
+            "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz",
+            "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==",
             "dev": true,
             "license": "MIT",
             "peer": true
         },
-        "node_modules/unique-filename": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-4.0.0.tgz",
-            "integrity": "sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "unique-slug": "^5.0.0"
-            },
-            "engines": {
-                "node": "^18.17.0 || >=20.5.0"
-            }
-        },
-        "node_modules/unique-slug": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-5.0.0.tgz",
-            "integrity": "sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==",
-            "dev": true,
-            "license": "ISC",
-            "dependencies": {
-                "imurmurhash": "^0.1.4"
-            },
-            "engines": {
-                "node": "^18.17.0 || >=20.5.0"
-            }
-        },
         "node_modules/uri-js": {
             "version": "4.4.1",
             "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -5748,25 +4816,14 @@
                 "@jridgewell/sourcemap-codec": "^1.4.14"
             }
         },
-        "node_modules/validate-npm-package-license": {
-            "version": "3.0.4",
-            "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
-            "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
-            "dev": true,
-            "license": "Apache-2.0",
-            "dependencies": {
-                "spdx-correct": "^3.0.0",
-                "spdx-expression-parse": "^3.0.0"
-            }
-        },
         "node_modules/validate-npm-package-name": {
-            "version": "6.0.2",
-            "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-6.0.2.tgz",
-            "integrity": "sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==",
+            "version": "7.0.2",
+            "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz",
+            "integrity": "sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==",
             "dev": true,
             "license": "ISC",
             "engines": {
-                "node": "^18.17.0 || >=20.5.0"
+                "node": "^20.17.0 || >=22.9.0"
             }
         },
         "node_modules/walk-up-path": {
@@ -5809,60 +4866,6 @@
                 "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "node_modules/widest-line/node_modules/ansi-regex": {
-            "version": "6.2.2",
-            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
-            "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": ">=12"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-            }
-        },
-        "node_modules/widest-line/node_modules/emoji-regex": {
-            "version": "10.6.0",
-            "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
-            "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
-            "dev": true,
-            "license": "MIT"
-        },
-        "node_modules/widest-line/node_modules/string-width": {
-            "version": "7.2.0",
-            "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
-            "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "emoji-regex": "^10.3.0",
-                "get-east-asian-width": "^1.0.0",
-                "strip-ansi": "^7.1.0"
-            },
-            "engines": {
-                "node": ">=18"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/sindresorhus"
-            }
-        },
-        "node_modules/widest-line/node_modules/strip-ansi": {
-            "version": "7.1.2",
-            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
-            "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "ansi-regex": "^6.0.1"
-            },
-            "engines": {
-                "node": ">=12"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-            }
-        },
         "node_modules/word-count": {
             "version": "0.3.1",
             "resolved": "https://registry.npmjs.org/word-count/-/word-count-0.3.1.tgz",
@@ -5878,16 +4881,18 @@
             }
         },
         "node_modules/wrap-ansi": {
-            "version": "8.1.0",
-            "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
-            "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+            "version": "9.0.2",
+            "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+            "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
+            "dev": true,
+            "license": "MIT",
             "dependencies": {
-                "ansi-styles": "^6.1.0",
-                "string-width": "^5.0.1",
-                "strip-ansi": "^7.0.1"
+                "ansi-styles": "^6.2.1",
+                "string-width": "^7.0.0",
+                "strip-ansi": "^7.1.0"
             },
             "engines": {
-                "node": ">=12"
+                "node": ">=18"
             },
             "funding": {
                 "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
@@ -5898,6 +4903,8 @@
             "version": "7.0.0",
             "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
             "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+            "dev": true,
+            "license": "MIT",
             "dependencies": {
                 "ansi-styles": "^4.0.0",
                 "string-width": "^4.1.0",
@@ -5910,15 +4917,45 @@
                 "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
             }
         },
+        "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+            "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+            "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "color-convert": "^2.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+            }
+        },
         "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
             "version": "8.0.0",
             "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-            "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+            "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+            "dev": true,
+            "license": "MIT"
         },
         "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": {
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
             "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+            "dev": true,
+            "license": "MIT",
             "engines": {
                 "node": ">=8"
             }
@@ -5927,6 +4964,8 @@
             "version": "4.2.3",
             "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
             "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+            "dev": true,
+            "license": "MIT",
             "dependencies": {
                 "emoji-regex": "^8.0.0",
                 "is-fullwidth-code-point": "^3.0.0",
@@ -5936,46 +4975,23 @@
                 "node": ">=8"
             }
         },
-        "node_modules/wrap-ansi/node_modules/ansi-regex": {
+        "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
             "version": "6.0.1",
-            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-            "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-            "engines": {
-                "node": ">=12"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-            }
-        },
-        "node_modules/wrap-ansi/node_modules/ansi-styles": {
-            "version": "6.2.1",
-            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
-            "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
-            "engines": {
-                "node": ">=12"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-            }
-        },
-        "node_modules/wrap-ansi/node_modules/strip-ansi": {
-            "version": "7.1.0",
-            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-            "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+            "dev": true,
+            "license": "MIT",
             "dependencies": {
-                "ansi-regex": "^6.0.1"
+                "ansi-regex": "^5.0.1"
             },
             "engines": {
-                "node": ">=12"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+                "node": ">=8"
             }
         },
         "node_modules/ws": {
-            "version": "8.18.3",
-            "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
-            "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
+            "version": "8.20.0",
+            "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz",
+            "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==",
             "dev": true,
             "license": "MIT",
             "engines": {
@@ -6015,9 +5031,9 @@
             }
         },
         "node_modules/yaml": {
-            "version": "2.8.1",
-            "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz",
-            "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==",
+            "version": "2.8.3",
+            "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",
+            "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
             "dev": true,
             "license": "ISC",
             "bin": {
@@ -6025,6 +5041,9 @@
             },
             "engines": {
                 "node": ">= 14.6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/eemeli"
             }
         },
         "node_modules/yaml-types": {
@@ -6070,6 +5089,16 @@
                 "node": ">=12"
             }
         },
+        "node_modules/yargs/node_modules/ansi-regex": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+            "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=8"
+            }
+        },
         "node_modules/yargs/node_modules/emoji-regex": {
             "version": "8.0.0",
             "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -6102,6 +5131,19 @@
                 "node": ">=8"
             }
         },
+        "node_modules/yargs/node_modules/strip-ansi": {
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-regex": "^5.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
         "node_modules/yocto-queue": {
             "version": "0.1.0",
             "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
@@ -6130,14 +5172,6 @@
             "requires": {
                 "ansi-styles": "^6.2.1",
                 "is-fullwidth-code-point": "^4.0.0"
-            },
-            "dependencies": {
-                "ansi-styles": {
-                    "version": "6.2.3",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
-                    "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
-                    "dev": true
-                }
             }
         },
         "@base2/pretty-print-object": {
@@ -6177,71 +5211,62 @@
             }
         },
         "@eslint-community/regexpp": {
-            "version": "4.12.1",
-            "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
-            "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="
+            "version": "4.12.2",
+            "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
+            "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="
         },
         "@eslint/config-array": {
-            "version": "0.21.0",
-            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz",
-            "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==",
+            "version": "0.23.3",
+            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.3.tgz",
+            "integrity": "sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==",
             "requires": {
-                "@eslint/object-schema": "^2.1.6",
+                "@eslint/object-schema": "^3.0.3",
                 "debug": "^4.3.1",
-                "minimatch": "^3.1.2"
+                "minimatch": "^10.2.4"
             }
         },
         "@eslint/config-helpers": {
-            "version": "0.4.0",
-            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.0.tgz",
-            "integrity": "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==",
+            "version": "0.5.3",
+            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.3.tgz",
+            "integrity": "sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==",
             "requires": {
-                "@eslint/core": "^0.16.0"
+                "@eslint/core": "^1.1.1"
             }
         },
         "@eslint/core": {
-            "version": "0.16.0",
-            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz",
-            "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==",
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.1.tgz",
+            "integrity": "sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==",
             "requires": {
                 "@types/json-schema": "^7.0.15"
             }
         },
-        "@eslint/eslintrc": {
-            "version": "3.3.1",
-            "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
-            "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
-            "requires": {
-                "ajv": "^6.12.4",
-                "debug": "^4.3.2",
-                "espree": "^10.0.1",
-                "globals": "^14.0.0",
-                "ignore": "^5.2.0",
-                "import-fresh": "^3.2.1",
-                "js-yaml": "^4.1.0",
-                "minimatch": "^3.1.2",
-                "strip-json-comments": "^3.1.1"
-            }
-        },
         "@eslint/js": {
-            "version": "9.37.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.37.0.tgz",
-            "integrity": "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg=="
+            "version": "10.0.1",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz",
+            "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==",
+            "requires": {}
         },
         "@eslint/object-schema": {
-            "version": "2.1.6",
-            "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz",
-            "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA=="
+            "version": "3.0.3",
+            "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.3.tgz",
+            "integrity": "sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ=="
         },
         "@eslint/plugin-kit": {
-            "version": "0.4.0",
-            "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz",
-            "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==",
+            "version": "0.6.1",
+            "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.1.tgz",
+            "integrity": "sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==",
             "requires": {
-                "@eslint/core": "^0.16.0",
+                "@eslint/core": "^1.1.1",
                 "levn": "^0.4.1"
             }
         },
+        "@gar/promise-retry": {
+            "version": "1.0.3",
+            "resolved": "https://registry.npmjs.org/@gar/promise-retry/-/promise-retry-1.0.3.tgz",
+            "integrity": "sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA==",
+            "dev": true
+        },
         "@humanfs/core": {
             "version": "0.19.1",
             "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
@@ -6273,48 +5298,11 @@
             "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz",
             "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="
         },
-        "@isaacs/balanced-match": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
-            "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
-            "dev": true
-        },
-        "@isaacs/brace-expansion": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
-            "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
-            "dev": true,
-            "requires": {
-                "@isaacs/balanced-match": "^4.0.1"
-            }
-        },
         "@isaacs/cliui": {
-            "version": "8.0.2",
-            "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
-            "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
-            "requires": {
-                "string-width": "^5.1.2",
-                "string-width-cjs": "npm:string-width@^4.2.0",
-                "strip-ansi": "^7.0.1",
-                "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
-                "wrap-ansi": "^8.1.0",
-                "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "6.0.1",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-                    "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA=="
-                },
-                "strip-ansi": {
-                    "version": "7.1.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-                    "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-                    "requires": {
-                        "ansi-regex": "^6.0.1"
-                    }
-                }
-            }
+            "version": "9.0.0",
+            "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz",
+            "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==",
+            "dev": true
         },
         "@isaacs/fs-minipass": {
             "version": "4.0.1",
@@ -6345,9 +5333,26 @@
             },
             "dependencies": {
                 "diff": {
-                    "version": "4.0.2",
-                    "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
-                    "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+                    "version": "4.0.4",
+                    "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz",
+                    "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==",
+                    "dev": true
+                }
+            }
+        },
+        "@isaacs/which": {
+            "version": "7.0.4",
+            "resolved": "https://registry.npmjs.org/@isaacs/which/-/which-7.0.4.tgz",
+            "integrity": "sha512-qXToWZFY9CKvWsveV3R5VHNJLQkHTIJXO9J4Xa1UgNwVCRA2LEsmvWC84MIdnezFLsjn2Q+GzbL/8yVF1/ozJw==",
+            "dev": true,
+            "requires": {
+                "isexe": "^4.0.0"
+            },
+            "dependencies": {
+                "isexe": {
+                    "version": "4.0.0",
+                    "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz",
+                    "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==",
                     "dev": true
                 }
             }
@@ -6426,164 +5431,141 @@
             "optional": true
         },
         "@npmcli/agent": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-3.0.0.tgz",
-            "integrity": "sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==",
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz",
+            "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==",
             "dev": true,
             "requires": {
                 "agent-base": "^7.1.0",
                 "http-proxy-agent": "^7.0.0",
                 "https-proxy-agent": "^7.0.1",
-                "lru-cache": "^10.0.1",
+                "lru-cache": "^11.2.1",
                 "socks-proxy-agent": "^8.0.3"
             }
         },
         "@npmcli/fs": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz",
-            "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==",
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-5.0.0.tgz",
+            "integrity": "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==",
             "dev": true,
             "requires": {
                 "semver": "^7.3.5"
             }
         },
         "@npmcli/git": {
-            "version": "7.0.0",
-            "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.0.tgz",
-            "integrity": "sha512-vnz7BVGtOctJAIHouCJdvWBhsTVSICMeUgZo2c7XAi5d5Rrl80S1H7oPym7K03cRuinK5Q6s2dw36+PgXQTcMA==",
+            "version": "7.0.2",
+            "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.2.tgz",
+            "integrity": "sha512-oeolHDjExNAJAnlYP2qzNjMX/Xi9bmu78C9dIGr4xjobrSKbuMYCph8lTzn4vnW3NjIqVmw/f8BCfouqyJXlRg==",
             "dev": true,
             "requires": {
-                "@npmcli/promise-spawn": "^8.0.0",
-                "ini": "^5.0.0",
+                "@gar/promise-retry": "^1.0.0",
+                "@npmcli/promise-spawn": "^9.0.0",
+                "ini": "^6.0.0",
                 "lru-cache": "^11.2.1",
                 "npm-pick-manifest": "^11.0.1",
-                "proc-log": "^5.0.0",
-                "promise-retry": "^2.0.1",
+                "proc-log": "^6.0.0",
                 "semver": "^7.3.5",
-                "which": "^5.0.0"
+                "which": "^6.0.0"
             },
             "dependencies": {
                 "isexe": {
-                    "version": "3.1.1",
-                    "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
-                    "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
-                    "dev": true
-                },
-                "lru-cache": {
-                    "version": "11.2.2",
-                    "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
-                    "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
+                    "version": "4.0.0",
+                    "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz",
+                    "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==",
                     "dev": true
                 },
                 "which": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
-                    "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
+                    "version": "6.0.1",
+                    "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz",
+                    "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==",
                     "dev": true,
                     "requires": {
-                        "isexe": "^3.1.1"
+                        "isexe": "^4.0.0"
                     }
                 }
             }
         },
         "@npmcli/installed-package-contents": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-3.0.0.tgz",
-            "integrity": "sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q==",
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-4.0.0.tgz",
+            "integrity": "sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==",
             "dev": true,
             "requires": {
-                "npm-bundled": "^4.0.0",
-                "npm-normalize-package-bin": "^4.0.0"
+                "npm-bundled": "^5.0.0",
+                "npm-normalize-package-bin": "^5.0.0"
             }
         },
         "@npmcli/node-gyp": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-4.0.0.tgz",
-            "integrity": "sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA==",
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-5.0.0.tgz",
+            "integrity": "sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==",
             "dev": true
         },
         "@npmcli/package-json": {
-            "version": "7.0.1",
-            "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.1.tgz",
-            "integrity": "sha512-956YUeI0YITbk2+KnirCkD19HLzES0habV+Els+dyZaVsaM6VGSiNwnRu6t3CZaqDLz4KXy2zx+0N/Zy6YjlAA==",
+            "version": "7.0.5",
+            "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.5.tgz",
+            "integrity": "sha512-iVuTlG3ORq2iaVa1IWUxAO/jIp77tUKBhoMjuzYW2kL4MLN1bi/ofqkZ7D7OOwh8coAx1/S2ge0rMdGv8sLSOQ==",
             "dev": true,
             "requires": {
                 "@npmcli/git": "^7.0.0",
-                "glob": "^11.0.3",
+                "glob": "^13.0.0",
                 "hosted-git-info": "^9.0.0",
-                "json-parse-even-better-errors": "^4.0.0",
-                "proc-log": "^5.0.0",
+                "json-parse-even-better-errors": "^5.0.0",
+                "proc-log": "^6.0.0",
                 "semver": "^7.5.3",
-                "validate-npm-package-license": "^3.0.4"
+                "spdx-expression-parse": "^4.0.0"
             }
         },
         "@npmcli/promise-spawn": {
-            "version": "8.0.3",
-            "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-8.0.3.tgz",
-            "integrity": "sha512-Yb00SWaL4F8w+K8YGhQ55+xE4RUNdMHV43WZGsiTM92gS+lC0mGsn7I4hLug7pbao035S6bj3Y3w0cUNGLfmkg==",
+            "version": "9.0.1",
+            "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-9.0.1.tgz",
+            "integrity": "sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==",
             "dev": true,
             "requires": {
-                "which": "^5.0.0"
+                "which": "^6.0.0"
             },
             "dependencies": {
                 "isexe": {
-                    "version": "3.1.1",
-                    "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
-                    "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
+                    "version": "4.0.0",
+                    "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz",
+                    "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==",
                     "dev": true
                 },
                 "which": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
-                    "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
+                    "version": "6.0.1",
+                    "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz",
+                    "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==",
                     "dev": true,
                     "requires": {
-                        "isexe": "^3.1.1"
+                        "isexe": "^4.0.0"
                     }
                 }
             }
         },
         "@npmcli/redact": {
-            "version": "3.2.2",
-            "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-3.2.2.tgz",
-            "integrity": "sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg==",
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-4.0.0.tgz",
+            "integrity": "sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==",
             "dev": true
         },
         "@npmcli/run-script": {
-            "version": "10.0.0",
-            "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.0.tgz",
-            "integrity": "sha512-vaQj4nccJbAslopIvd49pQH2NhUp7G9pY4byUtmwhe37ZZuubGrx0eB9hW2F37uVNRuDDK6byFGXF+7JCuMSZg==",
+            "version": "10.0.4",
+            "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.4.tgz",
+            "integrity": "sha512-mGUWr1uMnf0le2TwfOZY4SFxZGXGfm4Jtay/nwAa2FLNAKXUoUwaGwBMNH36UHPtinWfTSJ3nqFQr0091CxVGg==",
             "dev": true,
             "requires": {
-                "@npmcli/node-gyp": "^4.0.0",
+                "@npmcli/node-gyp": "^5.0.0",
                 "@npmcli/package-json": "^7.0.0",
-                "@npmcli/promise-spawn": "^8.0.0",
-                "node-gyp": "^11.0.0",
-                "proc-log": "^5.0.0",
-                "which": "^5.0.0"
-            },
-            "dependencies": {
-                "isexe": {
-                    "version": "3.1.1",
-                    "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
-                    "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
-                    "dev": true
-                },
-                "which": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
-                    "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
-                    "dev": true,
-                    "requires": {
-                        "isexe": "^3.1.1"
-                    }
-                }
+                "@npmcli/promise-spawn": "^9.0.0",
+                "node-gyp": "^12.1.0",
+                "proc-log": "^6.0.0"
             }
         },
         "@pkgjs/parseargs": {
             "version": "0.11.0",
             "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
             "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+            "dev": true,
             "optional": true
         },
         "@sigstore/bundle": {
@@ -6596,9 +5578,9 @@
             }
         },
         "@sigstore/core": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.0.0.tgz",
-            "integrity": "sha512-NgbJ+aW9gQl/25+GIEGYcCyi8M+ng2/5X04BMuIgoDfgvp18vDcoNHOQjQsG9418HGNYRxG3vfEXaR1ayD37gg==",
+            "version": "3.2.0",
+            "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.2.0.tgz",
+            "integrity": "sha512-kxHrDQ9YgfrWUSXU0cjsQGv8JykOFZQ9ErNKbFPWzk3Hgpwu8x2hHrQ9IdA8yl+j9RTLTC3sAF3Tdq1IQCP4oA==",
             "dev": true
         },
         "@sigstore/protobuf-specs": {
@@ -6608,120 +5590,80 @@
             "dev": true
         },
         "@sigstore/sign": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.0.1.tgz",
-            "integrity": "sha512-KFNGy01gx9Y3IBPG/CergxR9RZpN43N+lt3EozEfeoyqm8vEiLxwRl3ZO5sPx3Obv1ix/p7FWOlPc2Jgwfp9PA==",
+            "version": "4.1.1",
+            "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.1.1.tgz",
+            "integrity": "sha512-Hf4xglukg0XXQ2RiD5vSoLjdPe8OBUPA8XeVjUObheuDcWdYWrnH/BNmxZCzkAy68MzmNCxXLeurJvs6hcP2OQ==",
             "dev": true,
             "requires": {
+                "@gar/promise-retry": "^1.0.2",
                 "@sigstore/bundle": "^4.0.0",
-                "@sigstore/core": "^3.0.0",
+                "@sigstore/core": "^3.2.0",
                 "@sigstore/protobuf-specs": "^0.5.0",
-                "make-fetch-happen": "^15.0.2",
-                "proc-log": "^5.0.0",
-                "promise-retry": "^2.0.1"
-            },
-            "dependencies": {
-                "@npmcli/agent": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz",
-                    "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==",
-                    "dev": true,
-                    "requires": {
-                        "agent-base": "^7.1.0",
-                        "http-proxy-agent": "^7.0.0",
-                        "https-proxy-agent": "^7.0.1",
-                        "lru-cache": "^11.2.1",
-                        "socks-proxy-agent": "^8.0.3"
-                    }
-                },
-                "lru-cache": {
-                    "version": "11.2.2",
-                    "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
-                    "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
-                    "dev": true
-                },
-                "make-fetch-happen": {
-                    "version": "15.0.2",
-                    "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.2.tgz",
-                    "integrity": "sha512-sI1NY4lWlXBAfjmCtVWIIpBypbBdhHtcjnwnv+gtCnsaOffyFil3aidszGC8hgzJe+fT1qix05sWxmD/Bmf/oQ==",
-                    "dev": true,
-                    "requires": {
-                        "@npmcli/agent": "^4.0.0",
-                        "cacache": "^20.0.1",
-                        "http-cache-semantics": "^4.1.1",
-                        "minipass": "^7.0.2",
-                        "minipass-fetch": "^4.0.0",
-                        "minipass-flush": "^1.0.5",
-                        "minipass-pipeline": "^1.2.4",
-                        "negotiator": "^1.0.0",
-                        "proc-log": "^5.0.0",
-                        "promise-retry": "^2.0.1",
-                        "ssri": "^12.0.0"
-                    }
-                }
+                "make-fetch-happen": "^15.0.4",
+                "proc-log": "^6.1.0"
             }
         },
         "@sigstore/tuf": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.0.tgz",
-            "integrity": "sha512-0QFuWDHOQmz7t66gfpfNO6aEjoFrdhkJaej/AOqb4kqWZVbPWFZifXZzkxyQBB1OwTbkhdT3LNpMFxwkTvf+2w==",
+            "version": "4.0.2",
+            "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.2.tgz",
+            "integrity": "sha512-TCAzTy0xzdP79EnxSjq9KQ3eaR7+FmudLC6eRKknVKZbV7ZNlGLClAAQb/HMNJ5n2OBNk2GT1tEmU0xuPr+SLQ==",
             "dev": true,
             "requires": {
                 "@sigstore/protobuf-specs": "^0.5.0",
-                "tuf-js": "^4.0.0"
+                "tuf-js": "^4.1.0"
             }
         },
         "@sigstore/verify": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-3.0.0.tgz",
-            "integrity": "sha512-moXtHH33AobOhTZF8xcX1MpOFqdvfCk7v6+teJL8zymBiDXwEsQH6XG9HGx2VIxnJZNm4cNSzflTLDnQLmIdmw==",
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-3.1.0.tgz",
+            "integrity": "sha512-mNe0Iigql08YupSOGv197YdHpPPr+EzDZmfCgMc7RPNaZTw5aLN01nBl6CHJOh3BGtnMIj83EeN4butBchc8Ag==",
             "dev": true,
             "requires": {
                 "@sigstore/bundle": "^4.0.0",
-                "@sigstore/core": "^3.0.0",
+                "@sigstore/core": "^3.1.0",
                 "@sigstore/protobuf-specs": "^0.5.0"
             }
         },
         "@tapjs/after": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/after/-/after-3.0.2.tgz",
-            "integrity": "sha512-Xb0bqJWXfp6VVSx1T96lNJM67v2XxJCG3o7mH77weB+RzwAuf0uzGYy/hxP+nUAWh9yH+lHzuHclL+DR8Zlu3Q==",
+            "version": "3.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/after/-/after-3.3.4.tgz",
+            "integrity": "sha512-Y8DL0F9Ux6Swe7b5g4qLFgJUEFrVr5fhmVOENw4D/x7rDRyx/3c86Ya1p9iJrpkE2RnvdGq9AxR/rTM137Y7Lg==",
             "dev": true,
             "requires": {
                 "is-actual-promise": "^1.0.1"
             }
         },
         "@tapjs/after-each": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/after-each/-/after-each-4.0.2.tgz",
-            "integrity": "sha512-OQEENy55qtJ7WaMnIQvf0YaV4/YjI2B9+ezn679Vrptg/xMbaG5fSJz/Z5BFroh05HiWRo+MGu66q7Lb00kDJg==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/after-each/-/after-each-4.3.4.tgz",
+            "integrity": "sha512-TM1OWz7Ht3aimbT/MLYnoywI9SBGsTus6TQ+94n1yjr1izO3K21PP5Q9UYdqZ2Qq1WiZmGa+CZKUZANUn1ZcvQ==",
             "dev": true,
             "requires": {
                 "function-loop": "^4.0.0"
             }
         },
         "@tapjs/asserts": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/asserts/-/asserts-4.0.2.tgz",
-            "integrity": "sha512-XeAYvYMu61/Gc9Dpn+0QZCjUTbbQE7DckiZNhQNMuMwAXUDEZR/TbxJNysIdMWq2ag75TQQ6ylCUJovy7HPDlg==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/asserts/-/asserts-4.3.4.tgz",
+            "integrity": "sha512-1kf2q0oQ7LCZKy5l4Oe7/ZVijhJ9YxbS4qmqGtj7cYwOw4Q78KNLwthh14c9EBbI2QHKUDS2LaLM8a1qMLmPiA==",
             "dev": true,
             "requires": {
-                "@tapjs/stack": "4.0.1",
+                "@tapjs/stack": "4.3.0",
                 "is-actual-promise": "^1.0.1",
-                "tcompare": "9.0.1",
+                "tcompare": "9.3.0",
                 "trivial-deferred": "^2.0.0"
             },
             "dependencies": {
                 "diff": {
-                    "version": "8.0.2",
-                    "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz",
-                    "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==",
+                    "version": "8.0.4",
+                    "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz",
+                    "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==",
                     "dev": true
                 },
                 "tcompare": {
-                    "version": "9.0.1",
-                    "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.0.1.tgz",
-                    "integrity": "sha512-P9i7K3RnKWb3mH0AmDCChVd7FP0LEo4VSBJMhjKB+Rg+Tvq09ytnys8ygsx5ve1di2fI4IW+HhjhIXoeiRVogw==",
+                    "version": "9.3.0",
+                    "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.3.0.tgz",
+                    "integrity": "sha512-6kFTU2xlXNFU88/DAAIQvjBu5znTGx8QPnFtaKiLin2OtspHXyevSu0iUTZt4UrSfuRC6fIahRCqaQIhXlsTVQ==",
                     "dev": true,
                     "requires": {
                         "diff": "^8.0.2",
@@ -6731,92 +5673,75 @@
             }
         },
         "@tapjs/before": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/before/-/before-4.0.2.tgz",
-            "integrity": "sha512-ODi0rXOqCWZLS1j6fJ2iyqaXy6B/y75x8Y940hRAe0DfPPf48IgZY84+GfWWVIkRqmbYZS/F0rwcegPHxI/xHg==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/before/-/before-4.3.4.tgz",
+            "integrity": "sha512-53n/8/RktPkbCuZveDTYiplbrzWjFkYAnmYCrFixESsFoUrkfTCPjeCRmojBS14zuRdVe4kLsX6XWYkaUpLdZA==",
             "dev": true,
             "requires": {
                 "is-actual-promise": "^1.0.1"
             }
         },
         "@tapjs/before-each": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/before-each/-/before-each-4.0.2.tgz",
-            "integrity": "sha512-CXNWJ/pvqu3DwNjgnOX9zfmxYz7OvxQ4w7X/1uyFUblWarYYOUqtLsF/FrBHn3rqOowNtP5KJAzY9Wx5UT3r+g==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/before-each/-/before-each-4.3.4.tgz",
+            "integrity": "sha512-WkLsDvCjBrxrRkyhEBpfmGObUsf8Eb+tsqlxnGUG67XbPMkwkP/AoUPonc/g1Nv+pwtR+t5j6maNblrubWuG3A==",
             "dev": true,
             "requires": {
                 "function-loop": "^4.0.0"
             }
         },
         "@tapjs/chdir": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/chdir/-/chdir-3.0.2.tgz",
-            "integrity": "sha512-KYDxkkzGeEhAT33VDWqIx8FRLk+cOzVsj/E0JBRd45n18EHT7C/wE/Nqhu+843nVhABp/c5BZMb+Rib/fCQV1g==",
+            "version": "3.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/chdir/-/chdir-3.3.4.tgz",
+            "integrity": "sha512-B37eGrs47xseJ7dm9ikhStX7KNqflvZViT2lMqVACeNvoxSpRgy1pu7cPix4wKvBlZCtNYaOD8iDNm+5nDfvSQ==",
             "dev": true,
             "requires": {}
         },
         "@tapjs/config": {
-            "version": "5.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/config/-/config-5.0.2.tgz",
-            "integrity": "sha512-VfvYwcRGC3fbBAuRZs8VheA4YTa1CaJlYonHM2YM1Uu+UGeLCmvxJjIOBauhtp+F/QczUsJxqOjDy9z9ny1UYQ==",
+            "version": "5.5.2",
+            "resolved": "https://registry.npmjs.org/@tapjs/config/-/config-5.5.2.tgz",
+            "integrity": "sha512-GQyKl40fGamoSvT4SsfQfZyaHT8fboNW5OhrA1hhMc34di5j/efiD15VlNVbPGE51BZSs5M3Jw7YukF2/Cg8CA==",
             "dev": true,
             "requires": {
-                "@tapjs/core": "4.0.2",
-                "@tapjs/test": "4.0.2",
+                "@tapjs/core": "4.5.2",
+                "@tapjs/test": "4.4.2",
                 "chalk": "^5.6.2",
-                "jackspeak": "^4.0.1",
+                "jackspeak": "^4.2.3",
                 "polite-json": "^5.0.0",
-                "tap-yaml": "4.0.1",
+                "tap-yaml": "4.3.0",
                 "walk-up-path": "^4.0.0"
-            },
-            "dependencies": {
-                "chalk": {
-                    "version": "5.6.2",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
-                    "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
-                    "dev": true
-                },
-                "jackspeak": {
-                    "version": "4.1.1",
-                    "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz",
-                    "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==",
-                    "dev": true,
-                    "requires": {
-                        "@isaacs/cliui": "^8.0.2"
-                    }
-                }
             }
         },
         "@tapjs/core": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/core/-/core-4.0.2.tgz",
-            "integrity": "sha512-kzM90qsqHAJOTUMVjB3G26c3Ka4/HFg253lSt3pxBFesIHneIZe6Fre1NEWnHZPLmmzBO6HRRffc9zDxXcaeRw==",
+            "version": "4.5.2",
+            "resolved": "https://registry.npmjs.org/@tapjs/core/-/core-4.5.2.tgz",
+            "integrity": "sha512-0KKabYyBN4W2CRgnD0rOhDvexbMLMPuT0OElQTz5ezCsx1QGtuUHP9TmRXEGCJAoeL44Us0L2DxPpS4BUW1KEQ==",
             "dev": true,
             "requires": {
-                "@tapjs/processinfo": "^3.1.8",
-                "@tapjs/stack": "4.0.1",
-                "@tapjs/test": "4.0.2",
+                "@tapjs/processinfo": "^3.1.9",
+                "@tapjs/stack": "4.3.0",
+                "@tapjs/test": "4.4.2",
                 "async-hook-domain": "^4.0.1",
                 "diff": "^8.0.2",
                 "is-actual-promise": "^1.0.1",
                 "minipass": "^7.0.4",
                 "signal-exit": "4.1",
-                "tap-parser": "18.0.1",
-                "tap-yaml": "4.0.1",
-                "tcompare": "9.0.1",
+                "tap-parser": "18.3.0",
+                "tap-yaml": "4.3.0",
+                "tcompare": "9.3.0",
                 "trivial-deferred": "^2.0.0"
             },
             "dependencies": {
                 "diff": {
-                    "version": "8.0.2",
-                    "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz",
-                    "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==",
+                    "version": "8.0.4",
+                    "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz",
+                    "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==",
                     "dev": true
                 },
                 "tcompare": {
-                    "version": "9.0.1",
-                    "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.0.1.tgz",
-                    "integrity": "sha512-P9i7K3RnKWb3mH0AmDCChVd7FP0LEo4VSBJMhjKB+Rg+Tvq09ytnys8ygsx5ve1di2fI4IW+HhjhIXoeiRVogw==",
+                    "version": "9.3.0",
+                    "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.3.0.tgz",
+                    "integrity": "sha512-6kFTU2xlXNFU88/DAAIQvjBu5znTGx8QPnFtaKiLin2OtspHXyevSu0iUTZt4UrSfuRC6fIahRCqaQIhXlsTVQ==",
                     "dev": true,
                     "requires": {
                         "diff": "^8.0.2",
@@ -6826,82 +5751,71 @@
             }
         },
         "@tapjs/error-serdes": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/@tapjs/error-serdes/-/error-serdes-4.0.1.tgz",
-            "integrity": "sha512-8GiOXbgGIRBcSGnPXYuiboy0xJQDMP2OcILnghHX/jzJKi2l9mxX6FTonOWj/0qsf5Ji5Z4/DIKRcYINIxaejg==",
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/@tapjs/error-serdes/-/error-serdes-4.3.0.tgz",
+            "integrity": "sha512-qP266uvPm2G95ClPFpqAN6n4nicLbHrZYbZWl0UO+biOdmvjSSuxeY5f7YFygTl+UuzlyxjlRgHTq8qifnqTcw==",
             "dev": true,
             "requires": {
                 "minipass": "^7.0.4"
             }
         },
         "@tapjs/filter": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/filter/-/filter-4.0.2.tgz",
-            "integrity": "sha512-Pfi1u1naoUL4G4AoJOUEUQauaZeF4gGk8MZ8It2ht60gopYsxy9sSmIKlKPvZm13f110pZxJfO+hogappAmDfw==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/filter/-/filter-4.3.4.tgz",
+            "integrity": "sha512-Bpbahk/Bv30ZfGoDpZVjGhvg8Cq2yqCZcawd+4qtTTSDY+V7GEpdJGu2/2EvwXP+s4PklPx2kFry8X9m6OtAog==",
             "dev": true,
             "requires": {}
         },
         "@tapjs/fixture": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/fixture/-/fixture-4.0.2.tgz",
-            "integrity": "sha512-h161PA9ngT3zG6iLybAUlrSWx31OFx7Av1aR4FHvui9IkseXaF0x6gxS0MMaXwdyRYrD7lFvmU7SRTDlvvdeBA==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/fixture/-/fixture-4.3.4.tgz",
+            "integrity": "sha512-zRv1vD2H/2abt0S5Yr5ICV/ZaIqXmusBZ6H4Qbih9oE2jvbs6AVDz5Td0adZbWurtHrPLuOFTIz2UsbJfhCCcw==",
             "dev": true,
             "requires": {
                 "mkdirp": "^3.0.0",
                 "rimraf": "^6.0.0"
-            },
-            "dependencies": {
-                "rimraf": {
-                    "version": "6.0.1",
-                    "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz",
-                    "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==",
-                    "dev": true,
-                    "requires": {
-                        "glob": "^11.0.0",
-                        "package-json-from-dist": "^1.0.0"
-                    }
-                }
             }
         },
         "@tapjs/intercept": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/intercept/-/intercept-4.0.2.tgz",
-            "integrity": "sha512-rlZcO/Yf9vU8ypfQEO0c/QUCcGCr0IMJltg53805ILuNhTDR7x0vlJSvJ7fLsuoezkUwXlWdlED6ZqIID7RokA==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/intercept/-/intercept-4.3.4.tgz",
+            "integrity": "sha512-7ifEMPmp4yKHQ7PqdPwCetipFLvCegbIyKigEDds/p03ZNFJjgF06D9T4vc/m0sA5SKkPrHVTOU0UzaSrliP7w==",
             "dev": true,
             "requires": {
-                "@tapjs/after": "3.0.2",
-                "@tapjs/stack": "4.0.1"
+                "@tapjs/after": "3.3.4",
+                "@tapjs/stack": "4.3.0"
             }
         },
         "@tapjs/mock": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/mock/-/mock-4.0.2.tgz",
-            "integrity": "sha512-48o3xz3Xl83Ei25KOR5aWytbCYUl33GQAoQm4khFpTyI/v3fjyR9jDgFLAT7IWix8tRrrkMf+PynmZkWVQ4oKA==",
+            "version": "4.4.2",
+            "resolved": "https://registry.npmjs.org/@tapjs/mock/-/mock-4.4.2.tgz",
+            "integrity": "sha512-B6SfNWjWCPvjN9CaHe45lEcl2ZFDkQIUoF5jPthwi2mYxHLfyFFEqorZJhguoTs7ToeXvIqquqE/Luk9IeuKBQ==",
             "dev": true,
             "requires": {
-                "@tapjs/after": "3.0.2",
-                "@tapjs/stack": "4.0.1",
-                "resolve-import": "^2.0.0",
+                "@tapjs/after": "3.3.4",
+                "@tapjs/stack": "4.3.0",
+                "resolve-import": "^2.4.0",
                 "walk-up-path": "^4.0.0"
             }
         },
         "@tapjs/node-serialize": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/node-serialize/-/node-serialize-4.0.2.tgz",
-            "integrity": "sha512-oparVnZqbwF7O7IQn4nfpnsddtmlkWPB033uzZbvSW6v0U6T8DBENgKAfzJ2sNQH3f2Xaa3dqK+N5brwQa3P2g==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/node-serialize/-/node-serialize-4.3.4.tgz",
+            "integrity": "sha512-SECDvjBS7NVCiCZ6vEtMwtxxSuR61NHBva+PlIQ1mU0asoTYxV9lpRNEAb9UHFKpquEDlk+bLg2iN01a2nfMuw==",
             "dev": true,
             "requires": {
-                "@tapjs/error-serdes": "4.0.1",
-                "@tapjs/stack": "4.0.1",
-                "tap-parser": "18.0.1"
+                "@tapjs/error-serdes": "4.3.0",
+                "@tapjs/stack": "4.3.0",
+                "tap-parser": "18.3.0"
             }
         },
         "@tapjs/processinfo": {
-            "version": "3.1.8",
-            "resolved": "https://registry.npmjs.org/@tapjs/processinfo/-/processinfo-3.1.8.tgz",
-            "integrity": "sha512-FIriEB+qqArPhmVYc1PZwRHD99myRdl7C9Oe/uts04Q2LOxQ5MEmqP9XOP8vVYzpDOYwmL8OmL6eOYt9eZlQKQ==",
+            "version": "3.1.9",
+            "resolved": "https://registry.npmjs.org/@tapjs/processinfo/-/processinfo-3.1.9.tgz",
+            "integrity": "sha512-yIbYH9ROI5m5F2B5Hpk6t89OkHBrDbL3qncPO9OfPuSvJsvAIDG91I0hxGQNohdaxmqz5L4QiIYc5Y0KmtLzCQ==",
             "dev": true,
             "requires": {
+                "node-options-to-argv": "^1.0.0",
                 "pirates": "^4.0.5",
                 "process-on-spawn": "^1.0.0",
                 "signal-exit": "^4.0.2",
@@ -6909,13 +5823,13 @@
             }
         },
         "@tapjs/reporter": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/@tapjs/reporter/-/reporter-4.0.3.tgz",
-            "integrity": "sha512-Mdx3+C3f4q3llawja5V2RVIfFzr1KhEm57i9xUJTgM5kHcPjrMw14aQUCwYxLSYSd5esOubnnV5lD9rxQb+tyQ==",
+            "version": "4.4.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/reporter/-/reporter-4.4.4.tgz",
+            "integrity": "sha512-svWmpJgMQxe4iiKOVr/Hi5kGHJNBDp2Nr8gD0aQuAQ4fp9gOh2LFQXa2Jv7LBKhMjC7UaiW/X7k1qEVk2nOfvg==",
             "dev": true,
             "requires": {
-                "@tapjs/config": "5.0.2",
-                "@tapjs/stack": "4.0.1",
+                "@tapjs/config": "5.5.2",
+                "@tapjs/stack": "4.3.0",
                 "chalk": "^5.6.2",
                 "ink": "^5.2.1",
                 "minipass": "^7.0.4",
@@ -6924,27 +5838,21 @@
                 "prismjs-terminal": "^1.2.3",
                 "react": "^18.2.0",
                 "string-length": "^6.0.0",
-                "tap-parser": "18.0.1",
-                "tap-yaml": "4.0.1",
-                "tcompare": "9.0.1"
+                "tap-parser": "18.3.0",
+                "tap-yaml": "4.3.0",
+                "tcompare": "9.3.0"
             },
             "dependencies": {
-                "chalk": {
-                    "version": "5.6.2",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
-                    "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
-                    "dev": true
-                },
                 "diff": {
-                    "version": "8.0.2",
-                    "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz",
-                    "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==",
+                    "version": "8.0.4",
+                    "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz",
+                    "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==",
                     "dev": true
                 },
                 "tcompare": {
-                    "version": "9.0.1",
-                    "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.0.1.tgz",
-                    "integrity": "sha512-P9i7K3RnKWb3mH0AmDCChVd7FP0LEo4VSBJMhjKB+Rg+Tvq09ytnys8ygsx5ve1di2fI4IW+HhjhIXoeiRVogw==",
+                    "version": "9.3.0",
+                    "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.3.0.tgz",
+                    "integrity": "sha512-6kFTU2xlXNFU88/DAAIQvjBu5znTGx8QPnFtaKiLin2OtspHXyevSu0iUTZt4UrSfuRC6fIahRCqaQIhXlsTVQ==",
                     "dev": true,
                     "requires": {
                         "diff": "^8.0.2",
@@ -6954,46 +5862,41 @@
             }
         },
         "@tapjs/run": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/@tapjs/run/-/run-4.0.3.tgz",
-            "integrity": "sha512-kkoMk5OJPgxigZZwu47ix2Zo8U64t8YiFiz+Iec5HrSW1BNgQyhurfMbc8uGjBHh3OhvJBaWhWuzctn0ROJrEQ==",
-            "dev": true,
-            "requires": {
-                "@tapjs/after": "3.0.2",
-                "@tapjs/before": "4.0.2",
-                "@tapjs/config": "5.0.2",
-                "@tapjs/processinfo": "^3.1.8",
-                "@tapjs/reporter": "4.0.3",
-                "@tapjs/spawn": "4.0.2",
-                "@tapjs/stdin": "4.0.2",
-                "@tapjs/test": "4.0.2",
+            "version": "4.5.2",
+            "resolved": "https://registry.npmjs.org/@tapjs/run/-/run-4.5.2.tgz",
+            "integrity": "sha512-Oq5YZvoGxEohRWK8P1wHPIAnudEOHPd/bIWawFtRn0ZGvF7bRduZlHpf4eEIrRHKY84G/I3fmC354604cejxiQ==",
+            "dev": true,
+            "requires": {
+                "@isaacs/which": "^7.0.4",
+                "@tapjs/after": "3.3.4",
+                "@tapjs/before": "4.3.4",
+                "@tapjs/config": "5.5.2",
+                "@tapjs/processinfo": "^3.1.9",
+                "@tapjs/reporter": "4.4.4",
+                "@tapjs/spawn": "4.3.4",
+                "@tapjs/stdin": "4.3.4",
+                "@tapjs/test": "4.4.2",
                 "c8": "^10.1.3",
                 "chalk": "^5.6.2",
                 "chokidar": "^4.0.2",
-                "foreground-child": "^3.1.1",
-                "glob": "^11.0.0",
+                "foreground-child": "^4.0.0",
+                "glob": "^13.0.2",
                 "minipass": "^7.0.4",
                 "mkdirp": "^3.0.1",
+                "node-options-to-argv": "^1.0.0",
                 "opener": "^1.5.2",
-                "pacote": "^21.0.3",
+                "pacote": "^21.0.4",
                 "path-scurry": "^2.0.0",
-                "resolve-import": "^2.0.0",
+                "resolve-import": "^2.4.0",
                 "rimraf": "^6.0.0",
                 "semver": "^7.7.2",
                 "signal-exit": "^4.1.0",
-                "tap-parser": "18.0.1",
-                "tap-yaml": "4.0.1",
-                "tcompare": "9.0.1",
-                "trivial-deferred": "^2.0.0",
-                "which": "^5.0.0"
+                "tap-parser": "18.3.0",
+                "tap-yaml": "4.3.0",
+                "tcompare": "9.3.0",
+                "trivial-deferred": "^2.0.0"
             },
             "dependencies": {
-                "chalk": {
-                    "version": "5.6.2",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
-                    "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
-                    "dev": true
-                },
                 "chokidar": {
                     "version": "4.0.3",
                     "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
@@ -7004,91 +5907,50 @@
                     }
                 },
                 "diff": {
-                    "version": "8.0.2",
-                    "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz",
-                    "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==",
+                    "version": "8.0.4",
+                    "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz",
+                    "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==",
                     "dev": true
                 },
-                "isexe": {
-                    "version": "3.1.1",
-                    "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
-                    "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
-                    "dev": true
-                },
-                "lru-cache": {
-                    "version": "11.2.2",
-                    "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
-                    "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
-                    "dev": true
-                },
-                "path-scurry": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz",
-                    "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==",
-                    "dev": true,
-                    "requires": {
-                        "lru-cache": "^11.0.0",
-                        "minipass": "^7.1.2"
-                    }
-                },
                 "readdirp": {
                     "version": "4.1.2",
                     "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
                     "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
                     "dev": true
                 },
-                "rimraf": {
-                    "version": "6.0.1",
-                    "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz",
-                    "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==",
-                    "dev": true,
-                    "requires": {
-                        "glob": "^11.0.0",
-                        "package-json-from-dist": "^1.0.0"
-                    }
-                },
                 "tcompare": {
-                    "version": "9.0.1",
-                    "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.0.1.tgz",
-                    "integrity": "sha512-P9i7K3RnKWb3mH0AmDCChVd7FP0LEo4VSBJMhjKB+Rg+Tvq09ytnys8ygsx5ve1di2fI4IW+HhjhIXoeiRVogw==",
+                    "version": "9.3.0",
+                    "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.3.0.tgz",
+                    "integrity": "sha512-6kFTU2xlXNFU88/DAAIQvjBu5znTGx8QPnFtaKiLin2OtspHXyevSu0iUTZt4UrSfuRC6fIahRCqaQIhXlsTVQ==",
                     "dev": true,
                     "requires": {
                         "diff": "^8.0.2",
                         "react-element-to-jsx-string": "^15.0.0"
                     }
-                },
-                "which": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
-                    "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
-                    "dev": true,
-                    "requires": {
-                        "isexe": "^3.1.1"
-                    }
                 }
             }
         },
         "@tapjs/snapshot": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/snapshot/-/snapshot-4.0.2.tgz",
-            "integrity": "sha512-PWlWNEH+4x0oN8nemk+2rk3jub2L/7c6A383SD15GadGOT4hYvckqY2mCZarMAoV5xErFZOglGTD9do83TWMPQ==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/snapshot/-/snapshot-4.3.4.tgz",
+            "integrity": "sha512-2sJXaGLJUMakkdJd5iDWRucgyHX7f5eP05m4weqWq9dLzX7p1JFOrWXUwns8RCIY7VX9Vx+4jENlxJOywYjyqg==",
             "dev": true,
             "requires": {
                 "is-actual-promise": "^1.0.1",
-                "tcompare": "9.0.1",
+                "tcompare": "9.3.0",
                 "trivial-deferred": "^2.0.0"
             },
             "dependencies": {
                 "diff": {
-                    "version": "8.0.2",
-                    "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz",
-                    "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==",
+                    "version": "8.0.4",
+                    "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz",
+                    "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==",
                     "dev": true
                 },
                 "tcompare": {
-                    "version": "9.0.1",
-                    "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.0.1.tgz",
-                    "integrity": "sha512-P9i7K3RnKWb3mH0AmDCChVd7FP0LEo4VSBJMhjKB+Rg+Tvq09ytnys8ygsx5ve1di2fI4IW+HhjhIXoeiRVogw==",
+                    "version": "9.3.0",
+                    "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.3.0.tgz",
+                    "integrity": "sha512-6kFTU2xlXNFU88/DAAIQvjBu5znTGx8QPnFtaKiLin2OtspHXyevSu0iUTZt4UrSfuRC6fIahRCqaQIhXlsTVQ==",
                     "dev": true,
                     "requires": {
                         "diff": "^8.0.2",
@@ -7098,120 +5960,99 @@
             }
         },
         "@tapjs/spawn": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/spawn/-/spawn-4.0.2.tgz",
-            "integrity": "sha512-CNOrZFXh+mm2iul/cGRgVA4HMv9GxmtbgQSICMjRrj8VLDzMboW862P+wEvfYrHeXdCGAGWKqTIcsX5pXQVQRA==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/spawn/-/spawn-4.3.4.tgz",
+            "integrity": "sha512-qQY2SSLkXknpL1kndLS1bCPo9vYKV8Ka93UPIllvDEwaY3oUMghh++EOE4dyUxQPgMFpmoUoj8kSbm2hotevbQ==",
             "dev": true,
             "requires": {}
         },
         "@tapjs/stack": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/@tapjs/stack/-/stack-4.0.1.tgz",
-            "integrity": "sha512-Rbyz4XMuZWNxCs+/j0c5idFz4MKBo7uSaNvk6R7Al9jQJzk7Lv0WC2lWW0CV+7t/TUynTFxEwAaY5pIM752WQg==",
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/@tapjs/stack/-/stack-4.3.0.tgz",
+            "integrity": "sha512-SFASe4YaVBzMr/FXTm/QsSzbzXZOmgDNpmY3EU0JNiDCN4izHMUnoXY+Kh0EY35hx9C4JDvRjgv2MSIM7bBygg==",
             "dev": true
         },
         "@tapjs/stdin": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/stdin/-/stdin-4.0.2.tgz",
-            "integrity": "sha512-6e/jQ0I9G6DC9m6Yj3jC6sNAmiwvrPVni3iMpJn3GICs0dROyx1m9wnMBK5wgKNgN2AXfvEOtf5Cby124eHeJQ==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/stdin/-/stdin-4.3.4.tgz",
+            "integrity": "sha512-0kFeaPEGwNWx8R0z9Uq93/CNhAg+9NbTPZW+GXsjuHQSG125g7VZBNBAg2IMeQmVQ9bUWa3+f5TNp/JnLVvJmg==",
             "dev": true,
             "requires": {}
         },
         "@tapjs/test": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/test/-/test-4.0.2.tgz",
-            "integrity": "sha512-J8WOSesfqp6/P5UbChDI5xzREQ96787ZFHLliPva4oi5XevG1TWtfSL47HtbQUtKvWSC7YIWW3CQhcBHRGk6Vg==",
+            "version": "4.4.2",
+            "resolved": "https://registry.npmjs.org/@tapjs/test/-/test-4.4.2.tgz",
+            "integrity": "sha512-YuUgTffPNGzodjeHOsaF/j0/5B/bAqtfgwqUkqa3mWdwqzlmB2AcIA6lBtLaQfbjG8wgGNwYfs3McgxkGRqxfA==",
             "dev": true,
             "requires": {
                 "@isaacs/ts-node-temp-fork-for-pr-2009": "^10.9.7",
-                "@tapjs/after": "3.0.2",
-                "@tapjs/after-each": "4.0.2",
-                "@tapjs/asserts": "4.0.2",
-                "@tapjs/before": "4.0.2",
-                "@tapjs/before-each": "4.0.2",
-                "@tapjs/chdir": "3.0.2",
-                "@tapjs/filter": "4.0.2",
-                "@tapjs/fixture": "4.0.2",
-                "@tapjs/intercept": "4.0.2",
-                "@tapjs/mock": "4.0.2",
-                "@tapjs/node-serialize": "4.0.2",
-                "@tapjs/snapshot": "4.0.2",
-                "@tapjs/spawn": "4.0.2",
-                "@tapjs/stdin": "4.0.2",
-                "@tapjs/typescript": "3.1.1",
-                "@tapjs/worker": "4.0.2",
-                "glob": "^11.0.3",
-                "jackspeak": "^4.0.1",
+                "@tapjs/after": "3.3.4",
+                "@tapjs/after-each": "4.3.4",
+                "@tapjs/asserts": "4.3.4",
+                "@tapjs/before": "4.3.4",
+                "@tapjs/before-each": "4.3.4",
+                "@tapjs/chdir": "3.3.4",
+                "@tapjs/filter": "4.3.4",
+                "@tapjs/fixture": "4.3.4",
+                "@tapjs/intercept": "4.3.4",
+                "@tapjs/mock": "4.4.2",
+                "@tapjs/node-serialize": "4.3.4",
+                "@tapjs/snapshot": "4.3.4",
+                "@tapjs/spawn": "4.3.4",
+                "@tapjs/stdin": "4.3.4",
+                "@tapjs/typescript": "3.5.4",
+                "@tapjs/worker": "4.3.4",
+                "glob": "^13.0.2",
+                "jackspeak": "^4.2.3",
                 "mkdirp": "^3.0.0",
                 "package-json-from-dist": "^1.0.0",
-                "resolve-import": "^2.0.0",
+                "resolve-import": "^2.4.0",
                 "rimraf": "^6.0.0",
-                "sync-content": "^2.0.1",
-                "tap-parser": "18.0.1",
-                "tshy": "^3.0.3",
+                "sync-content": "^2.0.4",
+                "tap-parser": "18.3.0",
+                "tshy": "^3.3.2",
                 "typescript": "5.9",
                 "walk-up-path": "^4.0.0"
-            },
-            "dependencies": {
-                "jackspeak": {
-                    "version": "4.1.1",
-                    "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz",
-                    "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==",
-                    "dev": true,
-                    "requires": {
-                        "@isaacs/cliui": "^8.0.2"
-                    }
-                },
-                "rimraf": {
-                    "version": "6.0.1",
-                    "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz",
-                    "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==",
-                    "dev": true,
-                    "requires": {
-                        "glob": "^11.0.0",
-                        "package-json-from-dist": "^1.0.0"
-                    }
-                }
             }
         },
         "@tapjs/typescript": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/@tapjs/typescript/-/typescript-3.1.1.tgz",
-            "integrity": "sha512-2fxDTeL8X3sm9g0KnHZSD/p9o8tFWYhswRKUq//jv9FA/4XetsKs+ApddPUJEi3AX8+Ma1P1EzjSy/f0z5KIJA==",
+            "version": "3.5.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/typescript/-/typescript-3.5.4.tgz",
+            "integrity": "sha512-z8O10CpbPYoHA876Dlg40qXtM058akP76HNQy+EdNE+AhFo7kold4YBgyjYRU7WDWNlp2B/MPgsy/OZ4PRXQWw==",
             "dev": true,
             "requires": {
                 "@isaacs/ts-node-temp-fork-for-pr-2009": "^10.9.7"
             }
         },
         "@tapjs/worker": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/@tapjs/worker/-/worker-4.0.2.tgz",
-            "integrity": "sha512-o2jzyjEnpRf3xHmduIfO/HXb5m9qRz+tCoiiFmPav+LC7eilSrDP3eGiQwMGbew64PK52KQwQW/LYNRrQsuMxA==",
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/@tapjs/worker/-/worker-4.3.4.tgz",
+            "integrity": "sha512-AvmfwMgJXB/eOwIti/rOvw1l1eHsxUex3lyrhiC6uK5iOmbHWBOFsGHwEfc7Z4eertPM6FUqnZxkxkTEVGueig==",
             "dev": true,
             "requires": {}
         },
         "@tsconfig/node14": {
-            "version": "14.1.5",
-            "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-14.1.5.tgz",
-            "integrity": "sha512-hsldDMdbjF18BgvqFX6rHwqb0wlDh4lxyXmo3VATa7LwL4AFrHijv8Or9ySXBSg9TyysRkldJyAC/kplyF/Mmg==",
+            "version": "14.1.8",
+            "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-14.1.8.tgz",
+            "integrity": "sha512-SjGT+qPvh8Uhc849yNMD0ZIPr69AyB7Z46nMqhrI3gCVocd6mhI0jP4YE4onO/ufpmengRfTxNMpdpKEp2xRIg==",
             "dev": true
         },
         "@tsconfig/node16": {
-            "version": "16.1.5",
-            "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-16.1.5.tgz",
-            "integrity": "sha512-P4GBZdpi6i5NGB12pwLH4oAIPrxl1ZvD8gxA4E7VdUUCik34J7FerrxzoDXtT4ugbrRjLbK5WuHPOUNZJOxuaQ==",
+            "version": "16.1.8",
+            "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-16.1.8.tgz",
+            "integrity": "sha512-T/CfdwFry660WjZor56z0F3pxeCllt8KOxWcHFW6ZEuULKUObTDEMdgtctyuJPxwqyWDsvHRfxHaJ4FIICyoqQ==",
             "dev": true
         },
         "@tsconfig/node18": {
-            "version": "18.2.4",
-            "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.4.tgz",
-            "integrity": "sha512-5xxU8vVs9/FNcvm3gE07fPbn9tl6tqGGWA9tSlwsUEkBxtRnTsNmwrV8gasZ9F/EobaSv9+nu8AxUKccw77JpQ==",
+            "version": "18.2.6",
+            "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.6.tgz",
+            "integrity": "sha512-eAWQzAjPj18tKnDzmWstz4OyWewLUNBm9tdoN9LayzoboRktYx3Enk1ZXPmThj55L7c4VWYq/Bzq0A51znZfhw==",
             "dev": true
         },
         "@tsconfig/node20": {
-            "version": "20.1.6",
-            "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.6.tgz",
-            "integrity": "sha512-sz+Hqx9zwZDpZIV871WSbUzSqNIsXzghZydypnfgzPKLltVJfkINfUeTct31n/tTSa9ZE1ZOfKdRre1uHHquYQ==",
+            "version": "20.1.9",
+            "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.9.tgz",
+            "integrity": "sha512-IjlTv1RsvnPtUcjTqtVsZExKVq+KQx4g5pCP5tI7rAs6Xesl2qFwSz/tPDBC4JajkL/MlezBu3gPUwqRHl+RIg==",
             "dev": true
         },
         "@tufjs/canonical-json": {
@@ -7221,39 +6062,24 @@
             "dev": true
         },
         "@tufjs/models": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-4.0.0.tgz",
-            "integrity": "sha512-h5x5ga/hh82COe+GoD4+gKUeV4T3iaYOxqLt41GRKApinPI7DMidhCmNVTjKfhCWFJIGXaFJee07XczdT4jdZQ==",
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-4.1.0.tgz",
+            "integrity": "sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==",
             "dev": true,
             "requires": {
                 "@tufjs/canonical-json": "2.0.0",
-                "minimatch": "^9.0.5"
-            },
-            "dependencies": {
-                "brace-expansion": {
-                    "version": "2.0.2",
-                    "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
-                    "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
-                    "dev": true,
-                    "requires": {
-                        "balanced-match": "^1.0.0"
-                    }
-                },
-                "minimatch": {
-                    "version": "9.0.5",
-                    "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-                    "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
-                    "dev": true,
-                    "requires": {
-                        "brace-expansion": "^2.0.1"
-                    }
-                }
+                "minimatch": "^10.1.1"
             }
         },
+        "@types/esrecurse": {
+            "version": "4.3.1",
+            "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz",
+            "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw=="
+        },
         "@types/estree": {
-            "version": "1.0.7",
-            "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
-            "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ=="
+            "version": "1.0.8",
+            "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
+            "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="
         },
         "@types/istanbul-lib-coverage": {
             "version": "2.0.6",
@@ -7267,25 +6093,89 @@
             "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="
         },
         "@types/node": {
-            "version": "24.7.2",
-            "resolved": "https://registry.npmjs.org/@types/node/-/node-24.7.2.tgz",
-            "integrity": "sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==",
+            "version": "25.5.0",
+            "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz",
+            "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==",
             "dev": true,
             "peer": true,
             "requires": {
-                "undici-types": "~7.14.0"
+                "undici-types": "~7.18.0"
             }
         },
+        "@typescript/native-preview": {
+            "version": "7.0.0-dev.20260331.1",
+            "resolved": "https://registry.npmjs.org/@typescript/native-preview/-/native-preview-7.0.0-dev.20260331.1.tgz",
+            "integrity": "sha512-Gfy2J/LhydkOHOw+ZWRw0M8Xl3O2bzQXLXIYITdMz2N4GpMm8misAvvCzhqMacOGvazKr1FsL9LIIW2kxk6kzw==",
+            "dev": true,
+            "requires": {
+                "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20260331.1",
+                "@typescript/native-preview-darwin-x64": "7.0.0-dev.20260331.1",
+                "@typescript/native-preview-linux-arm": "7.0.0-dev.20260331.1",
+                "@typescript/native-preview-linux-arm64": "7.0.0-dev.20260331.1",
+                "@typescript/native-preview-linux-x64": "7.0.0-dev.20260331.1",
+                "@typescript/native-preview-win32-arm64": "7.0.0-dev.20260331.1",
+                "@typescript/native-preview-win32-x64": "7.0.0-dev.20260331.1"
+            }
+        },
+        "@typescript/native-preview-darwin-arm64": {
+            "version": "7.0.0-dev.20260331.1",
+            "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-arm64/-/native-preview-darwin-arm64-7.0.0-dev.20260331.1.tgz",
+            "integrity": "sha512-1PRnBCN2csiCzj76YaSBtP4jPLEGBUmVhXHplC+yHOKaxx9nf3HFiFCg/19raInvN/lJ8+Bp1fZ/qIsWAAHiBw==",
+            "dev": true,
+            "optional": true
+        },
+        "@typescript/native-preview-darwin-x64": {
+            "version": "7.0.0-dev.20260331.1",
+            "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-x64/-/native-preview-darwin-x64-7.0.0-dev.20260331.1.tgz",
+            "integrity": "sha512-llXnfLGjl+gXsANLD7UI/gSb3lj7aZW13Rf8sVXQnHJ3/dkJRAm/MgLqdjuuyvYq3pFaleiep+zoLd96rLRqUw==",
+            "dev": true,
+            "optional": true
+        },
+        "@typescript/native-preview-linux-arm": {
+            "version": "7.0.0-dev.20260331.1",
+            "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm/-/native-preview-linux-arm-7.0.0-dev.20260331.1.tgz",
+            "integrity": "sha512-+8AZzA0BRjMkLDvdQKZOMuheRxNGpSWn7sOtoKqo70R915D0TyEynEXX6B7/aw3+Jfn1H5hLRiBjxoVsmdKENw==",
+            "dev": true,
+            "optional": true
+        },
+        "@typescript/native-preview-linux-arm64": {
+            "version": "7.0.0-dev.20260331.1",
+            "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm64/-/native-preview-linux-arm64-7.0.0-dev.20260331.1.tgz",
+            "integrity": "sha512-sH5gALi89jl5ZjAL/UsLDPsjT/nCLRfHl/pw86ablRX10tYsJhJ/RD6J/cl3g39kJ18tIISSbsuIBn+ncanfSA==",
+            "dev": true,
+            "optional": true
+        },
+        "@typescript/native-preview-linux-x64": {
+            "version": "7.0.0-dev.20260331.1",
+            "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-x64/-/native-preview-linux-x64-7.0.0-dev.20260331.1.tgz",
+            "integrity": "sha512-Yic6MYfX7Uit5jLLENzWFIi6tjp4LTLF37KBiVaHZSvEFyX1kqVwu4j9WNeaz81O6fcB/1dZ1MrILgfcqalNBg==",
+            "dev": true,
+            "optional": true
+        },
+        "@typescript/native-preview-win32-arm64": {
+            "version": "7.0.0-dev.20260331.1",
+            "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-arm64/-/native-preview-win32-arm64-7.0.0-dev.20260331.1.tgz",
+            "integrity": "sha512-vGxK6gtGF97zSx9wOpiVME3h9v0tbZbrHHdKA+fLFNvDV0Df8ud89DEePL7l2yKnVVmf0OnjJy6sYoVyj+LIPA==",
+            "dev": true,
+            "optional": true
+        },
+        "@typescript/native-preview-win32-x64": {
+            "version": "7.0.0-dev.20260331.1",
+            "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-x64/-/native-preview-win32-x64-7.0.0-dev.20260331.1.tgz",
+            "integrity": "sha512-oJnNiU9UTDPJp6dOmOUW+/Wzt3MQZXIHsDaU4qM0RiAjFE6S+PIX8s5z/ID0orr4MMroUMiLdolL4OVZolNDSw==",
+            "dev": true,
+            "optional": true
+        },
         "abbrev": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz",
-            "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==",
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz",
+            "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==",
             "dev": true
         },
         "acorn": {
-            "version": "8.15.0",
-            "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
-            "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="
+            "version": "8.16.0",
+            "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
+            "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="
         },
         "acorn-jsx": {
             "version": "5.3.2",
@@ -7294,9 +6184,9 @@
             "requires": {}
         },
         "acorn-walk": {
-            "version": "8.3.4",
-            "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz",
-            "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==",
+            "version": "8.3.5",
+            "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz",
+            "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==",
             "dev": true,
             "requires": {
                 "acorn": "^8.11.0"
@@ -7309,9 +6199,9 @@
             "dev": true
         },
         "ajv": {
-            "version": "6.12.6",
-            "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-            "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+            "version": "6.14.0",
+            "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
+            "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
             "requires": {
                 "fast-deep-equal": "^3.1.1",
                 "fast-json-stable-stringify": "^2.0.0",
@@ -7320,36 +6210,25 @@
             }
         },
         "ansi-escapes": {
-            "version": "7.1.1",
-            "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.1.1.tgz",
-            "integrity": "sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==",
+            "version": "7.3.0",
+            "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz",
+            "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==",
             "dev": true,
             "requires": {
                 "environment": "^1.0.0"
             }
         },
         "ansi-regex": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-            "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
+            "version": "6.2.2",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+            "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+            "dev": true
         },
         "ansi-styles": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-            "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-            "requires": {
-                "color-convert": "^2.0.1"
-            }
-        },
-        "anymatch": {
-            "version": "3.1.3",
-            "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
-            "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
-            "dev": true,
-            "requires": {
-                "normalize-path": "^3.0.0",
-                "picomatch": "^2.0.4"
-            }
+            "version": "6.2.3",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+            "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+            "dev": true
         },
         "arg": {
             "version": "4.1.3",
@@ -7377,30 +6256,22 @@
         "balanced-match": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-            "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
-        },
-        "binary-extensions": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
-            "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+            "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
             "dev": true
         },
         "brace-expansion": {
-            "version": "1.1.12",
-            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
-            "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
-            "requires": {
-                "balanced-match": "^1.0.0",
-                "concat-map": "0.0.1"
-            }
-        },
-        "braces": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
-            "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
-            "dev": true,
+            "version": "5.0.5",
+            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz",
+            "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==",
             "requires": {
-                "fill-range": "^7.1.1"
+                "balanced-match": "^4.0.2"
+            },
+            "dependencies": {
+                "balanced-match": {
+                    "version": "4.0.4",
+                    "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+                    "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="
+                }
             }
         },
         "c8": {
@@ -7420,74 +6291,50 @@
                 "v8-to-istanbul": "^9.0.0",
                 "yargs": "^17.7.2",
                 "yargs-parser": "^21.1.1"
+            },
+            "dependencies": {
+                "foreground-child": {
+                    "version": "3.3.1",
+                    "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
+                    "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+                    "dev": true,
+                    "requires": {
+                        "cross-spawn": "^7.0.6",
+                        "signal-exit": "^4.0.1"
+                    }
+                }
             }
         },
         "cacache": {
-            "version": "20.0.1",
-            "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.1.tgz",
-            "integrity": "sha512-+7LYcYGBYoNqTp1Rv7Ny1YjUo5E0/ftkQtraH3vkfAGgVHc+ouWdC8okAwQgQR7EVIdW6JTzTmhKFwzb+4okAQ==",
+            "version": "20.0.4",
+            "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.4.tgz",
+            "integrity": "sha512-M3Lab8NPYlZU2exsL3bMVvMrMqgwCnMWfdZbK28bn3pK6APT/Te/I8hjRPNu1uwORY9a1eEQoifXbKPQMfMTOA==",
             "dev": true,
             "requires": {
-                "@npmcli/fs": "^4.0.0",
+                "@npmcli/fs": "^5.0.0",
                 "fs-minipass": "^3.0.0",
-                "glob": "^11.0.3",
+                "glob": "^13.0.0",
                 "lru-cache": "^11.1.0",
                 "minipass": "^7.0.3",
                 "minipass-collect": "^2.0.1",
                 "minipass-flush": "^1.0.5",
                 "minipass-pipeline": "^1.2.4",
                 "p-map": "^7.0.2",
-                "ssri": "^12.0.0",
-                "unique-filename": "^4.0.0"
-            },
-            "dependencies": {
-                "lru-cache": {
-                    "version": "11.2.2",
-                    "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
-                    "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
-                    "dev": true
-                }
+                "ssri": "^13.0.0"
             }
         },
-        "callsites": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-            "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
-        },
         "chalk": {
-            "version": "4.1.2",
-            "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-            "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-            "requires": {
-                "ansi-styles": "^4.1.0",
-                "supports-color": "^7.1.0"
-            }
+            "version": "5.6.2",
+            "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+            "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+            "dev": true
         },
         "chokidar": {
-            "version": "3.6.0",
-            "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
-            "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
-            "dev": true,
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz",
+            "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==",
             "requires": {
-                "anymatch": "~3.1.2",
-                "braces": "~3.0.2",
-                "fsevents": "~2.3.2",
-                "glob-parent": "~5.1.2",
-                "is-binary-path": "~2.1.0",
-                "is-glob": "~4.0.1",
-                "normalize-path": "~3.0.0",
-                "readdirp": "~3.6.0"
-            },
-            "dependencies": {
-                "glob-parent": {
-                    "version": "5.1.2",
-                    "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-                    "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-                    "dev": true,
-                    "requires": {
-                        "is-glob": "^4.0.1"
-                    }
-                }
+                "readdirp": "^5.0.0"
             }
         },
         "chownr": {
@@ -7497,9 +6344,9 @@
             "dev": true
         },
         "chroma-js": {
-            "version": "2.4.2",
-            "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz",
-            "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A=="
+            "version": "3.2.0",
+            "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-3.2.0.tgz",
+            "integrity": "sha512-os/OippSlX1RlWWr+QDPcGUZs0uoqr32urfxESG9U93lhUfbnlyckte84Q8P1UQY/qth983AS1JONKmLS4T0nw=="
         },
         "cli-boxes": {
             "version": "3.0.0",
@@ -7526,24 +6373,6 @@
                 "string-width": "^7.0.0"
             },
             "dependencies": {
-                "ansi-regex": {
-                    "version": "6.2.2",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
-                    "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
-                    "dev": true
-                },
-                "ansi-styles": {
-                    "version": "6.2.3",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
-                    "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
-                    "dev": true
-                },
-                "emoji-regex": {
-                    "version": "10.6.0",
-                    "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
-                    "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
-                    "dev": true
-                },
                 "slice-ansi": {
                     "version": "5.0.0",
                     "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz",
@@ -7553,26 +6382,6 @@
                         "ansi-styles": "^6.0.0",
                         "is-fullwidth-code-point": "^4.0.0"
                     }
-                },
-                "string-width": {
-                    "version": "7.2.0",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
-                    "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
-                    "dev": true,
-                    "requires": {
-                        "emoji-regex": "^10.3.0",
-                        "get-east-asian-width": "^1.0.0",
-                        "strip-ansi": "^7.1.0"
-                    }
-                },
-                "strip-ansi": {
-                    "version": "7.1.2",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
-                    "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^6.0.1"
-                    }
                 }
             }
         },
@@ -7587,6 +6396,21 @@
                 "wrap-ansi": "^7.0.0"
             },
             "dependencies": {
+                "ansi-regex": {
+                    "version": "5.0.1",
+                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+                    "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+                    "dev": true
+                },
+                "ansi-styles": {
+                    "version": "4.3.0",
+                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+                    "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+                    "dev": true,
+                    "requires": {
+                        "color-convert": "^2.0.1"
+                    }
+                },
                 "emoji-regex": {
                     "version": "8.0.0",
                     "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -7610,6 +6434,15 @@
                         "strip-ansi": "^6.0.1"
                     }
                 },
+                "strip-ansi": {
+                    "version": "6.0.1",
+                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+                    "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+                    "dev": true,
+                    "requires": {
+                        "ansi-regex": "^5.0.1"
+                    }
+                },
                 "wrap-ansi": {
                     "version": "7.0.0",
                     "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
@@ -7636,6 +6469,7 @@
             "version": "2.0.1",
             "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
             "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+            "dev": true,
             "requires": {
                 "color-name": "~1.1.4"
             }
@@ -7643,7 +6477,8 @@
         "color-name": {
             "version": "1.1.4",
             "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-            "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+            "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+            "dev": true
         },
         "command-exists": {
             "version": "1.2.9",
@@ -7655,11 +6490,6 @@
             "resolved": "https://registry.npmjs.org/compress-json/-/compress-json-3.4.0.tgz",
             "integrity": "sha512-SxT8uFOacRbP3gfi4aVAulr4KzE933eZWBguVBwuVWv3GTGQAToqpq8rFtdbIVgeCOH7RpPuXKQrPPd087b8uA=="
         },
-        "concat-map": {
-            "version": "0.0.1",
-            "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-            "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
-        },
         "convert-source-map": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
@@ -7695,31 +6525,17 @@
             "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
             "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
         },
-        "diff": {
-            "version": "5.2.0",
-            "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
-            "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
-            "dev": true
-        },
         "eastasianwidth": {
             "version": "0.2.0",
             "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
-            "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
+            "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+            "dev": true
         },
         "emoji-regex": {
-            "version": "9.2.2",
-            "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
-            "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
-        },
-        "encoding": {
-            "version": "0.1.13",
-            "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
-            "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
-            "dev": true,
-            "optional": true,
-            "requires": {
-                "iconv-lite": "^0.6.2"
-            }
+            "version": "10.6.0",
+            "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
+            "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
+            "dev": true
         },
         "env-paths": {
             "version": "2.2.1",
@@ -7733,16 +6549,10 @@
             "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==",
             "dev": true
         },
-        "err-code": {
-            "version": "2.0.3",
-            "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
-            "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
-            "dev": true
-        },
         "es-toolkit": {
-            "version": "1.40.0",
-            "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.40.0.tgz",
-            "integrity": "sha512-8o6w0KFmU0CiIl0/Q/BCEOabF2IJaELM1T2PWj6e8KqzHv1gdx+7JtFnDwOx1kJH/isJ5NwlDG1nCr1HrRF94Q==",
+            "version": "1.45.1",
+            "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.45.1.tgz",
+            "integrity": "sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw==",
             "dev": true
         },
         "escalade": {
@@ -7757,32 +6567,28 @@
             "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
         },
         "eslint": {
-            "version": "9.37.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.37.0.tgz",
-            "integrity": "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==",
+            "version": "10.1.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.1.0.tgz",
+            "integrity": "sha512-S9jlY/ELKEUwwQnqWDO+f+m6sercqOPSqXM5Go94l7DOmxHVDgmSFGWEzeE/gwgTAr0W103BWt0QLe/7mabIvA==",
             "requires": {
                 "@eslint-community/eslint-utils": "^4.8.0",
-                "@eslint-community/regexpp": "^4.12.1",
-                "@eslint/config-array": "^0.21.0",
-                "@eslint/config-helpers": "^0.4.0",
-                "@eslint/core": "^0.16.0",
-                "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.37.0",
-                "@eslint/plugin-kit": "^0.4.0",
+                "@eslint-community/regexpp": "^4.12.2",
+                "@eslint/config-array": "^0.23.3",
+                "@eslint/config-helpers": "^0.5.3",
+                "@eslint/core": "^1.1.1",
+                "@eslint/plugin-kit": "^0.6.1",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
                 "@humanwhocodes/retry": "^0.4.2",
                 "@types/estree": "^1.0.6",
-                "@types/json-schema": "^7.0.15",
-                "ajv": "^6.12.4",
-                "chalk": "^4.0.0",
+                "ajv": "^6.14.0",
                 "cross-spawn": "^7.0.6",
                 "debug": "^4.3.2",
                 "escape-string-regexp": "^4.0.0",
-                "eslint-scope": "^8.4.0",
-                "eslint-visitor-keys": "^4.2.1",
-                "espree": "^10.4.0",
-                "esquery": "^1.5.0",
+                "eslint-scope": "^9.1.2",
+                "eslint-visitor-keys": "^5.0.1",
+                "espree": "^11.2.0",
+                "esquery": "^1.7.0",
                 "esutils": "^2.0.2",
                 "fast-deep-equal": "^3.1.3",
                 "file-entry-cache": "^8.0.0",
@@ -7792,40 +6598,41 @@
                 "imurmurhash": "^0.1.4",
                 "is-glob": "^4.0.0",
                 "json-stable-stringify-without-jsonify": "^1.0.1",
-                "lodash.merge": "^4.6.2",
-                "minimatch": "^3.1.2",
+                "minimatch": "^10.2.4",
                 "natural-compare": "^1.4.0",
                 "optionator": "^0.9.3"
             }
         },
         "eslint-scope": {
-            "version": "8.4.0",
-            "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
-            "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
+            "version": "9.1.2",
+            "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz",
+            "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==",
             "requires": {
+                "@types/esrecurse": "^4.3.1",
+                "@types/estree": "^1.0.8",
                 "esrecurse": "^4.3.0",
                 "estraverse": "^5.2.0"
             }
         },
         "eslint-visitor-keys": {
-            "version": "4.2.1",
-            "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
-            "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
+            "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="
         },
         "espree": {
-            "version": "10.4.0",
-            "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
-            "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
+            "version": "11.2.0",
+            "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz",
+            "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==",
             "requires": {
-                "acorn": "^8.15.0",
+                "acorn": "^8.16.0",
                 "acorn-jsx": "^5.3.2",
-                "eslint-visitor-keys": "^4.2.1"
+                "eslint-visitor-keys": "^5.0.1"
             }
         },
         "esquery": {
-            "version": "1.5.0",
-            "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
-            "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+            "version": "1.7.0",
+            "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
+            "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
             "requires": {
                 "estraverse": "^5.1.0"
             }
@@ -7883,15 +6690,6 @@
                 "flat-cache": "^4.0.0"
             }
         },
-        "fill-range": {
-            "version": "7.1.1",
-            "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
-            "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
-            "dev": true,
-            "requires": {
-                "to-regex-range": "^5.0.1"
-            }
-        },
         "find-up": {
             "version": "5.0.0",
             "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
@@ -7911,9 +6709,9 @@
             }
         },
         "flatted": {
-            "version": "3.3.3",
-            "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
-            "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="
+            "version": "3.4.2",
+            "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz",
+            "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA=="
         },
         "flexsearch": {
             "version": "0.7.43",
@@ -7921,11 +6719,11 @@
             "integrity": "sha512-c5o/+Um8aqCSOXGcZoqZOm+NqtVwNsvVpWv6lfmSclU954O3wvQKxxK8zj74fPaSJbXpSLTs4PRhh+wnoCXnKg=="
         },
         "foreground-child": {
-            "version": "3.3.1",
-            "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
-            "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+            "version": "4.0.3",
+            "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-4.0.3.tgz",
+            "integrity": "sha512-yeXZaNbCBGaT9giTpLPBdtedzjwhlJBUoL/R4BVQU5mn0TQXOHwVIl1Q2DMuBIdNno4ktA1abZ7dQFVxD6uHxw==",
+            "dev": true,
             "requires": {
-                "cross-spawn": "^7.0.6",
                 "signal-exit": "^4.0.1"
             }
         },
@@ -7944,13 +6742,6 @@
                 "minipass": "^7.0.3"
             }
         },
-        "fsevents": {
-            "version": "2.3.2",
-            "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-            "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-            "dev": true,
-            "optional": true
-        },
         "function-loop": {
             "version": "4.0.0",
             "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-4.0.0.tgz",
@@ -7964,59 +6755,19 @@
             "dev": true
         },
         "get-east-asian-width": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz",
-            "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==",
+            "version": "1.5.0",
+            "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz",
+            "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==",
             "dev": true
         },
         "glob": {
-            "version": "11.0.3",
-            "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz",
-            "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==",
-            "dev": true,
+            "version": "13.0.6",
+            "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz",
+            "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",
             "requires": {
-                "foreground-child": "^3.3.1",
-                "jackspeak": "^4.1.1",
-                "minimatch": "^10.0.3",
-                "minipass": "^7.1.2",
-                "package-json-from-dist": "^1.0.0",
-                "path-scurry": "^2.0.0"
-            },
-            "dependencies": {
-                "jackspeak": {
-                    "version": "4.1.1",
-                    "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz",
-                    "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==",
-                    "dev": true,
-                    "requires": {
-                        "@isaacs/cliui": "^8.0.2"
-                    }
-                },
-                "lru-cache": {
-                    "version": "11.2.2",
-                    "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
-                    "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
-                    "dev": true
-                },
-                "minimatch": {
-                    "version": "10.0.3",
-                    "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz",
-                    "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==",
-                    "dev": true,
-                    "requires": {
-                        "@isaacs/brace-expansion": "^5.0.0"
-                    }
-                },
-                "path-scurry": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz",
-                    "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==",
-                    "dev": true,
-                    "requires": {
-                        "lru-cache": "^11.0.0",
-                        "minipass": "^7.1.2"
-                    }
-                }
+                "minimatch": "^10.2.2",
+                "minipass": "^7.1.3",
+                "path-scurry": "^2.0.2"
             }
         },
         "glob-parent": {
@@ -8027,11 +6778,6 @@
                 "is-glob": "^4.0.3"
             }
         },
-        "globals": {
-            "version": "14.0.0",
-            "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
-            "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="
-        },
         "graceful-fs": {
             "version": "4.2.11",
             "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
@@ -8041,7 +6787,8 @@
         "has-flag": {
             "version": "4.0.0",
             "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-            "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+            "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+            "dev": true
         },
         "hosted-git-info": {
             "version": "9.0.2",
@@ -8050,14 +6797,6 @@
             "dev": true,
             "requires": {
                 "lru-cache": "^11.1.0"
-            },
-            "dependencies": {
-                "lru-cache": {
-                    "version": "11.2.2",
-                    "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
-                    "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
-                    "dev": true
-                }
             }
         },
         "html-escaper": {
@@ -8093,9 +6832,9 @@
             }
         },
         "iconv-lite": {
-            "version": "0.6.3",
-            "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
-            "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+            "version": "0.7.2",
+            "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz",
+            "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==",
             "dev": true,
             "optional": true,
             "requires": {
@@ -8114,17 +6853,6 @@
             "dev": true,
             "requires": {
                 "minimatch": "^10.0.3"
-            },
-            "dependencies": {
-                "minimatch": {
-                    "version": "10.0.3",
-                    "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz",
-                    "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==",
-                    "dev": true,
-                    "requires": {
-                        "@isaacs/brace-expansion": "^5.0.0"
-                    }
-                }
             }
         },
         "image-size": {
@@ -8132,15 +6860,6 @@
             "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz",
             "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w=="
         },
-        "import-fresh": {
-            "version": "3.3.1",
-            "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
-            "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
-            "requires": {
-                "parent-module": "^1.0.0",
-                "resolve-from": "^4.0.0"
-            }
-        },
         "imurmurhash": {
             "version": "0.1.4",
             "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
@@ -8153,9 +6872,9 @@
             "dev": true
         },
         "ini": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/ini/-/ini-5.0.0.tgz",
-            "integrity": "sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==",
+            "version": "6.0.0",
+            "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz",
+            "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==",
             "dev": true
         },
         "ink": {
@@ -8190,73 +6909,18 @@
                 "yoga-layout": "~3.2.1"
             },
             "dependencies": {
-                "ansi-regex": {
-                    "version": "6.2.2",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
-                    "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
-                    "dev": true
-                },
-                "ansi-styles": {
-                    "version": "6.2.3",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
-                    "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
-                    "dev": true
-                },
-                "chalk": {
-                    "version": "5.6.2",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
-                    "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
-                    "dev": true
-                },
-                "emoji-regex": {
-                    "version": "10.6.0",
-                    "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
-                    "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
-                    "dev": true
-                },
                 "signal-exit": {
                     "version": "3.0.7",
                     "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
                     "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
                     "dev": true
-                },
-                "string-width": {
-                    "version": "7.2.0",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
-                    "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
-                    "dev": true,
-                    "requires": {
-                        "emoji-regex": "^10.3.0",
-                        "get-east-asian-width": "^1.0.0",
-                        "strip-ansi": "^7.1.0"
-                    }
-                },
-                "strip-ansi": {
-                    "version": "7.1.2",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
-                    "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^6.0.1"
-                    }
-                },
-                "wrap-ansi": {
-                    "version": "9.0.2",
-                    "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
-                    "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^6.2.1",
-                        "string-width": "^7.0.0",
-                        "strip-ansi": "^7.1.0"
-                    }
                 }
             }
         },
         "ip-address": {
-            "version": "10.0.1",
-            "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz",
-            "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==",
+            "version": "10.1.0",
+            "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz",
+            "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==",
             "dev": true
         },
         "is-actual-promise": {
@@ -8265,15 +6929,6 @@
             "integrity": "sha512-xsFiO1of0CLsQnPZ1iXHNTyR9YszOeWKYv+q6n8oSFW3ipooFJ1j1lbRMgiMCr+pp2gLruESI4zb5Ak6eK5OnQ==",
             "dev": true
         },
-        "is-binary-path": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-            "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-            "dev": true,
-            "requires": {
-                "binary-extensions": "^2.0.0"
-            }
-        },
         "is-extglob": {
             "version": "2.1.1",
             "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -8299,12 +6954,6 @@
             "integrity": "sha512-eUuAjybVTHMYWm/U+vBO1sY/JOCgoPCXRxzdju0K+K0BiGW0SChEL1MLC0PoCIR1OlPo5YAp8HuQoUlsWEICwg==",
             "dev": true
         },
-        "is-number": {
-            "version": "7.0.0",
-            "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-            "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-            "dev": true
-        },
         "is-plain-object": {
             "version": "5.0.0",
             "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
@@ -8344,12 +6993,12 @@
             }
         },
         "jackspeak": {
-            "version": "3.1.2",
-            "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.1.2.tgz",
-            "integrity": "sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==",
+            "version": "4.2.3",
+            "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz",
+            "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==",
+            "dev": true,
             "requires": {
-                "@isaacs/cliui": "^8.0.2",
-                "@pkgjs/parseargs": "^0.11.0"
+                "@isaacs/cliui": "^9.0.0"
             }
         },
         "js-tokens": {
@@ -8359,9 +7008,9 @@
             "dev": true
         },
         "js-yaml": {
-            "version": "4.1.0",
-            "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
-            "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+            "version": "4.1.1",
+            "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+            "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
             "requires": {
                 "argparse": "^2.0.1"
             }
@@ -8377,9 +7026,9 @@
             "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
         },
         "json-parse-even-better-errors": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz",
-            "integrity": "sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==",
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-5.0.0.tgz",
+            "integrity": "sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==",
             "dev": true
         },
         "json-schema-traverse": {
@@ -8392,6 +7041,15 @@
             "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
             "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="
         },
+        "jsonc-simple-parser": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/jsonc-simple-parser/-/jsonc-simple-parser-3.0.0.tgz",
+            "integrity": "sha512-0qi9Kuj4JPar4/3b9wZteuPZrTeFzXsQyOZj7hksnReCZN3Vr17Doz7w/i3E9XH7vRkVTHhHES+r1h97I+hfww==",
+            "dev": true,
+            "requires": {
+                "reghex": "^3.0.2"
+            }
+        },
         "jsonparse": {
             "version": "1.3.1",
             "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
@@ -8423,11 +7081,6 @@
                 "p-locate": "^5.0.0"
             }
         },
-        "lodash.merge": {
-            "version": "4.6.2",
-            "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
-            "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
-        },
         "loose-envify": {
             "version": "1.4.0",
             "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -8438,9 +7091,9 @@
             }
         },
         "lru-cache": {
-            "version": "10.2.2",
-            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz",
-            "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ=="
+            "version": "11.2.7",
+            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz",
+            "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA=="
         },
         "make-dir": {
             "version": "4.0.0",
@@ -8458,82 +7111,29 @@
             "dev": true
         },
         "make-fetch-happen": {
-            "version": "14.0.3",
-            "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz",
-            "integrity": "sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==",
+            "version": "15.0.5",
+            "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.5.tgz",
+            "integrity": "sha512-uCbIa8jWWmQZt4dSnEStkVC6gdakiinAm4PiGsywIkguF0eWMdcjDz0ECYhUolFU3pFLOev9VNPCEygydXnddg==",
             "dev": true,
             "requires": {
-                "@npmcli/agent": "^3.0.0",
-                "cacache": "^19.0.1",
+                "@gar/promise-retry": "^1.0.0",
+                "@npmcli/agent": "^4.0.0",
+                "@npmcli/redact": "^4.0.0",
+                "cacache": "^20.0.1",
                 "http-cache-semantics": "^4.1.1",
                 "minipass": "^7.0.2",
-                "minipass-fetch": "^4.0.0",
+                "minipass-fetch": "^5.0.0",
                 "minipass-flush": "^1.0.5",
                 "minipass-pipeline": "^1.2.4",
                 "negotiator": "^1.0.0",
-                "proc-log": "^5.0.0",
-                "promise-retry": "^2.0.1",
-                "ssri": "^12.0.0"
-            },
-            "dependencies": {
-                "brace-expansion": {
-                    "version": "2.0.2",
-                    "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
-                    "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
-                    "dev": true,
-                    "requires": {
-                        "balanced-match": "^1.0.0"
-                    }
-                },
-                "cacache": {
-                    "version": "19.0.1",
-                    "resolved": "https://registry.npmjs.org/cacache/-/cacache-19.0.1.tgz",
-                    "integrity": "sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==",
-                    "dev": true,
-                    "requires": {
-                        "@npmcli/fs": "^4.0.0",
-                        "fs-minipass": "^3.0.0",
-                        "glob": "^10.2.2",
-                        "lru-cache": "^10.0.1",
-                        "minipass": "^7.0.3",
-                        "minipass-collect": "^2.0.1",
-                        "minipass-flush": "^1.0.5",
-                        "minipass-pipeline": "^1.2.4",
-                        "p-map": "^7.0.2",
-                        "ssri": "^12.0.0",
-                        "tar": "^7.4.3",
-                        "unique-filename": "^4.0.0"
-                    }
-                },
-                "glob": {
-                    "version": "10.4.5",
-                    "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
-                    "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
-                    "dev": true,
-                    "requires": {
-                        "foreground-child": "^3.1.0",
-                        "jackspeak": "^3.1.2",
-                        "minimatch": "^9.0.4",
-                        "minipass": "^7.1.2",
-                        "package-json-from-dist": "^1.0.0",
-                        "path-scurry": "^1.11.1"
-                    }
-                },
-                "minimatch": {
-                    "version": "9.0.5",
-                    "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-                    "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
-                    "dev": true,
-                    "requires": {
-                        "brace-expansion": "^2.0.1"
-                    }
-                }
+                "proc-log": "^6.0.0",
+                "ssri": "^13.0.0"
             }
         },
         "marked": {
-            "version": "16.4.1",
-            "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.1.tgz",
-            "integrity": "sha512-ntROs7RaN3EvWfy3EZi14H4YxmT6A5YvywfhO+0pm+cH/dnSQRmdAmoFIc3B9aiwTehyk7pESH4ofyBY+V5hZg=="
+            "version": "17.0.5",
+            "resolved": "https://registry.npmjs.org/marked/-/marked-17.0.5.tgz",
+            "integrity": "sha512-6hLvc0/JEbRjRgzI6wnT2P1XuM1/RrrDEX0kPt0N7jGm1133g6X7DlxFasUIx+72aKAr904GTxhSLDrd5DIlZg=="
         },
         "mimic-fn": {
             "version": "2.1.0",
@@ -8542,17 +7142,17 @@
             "dev": true
         },
         "minimatch": {
-            "version": "3.1.2",
-            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-            "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+            "version": "10.2.5",
+            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
+            "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
             "requires": {
-                "brace-expansion": "^1.1.7"
+                "brace-expansion": "^5.0.5"
             }
         },
         "minipass": {
-            "version": "7.1.2",
-            "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
-            "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="
+            "version": "7.1.3",
+            "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+            "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A=="
         },
         "minipass-collect": {
             "version": "2.0.1",
@@ -8564,21 +7164,21 @@
             }
         },
         "minipass-fetch": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-4.0.1.tgz",
-            "integrity": "sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==",
+            "version": "5.0.2",
+            "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.2.tgz",
+            "integrity": "sha512-2d0q2a8eCi2IRg/IGubCNRJoYbA1+YPXAzQVRFmB45gdGZafyivnZ5YSEfo3JikbjGxOdntGFvBQGqaSMXlAFQ==",
             "dev": true,
             "requires": {
-                "encoding": "^0.1.13",
+                "iconv-lite": "^0.7.2",
                 "minipass": "^7.0.3",
-                "minipass-sized": "^1.0.3",
+                "minipass-sized": "^2.0.0",
                 "minizlib": "^3.0.1"
             }
         },
         "minipass-flush": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
-            "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+            "version": "1.0.7",
+            "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.7.tgz",
+            "integrity": "sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==",
             "dev": true,
             "requires": {
                 "minipass": "^3.0.0"
@@ -8628,29 +7228,12 @@
             }
         },
         "minipass-sized": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
-            "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-2.0.0.tgz",
+            "integrity": "sha512-zSsHhto5BcUVM2m1LurnXY6M//cGhVaegT71OfOXoprxT6o780GZd792ea6FfrQkuU4usHZIUczAQMRUE2plzA==",
             "dev": true,
             "requires": {
-                "minipass": "^3.0.0"
-            },
-            "dependencies": {
-                "minipass": {
-                    "version": "3.3.6",
-                    "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
-                    "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
-                    "dev": true,
-                    "requires": {
-                        "yallist": "^4.0.0"
-                    }
-                },
-                "yallist": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-                    "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
-                    "dev": true
-                }
+                "minipass": "^7.1.2"
             }
         },
         "minizlib": {
@@ -8674,9 +7257,9 @@
             "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
         },
         "msgpackr": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.1.tgz",
-            "integrity": "sha512-P6RWMjddZDjSndqKd5XhmHhpnxohGEj4+55w9tSACji7X/P6gTP/KzYGj7/U2RfE2D3HONS6Y63eGkuFXJEMtA==",
+            "version": "1.11.9",
+            "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.9.tgz",
+            "integrity": "sha512-FkoAAyyA6HM8wL882EcEyFZ9s7hVADSwG9xrVx3dxxNQAtgADTrJoEWivID82Iv1zWDsv/OtbrrcZAzGzOMdNw==",
             "requires": {
                 "msgpackr-extract": "^3.0.2"
             }
@@ -8708,36 +7291,36 @@
             "dev": true
         },
         "node-gyp": {
-            "version": "11.5.0",
-            "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.5.0.tgz",
-            "integrity": "sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ==",
+            "version": "12.2.0",
+            "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-12.2.0.tgz",
+            "integrity": "sha512-q23WdzrQv48KozXlr0U1v9dwO/k59NHeSzn6loGcasyf0UnSrtzs8kRxM+mfwJSf0DkX0s43hcqgnSO4/VNthQ==",
             "dev": true,
             "requires": {
                 "env-paths": "^2.2.0",
                 "exponential-backoff": "^3.1.1",
                 "graceful-fs": "^4.2.6",
-                "make-fetch-happen": "^14.0.3",
-                "nopt": "^8.0.0",
-                "proc-log": "^5.0.0",
+                "make-fetch-happen": "^15.0.0",
+                "nopt": "^9.0.0",
+                "proc-log": "^6.0.0",
                 "semver": "^7.3.5",
-                "tar": "^7.4.3",
+                "tar": "^7.5.4",
                 "tinyglobby": "^0.2.12",
-                "which": "^5.0.0"
+                "which": "^6.0.0"
             },
             "dependencies": {
                 "isexe": {
-                    "version": "3.1.1",
-                    "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
-                    "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
+                    "version": "4.0.0",
+                    "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz",
+                    "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==",
                     "dev": true
                 },
                 "which": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
-                    "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
+                    "version": "6.0.1",
+                    "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz",
+                    "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==",
                     "dev": true,
                     "requires": {
-                        "isexe": "^3.1.1"
+                        "isexe": "^4.0.0"
                     }
                 }
             }
@@ -8748,133 +7331,93 @@
             "integrity": "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==",
             "optional": true
         },
+        "node-options-to-argv": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/node-options-to-argv/-/node-options-to-argv-1.0.0.tgz",
+            "integrity": "sha512-99rLlP+Cn/FsSV9kjpk2UmF2Ltmrpv/L9U7fUfws/MVXkeZWPpPDsQkMr79qCvSF/oTKVVJBTm5sHzmK2j6IIg==",
+            "dev": true
+        },
         "nopt": {
-            "version": "8.1.0",
-            "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz",
-            "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==",
+            "version": "9.0.0",
+            "resolved": "https://registry.npmjs.org/nopt/-/nopt-9.0.0.tgz",
+            "integrity": "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==",
             "dev": true,
             "requires": {
-                "abbrev": "^3.0.0"
+                "abbrev": "^4.0.0"
             }
         },
-        "normalize-path": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-            "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-            "dev": true
-        },
         "npm-bundled": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-4.0.0.tgz",
-            "integrity": "sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA==",
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-5.0.0.tgz",
+            "integrity": "sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==",
             "dev": true,
             "requires": {
-                "npm-normalize-package-bin": "^4.0.0"
+                "npm-normalize-package-bin": "^5.0.0"
             }
         },
         "npm-install-checks": {
-            "version": "7.1.2",
-            "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-7.1.2.tgz",
-            "integrity": "sha512-z9HJBCYw9Zr8BqXcllKIs5nI+QggAImbBdHphOzVYrz2CB4iQ6FzWyKmlqDZua+51nAu7FcemlbTc9VgQN5XDQ==",
+            "version": "8.0.0",
+            "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-8.0.0.tgz",
+            "integrity": "sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==",
             "dev": true,
             "requires": {
                 "semver": "^7.1.1"
             }
         },
         "npm-normalize-package-bin": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz",
-            "integrity": "sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==",
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-5.0.0.tgz",
+            "integrity": "sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==",
             "dev": true
         },
         "npm-package-arg": {
-            "version": "13.0.1",
-            "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-13.0.1.tgz",
-            "integrity": "sha512-6zqls5xFvJbgFjB1B2U6yITtyGBjDBORB7suI4zA4T/sZ1OmkMFlaQSNB/4K0LtXNA1t4OprAFxPisadK5O2ag==",
+            "version": "13.0.2",
+            "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-13.0.2.tgz",
+            "integrity": "sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA==",
             "dev": true,
             "requires": {
                 "hosted-git-info": "^9.0.0",
-                "proc-log": "^5.0.0",
+                "proc-log": "^6.0.0",
                 "semver": "^7.3.5",
-                "validate-npm-package-name": "^6.0.0"
+                "validate-npm-package-name": "^7.0.0"
             }
         },
         "npm-packlist": {
-            "version": "10.0.2",
-            "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.2.tgz",
-            "integrity": "sha512-DrIWNiWT0FTdDRjGOYfEEZUNe1IzaSZ+up7qBTKnrQDySpdmuOQvytrqQlpK5QrCA4IThMvL4wTumqaa1ZvVIQ==",
+            "version": "10.0.4",
+            "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.4.tgz",
+            "integrity": "sha512-uMW73iajD8hiH4ZBxEV3HC+eTnppIqwakjOYuvgddnalIw2lJguKviK1pcUJDlIWm1wSJkchpDZDSVVsZEYRng==",
             "dev": true,
             "requires": {
                 "ignore-walk": "^8.0.0",
-                "proc-log": "^5.0.0"
+                "proc-log": "^6.0.0"
             }
         },
         "npm-pick-manifest": {
-            "version": "11.0.1",
-            "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-11.0.1.tgz",
-            "integrity": "sha512-HnU7FYSWbo7dTVHtK0G+BXbZ0aIfxz/aUCVLN0979Ec6rGUX5cJ6RbgVx5fqb5G31ufz+BVFA7y1SkRTPVNoVQ==",
+            "version": "11.0.3",
+            "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-11.0.3.tgz",
+            "integrity": "sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ==",
             "dev": true,
             "requires": {
-                "npm-install-checks": "^7.1.0",
-                "npm-normalize-package-bin": "^4.0.0",
+                "npm-install-checks": "^8.0.0",
+                "npm-normalize-package-bin": "^5.0.0",
                 "npm-package-arg": "^13.0.0",
                 "semver": "^7.3.5"
             }
         },
         "npm-registry-fetch": {
-            "version": "19.0.0",
-            "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-19.0.0.tgz",
-            "integrity": "sha512-DFxSAemHUwT/POaXAOY4NJmEWBPB0oKbwD6FFDE9hnt1nORkt/FXvgjD4hQjoKoHw9u0Ezws9SPXwV7xE/Gyww==",
+            "version": "19.1.1",
+            "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-19.1.1.tgz",
+            "integrity": "sha512-TakBap6OM1w0H73VZVDf44iFXsOS3h+L4wVMXmbWOQroZgFhMch0juN6XSzBNlD965yIKvWg2dfu7NSiaYLxtw==",
             "dev": true,
             "requires": {
-                "@npmcli/redact": "^3.0.0",
+                "@npmcli/redact": "^4.0.0",
                 "jsonparse": "^1.3.1",
                 "make-fetch-happen": "^15.0.0",
                 "minipass": "^7.0.2",
-                "minipass-fetch": "^4.0.0",
+                "minipass-fetch": "^5.0.0",
                 "minizlib": "^3.0.1",
                 "npm-package-arg": "^13.0.0",
-                "proc-log": "^5.0.0"
-            },
-            "dependencies": {
-                "@npmcli/agent": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz",
-                    "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==",
-                    "dev": true,
-                    "requires": {
-                        "agent-base": "^7.1.0",
-                        "http-proxy-agent": "^7.0.0",
-                        "https-proxy-agent": "^7.0.1",
-                        "lru-cache": "^11.2.1",
-                        "socks-proxy-agent": "^8.0.3"
-                    }
-                },
-                "lru-cache": {
-                    "version": "11.2.2",
-                    "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
-                    "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
-                    "dev": true
-                },
-                "make-fetch-happen": {
-                    "version": "15.0.2",
-                    "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.2.tgz",
-                    "integrity": "sha512-sI1NY4lWlXBAfjmCtVWIIpBypbBdhHtcjnwnv+gtCnsaOffyFil3aidszGC8hgzJe+fT1qix05sWxmD/Bmf/oQ==",
-                    "dev": true,
-                    "requires": {
-                        "@npmcli/agent": "^4.0.0",
-                        "cacache": "^20.0.1",
-                        "http-cache-semantics": "^4.1.1",
-                        "minipass": "^7.0.2",
-                        "minipass-fetch": "^4.0.0",
-                        "minipass-flush": "^1.0.5",
-                        "minipass-pipeline": "^1.2.4",
-                        "negotiator": "^1.0.0",
-                        "proc-log": "^5.0.0",
-                        "promise-retry": "^2.0.1",
-                        "ssri": "^12.0.0"
-                    }
-                }
+                "proc-log": "^6.0.0"
             }
         },
         "onetime": {
@@ -8922,27 +7465,27 @@
             }
         },
         "p-map": {
-            "version": "7.0.3",
-            "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz",
-            "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==",
+            "version": "7.0.4",
+            "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz",
+            "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==",
             "dev": true
         },
         "package-json-from-dist": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
-            "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
-            "dev": true
+            "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="
         },
         "pacote": {
-            "version": "21.0.3",
-            "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.0.3.tgz",
-            "integrity": "sha512-itdFlanxO0nmQv4ORsvA9K1wv40IPfB9OmWqfaJWvoJ30VKyHsqNgDVeG+TVhI7Gk7XW8slUy7cA9r6dF5qohw==",
+            "version": "21.5.0",
+            "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.5.0.tgz",
+            "integrity": "sha512-VtZ0SB8mb5Tzw3dXDfVAIjhyVKUHZkS/ZH9/5mpKenwC9sFOXNI0JI7kEF7IMkwOnsWMFrvAZHzx1T5fmrp9FQ==",
             "dev": true,
             "requires": {
+                "@gar/promise-retry": "^1.0.0",
                 "@npmcli/git": "^7.0.0",
-                "@npmcli/installed-package-contents": "^3.0.0",
+                "@npmcli/installed-package-contents": "^4.0.0",
                 "@npmcli/package-json": "^7.0.0",
-                "@npmcli/promise-spawn": "^8.0.0",
+                "@npmcli/promise-spawn": "^9.0.0",
                 "@npmcli/run-script": "^10.0.0",
                 "cacache": "^20.0.0",
                 "fs-minipass": "^3.0.0",
@@ -8951,21 +7494,12 @@
                 "npm-packlist": "^10.0.1",
                 "npm-pick-manifest": "^11.0.1",
                 "npm-registry-fetch": "^19.0.0",
-                "proc-log": "^5.0.0",
-                "promise-retry": "^2.0.1",
+                "proc-log": "^6.0.0",
                 "sigstore": "^4.0.0",
-                "ssri": "^12.0.0",
+                "ssri": "^13.0.0",
                 "tar": "^7.4.3"
             }
         },
-        "parent-module": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
-            "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
-            "requires": {
-                "callsites": "^3.0.0"
-            }
-        },
         "patch-console": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/patch-console/-/patch-console-2.0.0.tgz",
@@ -8983,20 +7517,14 @@
             "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
         },
         "path-scurry": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
-            "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz",
+            "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==",
             "requires": {
-                "lru-cache": "^10.2.0",
-                "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+                "lru-cache": "^11.0.0",
+                "minipass": "^7.1.2"
             }
         },
-        "picomatch": {
-            "version": "2.3.1",
-            "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-            "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-            "dev": true
-        },
         "pirates": {
             "version": "4.0.7",
             "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz",
@@ -9021,28 +7549,20 @@
             "dev": true
         },
         "prismjs-terminal": {
-            "version": "1.2.3",
-            "resolved": "https://registry.npmjs.org/prismjs-terminal/-/prismjs-terminal-1.2.3.tgz",
-            "integrity": "sha512-xc0zuJ5FMqvW+DpiRkvxURlz98DdfDsZcFHdO699+oL+ykbFfgI7O4VDEgUyc07BSL2NHl3zdb8m/tZ/aaqUrw==",
+            "version": "1.2.4",
+            "resolved": "https://registry.npmjs.org/prismjs-terminal/-/prismjs-terminal-1.2.4.tgz",
+            "integrity": "sha512-S2nsjy6s2x2jF4uTW8ulX19rvmRfe9R1wmnNwI5wmBgQEErB0vuKueVPMzN6KsFRCCJ2IQrWUS0BqhcNsrR9xg==",
             "dev": true,
             "requires": {
                 "chalk": "^5.2.0",
-                "prismjs": "^1.29.0",
+                "prismjs": "^1.30.0",
                 "string-length": "^6.0.0"
-            },
-            "dependencies": {
-                "chalk": {
-                    "version": "5.6.2",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
-                    "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
-                    "dev": true
-                }
             }
         },
         "proc-log": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-5.0.0.tgz",
-            "integrity": "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==",
+            "version": "6.1.0",
+            "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz",
+            "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==",
             "dev": true
         },
         "process-on-spawn": {
@@ -9054,16 +7574,6 @@
                 "fromentries": "^1.2.0"
             }
         },
-        "promise-retry": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
-            "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
-            "dev": true,
-            "requires": {
-                "err-code": "^2.0.2",
-                "retry": "^0.12.0"
-            }
-        },
         "punycode": {
             "version": "2.3.1",
             "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
@@ -9117,13 +7627,15 @@
             }
         },
         "readdirp": {
-            "version": "3.6.0",
-            "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
-            "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-            "dev": true,
-            "requires": {
-                "picomatch": "^2.2.1"
-            }
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz",
+            "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="
+        },
+        "reghex": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/reghex/-/reghex-3.0.2.tgz",
+            "integrity": "sha512-Zb9DJ5u6GhgqRSBnxV2QSnLqEwcKxHWFA1N2yUa4ZUAO1P8jlWKYtWZ6/ooV6yylspGXJX0O/uNzEv0xrCtwaA==",
+            "dev": true
         },
         "require-directory": {
             "version": "2.1.1",
@@ -9131,18 +7643,13 @@
             "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
             "dev": true
         },
-        "resolve-from": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
-            "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
-        },
         "resolve-import": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/resolve-import/-/resolve-import-2.0.0.tgz",
-            "integrity": "sha512-jpKjLibLuc8D1XEV2+7zb0aqN7I8d12u89g/v6IsgCzdVlccMQJq4TKkPw5fbhHdxhm7nbVtN+KvOTnjFf+nEA==",
+            "version": "2.4.0",
+            "resolved": "https://registry.npmjs.org/resolve-import/-/resolve-import-2.4.0.tgz",
+            "integrity": "sha512-gLWKdA5tiv5j/D7ipR47u3ovbVfzFPrctTdw2Ulnpmr6PPVVSvPKGNWu09jXVNlOSLLAeD6CA13bjIelpWttSw==",
             "dev": true,
             "requires": {
-                "glob": "^11.0.0",
+                "glob": "^13.0.0",
                 "walk-up-path": "^4.0.0"
             }
         },
@@ -9164,48 +7671,13 @@
                 }
             }
         },
-        "retry": {
-            "version": "0.12.0",
-            "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
-            "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
-            "dev": true
-        },
         "rimraf": {
-            "version": "5.0.7",
-            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz",
-            "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==",
+            "version": "6.1.3",
+            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz",
+            "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==",
             "requires": {
-                "glob": "^10.3.7"
-            },
-            "dependencies": {
-                "brace-expansion": {
-                    "version": "2.0.2",
-                    "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
-                    "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
-                    "requires": {
-                        "balanced-match": "^1.0.0"
-                    }
-                },
-                "glob": {
-                    "version": "10.4.1",
-                    "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz",
-                    "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==",
-                    "requires": {
-                        "foreground-child": "^3.1.0",
-                        "jackspeak": "^3.1.2",
-                        "minimatch": "^9.0.4",
-                        "minipass": "^7.1.2",
-                        "path-scurry": "^1.11.1"
-                    }
-                },
-                "minimatch": {
-                    "version": "9.0.4",
-                    "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
-                    "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
-                    "requires": {
-                        "brace-expansion": "^2.0.1"
-                    }
-                }
+                "glob": "^13.0.3",
+                "package-json-from-dist": "^1.0.1"
             }
         },
         "safer-buffer": {
@@ -9225,9 +7697,9 @@
             }
         },
         "semver": {
-            "version": "7.7.3",
-            "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
-            "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+            "version": "7.7.4",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+            "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
             "dev": true
         },
         "shebang-command": {
@@ -9246,20 +7718,21 @@
         "signal-exit": {
             "version": "4.1.0",
             "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
-            "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="
+            "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+            "dev": true
         },
         "sigstore": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-4.0.0.tgz",
-            "integrity": "sha512-Gw/FgHtrLM9WP8P5lLcSGh9OQcrTruWCELAiS48ik1QbL0cH+dfjomiRTUE9zzz+D1N6rOLkwXUvVmXZAsNE0Q==",
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-4.1.0.tgz",
+            "integrity": "sha512-/fUgUhYghuLzVT/gaJoeVehLCgZiUxPCPMcyVNY0lIf/cTCz58K/WTI7PefDarXxp9nUKpEwg1yyz3eSBMTtgA==",
             "dev": true,
             "requires": {
                 "@sigstore/bundle": "^4.0.0",
-                "@sigstore/core": "^3.0.0",
+                "@sigstore/core": "^3.1.0",
                 "@sigstore/protobuf-specs": "^0.5.0",
-                "@sigstore/sign": "^4.0.0",
-                "@sigstore/tuf": "^4.0.0",
-                "@sigstore/verify": "^3.0.0"
+                "@sigstore/sign": "^4.1.0",
+                "@sigstore/tuf": "^4.0.1",
+                "@sigstore/verify": "^3.1.0"
             }
         },
         "slice-ansi": {
@@ -9272,12 +7745,6 @@
                 "is-fullwidth-code-point": "^5.0.0"
             },
             "dependencies": {
-                "ansi-styles": {
-                    "version": "6.2.3",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
-                    "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
-                    "dev": true
-                },
                 "is-fullwidth-code-point": {
                     "version": "5.1.0",
                     "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz",
@@ -9316,16 +7783,6 @@
                 "socks": "^2.8.3"
             }
         },
-        "spdx-correct": {
-            "version": "3.2.0",
-            "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
-            "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
-            "dev": true,
-            "requires": {
-                "spdx-expression-parse": "^3.0.0",
-                "spdx-license-ids": "^3.0.0"
-            }
-        },
         "spdx-exceptions": {
             "version": "2.5.0",
             "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
@@ -9333,9 +7790,9 @@
             "dev": true
         },
         "spdx-expression-parse": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
-            "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz",
+            "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==",
             "dev": true,
             "requires": {
                 "spdx-exceptions": "^2.1.0",
@@ -9343,15 +7800,15 @@
             }
         },
         "spdx-license-ids": {
-            "version": "3.0.22",
-            "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz",
-            "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==",
+            "version": "3.0.23",
+            "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz",
+            "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==",
             "dev": true
         },
         "ssri": {
-            "version": "12.0.0",
-            "resolved": "https://registry.npmjs.org/ssri/-/ssri-12.0.0.tgz",
-            "integrity": "sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==",
+            "version": "13.0.1",
+            "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.1.tgz",
+            "integrity": "sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==",
             "dev": true,
             "requires": {
                 "minipass": "^7.0.3"
@@ -9381,93 +7838,85 @@
             "dev": true,
             "requires": {
                 "strip-ansi": "^7.1.0"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "6.2.2",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
-                    "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
-                    "dev": true
-                },
-                "strip-ansi": {
-                    "version": "7.1.2",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
-                    "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^6.0.1"
-                    }
-                }
             }
         },
         "string-width": {
-            "version": "5.1.2",
-            "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
-            "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+            "version": "7.2.0",
+            "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+            "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+            "dev": true,
             "requires": {
-                "eastasianwidth": "^0.2.0",
-                "emoji-regex": "^9.2.2",
-                "strip-ansi": "^7.0.1"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "6.0.1",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-                    "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA=="
-                },
-                "strip-ansi": {
-                    "version": "7.1.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-                    "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-                    "requires": {
-                        "ansi-regex": "^6.0.1"
-                    }
-                }
+                "emoji-regex": "^10.3.0",
+                "get-east-asian-width": "^1.0.0",
+                "strip-ansi": "^7.1.0"
             }
         },
         "string-width-cjs": {
             "version": "npm:string-width@4.2.3",
             "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
             "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+            "dev": true,
             "requires": {
                 "emoji-regex": "^8.0.0",
                 "is-fullwidth-code-point": "^3.0.0",
                 "strip-ansi": "^6.0.1"
             },
             "dependencies": {
+                "ansi-regex": {
+                    "version": "5.0.1",
+                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+                    "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+                    "dev": true
+                },
                 "emoji-regex": {
                     "version": "8.0.0",
                     "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-                    "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+                    "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+                    "dev": true
                 },
                 "is-fullwidth-code-point": {
                     "version": "3.0.0",
                     "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-                    "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+                    "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+                    "dev": true
+                },
+                "strip-ansi": {
+                    "version": "6.0.1",
+                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+                    "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+                    "dev": true,
+                    "requires": {
+                        "ansi-regex": "^5.0.1"
+                    }
                 }
             }
         },
         "strip-ansi": {
-            "version": "6.0.1",
-            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+            "version": "7.2.0",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
+            "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
+            "dev": true,
             "requires": {
-                "ansi-regex": "^5.0.1"
+                "ansi-regex": "^6.2.2"
             }
         },
         "strip-ansi-cjs": {
             "version": "npm:strip-ansi@6.0.1",
             "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
             "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+            "dev": true,
             "requires": {
                 "ansi-regex": "^5.0.1"
+            },
+            "dependencies": {
+                "ansi-regex": {
+                    "version": "5.0.1",
+                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+                    "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+                    "dev": true
+                }
             }
         },
-        "strip-json-comments": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
-            "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
-        },
         "striptags": {
             "version": "4.0.0-alpha.4",
             "resolved": "https://registry.npmjs.org/striptags/-/striptags-4.0.0-alpha.4.tgz",
@@ -9477,93 +7926,65 @@
             "version": "7.2.0",
             "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
             "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+            "dev": true,
             "requires": {
                 "has-flag": "^4.0.0"
             }
         },
         "sync-content": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/sync-content/-/sync-content-2.0.1.tgz",
-            "integrity": "sha512-NI1mo514yFhr8pV/5Etvgh+pSBUIpoAKoiBIUwALVlQQNAwb40bTw8hhPFaip/dvv0GhpHVOq0vq8iY02ppLTg==",
+            "version": "2.0.4",
+            "resolved": "https://registry.npmjs.org/sync-content/-/sync-content-2.0.4.tgz",
+            "integrity": "sha512-w3ioiBmbaogob33WdLnuwFk+8tpePI58CTWKqtdAgEqc2hfGuSwP02gPETqNX/3PLS5skv5a1wQR0gbaa2W0XQ==",
             "dev": true,
             "requires": {
-                "glob": "^11.0.0",
+                "glob": "^13.0.1",
                 "mkdirp": "^3.0.1",
                 "path-scurry": "^2.0.0",
-                "rimraf": "^6.0.0",
-                "tshy": "^3.0.0"
-            },
-            "dependencies": {
-                "lru-cache": {
-                    "version": "11.2.2",
-                    "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
-                    "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
-                    "dev": true
-                },
-                "path-scurry": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz",
-                    "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==",
-                    "dev": true,
-                    "requires": {
-                        "lru-cache": "^11.0.0",
-                        "minipass": "^7.1.2"
-                    }
-                },
-                "rimraf": {
-                    "version": "6.0.1",
-                    "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz",
-                    "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==",
-                    "dev": true,
-                    "requires": {
-                        "glob": "^11.0.0",
-                        "package-json-from-dist": "^1.0.0"
-                    }
-                }
+                "rimraf": "^6.0.0"
             }
         },
         "tap": {
-            "version": "21.1.1",
-            "resolved": "https://registry.npmjs.org/tap/-/tap-21.1.1.tgz",
-            "integrity": "sha512-WQQkoJw2LbusXPq9d6A3N4SHCpiog1AbjSVyNlqRh6uiCrtra24bZRCURX8cgBjKV4W22dcRevvhMp24+N/oVg==",
-            "dev": true,
-            "requires": {
-                "@tapjs/after": "3.0.2",
-                "@tapjs/after-each": "4.0.2",
-                "@tapjs/asserts": "4.0.2",
-                "@tapjs/before": "4.0.2",
-                "@tapjs/before-each": "4.0.2",
-                "@tapjs/chdir": "3.0.2",
-                "@tapjs/core": "4.0.2",
-                "@tapjs/filter": "4.0.2",
-                "@tapjs/fixture": "4.0.2",
-                "@tapjs/intercept": "4.0.2",
-                "@tapjs/mock": "4.0.2",
-                "@tapjs/node-serialize": "4.0.2",
-                "@tapjs/run": "4.0.3",
-                "@tapjs/snapshot": "4.0.2",
-                "@tapjs/spawn": "4.0.2",
-                "@tapjs/stdin": "4.0.2",
-                "@tapjs/test": "4.0.2",
-                "@tapjs/typescript": "3.1.1",
-                "@tapjs/worker": "4.0.2",
-                "resolve-import": "2"
+            "version": "21.6.2",
+            "resolved": "https://registry.npmjs.org/tap/-/tap-21.6.2.tgz",
+            "integrity": "sha512-rEuxX+EVGQ6JOEyRnLQ80fa7v5s8yutpRA11LAjP6t/B6I0/mTWkaW0NfVoX5XDX3z5x9HVEt2dojSrJLcyp9A==",
+            "dev": true,
+            "requires": {
+                "@tapjs/after": "3.3.4",
+                "@tapjs/after-each": "4.3.4",
+                "@tapjs/asserts": "4.3.4",
+                "@tapjs/before": "4.3.4",
+                "@tapjs/before-each": "4.3.4",
+                "@tapjs/chdir": "3.3.4",
+                "@tapjs/core": "4.5.2",
+                "@tapjs/filter": "4.3.4",
+                "@tapjs/fixture": "4.3.4",
+                "@tapjs/intercept": "4.3.4",
+                "@tapjs/mock": "4.4.2",
+                "@tapjs/node-serialize": "4.3.4",
+                "@tapjs/run": "4.5.2",
+                "@tapjs/snapshot": "4.3.4",
+                "@tapjs/spawn": "4.3.4",
+                "@tapjs/stdin": "4.3.4",
+                "@tapjs/test": "4.4.2",
+                "@tapjs/typescript": "3.5.4",
+                "@tapjs/worker": "4.3.4",
+                "resolve-import": "^2.4.0"
             }
         },
         "tap-parser": {
-            "version": "18.0.1",
-            "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-18.0.1.tgz",
-            "integrity": "sha512-Jcu51jzPCDXzuFvyCDGRfJWm2mJ0yRLf+aqWINk4P03HM9uyrq2SLavn26N8qwVz//GZysNt3DQNvKrYjidB3g==",
+            "version": "18.3.0",
+            "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-18.3.0.tgz",
+            "integrity": "sha512-sa0M18e6RARfO0Lrm1zbQvb+7G4G/ThkFIJFvjeH1DKenl4xwyUgpRUCb5Jq64Xe086p4auiLvRzfpRjGd3Zow==",
             "dev": true,
             "requires": {
                 "events-to-array": "^2.0.3",
-                "tap-yaml": "4.0.1"
+                "tap-yaml": "4.3.0"
             }
         },
         "tap-yaml": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-4.0.1.tgz",
-            "integrity": "sha512-2D5FSjxSP8v3LCh3N1KZa+FoIaVh2f7bFaUNd4mm74Kx/a5JqKu6QspEQZpAwH1Ez2SlbguOMWKHPTels2xbzA==",
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-4.3.0.tgz",
+            "integrity": "sha512-48BiwXj3cUa1Lt6BLzfawJGZVihfRCY19gyjaHftQpe8ulEmB9gZW9kChQkdb0+L4YUlGWUJMpWRAJ/9bPSgVA==",
             "dev": true,
             "requires": {
                 "yaml": "^2.8.1",
@@ -9571,9 +7992,9 @@
             }
         },
         "tar": {
-            "version": "7.5.1",
-            "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.1.tgz",
-            "integrity": "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==",
+            "version": "7.5.13",
+            "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz",
+            "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==",
             "dev": true,
             "requires": {
                 "@isaacs/fs-minipass": "^4.0.0",
@@ -9583,40 +8004,60 @@
                 "yallist": "^5.0.0"
             }
         },
-        "tcompare": {
-            "version": "6.4.5",
-            "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-6.4.5.tgz",
-            "integrity": "sha512-Whuz9xlKKI2XXICKDSDRKjXdBuC6gBNOgmEUtH7UFyQeYzfUMQ19DyjZULarGKDGFhgOg3CJ+IQUEfpkOPg0Uw==",
-            "dev": true,
-            "requires": {
-                "diff": "^5.1.0",
-                "react-element-to-jsx-string": "^15.0.0"
-            }
-        },
         "test-exclude": {
-            "version": "7.0.1",
-            "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz",
-            "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==",
+            "version": "7.0.2",
+            "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.2.tgz",
+            "integrity": "sha512-u9E6A+ZDYdp7a4WnarkXPZOx8Ilz46+kby6p1yZ8zsGTz9gYa6FIS7lj2oezzNKmtdyyJNNmmXDppga5GB7kSw==",
             "dev": true,
             "requires": {
                 "@istanbuljs/schema": "^0.1.2",
                 "glob": "^10.4.1",
-                "minimatch": "^9.0.4"
+                "minimatch": "^10.2.2"
             },
             "dependencies": {
+                "@isaacs/cliui": {
+                    "version": "8.0.2",
+                    "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+                    "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+                    "dev": true,
+                    "requires": {
+                        "string-width": "^5.1.2",
+                        "string-width-cjs": "npm:string-width@^4.2.0",
+                        "strip-ansi": "^7.0.1",
+                        "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+                        "wrap-ansi": "^8.1.0",
+                        "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+                    }
+                },
                 "brace-expansion": {
-                    "version": "2.0.2",
-                    "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
-                    "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+                    "version": "2.0.3",
+                    "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
+                    "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
                     "dev": true,
                     "requires": {
                         "balanced-match": "^1.0.0"
                     }
                 },
+                "emoji-regex": {
+                    "version": "9.2.2",
+                    "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+                    "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+                    "dev": true
+                },
+                "foreground-child": {
+                    "version": "3.3.1",
+                    "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
+                    "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+                    "dev": true,
+                    "requires": {
+                        "cross-spawn": "^7.0.6",
+                        "signal-exit": "^4.0.1"
+                    }
+                },
                 "glob": {
-                    "version": "10.4.5",
-                    "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
-                    "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+                    "version": "10.5.0",
+                    "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
+                    "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
                     "dev": true,
                     "requires": {
                         "foreground-child": "^3.1.0",
@@ -9625,15 +8066,65 @@
                         "minipass": "^7.1.2",
                         "package-json-from-dist": "^1.0.0",
                         "path-scurry": "^1.11.1"
+                    },
+                    "dependencies": {
+                        "minimatch": {
+                            "version": "9.0.9",
+                            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+                            "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
+                            "dev": true,
+                            "requires": {
+                                "brace-expansion": "^2.0.2"
+                            }
+                        }
+                    }
+                },
+                "jackspeak": {
+                    "version": "3.4.3",
+                    "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+                    "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+                    "dev": true,
+                    "requires": {
+                        "@isaacs/cliui": "^8.0.2",
+                        "@pkgjs/parseargs": "^0.11.0"
+                    }
+                },
+                "lru-cache": {
+                    "version": "10.4.3",
+                    "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+                    "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+                    "dev": true
+                },
+                "path-scurry": {
+                    "version": "1.11.1",
+                    "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+                    "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+                    "dev": true,
+                    "requires": {
+                        "lru-cache": "^10.2.0",
+                        "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+                    }
+                },
+                "string-width": {
+                    "version": "5.1.2",
+                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+                    "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+                    "dev": true,
+                    "requires": {
+                        "eastasianwidth": "^0.2.0",
+                        "emoji-regex": "^9.2.2",
+                        "strip-ansi": "^7.0.1"
                     }
                 },
-                "minimatch": {
-                    "version": "9.0.5",
-                    "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-                    "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+                "wrap-ansi": {
+                    "version": "8.1.0",
+                    "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+                    "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
                     "dev": true,
                     "requires": {
-                        "brace-expansion": "^2.0.1"
+                        "ansi-styles": "^6.1.0",
+                        "string-width": "^5.0.1",
+                        "strip-ansi": "^7.0.1"
                     }
                 }
             }
@@ -9656,22 +8147,13 @@
                     "requires": {}
                 },
                 "picomatch": {
-                    "version": "4.0.3",
-                    "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
-                    "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+                    "version": "4.0.4",
+                    "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+                    "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
                     "dev": true
                 }
             }
         },
-        "to-regex-range": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-            "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-            "dev": true,
-            "requires": {
-                "is-number": "^7.0.0"
-            }
-        },
         "trivial-deferred": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-2.0.0.tgz",
@@ -9679,30 +8161,26 @@
             "dev": true
         },
         "tshy": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/tshy/-/tshy-3.0.3.tgz",
-            "integrity": "sha512-bUX6HQCvVdPyPLy2VZuKw95CtYD5aRSEgYEK7IPV9l9xN/z284kl5/hIwOfLY/mZOOdhrO34dFOOcL1VUMVyaw==",
+            "version": "3.3.2",
+            "resolved": "https://registry.npmjs.org/tshy/-/tshy-3.3.2.tgz",
+            "integrity": "sha512-vOIXkqMtBWNjKUR/c99+6N50LhWdnKG1xE3+5wf8IPdzxx2lcIFPvbGgFdBBgoTMbdNb8mz06MUm7hY+TFnJcw==",
             "dev": true,
             "requires": {
+                "@typescript/native-preview": "^7.0.0-dev.20260218.1",
                 "chalk": "^5.6.2",
                 "chokidar": "^4.0.3",
-                "foreground-child": "^3.3.1",
+                "foreground-child": "^4.0.0",
+                "jsonc-simple-parser": "^3.0.0",
                 "minimatch": "^10.0.3",
                 "mkdirp": "^3.0.1",
                 "polite-json": "^5.0.0",
-                "resolve-import": "^2.0.0",
-                "rimraf": "^6.0.1",
-                "sync-content": "^2.0.1",
+                "resolve-import": "^2.4.0",
+                "rimraf": "^6.1.2",
+                "sync-content": "^2.0.3",
                 "typescript": "^5.9.3",
                 "walk-up-path": "^4.0.0"
             },
             "dependencies": {
-                "chalk": {
-                    "version": "5.6.2",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
-                    "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
-                    "dev": true
-                },
                 "chokidar": {
                     "version": "4.0.3",
                     "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
@@ -9712,30 +8190,11 @@
                         "readdirp": "^4.0.1"
                     }
                 },
-                "minimatch": {
-                    "version": "10.0.3",
-                    "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz",
-                    "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==",
-                    "dev": true,
-                    "requires": {
-                        "@isaacs/brace-expansion": "^5.0.0"
-                    }
-                },
                 "readdirp": {
                     "version": "4.1.2",
                     "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
                     "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
                     "dev": true
-                },
-                "rimraf": {
-                    "version": "6.0.1",
-                    "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz",
-                    "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==",
-                    "dev": true,
-                    "requires": {
-                        "glob": "^11.0.0",
-                        "package-json-from-dist": "^1.0.0"
-                    }
                 }
             }
         },
@@ -9745,54 +8204,14 @@
             "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
         },
         "tuf-js": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-4.0.0.tgz",
-            "integrity": "sha512-Lq7ieeGvXDXwpoSmOSgLWVdsGGV9J4a77oDTAPe/Ltrqnnm/ETaRlBAQTH5JatEh8KXuE6sddf9qAv1Q2282Hg==",
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-4.1.0.tgz",
+            "integrity": "sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ==",
             "dev": true,
             "requires": {
-                "@tufjs/models": "4.0.0",
-                "debug": "^4.4.1",
-                "make-fetch-happen": "^15.0.0"
-            },
-            "dependencies": {
-                "@npmcli/agent": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz",
-                    "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==",
-                    "dev": true,
-                    "requires": {
-                        "agent-base": "^7.1.0",
-                        "http-proxy-agent": "^7.0.0",
-                        "https-proxy-agent": "^7.0.1",
-                        "lru-cache": "^11.2.1",
-                        "socks-proxy-agent": "^8.0.3"
-                    }
-                },
-                "lru-cache": {
-                    "version": "11.2.2",
-                    "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
-                    "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
-                    "dev": true
-                },
-                "make-fetch-happen": {
-                    "version": "15.0.2",
-                    "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.2.tgz",
-                    "integrity": "sha512-sI1NY4lWlXBAfjmCtVWIIpBypbBdhHtcjnwnv+gtCnsaOffyFil3aidszGC8hgzJe+fT1qix05sWxmD/Bmf/oQ==",
-                    "dev": true,
-                    "requires": {
-                        "@npmcli/agent": "^4.0.0",
-                        "cacache": "^20.0.1",
-                        "http-cache-semantics": "^4.1.1",
-                        "minipass": "^7.0.2",
-                        "minipass-fetch": "^4.0.0",
-                        "minipass-flush": "^1.0.5",
-                        "minipass-pipeline": "^1.2.4",
-                        "negotiator": "^1.0.0",
-                        "proc-log": "^5.0.0",
-                        "promise-retry": "^2.0.1",
-                        "ssri": "^12.0.0"
-                    }
-                }
+                "@tufjs/models": "4.1.0",
+                "debug": "^4.4.3",
+                "make-fetch-happen": "^15.0.1"
             }
         },
         "type-check": {
@@ -9816,30 +8235,12 @@
             "dev": true
         },
         "undici-types": {
-            "version": "7.14.0",
-            "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.14.0.tgz",
-            "integrity": "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==",
+            "version": "7.18.2",
+            "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz",
+            "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==",
             "dev": true,
             "peer": true
         },
-        "unique-filename": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-4.0.0.tgz",
-            "integrity": "sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==",
-            "dev": true,
-            "requires": {
-                "unique-slug": "^5.0.0"
-            }
-        },
-        "unique-slug": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-5.0.0.tgz",
-            "integrity": "sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==",
-            "dev": true,
-            "requires": {
-                "imurmurhash": "^0.1.4"
-            }
-        },
         "uri-js": {
             "version": "4.4.1",
             "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -9883,20 +8284,10 @@
                 }
             }
         },
-        "validate-npm-package-license": {
-            "version": "3.0.4",
-            "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
-            "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
-            "dev": true,
-            "requires": {
-                "spdx-correct": "^3.0.0",
-                "spdx-expression-parse": "^3.0.0"
-            }
-        },
         "validate-npm-package-name": {
-            "version": "6.0.2",
-            "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-6.0.2.tgz",
-            "integrity": "sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==",
+            "version": "7.0.2",
+            "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz",
+            "integrity": "sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==",
             "dev": true
         },
         "walk-up-path": {
@@ -9920,40 +8311,6 @@
             "dev": true,
             "requires": {
                 "string-width": "^7.0.0"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "6.2.2",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
-                    "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
-                    "dev": true
-                },
-                "emoji-regex": {
-                    "version": "10.6.0",
-                    "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
-                    "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
-                    "dev": true
-                },
-                "string-width": {
-                    "version": "7.2.0",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
-                    "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
-                    "dev": true,
-                    "requires": {
-                        "emoji-regex": "^10.3.0",
-                        "get-east-asian-width": "^1.0.0",
-                        "strip-ansi": "^7.1.0"
-                    }
-                },
-                "strip-ansi": {
-                    "version": "7.1.2",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
-                    "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^6.0.1"
-                    }
-                }
             }
         },
         "word-count": {
@@ -9967,71 +8324,80 @@
             "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="
         },
         "wrap-ansi": {
-            "version": "8.1.0",
-            "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
-            "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+            "version": "9.0.2",
+            "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+            "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
+            "dev": true,
             "requires": {
-                "ansi-styles": "^6.1.0",
-                "string-width": "^5.0.1",
-                "strip-ansi": "^7.0.1"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "6.0.1",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-                    "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA=="
-                },
-                "ansi-styles": {
-                    "version": "6.2.1",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
-                    "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="
-                },
-                "strip-ansi": {
-                    "version": "7.1.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-                    "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-                    "requires": {
-                        "ansi-regex": "^6.0.1"
-                    }
-                }
+                "ansi-styles": "^6.2.1",
+                "string-width": "^7.0.0",
+                "strip-ansi": "^7.1.0"
             }
         },
         "wrap-ansi-cjs": {
             "version": "npm:wrap-ansi@7.0.0",
             "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
             "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+            "dev": true,
             "requires": {
                 "ansi-styles": "^4.0.0",
                 "string-width": "^4.1.0",
                 "strip-ansi": "^6.0.0"
             },
             "dependencies": {
+                "ansi-regex": {
+                    "version": "5.0.1",
+                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+                    "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+                    "dev": true
+                },
+                "ansi-styles": {
+                    "version": "4.3.0",
+                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+                    "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+                    "dev": true,
+                    "requires": {
+                        "color-convert": "^2.0.1"
+                    }
+                },
                 "emoji-regex": {
                     "version": "8.0.0",
                     "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-                    "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+                    "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+                    "dev": true
                 },
                 "is-fullwidth-code-point": {
                     "version": "3.0.0",
                     "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-                    "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+                    "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+                    "dev": true
                 },
                 "string-width": {
                     "version": "4.2.3",
                     "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
                     "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+                    "dev": true,
                     "requires": {
                         "emoji-regex": "^8.0.0",
                         "is-fullwidth-code-point": "^3.0.0",
                         "strip-ansi": "^6.0.1"
                     }
+                },
+                "strip-ansi": {
+                    "version": "6.0.1",
+                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+                    "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+                    "dev": true,
+                    "requires": {
+                        "ansi-regex": "^5.0.1"
+                    }
                 }
             }
         },
         "ws": {
-            "version": "8.18.3",
-            "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
-            "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
+            "version": "8.20.0",
+            "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz",
+            "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==",
             "dev": true,
             "requires": {}
         },
@@ -10048,9 +8414,9 @@
             "dev": true
         },
         "yaml": {
-            "version": "2.8.1",
-            "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz",
-            "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==",
+            "version": "2.8.3",
+            "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",
+            "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
             "dev": true
         },
         "yaml-types": {
@@ -10075,6 +8441,12 @@
                 "yargs-parser": "^21.1.1"
             },
             "dependencies": {
+                "ansi-regex": {
+                    "version": "5.0.1",
+                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+                    "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+                    "dev": true
+                },
                 "emoji-regex": {
                     "version": "8.0.0",
                     "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -10097,6 +8469,15 @@
                         "is-fullwidth-code-point": "^3.0.0",
                         "strip-ansi": "^6.0.1"
                     }
+                },
+                "strip-ansi": {
+                    "version": "6.0.1",
+                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+                    "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+                    "dev": true,
+                    "requires": {
+                        "ansi-regex": "^5.0.1"
+                    }
                 }
             }
         },
diff --git a/package.json b/package.json
index 82245438..89b06003 100644
--- a/package.json
+++ b/package.json
@@ -46,7 +46,7 @@
         "#serialize": "./src/data/serialize.js",
         "#sort": "./src/common-util/sort.js",
         "#sugar": "./src/common-util/sugar.js",
-        "#test-lib": "./test/lib/index.js",
+        "#test-lib": "./test/test-lib.js",
         "#thing": "./src/data/thing.js",
         "#things": "./src/data/things/init.js",
         "#thumbs": "./src/gen-thumbs.js",
@@ -60,26 +60,25 @@
         "node": ">= 22.13.0"
     },
     "dependencies": {
-        "@eslint/js": "9.37.0",
+        "@eslint/js": "10.0.1",
         "@js-temporal/polyfill": "0.4.4",
-        "chroma-js": "2.4.2",
+        "chokidar": "5.0.0",
+        "chroma-js": "3.2.0",
         "command-exists": "1.2.9",
         "compress-json": "3.4.0",
-        "eslint": "9.37.0",
+        "eslint": "10.1.0",
         "flexsearch": "0.7.43",
         "image-size": "2.0.2",
-        "js-yaml": "4.1.0",
-        "marked": "16.4.1",
-        "msgpackr": "1.11.1",
-        "rimraf": "5.0.7",
+        "js-yaml": "4.1.1",
+        "marked": "17.0.5",
+        "msgpackr": "1.11.9",
+        "rimraf": "6.1.3",
         "striptags": "4.0.0-alpha.4",
         "word-count": "0.3.1",
         "word-wrap": "1.2.5"
     },
     "license": "MIT",
     "devDependencies": {
-        "chokidar": "^3.5.3",
-        "tap": "^21.1.1",
-        "tcompare": "^6.0.0"
+        "tap": "21.6.2"
     }
 }
diff --git a/src/common-util/wiki-data.js b/src/common-util/wiki-data.js
index ff325b7a..74222e9e 100644
--- a/src/common-util/wiki-data.js
+++ b/src/common-util/wiki-data.js
@@ -575,7 +575,7 @@ export function* matchMarkdownLinks(markdownSource, {marked}) {
   // This is just an optimization. Don't let Marked try to process tokens
   // recursively, i.e. within the text/label of the link. We only care about
   // the text itself, as a string.
-  lexer.inlineTokens = x => [];
+  lexer.inlineTokens = _x => [];
 
   // This is cheating, because the lexer's tokenizer is a private property,
   // but we can apparently access it anyway.
diff --git a/src/content/dependencies/generatePageLayout.js b/src/content/dependencies/generatePageLayout.js
index fec3bd78..300d256d 100644
--- a/src/content/dependencies/generatePageLayout.js
+++ b/src/content/dependencies/generatePageLayout.js
@@ -741,7 +741,7 @@ export default {
             slottedStyleTags,
 
             html.tag('script', {
-              src: to('staticLib.path', 'chroma-js/chroma.min.js'),
+              src: to('staticLib.path', 'chroma-js/chroma.min.cjs'),
             }),
 
             html.tag('script', {
diff --git a/src/data/cacheable-object.js b/src/data/cacheable-object.js
index 0071c60d..f63fe4bd 100644
--- a/src/data/cacheable-object.js
+++ b/src/data/cacheable-object.js
@@ -50,7 +50,10 @@ export default class CacheableObject {
       if (!flags.update) continue;
 
       if (typeof update === 'object' && update !== null && 'default' in update) {
-        validatePropertyValue(property, null, update.default, update);
+        if (update.validate) {
+          validatePropertyValue(property, null, update.default, update);
+        }
+
         this.prototype[CacheableObject.updateValue][property] = update.default;
       } else {
         this.prototype[CacheableObject.updateValue][property] = null;
diff --git a/src/data/composite.js b/src/data/composite.js
index 3b462ef5..a1b6548b 100644
--- a/src/data/composite.js
+++ b/src/data/composite.js
@@ -407,9 +407,9 @@ export function templateCompositeFrom(description) {
         }
       }
 
-      const inputAppearance = name =>
-        (isInputToken(preparedInputs[name])
-          ? `${getInputTokenShape(preparedInputs[name])}() call`
+      const inputAppearance = token =>
+        (isInputToken(token)
+          ? `${getInputTokenShape(token)}() call`
           : `dependency name`);
 
       if (!empty(misplacedInputNames)) {
@@ -425,8 +425,8 @@ export function templateCompositeFrom(description) {
       }
 
       for (const index of namedAndPositionalConflictInputPositions) {
-        const conflictingName = positionalInputNames[index];
-        push(new Error(`${name}: Provided as both named and positional (i = ${index}) input`));
+        const conflictingName = positionalInputs[index];
+        push(new Error(`${conflictingName}: Provided as both named and positional (i = ${index}) input`));
       }
 
       for (const {skipped, before} of skippedInputNames) {
diff --git a/src/data/composite/things/contribution/withContainingReverseContributionList.js b/src/data/composite/things/contribution/withContainingReverseContributionList.js
index d8288b17..c600707c 100644
--- a/src/data/composite/things/contribution/withContainingReverseContributionList.js
+++ b/src/data/composite/things/contribution/withContainingReverseContributionList.js
@@ -3,7 +3,7 @@
 // current contribution is dateless, the list is filtered to only include
 // dateless contributions from the same immediately nearby context.
 
-import {input, templateCompositeFrom} from '#composite';
+import {templateCompositeFrom} from '#composite';
 
 import {raiseOutputWithoutDependency, withResultOfAvailabilityCheck}
   from '#composite/control-flow';
diff --git a/src/data/things/MusicVideo.js b/src/data/things/MusicVideo.js
index a7eba04c..acdfaa2b 100644
--- a/src/data/things/MusicVideo.js
+++ b/src/data/things/MusicVideo.js
@@ -10,7 +10,6 @@ import {constituteFrom} from '#composite/wiki-data';
 
 import {
   exposeConstant,
-  exposeDependency,
   exposeUpdateValueOrContinue,
   exposeWhetherDependencyAvailable,
   exitWithoutDependency,
diff --git a/src/static/css/search.css b/src/static/css/search.css
index 92925f55..3c56eed6 100644
--- a/src/static/css/search.css
+++ b/src/static/css/search.css
@@ -356,7 +356,7 @@
   /* Shadow along top edge */
 
   .wiki-search-results-container > :first-child {
-    margin-top: -6px;
+    margin-top: -4px;
   }
 
   .wiki-search-results-container::before {
@@ -368,7 +368,7 @@
   /* Shadow along bottom edge */
 
   .wiki-search-results-container > :last-child {
-    margin-bottom: -12px;
+    margin-bottom: -10px;
   }
 
   .wiki-search-results-container::after {
diff --git a/src/static/js/client/index.js b/src/static/js/client/index.js
index cd617bea..9296dff1 100644
--- a/src/static/js/client/index.js
+++ b/src/static/js/client/index.js
@@ -60,6 +60,7 @@ const clientInfo = window.hsmusicClientInfo = Object.create(null);
 // So for example, all modules' getPageReferences steps are evaluated, then
 // all modules' addInternalListeners steps are evaluated, and so on.
 const setupSteps = {
+  bindSessionStorage: [],
   getPageReferences: [],
   addInternalListeners: [],
   mutatePageContent: [],
@@ -322,7 +323,11 @@ function evaluateBindSessionStorageStep(bindSessionStorage) {
 function evaluateStep(stepsObject, key) {
   for (const step of stepsObject[key]) {
     try {
-      step();
+      if (key === 'bindSessionStorage') {
+        evaluateBindSessionStorageStep(step);
+      } else {
+        step();
+      }
     } catch (error) {
       console.error(`During ${key}, failed to run ${step.name}`);
       console.error(error);
diff --git a/src/static/js/client/sidebar-search.js b/src/static/js/client/sidebar-search.js
index 7b01cb00..386bf477 100644
--- a/src/static/js/client/sidebar-search.js
+++ b/src/static/js/client/sidebar-search.js
@@ -615,7 +615,7 @@ export function addPageListeners() {
       return;
     }
 
-    if (event.shiftKey && event.code === 'Slash') {
+    if (domEvent.shiftKey && domEvent.code === 'Slash') {
       domEvent.preventDefault();
       info.searchLabel.click();
     }
@@ -785,7 +785,7 @@ function recordActiveQueryContext() {
 }
 
 function clearSidebarSearch() {
-  const {session, state} = info;
+  const {state} = info;
 
   if (state.stoppedTypingTimeout) {
     clearTimeout(state.stoppedTypingTimeout);
diff --git a/src/web-routes.js b/src/web-routes.js
index a7115bbd..2bd8c134 100644
--- a/src/web-routes.js
+++ b/src/web-routes.js
@@ -65,6 +65,7 @@ function quickNodeDependency({
 export const dependencyRoutes = [
   quickNodeDependency({
     name: 'chroma-js',
+    path: 'dist',
   }),
 
   quickNodeDependency({
diff --git a/test/lib/composite.js b/test/lib/composite.js
deleted file mode 100644
index 359d364d..00000000
--- a/test/lib/composite.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import {compositeFrom} from '#composite';
-
-export function quickCheckCompositeOutputs(t, dependencies) {
-  return (step, outputDict) => {
-    t.same(
-      Object.keys(step.toDescription().outputs),
-      Object.keys(outputDict));
-
-    const composite = compositeFrom({
-      compose: false,
-      steps: [
-        step,
-
-        {
-          dependencies: Object.keys(outputDict),
-
-          // Access all dependencies by their expected keys -
-          // the composition runner actually provides a proxy
-          // and is checking that *we* access the dependencies
-          // we've specified.
-          compute: dependencies =>
-            Object.fromEntries(
-              Object.keys(outputDict)
-                .map(key => [key, dependencies[key]])),
-        },
-      ],
-    });
-
-    t.same(
-      composite.expose.compute(dependencies),
-      outputDict);
-  };
-}
diff --git a/test/lib/content-function.js b/test/lib/content-function.js
deleted file mode 100644
index 49fe5c95..00000000
--- a/test/lib/content-function.js
+++ /dev/null
@@ -1,285 +0,0 @@
-import * as path from 'node:path';
-import {fileURLToPath} from 'node:url';
-import {inspect} from 'node:util';
-
-import chroma from 'chroma-js';
-
-import {showAggregate} from '#aggregate';
-import {getColors} from '#colors';
-import {quickLoadContentDependencies} from '#content-dependencies';
-import {quickEvaluate} from '#content-function';
-import * as html from '#html';
-import {internalDefaultStringsFile, processLanguageFile} from '#language';
-import {empty} from '#sugar';
-
-import {
-  applyLocalizedWithBaseDirectory,
-  generateURLs,
-  internalDefaultURLSpecFile,
-  processURLSpecFromFileSync,
-  thumb,
-} from '#urls';
-
-import mock from './generic-mock.js';
-
-const __dirname = path.dirname(fileURLToPath(import.meta.url));
-
-function cleanURLSpec(urlSpec) {
-  for (const spec of Object.values(urlSpec)) {
-    if (spec.prefix) {
-      // Strip out STATIC_VERSION. This updates fairly regularly and we
-      // don't want it to affect snapshot tests.
-      spec.prefix = spec.prefix
-        .replace(/static-\d+[a-z]\d+/i, 'static');
-    }
-  }
-}
-
-function urlsPlease() {
-  const {aggregate: urlsAggregate, result: urlSpec} =
-    processURLSpecFromFileSync(internalDefaultURLSpecFile);
-
-  urlsAggregate.close();
-
-  applyLocalizedWithBaseDirectory(urlSpec);
-
-  cleanURLSpec(urlSpec);
-
-  return generateURLs(urlSpec);
-}
-
-export function testContentFunctions(t, message, fn) {
-  const urls = urlsPlease();
-
-  t.test(message, async t => {
-    let loadedContentDependencies;
-
-    const language = await processLanguageFile(internalDefaultStringsFile);
-    const mocks = [];
-
-    const evaluate = ({
-      from = 'localized.home',
-      contentDependencies = {},
-      extraDependencies = {},
-      ...opts
-    }) => {
-      if (!loadedContentDependencies) {
-        throw new Error(`Await .load() before performing tests`);
-      }
-
-      const {to} = urls.from(from);
-
-      return cleanCatchAggregate(() => {
-        return quickEvaluate({
-          ...opts,
-          contentDependencies: {
-            ...contentDependencies,
-            ...loadedContentDependencies,
-          },
-          extraDependencies: {
-            html,
-            language,
-            thumb,
-            to,
-            urls,
-
-            pagePath: ['home'],
-            appendIndexHTML: false,
-            getColors: c => getColors(c, {chroma}),
-
-            wikiData: {
-              wikiInfo: {},
-            },
-
-            ...extraDependencies,
-          },
-        });
-      });
-    };
-
-    evaluate.load = async (opts) => {
-      if (loadedContentDependencies) {
-        throw new Error(`Already loaded!`);
-      }
-
-      loadedContentDependencies = await asyncCleanCatchAggregate(() =>
-        quickLoadContentDependencies({
-          logging: false,
-          ...opts,
-        }));
-    };
-
-    evaluate.snapshot = (...args) => {
-      if (!loadedContentDependencies) {
-        throw new Error(`Await .load() before performing tests`);
-      }
-
-      const [description, opts] =
-        (typeof args[0] === 'string'
-          ? args
-          : ['output', ...args]);
-
-      let result = evaluate(opts);
-
-      if (opts.multiple) {
-        result = result.map(item => item.toString()).join('\n');
-      } else {
-        result = result.toString();
-      }
-
-      t.matchSnapshot(result, description);
-    };
-
-    evaluate.stubTemplate = name =>
-      // Creates a particularly permissable template, allowing any slot values
-      // to be stored and just outputting the contents of those slots as-are.
-      _stubTemplate(name, false);
-
-    evaluate.stubContentFunction = name =>
-      // Like stubTemplate, but instead of a template directly, returns
-      // an object describing a content function - suitable for passing
-      // into evaluate.mock.
-      _stubTemplate(name, true);
-
-    const _stubTemplate = (name, mockContentFunction) => {
-      const inspectNicely = (value, opts = {}) =>
-        inspect(value, {
-          ...opts,
-          colors: false,
-          sort: true,
-        });
-
-      const makeTemplate = formatContentFn =>
-        new (class extends html.Template {
-          #slotValues = {};
-
-          constructor() {
-            super({
-              content: () => this.#getContent(formatContentFn),
-            });
-          }
-
-          setSlots(slotNamesToValues) {
-            Object.assign(this.#slotValues, slotNamesToValues);
-          }
-
-          setSlot(slotName, slotValue) {
-            this.#slotValues[slotName] = slotValue;
-          }
-
-          #getContent(formatContentFn) {
-            const toInspect =
-              Object.fromEntries(
-                Object.entries(this.#slotValues)
-                  .filter(([key, value]) => value !== null));
-
-            const inspected =
-              inspectNicely(toInspect, {
-                breakLength: Infinity,
-                compact: true,
-                depth: Infinity,
-              });
-
-            return formatContentFn(inspected); `${name}: ${inspected}`;
-          }
-        });
-
-      if (mockContentFunction) {
-        return {
-          data: (...args) => ({args}),
-          generate: (data) =>
-            makeTemplate(slots => {
-              const argsLines =
-                (empty(data.args)
-                  ? []
-                  : inspectNicely(data.args, {depth: Infinity})
-                      .split('\n'));
-
-              return (`[mocked: ${name}` +
-
-                (empty(data.args)
-                  ? ``
-               : argsLines.length === 1
-                  ? `\n args: ${argsLines[0]}`
-                  : `\n args: ${argsLines[0]}\n` +
-                    argsLines.slice(1).join('\n').replace(/^/gm, ' ')) +
-
-                (!empty(data.args)
-                  ? `\n `
-                  : ` - `) +
-
-                (slots
-                  ? `slots: ${slots}]`
-                  : `slots: none]`));
-            }),
-        };
-      } else {
-        return makeTemplate(slots => `${name}: ${slots}`);
-      }
-    };
-
-    evaluate.mock = (...opts) => {
-      const {value, close} = mock(...opts);
-      mocks.push({close});
-      return value;
-    };
-
-    evaluate.mock.transformContent = {
-      transformContent: {
-        extraDependencies: ['html'],
-        data: content => ({content}),
-        slots: {mode: {type: 'string'}},
-        generate: ({content}) => content,
-      },
-    };
-
-    await fn(t, evaluate);
-
-    if (!empty(mocks)) {
-      cleanCatchAggregate(() => {
-        const errors = [];
-        for (const {close} of mocks) {
-          try {
-            close();
-          } catch (error) {
-            errors.push(error);
-          }
-        }
-        if (!empty(errors)) {
-          throw new AggregateError(errors, `Errors closing mocks`);
-        }
-      });
-    }
-  });
-}
-
-function printAggregate(error) {
-  if (error instanceof AggregateError) {
-    const message = showAggregate(error, {
-      showTraces: true,
-      print: false,
-      pathToFileURL: f => path.relative(path.join(__dirname, '../..'), fileURLToPath(f)),
-    });
-    for (const line of message.split('\n')) {
-      console.error(line);
-    }
-  }
-}
-
-function cleanCatchAggregate(fn) {
-  try {
-    return fn();
-  } catch (error) {
-    printAggregate(error);
-    throw error;
-  }
-}
-
-async function asyncCleanCatchAggregate(fn) {
-  try {
-    return await fn();
-  } catch (error) {
-    printAggregate(error);
-    throw error;
-  }
-}
diff --git a/test/lib/generic-mock.js b/test/lib/generic-mock.js
deleted file mode 100644
index 28309ab0..00000000
--- a/test/lib/generic-mock.js
+++ /dev/null
@@ -1,314 +0,0 @@
-import {same} from 'tcompare';
-
-import {empty} from '#sugar';
-
-export default function mock(callback) {
-  const mocks = [];
-
-  const track = callback => (...args) => {
-    const {value, close} = callback(...args);
-    mocks.push({close});
-    return value;
-  };
-
-  const mock = {
-    function: track(mockFunction),
-  };
-
-  return {
-    value: callback(mock),
-    close: () => {
-      const errors = [];
-      for (const mock of mocks) {
-        try {
-          mock.close();
-        } catch (error) {
-          errors.push(error);
-        }
-      }
-      if (!empty(errors)) {
-        throw new AggregateError(errors, `Errors closing sub-mocks`);
-      }
-    },
-  };
-}
-
-export function mockFunction(...args) {
-  let name = '(anonymous)';
-  let behavior = null;
-
-  if (args.length === 2) {
-    if (
-      typeof args[0] === 'string' &&
-      typeof args[1] === 'function'
-    ) {
-      name = args[0];
-      behavior = args[1];
-    } else {
-      throw new TypeError(`Expected name to be a string`);
-    }
-  } else if (args.length === 1) {
-    if (typeof args[0] === 'string') {
-      name = args[0];
-    } else if (typeof args[0] === 'function') {
-      behavior = args[0];
-    } else if (args[0] !== null) {
-      throw new TypeError(`Expected string (name), function (behavior), both, or null / no arguments`);
-    }
-  } else if (args.length > 2) {
-    throw new TypeError(`Expected string (name), function (behavior), both, or null / no arguments`);
-  }
-
-  let currentCallDescription = newCallDescription();
-  const allCallDescriptions = [currentCallDescription];
-
-  const topLevelErrors = [];
-  let runningCallCount = 0;
-  let limitCallCount = false;
-  let markedAsOnce = false;
-
-  const fn = (...args) => {
-    const description = processCall(...args);
-    return description.behavior(...args);
-  };
-
-  fn.behavior = value => {
-    if (!(value === null || (
-      typeof value === 'function'
-    ))) {
-      throw new TypeError(`Expected function or null`);
-    }
-
-    currentCallDescription.behavior = behavior;
-    currentCallDescription.described = true;
-
-    return fn;
-  }
-
-  fn.argumentCount = value => {
-    if (!(value === null || (
-      typeof value === 'number' &&
-      value === parseInt(value) &&
-      value >= 0
-    ))) {
-      throw new TypeError(`Expected whole number or null`);
-    }
-
-    if (currentCallDescription.argsPattern) {
-      throw new TypeError(`Unexpected .argumentCount() when .args() has been called`);
-    }
-
-    currentCallDescription.argsPattern = {length: value};
-    currentCallDescription.described = true;
-
-    return fn;
-  };
-
-  fn.args = (...args) => {
-    const value = args[0];
-
-    if (args.length > 1 || !(value === null || Array.isArray(value))) {
-      throw new TypeError(`Expected one array or null`);
-    }
-
-    currentCallDescription.argsPattern = Object.fromEntries(
-      value
-        .map((v, i) => v === undefined ? false : [i, v])
-        .filter(Boolean)
-        .concat([['length', value.length]]));
-
-    currentCallDescription.described = true;
-
-    return fn;
-  };
-
-  fn.neverCalled = (...args) => {
-    if (!empty(args)) {
-      throw new TypeError(`Didn't expect any arguments`);
-    }
-
-    if (allCallDescriptions[0].described) {
-      throw new TypeError(`Unexpected .neverCalled() when any descriptions provided`);
-    }
-
-    limitCallCount = true;
-    allCallDescriptions.splice(0, allCallDescriptions.length);
-
-    currentCallDescription = new Proxy({}, {
-      set() {
-        throw new Error(`Unexpected description when .neverCalled() has been called`);
-      },
-    });
-
-    return fn;
-  };
-
-  fn.once = (...args) => {
-    if (!empty(args)) {
-      throw new TypeError(`Didn't expect any arguments`);
-    }
-
-    if (allCallDescriptions.length > 1) {
-      throw new TypeError(`Unexpected .once() when providing multiple descriptions`);
-    }
-
-    currentCallDescription.described = true;
-    limitCallCount = true;
-    markedAsOnce = true;
-
-    return fn;
-  };
-
-  fn.next = (...args) => {
-    if (!empty(args)) {
-      throw new TypeError(`Didn't expect any arguments`);
-    }
-
-    if (markedAsOnce) {
-      throw new TypeError(`Unexpected .next() when .once() has been called`);
-    }
-
-    currentCallDescription = newCallDescription();
-    allCallDescriptions.push(currentCallDescription);
-
-    limitCallCount = true;
-
-    return fn;
-  };
-
-  fn.repeat = times => {
-    // Note: This function should be called AFTER filling out the
-    // call description which is being repeated.
-
-    if (!(
-      typeof times === 'number' &&
-      times === parseInt(times) &&
-      times >= 2
-    )) {
-      throw new TypeError(`Expected whole number of at least 2`);
-    }
-
-    if (markedAsOnce) {
-      throw new TypeError(`Unexpected .repeat() when .once() has been called`);
-    }
-
-    // The current call description is already in the full list,
-    // so skip the first push.
-    for (let i = 2; i <= times; i++) {
-      allCallDescriptions.push(currentCallDescription);
-    }
-
-    // Prep a new description like when calling .next().
-    currentCallDescription = newCallDescription();
-    allCallDescriptions.push(currentCallDescription);
-
-    limitCallCount = true;
-
-    return fn;
-  };
-
-  return {
-    value: fn,
-    close: () => {
-      const totalCallCount = runningCallCount;
-      const expectedCallCount = countDescribedCalls();
-
-      if (limitCallCount && totalCallCount !== expectedCallCount) {
-        if (expectedCallCount > 1) {
-          topLevelErrors.push(new Error(`Expected ${expectedCallCount} calls, got ${totalCallCount}`));
-        } else if (expectedCallCount === 1) {
-          topLevelErrors.push(new Error(`Expected 1 call, got ${totalCallCount}`));
-        } else {
-          topLevelErrors.push(new Error(`Expected no calls, got ${totalCallCount}`));
-        }
-      }
-
-      if (topLevelErrors.length) {
-        throw new AggregateError(topLevelErrors, `Errors in mock ${name}`);
-      }
-    },
-  };
-
-  function newCallDescription() {
-    return {
-      described: false,
-      behavior: behavior ?? null,
-      argumentCount: null,
-      argsPattern: null,
-    };
-  }
-
-  function processCall(...args) {
-    const callErrors = [];
-
-    runningCallCount++;
-
-    // No further processing, this indicates the function shouldn't have been
-    // called at all and there aren't any descriptions to match this call with.
-    if (empty(allCallDescriptions)) {
-      return newCallDescription();
-    }
-
-    const currentCallNumber = runningCallCount;
-    const currentDescription = selectCallDescription(currentCallNumber);
-
-    const {
-      argumentCount,
-      argsPattern,
-    } = currentDescription;
-
-    if (argumentCount !== null && args.length !== argumentCount) {
-      callErrors.push(
-        new Error(`Argument count mismatch: expected ${argumentCount}, got ${args.length}`));
-    }
-
-    if (argsPattern !== null) {
-      const keysToCheck = Object.keys(argsPattern);
-      const argsAsObject = Object.fromEntries(
-        args
-          .map((v, i) => [i.toString(), v])
-          .filter(([i]) => keysToCheck.includes(i))
-          .concat([['length', args.length]]));
-
-      const {match, diff} = same(argsAsObject, argsPattern);
-      if (!match) {
-        callErrors.push(new Error(`Argument pattern mismatch:\n` + diff));
-      }
-    }
-
-    if (!empty(callErrors)) {
-      const aggregate = new AggregateError(callErrors, `Errors in call #${currentCallNumber}`);
-      topLevelErrors.push(aggregate);
-    }
-
-    return currentDescription;
-  }
-
-  function selectCallDescription(currentCallNumber) {
-    if (currentCallNumber > countDescribedCalls()) {
-      const lastDescription = lastCallDescription();
-      if (lastDescription.described) {
-        return newCallDescription();
-      } else {
-        return lastDescription;
-      }
-    } else {
-      return allCallDescriptions[currentCallNumber - 1];
-    }
-  }
-
-  function countDescribedCalls() {
-    if (empty(allCallDescriptions)) {
-      return 0;
-    }
-
-    return (
-      (lastCallDescription().described
-        ? allCallDescriptions.length
-        : allCallDescriptions.length - 1));
-  }
-
-  function lastCallDescription() {
-    return allCallDescriptions[allCallDescriptions.length - 1];
-  }
-}
diff --git a/test/lib/index.js b/test/lib/index.js
deleted file mode 100644
index 4c9ee23f..00000000
--- a/test/lib/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-Error.stackTraceLimit = Infinity;
-
-export * from './composite.js';
-export * from './content-function.js';
-export * from './generic-mock.js';
-export * from './wiki-data.js';
-export * from './strict-match-error.js';
diff --git a/test/lib/wiki-data.js b/test/lib/wiki-data.js
deleted file mode 100644
index f0ee0ef5..00000000
--- a/test/lib/wiki-data.js
+++ /dev/null
@@ -1,156 +0,0 @@
-import CacheableObject from '#cacheable-object';
-import find, {bindFind} from '#find';
-import {bindReverse} from '#reverse';
-import {withEntries} from '#sugar';
-import Thing from '#thing';
-import thingConstructors from '#things';
-import {linkWikiDataArrays} from '#yaml';
-
-export function linkAndBindWikiData(wikiData, {
-  inferAlbumsOwnTrackData = true,
-} = {}) {
-  function customLinkWikiDataArrays(wikiData, options = {}) {
-    if (options.XXX_decacheWikiData) {
-      wikiData =
-        withEntries(wikiData, entries => entries
-          .map(([key, value]) => [key, value.slice()]));
-    }
-
-    linkWikiDataArrays(wikiData, {bindFind, bindReverse});
-  }
-
-  customLinkWikiDataArrays(wikiData);
-
-  return {
-    // Mutate to make the below functions aware of new data objects, or of
-    // reordering the existing ones. Don't mutate arrays such as trackData
-    // in-place; assign completely new arrays to this wikiData object instead.
-    wikiData,
-
-    // Use this after you've mutated wikiData to assign new data arrays.
-    // It'll automatically relink everything on wikiData so all the objects
-    // are caught up to date.
-    linkWikiDataArrays:
-      customLinkWikiDataArrays
-        .bind(null, wikiData),
-
-    // Use this if you HAVEN'T mutated wikiData and just need to decache
-    // indirect dependencies on exposed properties of other data objects.
-    //
-    // XXX_decacheWikiData option should be used specifically to mark points
-    // where you *aren't* replacing any of the arrays under wikiData with
-    // new values, and are using linkWikiDataArrays to instead "decache" data
-    // properties which depend on any of them. It's currently not possible for
-    // a CacheableObject to depend directly on the value of a property exposed
-    // on some other CacheableObject, so when those values change, you have to
-    // manually decache before the object will realize its cache isn't valid
-    // anymore.
-    //
-    // The previous implementation for this involved overwriting the relevant
-    // wikiData properties with null, then replacing it with the original
-    // array, which effectively cleared a CacheableObject cache. But it isn't
-    // enough to clear other caches that depend on the identity of wikiData
-    // arrays, such as withReverseReferenceList, so now it replaces with fresh
-    // copies of the data arrays instead; the original identities don't get
-    // reused.
-    XXX_decacheWikiData:
-      customLinkWikiDataArrays
-        .bind(null, wikiData, {XXX_decacheWikiData: true}),
-  };
-}
-
-export function stubWikiData() {
-  return {
-    albumData: [],
-    artistData: [],
-    artTagData: [],
-    flashData: [],
-    flashActData: [],
-    flashSideData: [],
-    groupData: [],
-    groupCategoryData: [],
-    newsData: [],
-    staticPageData: [],
-    trackData: [],
-    trackSectionData: [],
-  };
-}
-
-export function stubThing(wikiData, constructor, properties = {}) {
-  const thing = Reflect.construct(constructor, []);
-  Object.assign(thing, properties);
-
-  const wikiDataSpec = {
-    Album: 'albumData',
-    Artist: 'artistData',
-    ArtTag: 'artTagData',
-    Flash: 'flashData',
-    FlashAct: 'flashActData',
-    FlashSide: 'flashSideData',
-    Group: 'groupData',
-    GroupCategory: 'groupCategoryData',
-    NewsEntry: 'newsData',
-    StaticPage: 'staticPageData',
-    Track: 'trackData',
-    TrackSection: 'trackSectionData',
-  };
-
-  const wikiDataMap =
-    new Map(
-      Object.entries(wikiDataSpec)
-        .map(([thingKey, wikiDataKey]) => [
-          thingConstructors[thingKey],
-          wikiData[wikiDataKey],
-        ]));
-
-  const wikiDataArray =
-    wikiDataMap.get(constructor);
-
-  wikiDataArray.push(thing);
-
-  return thing;
-}
-
-export function stubTrackAndAlbum(wikiData, trackDirectory = null, albumDirectory = null) {
-  const {Track, TrackSection, Album} = thingConstructors;
-
-  const track =
-    stubThing(wikiData, Track, {directory: trackDirectory});
-
-  const section =
-    stubThing(wikiData, TrackSection, {tracks: [track]});
-
-  const album =
-    stubThing(wikiData, Album, {directory: albumDirectory, trackSections: [section]});
-
-  return {track, album, section};
-}
-
-export function stubArtistAndContribs(wikiData, artistName = `Test Artist`) {
-  const {Artist} = thingConstructors;
-
-  const artist =
-    stubThing(wikiData, Artist, {name: artistName});
-
-  const contribs =
-    [{artist: artistName, annotation: null}];
-
-  const badContribs =
-    [{artist: `Figment of Your Imagination`, annotation: null}];
-
-  return {artist, contribs, badContribs};
-}
-
-export function stubFlashAndAct(wikiData, flashDirectory = null) {
-  const {Flash, FlashAct} = thingConstructors;
-
-  const flash =
-    stubThing(wikiData, Flash, {directory: flashDirectory});
-
-  const flashAct =
-    stubThing(wikiData, FlashAct, {
-      flashes: [Thing.getReference(flash)],
-    });
-
-  return {flash, flashAct};
-}
diff --git a/test/lib/strict-match-error.js b/test/test-lib.js
index e3b36e93..a12974cd 100644
--- a/test/lib/strict-match-error.js
+++ b/test/test-lib.js
@@ -1,3 +1,39 @@
+import {compositeFrom} from '#composite';
+
+Error.stackTraceLimit = Infinity;
+
+export function quickCheckCompositeOutputs(t, dependencies) {
+  return (step, outputDict) => {
+    t.same(
+      Object.keys(step.toDescription().outputs),
+      Object.keys(outputDict));
+
+    const composite = compositeFrom({
+      compose: false,
+      steps: [
+        step,
+
+        {
+          dependencies: Object.keys(outputDict),
+
+          // Access all dependencies by their expected keys -
+          // the composition runner actually provides a proxy
+          // and is checking that *we* access the dependencies
+          // we've specified.
+          compute: dependencies =>
+            Object.fromEntries(
+              Object.keys(outputDict)
+                .map(key => [key, dependencies[key]])),
+        },
+      ],
+    });
+
+    t.same(
+      composite.expose.compute(dependencies),
+      outputDict);
+  };
+}
+
 export function strictlyThrows(t, fn, pattern) {
   const error = catchErrorOrNull(fn);
 
diff --git a/test/unit/content/dependencies/generateAlbumTrackList.js b/test/unit/content/dependencies/generateAlbumTrackList.js
deleted file mode 100644
index 988f8505..00000000
--- a/test/unit/content/dependencies/generateAlbumTrackList.js
+++ /dev/null
@@ -1,43 +0,0 @@
-import t from 'tap';
-import {testContentFunctions} from '#test-lib';
-
-testContentFunctions(t, 'generateAlbumTrackList (unit)', async (t, evaluate) => {
-  await evaluate.load({
-    mock: {
-      generateAlbumTrackListItem: {
-        extraDependencies: ['html'],
-        data: track => track.name,
-        generate: (name, {html}) =>
-          html.tag('li', `Item: ${name}`),
-      },
-
-      image:
-        evaluate.stubContentFunction('image'),
-    },
-  });
-
-  let readDuration = false;
-
-  const track = (name, duration) => ({
-    name,
-    get duration() {
-      readDuration = true;
-      return duration;
-    },
-  });
-
-  const tracks = [
-    track('Track 1', 30),
-    track('Track 2', 15),
-  ];
-
-  evaluate({
-    name: 'generateAlbumTrackList',
-    args: [{
-      trackSections: [{isDefaultTrackSection: true, tracks}],
-      tracks,
-    }],
-  });
-
-  t.notOk(readDuration, 'expect no access to track.duration property');
-});
diff --git a/test/unit/content/dependencies/linkArtist.js b/test/unit/content/dependencies/linkArtist.js
deleted file mode 100644
index e6e19d2f..00000000
--- a/test/unit/content/dependencies/linkArtist.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import t from 'tap';
-import {testContentFunctions} from '#test-lib';
-
-testContentFunctions(t, 'linkArtist (unit)', async (t, evaluate) => {
-  const artistObject = {};
-  const linkTemplate = {};
-
-  await evaluate.load({
-    mock: evaluate.mock(mock => ({
-      linkThing: {
-        relations: mock.function('linkThing.relations', () => ({}))
-          .args([undefined, 'localized.artist', artistObject])
-          .once(),
-
-        data: mock.function('linkThing.data', () => ({}))
-          .args(['localized.artist', artistObject])
-          .once(),
-
-        generate: mock.function('linkThing.data', () => linkTemplate)
-          .once(),
-      }
-    })),
-  });
-
-  const result = evaluate({
-    name: 'linkArtist',
-    args: [artistObject],
-  });
-
-  t.equal(result, linkTemplate);
-});
diff --git a/test/unit/content/dependencies/linkContribution.js b/test/unit/content/dependencies/linkContribution.js
deleted file mode 100644
index 1baa80f8..00000000
--- a/test/unit/content/dependencies/linkContribution.js
+++ /dev/null
@@ -1,145 +0,0 @@
-import t from 'tap';
-import {testContentFunctions} from '#test-lib';
-
-t.test('linkContribution (unit)', async t => {
-  const artist1 = {
-    name: 'Clark Powell',
-    directory: 'clark-powell',
-    urls: ['https://soundcloud.com/plazmataz'],
-  };
-
-  const artist2 = {
-    name: 'Grounder & Scratch',
-    directory: 'the-big-baddies',
-    urls: [],
-  };
-
-  const artist3 = {
-    name: 'Toby Fox',
-    directory: 'toby-fox',
-    urls: ['https://tobyfox.bandcamp.com/', 'https://toby.fox/'],
-  };
-
-  const annotation1 = null;
-  const annotation2 = 'Snooping';
-  const annotation3 = 'Arrangement';
-
-  const thing1 = {};
-  const thing2 = {};
-  const thing3 = {};
-
-  const contribution1 = {artist: artist1, annotation: annotation1, thing: thing1};
-  const contribution2 = {artist: artist2, annotation: annotation2, thing: thing2};
-  const contribution3 = {artist: artist3, annotation: annotation3, thing: thing3};
-
-  await testContentFunctions(t, 'linkContribution (unit 1)', async (t, evaluate) => {
-    const slots = {
-      showAnnotation: true,
-      showExternalLinks: true,
-    };
-
-    await evaluate.load({
-      mock: evaluate.mock(mock => ({
-        linkArtist: {
-          relations: mock
-            .function('linkArtist.relations', () => ({}))
-            .args([undefined, artist1]).next()
-            .args([undefined, artist2]).next()
-            .args([undefined, artist3]),
-
-          data: mock
-            .function('linkArtist.data', () => ({}))
-            .args([artist1]).next()
-            .args([artist2]).next()
-            .args([artist3]),
-
-          // This can be tweaked to return a specific (mocked) template
-          // for each artist if we need to test for slots in the future.
-          generate: mock.function('linkArtist.generate', () => 'artist link')
-            .repeat(3),
-        },
-
-        generateExternalIcon: {
-          data: mock
-            .function('generateExternalIcon.data', () => ({}))
-            .args([artist1.urls[0]]).next()
-            .args([artist3.urls[0]]).next()
-            .args([artist3.urls[1]]),
-
-          generate: mock
-            .function('generateExternalIcon.generate', () => ({
-              toString: () => 'icon',
-              setSlot: () => {},
-            }))
-            .repeat(3),
-        }
-      })),
-    });
-
-    evaluate({
-      name: 'linkContribution',
-      multiple: [
-        {args: [contribution1]},
-        {args: [contribution2]},
-        {args: [contribution3]},
-      ],
-      slots,
-    });
-  });
-
-  await testContentFunctions(t, 'linkContribution (unit 2)', async (t, evaluate) => {
-    const slots = {
-      showAnnotation: false,
-      showExternalLinks: false,
-    };
-
-    await evaluate.load({
-      mock: evaluate.mock(mock => ({
-        linkArtist: {
-          relations: mock
-            .function('linkArtist.relations', () => ({}))
-            .args([undefined, artist1]).next()
-            .args([undefined, artist2]).next()
-            .args([undefined, artist3]),
-
-          data: mock
-            .function('linkArtist.data', () => ({}))
-            .args([artist1]).next()
-            .args([artist2]).next()
-            .args([artist3]),
-
-          generate: mock
-            .function(() => 'artist link')
-            .repeat(3),
-        },
-
-        // Even though icons are hidden, these are still called! The dependency
-        // tree is the same since whether or not the external icon links are
-        // shown is dependent on a slot, which is undefined and arbitrary at
-        // relations/data time (it might change on a whim at generate time).
-        generateExternalIcon: {
-          data: mock
-            .function('generateExternalIcon.data', () => ({}))
-            .repeat(3),
-
-          generate: mock
-            .function('generateExternalIcon.generate', () => ({
-              toString: () => 'icon',
-              setSlot: () => {},
-            }))
-            .repeat(3),
-        },
-      })),
-    });
-
-    evaluate({
-      name: 'linkContribution',
-      multiple: [
-        {args: [contribution1]},
-        {args: [contribution2]},
-        {args: [contribution3]},
-      ],
-      slots,
-    });
-  });
-});
diff --git a/test/unit/data/cacheable-object.js b/test/unit/data/cacheable-object.js
index 4be31788..d0448025 100644
--- a/test/unit/data/cacheable-object.js
+++ b/test/unit/data/cacheable-object.js
@@ -26,8 +26,8 @@ t.test(`CacheableObject simple separate update & expose`, t => {
       },
 
       expose: {
-        dependencies: ['number'],
-        compute: ({ number }) => number * 2
+        dependencies: ['_number'],
+        compute: ({ _number: number }) => number * 2
       }
     }
   });
@@ -53,8 +53,8 @@ t.test(`CacheableObject basic cache behavior`, t => {
       },
 
       expose: {
-        dependencies: ['string'],
-        compute: ({ string }) => {
+        dependencies: ['_string'],
+        compute: ({ _string: string }) => {
           computeCount++;
           return string.toUpperCase();
         }
@@ -136,8 +136,8 @@ t.test(`CacheableObject combined update & expose (transform with dependency)`, t
       },
 
       expose: {
-        dependencies: ['times'],
-        transform: (value, { times }) => value.repeat(times)
+        dependencies: ['_times'],
+        transform: (value, { _times: times }) => value.repeat(times)
       }
     },
 
diff --git a/test/unit/data/composite/control-flow/exposeConstant.js b/test/unit/data/composite/control-flow/exposeConstant.js
deleted file mode 100644
index 0c75894b..00000000
--- a/test/unit/data/composite/control-flow/exposeConstant.js
+++ /dev/null
@@ -1,42 +0,0 @@
-import t from 'tap';
-
-import {compositeFrom, continuationSymbol, input} from '#composite';
-import {exposeConstant} from '#composite/control-flow';
-
-t.test(`exposeConstant: basic behavior`, t => {
-  t.plan(2);
-
-  const composite1 = compositeFrom({
-    compose: false,
-
-    steps: [
-      exposeConstant({
-        value: input.value('foo'),
-      }),
-    ],
-  });
-
-  t.match(composite1, {
-    expose: {
-      dependencies: [],
-    },
-  });
-
-  t.equal(composite1.expose.compute(), 'foo');
-});
-
-t.test(`exposeConstant: validate inputs`, t => {
-  t.plan(2);
-
-  t.throws(
-    () => exposeConstant({}),
-    {message: `Errors in input options passed to exposeConstant`, errors: [
-      {message: `Required these inputs: value`},
-    ]});
-
-  t.throws(
-    () => exposeConstant({value: 'some dependency'}),
-    {message: `Errors in input options passed to exposeConstant`, errors: [
-      {message: `value: Expected input.value() call, got dependency name`},
-    ]});
-});
diff --git a/test/unit/data/composite/control-flow/exposeDependency.js b/test/unit/data/composite/control-flow/exposeDependency.js
deleted file mode 100644
index 8f6bfd01..00000000
--- a/test/unit/data/composite/control-flow/exposeDependency.js
+++ /dev/null
@@ -1,64 +0,0 @@
-import t from 'tap';
-
-import {compositeFrom, continuationSymbol, input} from '#composite';
-import {exposeDependency} from '#composite/control-flow';
-
-t.test(`exposeDependency: basic behavior`, t => {
-  t.plan(4);
-
-  const composite1 = compositeFrom({
-    compose: false,
-
-    steps: [
-      exposeDependency({dependency: 'foo'}),
-    ],
-  });
-
-  t.match(composite1, {
-    expose: {
-      dependencies: ['foo'],
-    },
-  });
-
-  t.equal(composite1.expose.compute({foo: 'bar'}), 'bar');
-
-  const composite2 = compositeFrom({
-    compose: false,
-
-    steps: [
-      {
-        dependencies: ['foo'],
-        compute: (continuation, {foo}) =>
-          continuation({'#bar': foo.toUpperCase()}),
-      },
-
-      exposeDependency({dependency: '#bar'}),
-    ],
-  });
-
-  t.match(composite2, {
-    expose: {
-      dependencies: ['foo'],
-    },
-  });
-
-  t.equal(composite2.expose.compute({foo: 'bar'}), 'BAR');
-});
-
-t.test(`exposeDependency: validate inputs`, t => {
-  t.plan(2);
-
-  t.throws(
-    () => exposeDependency({}),
-    {message: `Errors in input options passed to exposeDependency`, errors: [
-      {message: `Required these inputs: dependency`},
-    ]});
-
-  t.throws(
-    () => exposeDependency({
-      dependency: input.value('some static value'),
-    }),
-    {message: `Errors in input options passed to exposeDependency`, errors: [
-      {message: `dependency: Expected dependency name, got input.value() call`},
-    ]});
-});
diff --git a/test/unit/data/composite/control-flow/withResultOfAvailabilityCheck.js b/test/unit/data/composite/control-flow/withResultOfAvailabilityCheck.js
deleted file mode 100644
index 9d588e4c..00000000
--- a/test/unit/data/composite/control-flow/withResultOfAvailabilityCheck.js
+++ /dev/null
@@ -1,197 +0,0 @@
-import t from 'tap';
-
-import {compositeFrom, continuationSymbol, input} from '#composite';
-import {withResultOfAvailabilityCheck} from '#composite/control-flow';
-
-const composite = compositeFrom({
-  compose: false,
-
-  steps: [
-    withResultOfAvailabilityCheck({
-      from: 'from',
-      mode: 'mode',
-    }).outputs({
-      ['#availability']: '#result',
-    }),
-
-    {
-      dependencies: ['#result'],
-      compute: ({'#result': result}) => result,
-    },
-  ],
-});
-
-t.test(`withResultOfAvailabilityCheck: basic behavior`, t => {
-  t.plan(1);
-
-  t.match(composite, {
-    expose: {
-      dependencies: ['from', 'mode'],
-    },
-  });
-});
-
-const quickCompare = (t, expect, {from, mode}) =>
-  t.equal(composite.expose.compute({from, mode}), expect);
-
-const quickThrows = (t, {from, mode}) =>
-  t.throws(() => composite.expose.compute({from, mode}));
-
-t.test(`withResultOfAvailabilityCheck: mode = null`, t => {
-  t.plan(11);
-
-  quickCompare(t, true,  {mode: 'null', from: 'truthy string'});
-  quickCompare(t, true,  {mode: 'null', from: 123});
-  quickCompare(t, true,  {mode: 'null', from: true});
-
-  quickCompare(t, true,  {mode: 'null', from: ''});
-  quickCompare(t, true,  {mode: 'null', from: 0});
-  quickCompare(t, true,  {mode: 'null', from: -1});
-  quickCompare(t, true,  {mode: 'null', from: false});
-
-  quickCompare(t, true,  {mode: 'null', from: [1, 2, 3]});
-  quickCompare(t, true,  {mode: 'null', from: []});
-
-  quickCompare(t, false, {mode: 'null', from: null});
-  quickCompare(t, false, {mode: 'null', from: undefined});
-});
-
-t.test(`withResultOfAvailabilityCheck: mode = empty`, t => {
-  t.plan(11);
-
-  quickThrows(t, {mode: 'empty', from: 'truthy string'});
-  quickThrows(t, {mode: 'empty', from: 123});
-  quickThrows(t, {mode: 'empty', from: true});
-
-  quickThrows(t, {mode: 'empty', from: ''});
-  quickThrows(t, {mode: 'empty', from: 0});
-  quickThrows(t, {mode: 'empty', from: -1});
-  quickThrows(t, {mode: 'empty', from: false});
-
-  quickCompare(t, true,  {mode: 'empty', from: [1, 2, 3]});
-  quickCompare(t, false, {mode: 'empty', from: []});
-
-  quickCompare(t, false, {mode: 'empty', from: null});
-  quickCompare(t, false, {mode: 'empty', from: undefined});
-});
-
-t.test(`withResultOfAvailabilityCheck: mode = falsy`, t => {
-  t.plan(11);
-
-  quickCompare(t, true,  {mode: 'falsy', from: 'truthy string'});
-  quickCompare(t, true,  {mode: 'falsy', from: 123});
-  quickCompare(t, true,  {mode: 'falsy', from: true});
-
-  quickCompare(t, false, {mode: 'falsy', from: ''});
-  quickCompare(t, false, {mode: 'falsy', from: 0});
-  quickCompare(t, true,  {mode: 'falsy', from: -1});
-  quickCompare(t, false, {mode: 'falsy', from: false});
-
-  quickCompare(t, true,  {mode: 'falsy', from: [1, 2, 3]});
-  quickCompare(t, false, {mode: 'falsy', from: []});
-
-  quickCompare(t, false, {mode: 'falsy', from: null});
-  quickCompare(t, false, {mode: 'falsy', from: undefined});
-});
-
-t.test(`withResultOfAvailabilityCheck: mode = index`, t => {
-  t.plan(11);
-
-  quickCompare(t, false, {mode: 'index', from: 'truthy string'});
-  quickCompare(t, true,  {mode: 'index', from: 123});
-  quickCompare(t, false, {mode: 'index', from: true});
-
-  quickCompare(t, false, {mode: 'index', from: ''});
-  quickCompare(t, true,  {mode: 'index', from: 0});
-  quickCompare(t, false, {mode: 'index', from: -1});
-  quickCompare(t, false, {mode: 'index', from: false});
-
-  quickCompare(t, false, {mode: 'index', from: [1, 2, 3]});
-  quickCompare(t, false, {mode: 'index', from: []});
-
-  quickCompare(t, false, {mode: 'index', from: null});
-  quickCompare(t, false, {mode: 'index', from: undefined});
-});
-
-t.test(`withResultOfAvailabilityCheck: default mode`, t => {
-  t.plan(1);
-
-  const template = withResultOfAvailabilityCheck({
-    from: 'foo',
-  });
-
-  t.match(template.toDescription(), {
-    inputMapping: {
-      from: input.dependency('foo'),
-      mode: input.value('null'),
-    },
-  });
-});
-
-t.test(`withResultOfAvailabilityCheck: validate static inputs`, t => {
-  t.plan(5);
-
-  t.throws(
-    () => withResultOfAvailabilityCheck({}),
-    {message: `Errors in input options passed to withResultOfAvailabilityCheck`, errors: [
-      {message: `Required these inputs: from`},
-    ]});
-
-  t.doesNotThrow(() =>
-    withResultOfAvailabilityCheck({
-      from: 'dependency1',
-      mode: 'dependency2',
-    }));
-
-  t.doesNotThrow(() =>
-    withResultOfAvailabilityCheck({
-      from: input.value('some static value'),
-      mode: input.value('null'),
-    }));
-
-  t.throws(
-    () => withResultOfAvailabilityCheck({
-      from: 'foo',
-      mode: input.value('invalid'),
-    }),
-    {message: `Errors in input options passed to withResultOfAvailabilityCheck`, errors: [
-      {message: `mode: Expected one of null empty falsy index, got invalid`},
-    ]});
-
-  t.throws(() =>
-    withResultOfAvailabilityCheck({
-      from: input.value(null),
-      mode: input.value(null),
-    }),
-    {message: `Errors in input options passed to withResultOfAvailabilityCheck`, errors: [
-      {message: `mode: Expected a value, got null`},
-    ]});
-});
-
-t.test(`withResultOfAvailabilityCheck: validate dynamic inputs`, t => {
-  t.plan(2);
-
-  t.throws(
-    () => composite.expose.compute({
-      from: 'apple',
-      mode: 'banana',
-    }),
-    {message: `Error computing composition`, cause:
-      {message: `Error in step 1 of 2, withResultOfAvailabilityCheck`, cause:
-        {message: `Error computing composition withResultOfAvailabilityCheck`, cause:
-          {message: `Errors in input values provided to withResultOfAvailabilityCheck`, errors: [
-            {message: `mode: Expected one of null empty falsy index, got banana`},
-          ]}}}});
-
-  t.throws(
-    () => composite.expose.compute({
-      from: null,
-      mode: null,
-    }),
-    {message: `Error computing composition`, cause:
-      {message: `Error in step 1 of 2, withResultOfAvailabilityCheck`, cause:
-        {message: `Error computing composition withResultOfAvailabilityCheck`, cause:
-          {message: `Errors in input values provided to withResultOfAvailabilityCheck`, errors: [
-            {message: `mode: Expected a value, got null`},
-          ]}}}});
-});
diff --git a/test/unit/data/composite/data/withPropertiesFromObject.js b/test/unit/data/composite/data/withPropertiesFromObject.js
deleted file mode 100644
index b81d51a5..00000000
--- a/test/unit/data/composite/data/withPropertiesFromObject.js
+++ /dev/null
@@ -1,241 +0,0 @@
-import t from 'tap';
-import {quickCheckCompositeOutputs} from '#test-lib';
-
-import {compositeFrom, input} from '#composite';
-import {exposeDependency} from '#composite/control-flow';
-import {withPropertiesFromObject} from '#composite/data';
-
-const composite = compositeFrom({
-  compose: false,
-
-  steps: [
-    withPropertiesFromObject({
-      object: 'object',
-      properties: 'properties',
-    }),
-
-    exposeDependency({dependency: '#object'}),
-  ],
-});
-
-t.test(`withPropertiesFromObject: basic behavior`, t => {
-  t.plan(4);
-
-  t.match(composite, {
-    expose: {
-      dependencies: ['object', 'properties'],
-    },
-  });
-
-  t.same(
-    composite.expose.compute({
-      object: {foo: 'bar', bim: 'BOOM', bam: 'baz'},
-      properties: ['foo', 'bim'],
-    }),
-    {foo: 'bar', bim: 'BOOM'});
-
-  t.same(
-    composite.expose.compute({
-      object: {value1: 'uwah', value2: 'arah'},
-      properties: ['value1', 'value3'],
-    }),
-    {value1: 'uwah', value3: null});
-
-  t.same(
-    composite.expose.compute({
-      object: null,
-      properties: ['ohMe', 'ohMy', 'ohDear'],
-    }),
-    {ohMe: null, ohMy: null, ohDear: null});
-});
-
-t.test(`withPropertiesFromObject: output shapes & values`, t => {
-  t.plan(2 * 2 * 3 ** 2);
-
-  const dependencies = {
-    ['object_dependency']:
-      {foo: 'apple', bar: 'banana', baz: 'orange'},
-    [input('object_neither')]:
-      {foo: 'koala', bar: 'okapi', baz: 'mongoose'},
-    ['properties_dependency']:
-      ['foo', 'bar', 'missing1'],
-    [input('properties_neither')]:
-      ['foo', 'baz', 'missing3'],
-  };
-
-  const qcco = quickCheckCompositeOutputs(t, dependencies);
-
-  const mapLevel1 = [
-    [input.value('prefix_value'), [
-      ['object_dependency', [
-        ['properties_dependency', {
-          '#object': {foo: 'apple', bar: 'banana', missing1: null},
-        }],
-        [input.value(['bar', 'baz', 'missing2']), {
-          '#prefix_value.bar': 'banana',
-          '#prefix_value.baz': 'orange',
-          '#prefix_value.missing2': null,
-        }],
-        [input('properties_neither'), {
-          '#object': {foo: 'apple', baz: 'orange', missing3: null},
-        }]]],
-
-      [input.value({foo: 'ouh', bar: 'rah', baz: 'nyu'}), [
-        ['properties_dependency', {
-          '#object': {foo: 'ouh', bar: 'rah', missing1: null},
-        }],
-        [input.value(['bar', 'baz', 'missing2']), {
-          '#prefix_value.bar': 'rah',
-          '#prefix_value.baz': 'nyu',
-          '#prefix_value.missing2': null,
-        }],
-        [input('properties_neither'), {
-          '#object': {foo: 'ouh', baz: 'nyu', missing3: null},
-        }]]],
-
-      [input('object_neither'), [
-        ['properties_dependency', {
-          '#object': {foo: 'koala', bar: 'okapi', missing1: null},
-        }],
-        [input.value(['bar', 'baz', 'missing2']), {
-          '#prefix_value.bar': 'okapi',
-          '#prefix_value.baz': 'mongoose',
-          '#prefix_value.missing2': null,
-        }],
-        [input('properties_neither'), {
-          '#object': {foo: 'koala', baz: 'mongoose', missing3: null},
-        }]]]]],
-
-    [input.value(null), [
-      ['object_dependency', [
-        ['properties_dependency', {
-          '#object': {foo: 'apple', bar: 'banana', missing1: null},
-        }],
-        [input.value(['bar', 'baz', 'missing2']), {
-          '#object_dependency.bar': 'banana',
-          '#object_dependency.baz': 'orange',
-          '#object_dependency.missing2': null,
-        }],
-        [input('properties_neither'), {
-          '#object': {foo: 'apple', baz: 'orange', missing3: null},
-        }]]],
-
-      [input.value({foo: 'ouh', bar: 'rah', baz: 'nyu'}), [
-        ['properties_dependency', {
-          '#object': {foo: 'ouh', bar: 'rah', missing1: null},
-        }],
-        [input.value(['bar', 'baz', 'missing2']), {
-          '#object.bar': 'rah',
-          '#object.baz': 'nyu',
-          '#object.missing2': null,
-        }],
-        [input('properties_neither'), {
-          '#object': {foo: 'ouh', baz: 'nyu', missing3: null},
-        }]]],
-
-      [input('object_neither'), [
-        ['properties_dependency', {
-          '#object': {foo: 'koala', bar: 'okapi', missing1: null},
-        }],
-        [input.value(['bar', 'baz', 'missing2']), {
-          '#object.bar': 'okapi',
-          '#object.baz': 'mongoose',
-          '#object.missing2': null,
-        }],
-        [input('properties_neither'), {
-          '#object': {foo: 'koala', baz: 'mongoose', missing3: null},
-        }]]]]],
-  ];
-
-  for (const [prefixInput, mapLevel2] of mapLevel1) {
-    for (const [objectInput, mapLevel3] of mapLevel2) {
-      for (const [propertiesInput, outputDict] of mapLevel3) {
-        const step = withPropertiesFromObject({
-          prefix: prefixInput,
-          object: objectInput,
-          properties: propertiesInput,
-        });
-
-        qcco(step, outputDict);
-      }
-    }
-  }
-});
-
-t.test(`withPropertiesFromObject: validate static inputs`, t => {
-  t.plan(3);
-
-  t.throws(
-    () => withPropertiesFromObject({}),
-    {message: `Errors in input options passed to withPropertiesFromObject`, errors: [
-      {message: `Required these inputs: object, properties`},
-    ]});
-
-  t.throws(
-    () => withPropertiesFromObject({
-      object: input.value('intriguing'),
-      properties: input.value('very'),
-      prefix: input.value({yes: 'yup'}),
-    }),
-    {message: `Errors in input options passed to withPropertiesFromObject`, errors: [
-      {message: `object: Expected an object, got string`},
-      {message: `properties: Expected an array, got string`},
-      {message: `prefix: Expected a string, got object`},
-    ]});
-
-  t.throws(
-    () => withPropertiesFromObject({
-      object: input.value([['abc', 1], ['def', 2], [123, 3]]),
-      properties: input.value(['abc', 'def', 123]),
-    }),
-    {message: `Errors in input options passed to withPropertiesFromObject`, errors: [
-      {message: `object: Expected an object, got array`},
-      {message: `properties: Errors validating array items`, errors: [
-        {
-          [Symbol.for('hsmusic.annotateError.indexInSourceArray')]: 2,
-          message: `Error at zero-index 2: 123`,
-          cause: {
-            message: `Expected a string, got number`,
-          },
-        },
-      ]},
-    ]});
-});
-
-t.test(`withPropertiesFromObject: validate dynamic inputs`, t => {
-  t.plan(2);
-
-  t.throws(
-    () => composite.expose.compute({
-      object: 'intriguing',
-      properties: 'onceMore',
-    }),
-    {message: `Error computing composition`, cause:
-      {message: `Error in step 1 of 2, withPropertiesFromObject`, cause:
-        {message: `Error computing composition withPropertiesFromObject`, cause:
-          {message: `Errors in input values provided to withPropertiesFromObject`, errors: [
-            {message: `object: Expected an object, got string`},
-            {message: `properties: Expected an array, got string`},
-          ]}}}});
-
-  t.throws(
-    () => composite.expose.compute({
-      object: [['abc', 1], ['def', 2], [123, 3]],
-      properties: ['abc', 'def', 123],
-    }),
-    {message: `Error computing composition`, cause:
-      {message: `Error in step 1 of 2, withPropertiesFromObject`, cause:
-        {message: `Error computing composition withPropertiesFromObject`, cause:
-          {message: `Errors in input values provided to withPropertiesFromObject`, errors: [
-            {message: `object: Expected an object, got array`},
-            {message: `properties: Errors validating array items`, errors: [
-              {
-                [Symbol.for('hsmusic.annotateError.indexInSourceArray')]: 2,
-                message: `Error at zero-index 2: 123`,
-                cause: {
-                  message: `Expected a string, got number`,
-                },
-              },
-            ]},
-          ]}}}});
-});
diff --git a/test/unit/data/composite/data/withPropertyFromObject.js b/test/unit/data/composite/data/withPropertyFromObject.js
deleted file mode 100644
index 068932e2..00000000
--- a/test/unit/data/composite/data/withPropertyFromObject.js
+++ /dev/null
@@ -1,195 +0,0 @@
-import t from 'tap';
-import {quickCheckCompositeOutputs} from '#test-lib';
-
-import CacheableObject from '#cacheable-object';
-import {compositeFrom, input} from '#composite';
-import {exposeDependency} from '#composite/control-flow';
-import {withPropertyFromObject} from '#composite/data';
-
-t.test(`withPropertyFromObject: basic behavior`, t => {
-  t.plan(4);
-
-  const composite = compositeFrom({
-    compose: false,
-
-    steps: [
-      withPropertyFromObject({
-        object: 'object',
-        property: 'property',
-      }),
-
-      exposeDependency({dependency: '#value'}),
-    ],
-  });
-
-  t.match(composite, {
-    expose: {
-      dependencies: ['object', 'property'],
-    },
-  });
-
-  t.equal(composite.expose.compute({
-    object: {foo: 'bar', bim: 'BOOM'},
-    property: 'bim',
-  }), 'BOOM');
-
-  t.equal(composite.expose.compute({
-    object: {value1: 'uwah'},
-    property: 'value2',
-  }), null);
-
-  t.equal(composite.expose.compute({
-    object: null,
-    property: 'oml where did me object go',
-  }), null);
-});
-
-t.test(`withPropertyFromObject: "internal" input`, t => {
-  t.plan(7);
-
-  const composite = compositeFrom({
-    compose: false,
-
-    steps: [
-      withPropertyFromObject({
-        object: 'object',
-        property: 'property',
-        internal: 'internal',
-      }),
-
-      exposeDependency({dependency: '#value'}),
-    ],
-  });
-
-  const constructor = class extends CacheableObject {
-    static [CacheableObject.propertyDescriptors] = {
-      foo: {
-        flags: {update: true, expose: false},
-      },
-
-      bar: {
-        flags: {update: true, expose: true},
-      },
-
-      baz: {
-        flags: {update: true, expose: true},
-        expose: {
-          transform: baz => baz * 2,
-        },
-      },
-    };
-  };
-
-  constructor.finalizeCacheableObjectPrototype();
-
-  const thing = Reflect.construct(constructor, []);
-
-  thing.foo = 100;
-  thing.bar = 200;
-  thing.baz = 300;
-
-  t.match(composite, {
-    expose: {
-      dependencies: ['object', 'property', 'internal'],
-    },
-  });
-
-  t.equal(composite.expose.compute({
-    object: thing,
-    property: 'foo',
-    internal: true,
-  }), 100);
-
-  t.equal(composite.expose.compute({
-    object: thing,
-    property: 'bar',
-    internal: true,
-  }), 200);
-
-  t.equal(composite.expose.compute({
-    object: thing,
-    property: 'baz',
-    internal: true,
-  }), 300);
-
-  t.equal(composite.expose.compute({
-    object: thing,
-    property: 'baz',
-    internal: false,
-  }), 600);
-
-  t.equal(composite.expose.compute({
-    object: thing,
-    property: 'bimbam',
-    internal: false,
-  }), null);
-
-  t.equal(composite.expose.compute({
-    object: null,
-    property: 'bambim',
-    internal: false,
-  }), null);
-});
-
-t.test(`withPropertyFromObject: output shapes & values`, t => {
-  t.plan(2 * 3 ** 2);
-
-  const dependencies = {
-    ['object_dependency']:
-      {foo: 'apple', bar: 'banana', baz: 'orange'},
-    [input('object_neither')]:
-      {foo: 'koala', bar: 'okapi', baz: 'mongoose'},
-    ['property_dependency']:
-      'foo',
-    [input('property_neither')]:
-      'baz',
-  };
-
-  const qcco = quickCheckCompositeOutputs(t, dependencies);
-
-  const mapLevel1 = [
-    ['object_dependency', [
-      ['property_dependency', {
-        '#value': 'apple',
-      }],
-      [input.value('bar'), {
-        '#object_dependency.bar': 'banana',
-      }],
-      [input('property_neither'), {
-        '#value': 'orange',
-      }]]],
-
-    [input.value({foo: 'ouh', bar: 'rah', baz: 'nyu'}), [
-      ['property_dependency', {
-        '#value': 'ouh',
-      }],
-      [input.value('bar'), {
-        '#value': 'rah',
-      }],
-      [input('property_neither'), {
-        '#value': 'nyu',
-      }]]],
-
-    [input('object_neither'), [
-      ['property_dependency', {
-        '#value': 'koala',
-      }],
-      [input.value('bar'), {
-        '#value': 'okapi',
-      }],
-      [input('property_neither'), {
-        '#value': 'mongoose',
-      }]]],
-  ];
-
-  for (const [objectInput, mapLevel2] of mapLevel1) {
-    for (const [propertyInput, outputDict] of mapLevel2) {
-      const step = withPropertyFromObject({
-        object: objectInput,
-        property: propertyInput,
-      });
-
-      qcco(step, outputDict);
-    }
-  }
-});
diff --git a/test/unit/data/composite/data/withUniqueItemsOnly.js b/test/unit/data/composite/data/withUniqueItemsOnly.js
deleted file mode 100644
index 50b16f43..00000000
--- a/test/unit/data/composite/data/withUniqueItemsOnly.js
+++ /dev/null
@@ -1,69 +0,0 @@
-import t from 'tap';
-import {quickCheckCompositeOutputs} from '#test-lib';
-
-import {compositeFrom, input} from '#composite';
-import {exposeDependency} from '#composite/control-flow';
-import {withUniqueItemsOnly} from '#composite/data';
-
-t.test(`withUniqueItemsOnly: basic behavior`, t => {
-  t.plan(3);
-
-  const composite = compositeFrom({
-    compose: false,
-
-    steps: [
-      withUniqueItemsOnly({
-        list: 'list',
-      }),
-
-      exposeDependency({dependency: '#list'}),
-    ],
-  });
-
-  t.match(composite, {
-    expose: {
-      dependencies: ['list'],
-    },
-  });
-
-  t.same(composite.expose.compute({
-    list: ['apple', 'banana', 'banana', 'banana', 'apple', 'watermelon'],
-  }), ['apple', 'banana', 'watermelon']);
-
-  t.same(composite.expose.compute({
-    list: [],
-  }), []);
-});
-
-t.test(`withUniqueItemsOnly: output shapes & values`, t => {
-  t.plan(2 * 3 ** 1);
-
-  const dependencies = {
-    ['list_dependency']:
-      [1, 1, 2, 3, 3, 4, 'foo', false, false, 4],
-    [input('list_neither')]:
-      [8, 8, 7, 6, 6, 5, 'bar', true, true, 5],
-  };
-
-  const qcco = quickCheckCompositeOutputs(t, dependencies);
-
-  const mapLevel1 = [
-    ['list_dependency', {
-      '#list_dependency': [1, 2, 3, 4, 'foo', false],
-    }],
-    [input.value([-1, -1, 'interesting', 'very', 'interesting']), {
-      '#uniqueItems': [-1, 'interesting', 'very'],
-    }],
-    [input('list_neither'), {
-      '#uniqueItems': [8, 7, 6, 5, 'bar', true],
-    }],
-  ];
-
-  for (const [listInput, outputDict] of mapLevel1) {
-    const step = withUniqueItemsOnly({
-      list: listInput,
-    });
-
-    qcco(step, outputDict);
-  }
-});
diff --git a/test/unit/data/validators.js b/test/unit/data/validators.js
index 02f94866..6e37f170 100644
--- a/test/unit/data/validators.js
+++ b/test/unit/data/validators.js
@@ -17,7 +17,6 @@ import {
 
   // Wiki data
   isColor,
-  isCommentary,
   isContentString,
   isContribution,
   isContributionList,
@@ -152,21 +151,6 @@ t.test('isColor', t => {
   t.throws(() => isColor('hsl(150deg 30% 60%)'), TypeError);
 });
 
-t.test('isCommentary', t => {
-  t.plan(9);
-
-  // TODO: Test specific error messages.
-  t.ok(isCommentary(`<i>Toby Fox:</i>\ndogsong.mp3`));
-  t.ok(isCommentary(`<i>Toby Fox:</i> (music)\ndogsong.mp3`));
-  t.throws(() => isCommentary(`dogsong.mp3\n<i>Toby Fox:</i>\ndogsong.mp3`));
-  t.throws(() => isCommentary(`<i>Toby Fox:</i> dogsong.mp3`));
-  t.throws(() => isCommentary(`<i>Toby Fox:</i> (music) dogsong.mp3`));
-  t.throws(() => isCommentary(`<i>I Have Nothing To Say:</i>`));
-  t.throws(() => isCommentary(123));
-  t.throws(() => isCommentary(``));
-  t.throws(() => isCommentary(`Technically, ah, er:</i>\nCorrect`));
-});
-
 t.test('isContentString', t => {
   t.plan(12);