Repository: stateful/vscode-runme
Pull request #619 (2023-06-19 12:00:53)

Bump vitest from 0.31.4 to 0.32.2
Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 0.31.4 to 0.32.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/vitest-dev/vitest/releases">vitest's releases</a>.</em></p>
<blockquote>
<h2>v0.32.2</h2>
<h3>   🐞 Bug Fixes</h3>
<ul>
<li><strong>browser</strong>: Don't fail on importing diff-sequences  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> <a href="https://github.com/vitest-dev/vitest/commit/00b0e6a3"><!-- raw HTML omitted -->(00b0e)<!-- raw HTML omitted --></a></li>
</ul>
<h5>    <a href="https://github.com/vitest-dev/vitest/compare/v0.32.1...v0.32.2">View changes on GitHub</a></h5>
<h2>v0.32.1</h2>
<h3>   🚀 Features</h3>
<ul>
<li>Export <code>registerConsoleShortcuts</code> from <code>vitest/node</code>  -  by <a href="https://github.com/deot"><code>@​deot</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3563">vitest-dev/vitest#3563</a> <a href="https://github.com/vitest-dev/vitest/commit/bc49bac7"><!-- raw HTML omitted -->(bc49b)<!-- raw HTML omitted --></a></li>
<li><strong>expect</strong>: Support <code>expect.unreachable</code>  -  by <a href="https://github.com/fenghan34"><code>@​fenghan34</code></a> and <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3556">vitest-dev/vitest#3556</a> <a href="https://github.com/vitest-dev/vitest/commit/8e385bb0"><!-- raw HTML omitted -->(8e385)<!-- raw HTML omitted --></a></li>
<li><strong>runner</strong>: <code>describe</code>/<code>test</code> name support anonymous function  -  by <a href="https://github.com/btea"><code>@​btea</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3562">vitest-dev/vitest#3562</a> <a href="https://github.com/vitest-dev/vitest/commit/3d43638c"><!-- raw HTML omitted -->(3d436)<!-- raw HTML omitted --></a></li>
</ul>
<h3>   🐞 Bug Fixes</h3>
<ul>
<li>Avoid call stack recursion with large error (fix: <a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/3060">#3060</a>)  -  by <a href="https://github.com/nathanmmiller"><code>@​nathanmmiller</code></a> and <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3078">vitest-dev/vitest#3078</a> and <a href="https://redirect.github.com/vitest-dev/vitest/issues/3060">vitest-dev/vitest#3060</a> <a href="https://github.com/vitest-dev/vitest/commit/02196f9d"><!-- raw HTML omitted -->(02196)<!-- raw HTML omitted --></a></li>
<li>Automatically remove define related configuration  -  by <a href="https://github.com/btea"><code>@​btea</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3552">vitest-dev/vitest#3552</a> <a href="https://github.com/vitest-dev/vitest/commit/368b8259"><!-- raw HTML omitted -->(368b8)<!-- raw HTML omitted --></a></li>
<li>Import <code>performance</code> from <code>perf_hooks</code>  -  by <a href="https://github.com/Max10240"><code>@​Max10240</code></a> and <strong>wangbaolong.wbl</strong> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3578">vitest-dev/vitest#3578</a> and <a href="https://redirect.github.com/vitest-dev/vitest/issues/3579">vitest-dev/vitest#3579</a> <a href="https://github.com/vitest-dev/vitest/commit/24ec85a8"><!-- raw HTML omitted -->(24ec8)<!-- raw HTML omitted --></a></li>
<li>Revert concordance diff, use jest's diff output  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3582">vitest-dev/vitest#3582</a> <a href="https://github.com/vitest-dev/vitest/commit/9c7ea382"><!-- raw HTML omitted -->(9c7ea)<!-- raw HTML omitted --></a></li>
<li>Typo in config suggestion  -  by <a href="https://github.com/Krisell"><code>@​Krisell</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3583">vitest-dev/vitest#3583</a> <a href="https://github.com/vitest-dev/vitest/commit/689855bb"><!-- raw HTML omitted -->(68985)<!-- raw HTML omitted --></a></li>
<li><strong>browser</strong>:
<ul>
<li>Change optimized deps to use <code>vitest</code>  -  by <a href="https://github.com/userquin"><code>@​userquin</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3580">vitest-dev/vitest#3580</a> <a href="https://github.com/vitest-dev/vitest/commit/b4ac88e9"><!-- raw HTML omitted -->(b4ac8)<!-- raw HTML omitted --></a></li>
<li>Access <strong>vi_inject</strong> only if it was injected  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3587">vitest-dev/vitest#3587</a> <a href="https://github.com/vitest-dev/vitest/commit/d9e1419a"><!-- raw HTML omitted -->(d9e14)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>mocker</strong>:
<ul>
<li>Respect namespace import when hoisting vi.mock  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3547">vitest-dev/vitest#3547</a> <a href="https://github.com/vitest-dev/vitest/commit/158c4bb0"><!-- raw HTML omitted -->(158c4)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>ui</strong>:
<ul>
<li>Navigate to dashboard when re-running tests from coverage page  -  by <a href="https://github.com/userquin"><code>@​userquin</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3529">vitest-dev/vitest#3529</a> <a href="https://github.com/vitest-dev/vitest/commit/bc283ae3"><!-- raw HTML omitted -->(bc283)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>vite-node</strong>:
<ul>
<li>Correctly resolve virtual modules  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3544">vitest-dev/vitest#3544</a> <a href="https://github.com/vitest-dev/vitest/commit/0cbb07b4"><!-- raw HTML omitted -->(0cbb0)<!-- raw HTML omitted --></a></li>
<li>Fix errors caused by commonjs export circular references  -  by <a href="https://github.com/rxliuli"><code>@​rxliuli</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3570">vitest-dev/vitest#3570</a> <a href="https://github.com/vitest-dev/vitest/commit/b097cef8"><!-- raw HTML omitted -->(b097c)<!-- raw HTML omitted --></a></li>
</ul>
</li>
</ul>
<h5>    <a href="https://github.com/vitest-dev/vitest/compare/v0.32.0...v0.32.1">View changes on GitHub</a></h5>
<h2>v0.32.0</h2>
<h3>   🚨 Breaking Changes</h3>
<ul>
<li>Throw an error, if the module cannot be resolved  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3307">vitest-dev/vitest#3307</a> <a href="https://github.com/vitest-dev/vitest/commit/1ad63b0c"><!-- raw HTML omitted -->(1ad63)<!-- raw HTML omitted --></a>
<ul>
<li>Vitest used to fall back to the original import when it could not resolve it to the file path or the virtual module. This leads to hard-to-find module graph mismatches if you had incorrect alias or relied on relative imports to be resolved to the project root (which is usual behavior in TypeScript) because the code accidentally &quot;worked&quot;. With this release, Vitest will now throw an error if it cannot resolve the module - there are possible edge cases that are not covered yet, so if you have any problems with this, please open a separate issue with reproduction.</li>
</ul>
</li>
<li>Improve globs  -  by <a href="https://github.com/nickmccurdy"><code>@​nickmccurdy</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3392">vitest-dev/vitest#3392</a> <a href="https://github.com/vitest-dev/vitest/commit/19ecc6c7"><!-- raw HTML omitted -->(19ecc)<!-- raw HTML omitted --></a>
<ul>
<li>Vitest now has glob patterns similar to Jest for better compatibility. It's possible that some files will be considered test files when previously they were not. For example, Vitest now considers <code>test.js</code> to be a test file. Also any file in <code>__tests__</code> is now considered to be a test, not just files with <code>test</code> or <code>spec</code> suffix.</li>
</ul>
</li>
<li>Add <code>@vitest/coverage-v8</code> package  -  by <a href="https://github.com/AriPerkkio"><code>@​AriPerkkio</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3339">vitest-dev/vitest#3339</a> <a href="https://github.com/vitest-dev/vitest/commit/821126f1"><!-- raw HTML omitted -->(82112)<!-- raw HTML omitted --></a>
<ul>
<li>Vitest now uses v8 code coverage directly for better performance. <code>@vitest/coverage-c8</code> is deprecated as Vitest no longer uses c8 package for coverage output. It will not be updated anymore, and Vitest will fail in the next version if the user has <code>c8</code> as their coverage provider. Please, install the new <code>@vitest/coverage-v8</code> package if you previously used <code>@vitest/coverage-c8</code>.</li>
</ul>
</li>
<li><strong>mocker</strong>: Don't restore mock to the original if the module is automocked  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3518">vitest-dev/vitest#3518</a> <a href="https://github.com/vitest-dev/vitest/commit/c1004e14"><!-- raw HTML omitted -->(c1004)<!-- raw HTML omitted --></a>
<ul>
<li><code>spy.mockRestore</code> on auto-mocked named exports will no longer restore their implementation to the actual function. This behavior better matches what Jest does.</li>
</ul>
</li>
</ul>
<h3>   🚀 Features</h3>
<ul>
<li>Support ssr optimizer  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3490">vitest-dev/vitest#3490</a> <a href="https://github.com/vitest-dev/vitest/commit/898422b0"><!-- raw HTML omitted -->(89842)<!-- raw HTML omitted --></a></li>
<li>Image type add apng  -  by <a href="https://github.com/btea"><code>@​btea</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/3498">vitest-dev/vitest#3498</a> <a href="https://github.com/vitest-dev/vitest/commit/a53c2151"><!-- raw HTML omitted -->(a53c2)<!-- raw HTML omitted --></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/vitest-dev/vitest/commit/1e8760ab2b4ae02288ebaf0ab27f9ed314d41980"><code>1e8760a</code></a> chore: release v0.32.2</li>
<li><a href="https://github.com/vitest-dev/vitest/commit/02bed364acf6dc4bcf95c75de4b926d486646930"><code>02bed36</code></a> chore: release v0.32.1</li>
<li><a href="https://github.com/vitest-dev/vitest/commit/8e385bb09eb1585a8410bf08c8e54596b08cc119"><code>8e385bb</code></a> feat(expect): support <code>expect.unreachable</code> (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/3556">#3556</a>)</li>
<li><a href="https://github.com/vitest-dev/vitest/commit/689855bbd5a3c7c2c9550c781dea872fbdb122d3"><code>689855b</code></a> fix: typo in config suggestion (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/3583">#3583</a>)</li>
<li><a href="https://github.com/vitest-dev/vitest/commit/9c7ea3820f6d1609d926764af124b15271671ae0"><code>9c7ea38</code></a> fix: revert concordance diff, use jest's diff output (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/3582">#3582</a>)</li>
<li><a href="https://github.com/vitest-dev/vitest/commit/24ec85a81e39c2f3ca4d1f1941fe63feeb9b42e8"><code>24ec85a</code></a> fix: import <code>performance</code> from <code>perf_hooks</code> (fix <a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/3578">#3578</a>) (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/3579">#3579</a>)</li>
<li><a href="https://github.com/vitest-dev/vitest/commit/368b82599e163548ab8cb370a5fd35155799a47c"><code>368b825</code></a> fix: automatically remove define related configuration (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/3552">#3552</a>)</li>
<li><a href="https://github.com/vitest-dev/vitest/commit/02196f9d95b080dcd5d006ed918f9af3726f446e"><code>02196f9</code></a> fix: avoid call stack recursion with large error (fix: <a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/3060">#3060</a>) (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/3078">#3078</a>)</li>
<li><a href="https://github.com/vitest-dev/vitest/commit/bc49bac7e3222c1f9be274ef8f995f9149dc61da"><code>bc49bac</code></a> feat: export <code>registerConsoleShortcuts</code> from <code>vitest/node</code> (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/3563">#3563</a>)</li>
<li><a href="https://github.com/vitest-dev/vitest/commit/158c4bb056417828833088508b43e6917d65d23f"><code>158c4bb</code></a> fix(mocker): respect namespace import when hoisting vi.mock (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/3547">#3547</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/vitest-dev/vitest/commits/v0.32.2/packages/vitest">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=vitest&package-manager=npm_and_yarn&previous-version=0.31.4&new-version=0.32.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>


Patch:
diff --git a/package-lock.json b/package-lock.json
index 1c838faf..af200e7b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "runme",
-  "version": "1.5.4-edge.0",
+  "version": "1.6.1",
   "lockfileVersion": 2,
   "requires": true,
   "packages": {
     "": {
       "name": "runme",
-      "version": "1.5.4-edge.0",
+      "version": "1.6.1",
       "hasInstallScript": true,
       "license": "Apache-2.0",
       "dependencies": {
@@ -26,7 +26,7 @@
         "detect-port": "^1.5.1",
         "dotenv": "^16.0.3",
         "filenamify": "^6.0.0",
-        "get-port": "^6.1.2",
+        "get-port": "^7.0.0",
         "got": "^12.6.0",
         "graphql": "^16.6.0",
         "lit": "^2.7.4",
@@ -59,6 +59,7 @@
         "@typescript-eslint/eslint-plugin": "^5.59.6",
         "@typescript-eslint/parser": "^5.59.6",
         "@vitest/coverage-c8": "^0.31.0",
+        "@vitest/coverage-v8": "^0.32.2",
         "@vscode/vsce": "^2.19.0",
         "@wdio/cli": "^8.10.2",
         "@wdio/local-runner": "^8.10.2",
@@ -84,7 +85,7 @@
         "ts-node": "^10.9.1",
         "typescript": "^5.0.4",
         "unzipper": "^0.10.14",
-        "vitest": "^0.31.0",
+        "vitest": "^0.32.2",
         "vscode-uri": "^3.0.7",
         "wdio-vscode-service": "^5.1.0",
         "webdriverio": "^8.10.2",
@@ -4811,15 +4812,15 @@
       }
     },
     "node_modules/@typescript-eslint/eslint-plugin": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.7.tgz",
-      "integrity": "sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.0.tgz",
+      "integrity": "sha512-78B+anHLF1TI8Jn/cD0Q00TBYdMgjdOn980JfAVa9yw5sop8nyTfVOQAv6LWywkOGLclDBtv5z3oxN4w7jxyNg==",
       "dev": true,
       "dependencies": {
         "@eslint-community/regexpp": "^4.4.0",
-        "@typescript-eslint/scope-manager": "5.59.7",
-        "@typescript-eslint/type-utils": "5.59.7",
-        "@typescript-eslint/utils": "5.59.7",
+        "@typescript-eslint/scope-manager": "5.60.0",
+        "@typescript-eslint/type-utils": "5.60.0",
+        "@typescript-eslint/utils": "5.60.0",
         "debug": "^4.3.4",
         "grapheme-splitter": "^1.0.4",
         "ignore": "^5.2.0",
@@ -4845,13 +4846,13 @@
       }
     },
     "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz",
-      "integrity": "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.0.tgz",
+      "integrity": "sha512-hakuzcxPwXi2ihf9WQu1BbRj1e/Pd8ZZwVTG9kfbxAMZstKz8/9OoexIwnmLzShtsdap5U/CoQGRCWlSuPbYxQ==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "5.59.7",
-        "@typescript-eslint/visitor-keys": "5.59.7"
+        "@typescript-eslint/types": "5.60.0",
+        "@typescript-eslint/visitor-keys": "5.60.0"
       },
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -4862,9 +4863,9 @@
       }
     },
     "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz",
-      "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.0.tgz",
+      "integrity": "sha512-ascOuoCpNZBccFVNJRSC6rPq4EmJ2NkuoKnd6LDNyAQmdDnziAtxbCGWCbefG1CNzmDvd05zO36AmB7H8RzKPA==",
       "dev": true,
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -4875,12 +4876,12 @@
       }
     },
     "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz",
-      "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.0.tgz",
+      "integrity": "sha512-wm9Uz71SbCyhUKgcaPRauBdTegUyY/ZWl8gLwD/i/ybJqscrrdVSFImpvUz16BLPChIeKBK5Fa9s6KDQjsjyWw==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "5.59.7",
+        "@typescript-eslint/types": "5.60.0",
         "eslint-visitor-keys": "^3.3.0"
       },
       "engines": {
@@ -4936,13 +4937,13 @@
       }
     },
     "node_modules/@typescript-eslint/type-utils": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz",
-      "integrity": "sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.60.0.tgz",
+      "integrity": "sha512-X7NsRQddORMYRFH7FWo6sA9Y/zbJ8s1x1RIAtnlj6YprbToTiQnM6vxcMu7iYhdunmoC0rUWlca13D5DVHkK2g==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/typescript-estree": "5.59.7",
-        "@typescript-eslint/utils": "5.59.7",
+        "@typescript-eslint/typescript-estree": "5.60.0",
+        "@typescript-eslint/utils": "5.60.0",
         "debug": "^4.3.4",
         "tsutils": "^3.21.0"
       },
@@ -4963,9 +4964,9 @@
       }
     },
     "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz",
-      "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.0.tgz",
+      "integrity": "sha512-ascOuoCpNZBccFVNJRSC6rPq4EmJ2NkuoKnd6LDNyAQmdDnziAtxbCGWCbefG1CNzmDvd05zO36AmB7H8RzKPA==",
       "dev": true,
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -4976,13 +4977,13 @@
       }
     },
     "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz",
-      "integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.0.tgz",
+      "integrity": "sha512-R43thAuwarC99SnvrBmh26tc7F6sPa2B3evkXp/8q954kYL6Ro56AwASYWtEEi+4j09GbiNAHqYwNNZuNlARGQ==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "5.59.7",
-        "@typescript-eslint/visitor-keys": "5.59.7",
+        "@typescript-eslint/types": "5.60.0",
+        "@typescript-eslint/visitor-keys": "5.60.0",
         "debug": "^4.3.4",
         "globby": "^11.1.0",
         "is-glob": "^4.0.3",
@@ -5003,12 +5004,12 @@
       }
     },
     "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz",
-      "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.0.tgz",
+      "integrity": "sha512-wm9Uz71SbCyhUKgcaPRauBdTegUyY/ZWl8gLwD/i/ybJqscrrdVSFImpvUz16BLPChIeKBK5Fa9s6KDQjsjyWw==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "5.59.7",
+        "@typescript-eslint/types": "5.60.0",
         "eslint-visitor-keys": "^3.3.0"
       },
       "engines": {
@@ -5060,17 +5061,17 @@
       }
     },
     "node_modules/@typescript-eslint/utils": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.7.tgz",
-      "integrity": "sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.60.0.tgz",
+      "integrity": "sha512-ba51uMqDtfLQ5+xHtwlO84vkdjrqNzOnqrnwbMHMRY8Tqeme8C2Q8Fc7LajfGR+e3/4LoYiWXUM6BpIIbHJ4hQ==",
       "dev": true,
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.2.0",
         "@types/json-schema": "^7.0.9",
         "@types/semver": "^7.3.12",
-        "@typescript-eslint/scope-manager": "5.59.7",
-        "@typescript-eslint/types": "5.59.7",
-        "@typescript-eslint/typescript-estree": "5.59.7",
+        "@typescript-eslint/scope-manager": "5.60.0",
+        "@typescript-eslint/types": "5.60.0",
+        "@typescript-eslint/typescript-estree": "5.60.0",
         "eslint-scope": "^5.1.1",
         "semver": "^7.3.7"
       },
@@ -5086,13 +5087,13 @@
       }
     },
     "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz",
-      "integrity": "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.0.tgz",
+      "integrity": "sha512-hakuzcxPwXi2ihf9WQu1BbRj1e/Pd8ZZwVTG9kfbxAMZstKz8/9OoexIwnmLzShtsdap5U/CoQGRCWlSuPbYxQ==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "5.59.7",
-        "@typescript-eslint/visitor-keys": "5.59.7"
+        "@typescript-eslint/types": "5.60.0",
+        "@typescript-eslint/visitor-keys": "5.60.0"
       },
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -5103,9 +5104,9 @@
       }
     },
     "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz",
-      "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.0.tgz",
+      "integrity": "sha512-ascOuoCpNZBccFVNJRSC6rPq4EmJ2NkuoKnd6LDNyAQmdDnziAtxbCGWCbefG1CNzmDvd05zO36AmB7H8RzKPA==",
       "dev": true,
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -5116,13 +5117,13 @@
       }
     },
     "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz",
-      "integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.0.tgz",
+      "integrity": "sha512-R43thAuwarC99SnvrBmh26tc7F6sPa2B3evkXp/8q954kYL6Ro56AwASYWtEEi+4j09GbiNAHqYwNNZuNlARGQ==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "5.59.7",
-        "@typescript-eslint/visitor-keys": "5.59.7",
+        "@typescript-eslint/types": "5.60.0",
+        "@typescript-eslint/visitor-keys": "5.60.0",
         "debug": "^4.3.4",
         "globby": "^11.1.0",
         "is-glob": "^4.0.3",
@@ -5143,12 +5144,12 @@
       }
     },
     "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz",
-      "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.0.tgz",
+      "integrity": "sha512-wm9Uz71SbCyhUKgcaPRauBdTegUyY/ZWl8gLwD/i/ybJqscrrdVSFImpvUz16BLPChIeKBK5Fa9s6KDQjsjyWw==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "5.59.7",
+        "@typescript-eslint/types": "5.60.0",
         "eslint-visitor-keys": "^3.3.0"
       },
       "engines": {
@@ -5917,14 +5918,39 @@
         "node": ">=10"
       }
     },
+    "node_modules/@vitest/coverage-v8": {
+      "version": "0.32.2",
+      "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-0.32.2.tgz",
+      "integrity": "sha512-/+V3nB3fyeuuSeKxCfi6XmWjDIxpky7AWSkGVfaMjAk7di8igBwRsThLjultwIZdTDH1RAxpjmCXEfSqsMFZOA==",
+      "dev": true,
+      "dependencies": {
+        "@ampproject/remapping": "^2.2.1",
+        "@bcoe/v8-coverage": "^0.2.3",
+        "istanbul-lib-coverage": "^3.2.0",
+        "istanbul-lib-report": "^3.0.0",
+        "istanbul-lib-source-maps": "^4.0.1",
+        "istanbul-reports": "^3.1.5",
+        "magic-string": "^0.30.0",
+        "picocolors": "^1.0.0",
+        "std-env": "^3.3.2",
+        "test-exclude": "^6.0.0",
+        "v8-to-istanbul": "^9.1.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/vitest"
+      },
+      "peerDependencies": {
+        "vitest": ">=0.32.0 <1"
+      }
+    },
     "node_modules/@vitest/expect": {
-      "version": "0.31.4",
-      "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.31.4.tgz",
-      "integrity": "sha512-tibyx8o7GUyGHZGyPgzwiaPaLDQ9MMuCOrc03BYT0nryUuhLbL7NV2r/q98iv5STlwMgaKuFJkgBW/8iPKwlSg==",
+      "version": "0.32.2",
+      "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.32.2.tgz",
+      "integrity": "sha512-6q5yzweLnyEv5Zz1fqK5u5E83LU+gOMVBDuxBl2d2Jfx1BAp5M+rZgc5mlyqdnxquyoiOXpXmFNkcGcfFnFH3Q==",
       "dev": true,
       "dependencies": {
-        "@vitest/spy": "0.31.4",
-        "@vitest/utils": "0.31.4",
+        "@vitest/spy": "0.32.2",
+        "@vitest/utils": "0.32.2",
         "chai": "^4.3.7"
       },
       "funding": {
@@ -5932,12 +5958,12 @@
       }
     },
     "node_modules/@vitest/runner": {
-      "version": "0.31.4",
-      "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.31.4.tgz",
-      "integrity": "sha512-Wgm6UER+gwq6zkyrm5/wbpXGF+g+UBB78asJlFkIOwyse0pz8lZoiC6SW5i4gPnls/zUcPLWS7Zog0LVepXnpg==",
+      "version": "0.32.2",
+      "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.32.2.tgz",
+      "integrity": "sha512-06vEL0C1pomOEktGoLjzZw+1Fb+7RBRhmw/06WkDrd1akkT9i12su0ku+R/0QM69dfkIL/rAIDTG+CSuQVDcKw==",
       "dev": true,
       "dependencies": {
-        "@vitest/utils": "0.31.4",
+        "@vitest/utils": "0.32.2",
         "concordance": "^5.0.4",
         "p-limit": "^4.0.0",
         "pathe": "^1.1.0"
@@ -5974,9 +6000,9 @@
       }
     },
     "node_modules/@vitest/snapshot": {
-      "version": "0.31.4",
-      "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.31.4.tgz",
-      "integrity": "sha512-LemvNumL3NdWSmfVAMpXILGyaXPkZbG5tyl6+RQSdcHnTj6hvA49UAI8jzez9oQyE/FWLKRSNqTGzsHuk89LRA==",
+      "version": "0.32.2",
+      "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.32.2.tgz",
+      "integrity": "sha512-JwhpeH/PPc7GJX38vEfCy9LtRzf9F4er7i4OsAJyV7sjPwjj+AIR8cUgpMTWK4S3TiamzopcTyLsZDMuldoi5A==",
       "dev": true,
       "dependencies": {
         "magic-string": "^0.30.0",
@@ -6020,9 +6046,9 @@
       "dev": true
     },
     "node_modules/@vitest/spy": {
-      "version": "0.31.4",
-      "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.31.4.tgz",
-      "integrity": "sha512-3ei5ZH1s3aqbEyftPAzSuunGICRuhE+IXOmpURFdkm5ybUADk+viyQfejNk6q8M5QGX8/EVKw+QWMEP3DTJDag==",
+      "version": "0.32.2",
+      "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.32.2.tgz",
+      "integrity": "sha512-Q/ZNILJ4ca/VzQbRM8ur3Si5Sardsh1HofatG9wsJY1RfEaw0XKP8IVax2lI1qnrk9YPuG9LA2LkZ0EI/3d4ug==",
       "dev": true,
       "dependencies": {
         "tinyspy": "^2.1.0"
@@ -6032,12 +6058,12 @@
       }
     },
     "node_modules/@vitest/utils": {
-      "version": "0.31.4",
-      "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.31.4.tgz",
-      "integrity": "sha512-DobZbHacWznoGUfYU8XDPY78UubJxXfMNY1+SUdOp1NsI34eopSA6aZMeaGu10waSOeYwE8lxrd/pLfT0RMxjQ==",
+      "version": "0.32.2",
+      "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.32.2.tgz",
+      "integrity": "sha512-lnJ0T5i03j0IJaeW73hxe2AuVnZ/y1BhhCOuIcl9LIzXnbpXJT9Lrt6brwKHXLOiA7MZ6N5hSJjt0xE1dGNCzQ==",
       "dev": true,
       "dependencies": {
-        "concordance": "^5.0.4",
+        "diff-sequences": "^29.4.3",
         "loupe": "^2.3.6",
         "pretty-format": "^27.5.1"
       },
@@ -6194,18 +6220,18 @@
       }
     },
     "node_modules/@wdio/cli": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.10.7.tgz",
-      "integrity": "sha512-HYKRxtdmjKXzO/ePpMWyG40jb4kuoR66xaIPXN0NOso3x2p27hxYHEb/teEYaxPTG3d6Rpk2PldGIX6qYA4wbg==",
+      "version": "8.11.2",
+      "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.11.2.tgz",
+      "integrity": "sha512-g1vuq+v1Ko//QQFDQsdf3Qs1BkON82NNGYN/ehUVZrvAcKwiIyfOG3WkzLxi8V4tPWbD+vsLbLQs/FRG+4gTag==",
       "dev": true,
       "dependencies": {
         "@types/node": "^20.1.1",
-        "@wdio/config": "8.10.7",
-        "@wdio/globals": "8.10.7",
-        "@wdio/logger": "8.10.6",
-        "@wdio/protocols": "8.10.2",
+        "@wdio/config": "8.11.0",
+        "@wdio/globals": "8.11.2",
+        "@wdio/logger": "8.11.0",
+        "@wdio/protocols": "8.11.0",
         "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
+        "@wdio/utils": "8.11.0",
         "async-exit-hook": "^2.0.1",
         "chalk": "^5.2.0",
         "chokidar": "^3.5.3",
@@ -6213,13 +6239,13 @@
         "ejs": "^3.1.9",
         "execa": "^7.1.1",
         "import-meta-resolve": "^3.0.0",
-        "inquirer": "9.2.6",
+        "inquirer": "9.2.7",
         "lodash.flattendeep": "^4.4.0",
         "lodash.pickby": "^4.6.0",
         "lodash.union": "^4.6.0",
         "read-pkg-up": "9.1.0",
         "recursive-readdir": "^2.2.3",
-        "webdriverio": "8.10.7",
+        "webdriverio": "8.11.2",
         "yargs": "^17.7.2",
         "yarn-install": "^1.0.0"
       },
@@ -6230,147 +6256,38 @@
         "node": "^16.13 || >=18"
       }
     },
-    "node_modules/@wdio/cli/node_modules/chalk": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-      "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-      "dev": true,
-      "engines": {
-        "node": "^12.17.0 || ^14.13 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/@wdio/cli/node_modules/devtools": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/devtools/-/devtools-8.10.7.tgz",
-      "integrity": "sha512-picJDxsjpaOW7gnQjcQVGDXvxuP1RZ4VNJpvJ+qiy86Gf3l4FGLKYkpJJFAMsIugL0XPs89bIVhjbtIv5NGL1w==",
+    "node_modules/@wdio/cli/node_modules/@wdio/config": {
+      "version": "8.11.0",
+      "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.11.0.tgz",
+      "integrity": "sha512-nBQXsXbPCjddtI/3rAK5yFs3eD3f0T3lZMivweTkLLR7GKBxGjiFoBjXtfqUrHJYa+2uwfXrwxo6y+dA6fVbuw==",
       "dev": true,
       "dependencies": {
-        "@types/node": "^20.1.0",
-        "@wdio/config": "8.10.7",
-        "@wdio/logger": "8.10.6",
-        "@wdio/protocols": "8.10.2",
+        "@wdio/logger": "8.11.0",
         "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
-        "chrome-launcher": "^0.15.0",
-        "edge-paths": "^3.0.5",
+        "@wdio/utils": "8.11.0",
+        "decamelize": "^6.0.0",
+        "deepmerge-ts": "^5.0.0",
+        "glob": "^10.2.2",
         "import-meta-resolve": "^3.0.0",
-        "puppeteer-core": "20.3.0",
-        "query-selector-shadow-dom": "^1.0.0",
-        "ua-parser-js": "^1.0.1",
-        "uuid": "^9.0.0",
-        "which": "^3.0.0"
+        "read-pkg-up": "^9.1.0"
       },
       "engines": {
         "node": "^16.13 || >=18"
       }
     },
-    "node_modules/@wdio/cli/node_modules/devtools-protocol": {
-      "version": "0.0.1149535",
-      "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1149535.tgz",
-      "integrity": "sha512-vpM8tGaYz2nrN9n8rvUEhQCgU05ocejO5WIJySsftEHxUahQ/fWuNyPxXuQNBEmaISYyMZkxCunhjtSEyBl/Dg==",
-      "dev": true
-    },
-    "node_modules/@wdio/cli/node_modules/is-plain-obj": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
-      "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/@wdio/cli/node_modules/minimatch": {
-      "version": "9.0.1",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
-      "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
+    "node_modules/@wdio/cli/node_modules/chalk": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
+      "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
       "dev": true,
-      "dependencies": {
-        "brace-expansion": "^2.0.1"
-      },
       "engines": {
-        "node": ">=16 || 14 >=14.17"
+        "node": "^12.17.0 || ^14.13 || >=16.0.0"
       },
       "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/@wdio/cli/node_modules/webdriverio": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.10.7.tgz",
-      "integrity": "sha512-TkkPE3zBxdLRdcsNLqHct2OARnfMYB9/A0ri4sccmc3C3dVFiW99NAstN88nzD1SYzXAbxALRuITVd5oswqqhg==",
-      "dev": true,
-      "dependencies": {
-        "@types/node": "^20.1.0",
-        "@wdio/config": "8.10.7",
-        "@wdio/logger": "8.10.6",
-        "@wdio/protocols": "8.10.2",
-        "@wdio/repl": "8.10.1",
-        "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
-        "archiver": "^5.0.0",
-        "aria-query": "^5.0.0",
-        "css-shorthand-properties": "^1.1.1",
-        "css-value": "^0.0.1",
-        "devtools": "8.10.7",
-        "devtools-protocol": "^0.0.1149535",
-        "grapheme-splitter": "^1.0.2",
-        "import-meta-resolve": "^3.0.0",
-        "is-plain-obj": "^4.1.0",
-        "lodash.clonedeep": "^4.5.0",
-        "lodash.zip": "^4.2.0",
-        "minimatch": "^9.0.0",
-        "puppeteer-core": "20.3.0",
-        "query-selector-shadow-dom": "^1.0.0",
-        "resq": "^1.9.1",
-        "rgb2hex": "0.2.5",
-        "serialize-error": "^8.0.0",
-        "webdriver": "8.10.7"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/@wdio/cli/node_modules/which": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
-      "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==",
-      "dev": true,
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "node-which": "bin/which.js"
-      },
-      "engines": {
-        "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
-      }
-    },
-    "node_modules/@wdio/config": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.10.7.tgz",
-      "integrity": "sha512-m7JX9X/RPM+4KZQkSUhPHXeS3PJJky0UB62ZLh28TYCzVxEKNq1gFb6Cvqfn+w6Ym/UCFBaZzDrRLLXUAgUifw==",
-      "dev": true,
-      "dependencies": {
-        "@wdio/logger": "8.10.6",
-        "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
-        "decamelize": "^6.0.0",
-        "deepmerge-ts": "^5.0.0",
-        "glob": "^10.2.2",
-        "import-meta-resolve": "^3.0.0",
-        "read-pkg-up": "^9.1.0"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@wdio/config/node_modules/foreground-child": {
+    "node_modules/@wdio/cli/node_modules/foreground-child": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
       "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
@@ -6386,10 +6303,10 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/@wdio/config/node_modules/glob": {
-      "version": "10.2.6",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.6.tgz",
-      "integrity": "sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA==",
+    "node_modules/@wdio/cli/node_modules/glob": {
+      "version": "10.3.0",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.0.tgz",
+      "integrity": "sha512-AQ1/SB9HH0yCx1jXAT4vmCbTOPe5RQ+kCurjbel5xSCGhebumUv+GJZfa1rEqor3XIViqwSEmlkZCQD43RWrBg==",
       "dev": true,
       "dependencies": {
         "foreground-child": "^3.1.0",
@@ -6408,10 +6325,10 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/@wdio/config/node_modules/minimatch": {
-      "version": "9.0.1",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
-      "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
+    "node_modules/@wdio/cli/node_modules/minimatch": {
+      "version": "9.0.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz",
+      "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==",
       "dev": true,
       "dependencies": {
         "brace-expansion": "^2.0.1"
@@ -6423,7 +6340,7 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/@wdio/config/node_modules/minipass": {
+    "node_modules/@wdio/cli/node_modules/minipass": {
       "version": "6.0.2",
       "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz",
       "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==",
@@ -6432,7 +6349,7 @@
         "node": ">=16 || 14 >=14.17"
       }
     },
-    "node_modules/@wdio/config/node_modules/signal-exit": {
+    "node_modules/@wdio/cli/node_modules/signal-exit": {
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz",
       "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==",
@@ -6445,131 +6362,16 @@
       }
     },
     "node_modules/@wdio/globals": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.10.7.tgz",
-      "integrity": "sha512-f+oBuQjJAOXoWwUffjbQk26gNGqQ4d8dnB6fVW7C/WwhuButKwm4pyBEp0RpU5G3a5pYn0bQP95cziuozTU1rg==",
+      "version": "8.11.2",
+      "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.11.2.tgz",
+      "integrity": "sha512-oaPyGLmWOHQLYtT6Jn3mtZBSYyWxau6ncBDLPJDUwOxufi3tfT9DOen+65OGBK55GfjrCAZOSGAJ13mN/swIQQ==",
       "dev": true,
       "engines": {
         "node": "^16.13 || >=18"
       },
       "optionalDependencies": {
-        "expect-webdriverio": "^4.0.1",
-        "webdriverio": "8.10.7"
-      }
-    },
-    "node_modules/@wdio/globals/node_modules/devtools": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/devtools/-/devtools-8.10.7.tgz",
-      "integrity": "sha512-picJDxsjpaOW7gnQjcQVGDXvxuP1RZ4VNJpvJ+qiy86Gf3l4FGLKYkpJJFAMsIugL0XPs89bIVhjbtIv5NGL1w==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "@types/node": "^20.1.0",
-        "@wdio/config": "8.10.7",
-        "@wdio/logger": "8.10.6",
-        "@wdio/protocols": "8.10.2",
-        "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
-        "chrome-launcher": "^0.15.0",
-        "edge-paths": "^3.0.5",
-        "import-meta-resolve": "^3.0.0",
-        "puppeteer-core": "20.3.0",
-        "query-selector-shadow-dom": "^1.0.0",
-        "ua-parser-js": "^1.0.1",
-        "uuid": "^9.0.0",
-        "which": "^3.0.0"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/@wdio/globals/node_modules/devtools-protocol": {
-      "version": "0.0.1149535",
-      "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1149535.tgz",
-      "integrity": "sha512-vpM8tGaYz2nrN9n8rvUEhQCgU05ocejO5WIJySsftEHxUahQ/fWuNyPxXuQNBEmaISYyMZkxCunhjtSEyBl/Dg==",
-      "dev": true,
-      "optional": true
-    },
-    "node_modules/@wdio/globals/node_modules/is-plain-obj": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
-      "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
-      "dev": true,
-      "optional": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/@wdio/globals/node_modules/minimatch": {
-      "version": "9.0.1",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
-      "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "brace-expansion": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/@wdio/globals/node_modules/webdriverio": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.10.7.tgz",
-      "integrity": "sha512-TkkPE3zBxdLRdcsNLqHct2OARnfMYB9/A0ri4sccmc3C3dVFiW99NAstN88nzD1SYzXAbxALRuITVd5oswqqhg==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "@types/node": "^20.1.0",
-        "@wdio/config": "8.10.7",
-        "@wdio/logger": "8.10.6",
-        "@wdio/protocols": "8.10.2",
-        "@wdio/repl": "8.10.1",
-        "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
-        "archiver": "^5.0.0",
-        "aria-query": "^5.0.0",
-        "css-shorthand-properties": "^1.1.1",
-        "css-value": "^0.0.1",
-        "devtools": "8.10.7",
-        "devtools-protocol": "^0.0.1149535",
-        "grapheme-splitter": "^1.0.2",
-        "import-meta-resolve": "^3.0.0",
-        "is-plain-obj": "^4.1.0",
-        "lodash.clonedeep": "^4.5.0",
-        "lodash.zip": "^4.2.0",
-        "minimatch": "^9.0.0",
-        "puppeteer-core": "20.3.0",
-        "query-selector-shadow-dom": "^1.0.0",
-        "resq": "^1.9.1",
-        "rgb2hex": "0.2.5",
-        "serialize-error": "^8.0.0",
-        "webdriver": "8.10.7"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/@wdio/globals/node_modules/which": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
-      "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "node-which": "bin/which.js"
-      },
-      "engines": {
-        "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+        "expect-webdriverio": "^4.2.5",
+        "webdriverio": "8.11.2"
       }
     },
     "node_modules/@wdio/local-runner": {
@@ -6591,7 +6393,7 @@
         "node": "^16.13 || >=18"
       }
     },
-    "node_modules/@wdio/local-runner/node_modules/@wdio/logger": {
+    "node_modules/@wdio/logger": {
       "version": "8.11.0",
       "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
       "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
@@ -6606,60 +6408,6 @@
         "node": "^16.13 || >=18"
       }
     },
-    "node_modules/@wdio/local-runner/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==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-      }
-    },
-    "node_modules/@wdio/local-runner/node_modules/chalk": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-      "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-      "dev": true,
-      "engines": {
-        "node": "^12.17.0 || ^14.13 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/@wdio/local-runner/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==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-      }
-    },
-    "node_modules/@wdio/logger": {
-      "version": "8.10.6",
-      "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.10.6.tgz",
-      "integrity": "sha512-pJYKecNYS0vu0FxDaii6MYQlYkORDLGdRWi70hrihH20sMZofzMA1tvzRMRk1VTrsUUE4TLJXKdmT2JRMN+OPw==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^5.1.2",
-        "loglevel": "^1.6.0",
-        "loglevel-plugin-prefix": "^0.8.4",
-        "strip-ansi": "^7.1.0"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
     "node_modules/@wdio/logger/node_modules/ansi-regex": {
       "version": "6.0.1",
       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
@@ -6716,79 +6464,10 @@
         "node": "^16.13 || >=18"
       }
     },
-    "node_modules/@wdio/mocha-framework/node_modules/@wdio/logger": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-      "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^5.1.2",
-        "loglevel": "^1.6.0",
-        "loglevel-plugin-prefix": "^0.8.4",
-        "strip-ansi": "^7.1.0"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/@wdio/mocha-framework/node_modules/@wdio/utils": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
-      "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
-      "dev": true,
-      "dependencies": {
-        "@wdio/logger": "8.11.0",
-        "@wdio/types": "8.10.4",
-        "import-meta-resolve": "^3.0.0",
-        "p-iteration": "^1.1.8"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/@wdio/mocha-framework/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==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-      }
-    },
-    "node_modules/@wdio/mocha-framework/node_modules/chalk": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-      "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-      "dev": true,
-      "engines": {
-        "node": "^12.17.0 || ^14.13 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/@wdio/mocha-framework/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==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-      }
-    },
     "node_modules/@wdio/protocols": {
-      "version": "8.10.2",
-      "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.10.2.tgz",
-      "integrity": "sha512-Iv7Nqq6YsMQR9qvOM2mswUcKwx7bdx3cWVSmbMc8hwGJuNCBI+BP1fzmD9OidUftd1CQNvfugsG8Vq8vQWRyGg==",
+      "version": "8.11.0",
+      "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.11.0.tgz",
+      "integrity": "sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==",
       "dev": true
     },
     "node_modules/@wdio/repl": {
@@ -6820,60 +6499,6 @@
         "node": "^16.13 || >=18"
       }
     },
-    "node_modules/@wdio/reporter/node_modules/@wdio/logger": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-      "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^5.1.2",
-        "loglevel": "^1.6.0",
-        "loglevel-plugin-prefix": "^0.8.4",
-        "strip-ansi": "^7.1.0"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/@wdio/reporter/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==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-      }
-    },
-    "node_modules/@wdio/reporter/node_modules/chalk": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-      "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-      "dev": true,
-      "engines": {
-        "node": "^12.17.0 || ^14.13 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/@wdio/reporter/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==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-      }
-    },
     "node_modules/@wdio/runner": {
       "version": "8.11.2",
       "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.11.2.tgz",
@@ -6915,79 +6540,6 @@
         "node": "^16.13 || >=18"
       }
     },
-    "node_modules/@wdio/runner/node_modules/@wdio/globals": {
-      "version": "8.11.2",
-      "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.11.2.tgz",
-      "integrity": "sha512-oaPyGLmWOHQLYtT6Jn3mtZBSYyWxau6ncBDLPJDUwOxufi3tfT9DOen+65OGBK55GfjrCAZOSGAJ13mN/swIQQ==",
-      "dev": true,
-      "engines": {
-        "node": "^16.13 || >=18"
-      },
-      "optionalDependencies": {
-        "expect-webdriverio": "^4.2.5",
-        "webdriverio": "8.11.2"
-      }
-    },
-    "node_modules/@wdio/runner/node_modules/@wdio/logger": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-      "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^5.1.2",
-        "loglevel": "^1.6.0",
-        "loglevel-plugin-prefix": "^0.8.4",
-        "strip-ansi": "^7.1.0"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/@wdio/runner/node_modules/@wdio/protocols": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.11.0.tgz",
-      "integrity": "sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==",
-      "dev": true
-    },
-    "node_modules/@wdio/runner/node_modules/@wdio/utils": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
-      "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
-      "dev": true,
-      "dependencies": {
-        "@wdio/logger": "8.11.0",
-        "@wdio/types": "8.10.4",
-        "import-meta-resolve": "^3.0.0",
-        "p-iteration": "^1.1.8"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/@wdio/runner/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==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-      }
-    },
-    "node_modules/@wdio/runner/node_modules/chalk": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-      "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-      "dev": true,
-      "engines": {
-        "node": "^12.17.0 || ^14.13 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
     "node_modules/@wdio/runner/node_modules/foreground-child": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
@@ -7062,21 +6614,6 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/@wdio/runner/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==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-      }
-    },
     "node_modules/@wdio/runner/node_modules/webdriver": {
       "version": "8.11.1",
       "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.11.1.tgz",
@@ -7140,12 +6677,12 @@
       }
     },
     "node_modules/@wdio/utils": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.10.7.tgz",
-      "integrity": "sha512-G9r/bQl4J25WPKeW0e+27gqNvG+x7MyZEOICl6SwyBe0SqO7JBFOBARx4oUEp2zQYmnCRNtCrHa7yM/O4OPuKA==",
+      "version": "8.11.0",
+      "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
+      "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
       "dev": true,
       "dependencies": {
-        "@wdio/logger": "8.10.6",
+        "@wdio/logger": "8.11.0",
         "@wdio/types": "8.10.4",
         "import-meta-resolve": "^3.0.0",
         "p-iteration": "^1.1.8"
@@ -10365,66 +9902,6 @@
         "node": "^16.13 || >=18"
       }
     },
-    "node_modules/devtools/node_modules/@wdio/logger": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-      "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^5.1.2",
-        "loglevel": "^1.6.0",
-        "loglevel-plugin-prefix": "^0.8.4",
-        "strip-ansi": "^7.1.0"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/devtools/node_modules/@wdio/protocols": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.11.0.tgz",
-      "integrity": "sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==",
-      "dev": true
-    },
-    "node_modules/devtools/node_modules/@wdio/utils": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
-      "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
-      "dev": true,
-      "dependencies": {
-        "@wdio/logger": "8.11.0",
-        "@wdio/types": "8.10.4",
-        "import-meta-resolve": "^3.0.0",
-        "p-iteration": "^1.1.8"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/devtools/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==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-      }
-    },
-    "node_modules/devtools/node_modules/chalk": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-      "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-      "dev": true,
-      "engines": {
-        "node": "^12.17.0 || ^14.13 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
     "node_modules/devtools/node_modules/foreground-child": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
@@ -10499,21 +9976,6 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/devtools/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==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-      }
-    },
     "node_modules/devtools/node_modules/which": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
@@ -10625,9 +10087,9 @@
       }
     },
     "node_modules/dotenv": {
-      "version": "16.1.4",
-      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.4.tgz",
-      "integrity": "sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw==",
+      "version": "16.3.1",
+      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz",
+      "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==",
       "engines": {
         "node": ">=12"
       },
@@ -13755,11 +13217,11 @@
       }
     },
     "node_modules/get-port": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/get-port/-/get-port-6.1.2.tgz",
-      "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==",
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.0.0.tgz",
+      "integrity": "sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw==",
       "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+        "node": ">=16"
       },
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
@@ -14069,9 +13531,9 @@
       "dev": true
     },
     "node_modules/graphql": {
-      "version": "16.6.0",
-      "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz",
-      "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==",
+      "version": "16.7.1",
+      "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.7.1.tgz",
+      "integrity": "sha512-DRYR9tf+UGU0KOsMcKAlXeFfX89UiiIZ0dRU3mR0yJfu6OjZqUcp68NnFLnqQU5RexygFoDy1EW+ccOYcPfmHg==",
       "engines": {
         "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
       }
@@ -14602,9 +14064,9 @@
       "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="
     },
     "node_modules/inquirer": {
-      "version": "9.2.6",
-      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.6.tgz",
-      "integrity": "sha512-y71l237eJJKS4rl7sQcEUiMhrR0pB/ZnRMMTxLpjJhWL4hdWCT03a6jJnC1w6qIPSRZWEozuieGt3v7XaEJYFw==",
+      "version": "9.2.7",
+      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.7.tgz",
+      "integrity": "sha512-Bf52lnfvNxGPJPltiNO2tLBp3zC339KNlGMqOkW+dsvNikBhcVDK5kqU2lVX2FTPzuXUFX5WJDlsw//w3ZwoTw==",
       "dev": true,
       "dependencies": {
         "ansi-escapes": "^4.3.2",
@@ -15333,6 +14795,29 @@
         "node": ">=8"
       }
     },
+    "node_modules/istanbul-lib-source-maps": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+      "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+      "dev": true,
+      "dependencies": {
+        "debug": "^4.1.1",
+        "istanbul-lib-coverage": "^3.0.0",
+        "source-map": "^0.6.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/istanbul-lib-source-maps/node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/istanbul-reports": {
       "version": "3.1.5",
       "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
@@ -18438,9 +17923,9 @@
       "dev": true
     },
     "node_modules/octokit": {
-      "version": "2.0.22",
-      "resolved": "https://registry.npmjs.org/octokit/-/octokit-2.0.22.tgz",
-      "integrity": "sha512-QBgGSB+odZ5o3ysLy5d2Qvwwx5+GU1zLVgkgpy3o4XocmrD/YInaIVUCA6nR8jUmdf5lgyyiYPyxRt0UrNwqMQ==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/octokit/-/octokit-2.1.0.tgz",
+      "integrity": "sha512-Pxi6uKTjBRZWgAwsw1NgHdRlL+QASCN35OYS7X79o7PtBME0CLXEroZmPtEwlWZbPTP+iDbEy2wCbSOgm0uGIQ==",
       "dependencies": {
         "@octokit/app": "^13.1.5",
         "@octokit/core": "^4.2.1",
@@ -18449,6 +17934,7 @@
         "@octokit/plugin-rest-endpoint-methods": "^7.1.1",
         "@octokit/plugin-retry": "^4.1.3",
         "@octokit/plugin-throttling": "^5.2.2",
+        "@octokit/request-error": "^v3.0.3",
         "@octokit/types": "^9.2.2"
       },
       "engines": {
@@ -20795,6 +20281,18 @@
         "runme2": "bin/runme2.js"
       }
     },
+    "node_modules/runme/node_modules/get-port": {
+      "version": "6.1.2",
+      "resolved": "https://registry.npmjs.org/get-port/-/get-port-6.1.2.tgz",
+      "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==",
+      "dev": true,
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/runme/node_modules/tar-fs": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
@@ -20946,9 +20444,9 @@
       "dev": true
     },
     "node_modules/semver": {
-      "version": "7.5.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
-      "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
+      "version": "7.5.3",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
+      "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
       "dependencies": {
         "lru-cache": "^6.0.0"
       },
@@ -21851,9 +21349,9 @@
       }
     },
     "node_modules/tar-fs": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.2.tgz",
-      "integrity": "sha512-mLQ5iTTCv2tt3a4BwvD8QX1YFVBL/94/Nd+U2il38wt2+zaJSusp1VwJSNkBmB48FeTdOqptf1DAUIosXQBRrQ==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.3.tgz",
+      "integrity": "sha512-ZK36riGYnFI6LujIBfBRoDfeaaWUkStIFKwtPjnDWCKnsDE9kuQthG09aQjLjpzoRtVElEMZ/AIAURNb7N9mkA==",
       "dev": true,
       "dependencies": {
         "mkdirp-classic": "^0.5.2",
@@ -23642,19 +23140,19 @@
       }
     },
     "node_modules/vitest": {
-      "version": "0.31.4",
-      "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.31.4.tgz",
-      "integrity": "sha512-GoV0VQPmWrUFOZSg3RpQAPN+LPmHg2/gxlMNJlyxJihkz6qReHDV6b0pPDcqFLNEPya4tWJ1pgwUNP9MLmUfvQ==",
+      "version": "0.32.2",
+      "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.32.2.tgz",
+      "integrity": "sha512-hU8GNNuQfwuQmqTLfiKcqEhZY72Zxb7nnN07koCUNmntNxbKQnVbeIS6sqUgR3eXSlbOpit8+/gr1KpqoMgWCQ==",
       "dev": true,
       "dependencies": {
         "@types/chai": "^4.3.5",
         "@types/chai-subset": "^1.3.3",
         "@types/node": "*",
-        "@vitest/expect": "0.31.4",
-        "@vitest/runner": "0.31.4",
-        "@vitest/snapshot": "0.31.4",
-        "@vitest/spy": "0.31.4",
-        "@vitest/utils": "0.31.4",
+        "@vitest/expect": "0.32.2",
+        "@vitest/runner": "0.32.2",
+        "@vitest/snapshot": "0.32.2",
+        "@vitest/spy": "0.32.2",
+        "@vitest/utils": "0.32.2",
         "acorn": "^8.8.2",
         "acorn-walk": "^8.2.0",
         "cac": "^6.7.14",
@@ -23670,7 +23168,7 @@
         "tinybench": "^2.5.0",
         "tinypool": "^0.5.0",
         "vite": "^3.0.0 || ^4.0.0",
-        "vite-node": "0.31.4",
+        "vite-node": "0.32.2",
         "why-is-node-running": "^2.2.2"
       },
       "bin": {
@@ -23720,9 +23218,9 @@
       }
     },
     "node_modules/vitest/node_modules/vite-node": {
-      "version": "0.31.4",
-      "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.31.4.tgz",
-      "integrity": "sha512-uzL377GjJtTbuc5KQxVbDu2xfU/x0wVjUtXQR2ihS21q/NK6ROr4oG0rsSkBBddZUVCwzfx22in76/0ZZHXgkQ==",
+      "version": "0.32.2",
+      "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.32.2.tgz",
+      "integrity": "sha512-dTQ1DCLwl2aEseov7cfQ+kDMNJpM1ebpyMMMwWzBvLbis8Nla/6c9WQcqpPssTwS6Rp/+U6KwlIj8Eapw4bLdA==",
       "dev": true,
       "dependencies": {
         "cac": "^6.7.14",
@@ -23949,6 +23447,18 @@
         }
       }
     },
+    "node_modules/wdio-vscode-service/node_modules/get-port": {
+      "version": "6.1.2",
+      "resolved": "https://registry.npmjs.org/get-port/-/get-port-6.1.2.tgz",
+      "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==",
+      "dev": true,
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/wdio-vscode-service/node_modules/slash": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/slash/-/slash-5.0.1.tgz",
@@ -23988,28 +23498,6 @@
       "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz",
       "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA=="
     },
-    "node_modules/webdriver": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.10.7.tgz",
-      "integrity": "sha512-pBy29S9e8IYKYHfS0gp91Jp9SUvXJQckJKJdj+VNLNL9toSFo10N7xRpv8W1f7HkniXrgESi9GHYNyc1J/5lLA==",
-      "dev": true,
-      "dependencies": {
-        "@types/node": "^20.1.0",
-        "@types/ws": "^8.5.3",
-        "@wdio/config": "8.10.7",
-        "@wdio/logger": "8.10.6",
-        "@wdio/protocols": "8.10.2",
-        "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
-        "deepmerge-ts": "^5.0.0",
-        "got": "^ 12.6.1",
-        "ky": "^0.33.0",
-        "ws": "^8.8.0"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
     "node_modules/webdriverio": {
       "version": "8.11.2",
       "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.11.2.tgz",
@@ -24065,66 +23553,6 @@
         "node": "^16.13 || >=18"
       }
     },
-    "node_modules/webdriverio/node_modules/@wdio/logger": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-      "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^5.1.2",
-        "loglevel": "^1.6.0",
-        "loglevel-plugin-prefix": "^0.8.4",
-        "strip-ansi": "^7.1.0"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/webdriverio/node_modules/@wdio/protocols": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.11.0.tgz",
-      "integrity": "sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==",
-      "dev": true
-    },
-    "node_modules/webdriverio/node_modules/@wdio/utils": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
-      "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
-      "dev": true,
-      "dependencies": {
-        "@wdio/logger": "8.11.0",
-        "@wdio/types": "8.10.4",
-        "import-meta-resolve": "^3.0.0",
-        "p-iteration": "^1.1.8"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/webdriverio/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==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-      }
-    },
-    "node_modules/webdriverio/node_modules/chalk": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-      "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-      "dev": true,
-      "engines": {
-        "node": "^12.17.0 || ^14.13 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
     "node_modules/webdriverio/node_modules/foreground-child": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
@@ -24211,21 +23639,6 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/webdriverio/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==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-      }
-    },
     "node_modules/webdriverio/node_modules/webdriver": {
       "version": "8.11.1",
       "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.11.1.tgz",
@@ -24254,9 +23667,9 @@
       "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
     },
     "node_modules/webpack": {
-      "version": "5.87.0",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.87.0.tgz",
-      "integrity": "sha512-GOu1tNbQ7p1bDEoFRs2YPcfyGs8xq52yyPBZ3m2VGnXGtV9MxjrkABHm4V9Ia280OefsSLzvbVoXcfLxjKY/Iw==",
+      "version": "5.88.0",
+      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.0.tgz",
+      "integrity": "sha512-O3jDhG5e44qIBSi/P6KpcCcH7HD+nYIHVBhdWFxcLOcIGN8zGo5nqF3BjyNCxIh4p1vFdNnreZv2h2KkoAw3lw==",
       "dev": true,
       "dependencies": {
         "@types/eslint-scope": "^3.7.3",
@@ -28794,15 +28207,15 @@
       }
     },
     "@typescript-eslint/eslint-plugin": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.7.tgz",
-      "integrity": "sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.0.tgz",
+      "integrity": "sha512-78B+anHLF1TI8Jn/cD0Q00TBYdMgjdOn980JfAVa9yw5sop8nyTfVOQAv6LWywkOGLclDBtv5z3oxN4w7jxyNg==",
       "dev": true,
       "requires": {
         "@eslint-community/regexpp": "^4.4.0",
-        "@typescript-eslint/scope-manager": "5.59.7",
-        "@typescript-eslint/type-utils": "5.59.7",
-        "@typescript-eslint/utils": "5.59.7",
+        "@typescript-eslint/scope-manager": "5.60.0",
+        "@typescript-eslint/type-utils": "5.60.0",
+        "@typescript-eslint/utils": "5.60.0",
         "debug": "^4.3.4",
         "grapheme-splitter": "^1.0.4",
         "ignore": "^5.2.0",
@@ -28812,28 +28225,28 @@
       },
       "dependencies": {
         "@typescript-eslint/scope-manager": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz",
-          "integrity": "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.0.tgz",
+          "integrity": "sha512-hakuzcxPwXi2ihf9WQu1BbRj1e/Pd8ZZwVTG9kfbxAMZstKz8/9OoexIwnmLzShtsdap5U/CoQGRCWlSuPbYxQ==",
           "dev": true,
           "requires": {
-            "@typescript-eslint/types": "5.59.7",
-            "@typescript-eslint/visitor-keys": "5.59.7"
+            "@typescript-eslint/types": "5.60.0",
+            "@typescript-eslint/visitor-keys": "5.60.0"
           }
         },
         "@typescript-eslint/types": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz",
-          "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.0.tgz",
+          "integrity": "sha512-ascOuoCpNZBccFVNJRSC6rPq4EmJ2NkuoKnd6LDNyAQmdDnziAtxbCGWCbefG1CNzmDvd05zO36AmB7H8RzKPA==",
           "dev": true
         },
         "@typescript-eslint/visitor-keys": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz",
-          "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.0.tgz",
+          "integrity": "sha512-wm9Uz71SbCyhUKgcaPRauBdTegUyY/ZWl8gLwD/i/ybJqscrrdVSFImpvUz16BLPChIeKBK5Fa9s6KDQjsjyWw==",
           "dev": true,
           "requires": {
-            "@typescript-eslint/types": "5.59.7",
+            "@typescript-eslint/types": "5.60.0",
             "eslint-visitor-keys": "^3.3.0"
           }
         }
@@ -28862,31 +28275,31 @@
       }
     },
     "@typescript-eslint/type-utils": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz",
-      "integrity": "sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.60.0.tgz",
+      "integrity": "sha512-X7NsRQddORMYRFH7FWo6sA9Y/zbJ8s1x1RIAtnlj6YprbToTiQnM6vxcMu7iYhdunmoC0rUWlca13D5DVHkK2g==",
       "dev": true,
       "requires": {
-        "@typescript-eslint/typescript-estree": "5.59.7",
-        "@typescript-eslint/utils": "5.59.7",
+        "@typescript-eslint/typescript-estree": "5.60.0",
+        "@typescript-eslint/utils": "5.60.0",
         "debug": "^4.3.4",
         "tsutils": "^3.21.0"
       },
       "dependencies": {
         "@typescript-eslint/types": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz",
-          "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.0.tgz",
+          "integrity": "sha512-ascOuoCpNZBccFVNJRSC6rPq4EmJ2NkuoKnd6LDNyAQmdDnziAtxbCGWCbefG1CNzmDvd05zO36AmB7H8RzKPA==",
           "dev": true
         },
         "@typescript-eslint/typescript-estree": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz",
-          "integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.0.tgz",
+          "integrity": "sha512-R43thAuwarC99SnvrBmh26tc7F6sPa2B3evkXp/8q954kYL6Ro56AwASYWtEEi+4j09GbiNAHqYwNNZuNlARGQ==",
           "dev": true,
           "requires": {
-            "@typescript-eslint/types": "5.59.7",
-            "@typescript-eslint/visitor-keys": "5.59.7",
+            "@typescript-eslint/types": "5.60.0",
+            "@typescript-eslint/visitor-keys": "5.60.0",
             "debug": "^4.3.4",
             "globby": "^11.1.0",
             "is-glob": "^4.0.3",
@@ -28895,12 +28308,12 @@
           }
         },
         "@typescript-eslint/visitor-keys": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz",
-          "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.0.tgz",
+          "integrity": "sha512-wm9Uz71SbCyhUKgcaPRauBdTegUyY/ZWl8gLwD/i/ybJqscrrdVSFImpvUz16BLPChIeKBK5Fa9s6KDQjsjyWw==",
           "dev": true,
           "requires": {
-            "@typescript-eslint/types": "5.59.7",
+            "@typescript-eslint/types": "5.60.0",
             "eslint-visitor-keys": "^3.3.0"
           }
         }
@@ -28928,45 +28341,45 @@
       }
     },
     "@typescript-eslint/utils": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.7.tgz",
-      "integrity": "sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.60.0.tgz",
+      "integrity": "sha512-ba51uMqDtfLQ5+xHtwlO84vkdjrqNzOnqrnwbMHMRY8Tqeme8C2Q8Fc7LajfGR+e3/4LoYiWXUM6BpIIbHJ4hQ==",
       "dev": true,
       "requires": {
         "@eslint-community/eslint-utils": "^4.2.0",
         "@types/json-schema": "^7.0.9",
         "@types/semver": "^7.3.12",
-        "@typescript-eslint/scope-manager": "5.59.7",
-        "@typescript-eslint/types": "5.59.7",
-        "@typescript-eslint/typescript-estree": "5.59.7",
+        "@typescript-eslint/scope-manager": "5.60.0",
+        "@typescript-eslint/types": "5.60.0",
+        "@typescript-eslint/typescript-estree": "5.60.0",
         "eslint-scope": "^5.1.1",
         "semver": "^7.3.7"
       },
       "dependencies": {
         "@typescript-eslint/scope-manager": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz",
-          "integrity": "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.0.tgz",
+          "integrity": "sha512-hakuzcxPwXi2ihf9WQu1BbRj1e/Pd8ZZwVTG9kfbxAMZstKz8/9OoexIwnmLzShtsdap5U/CoQGRCWlSuPbYxQ==",
           "dev": true,
           "requires": {
-            "@typescript-eslint/types": "5.59.7",
-            "@typescript-eslint/visitor-keys": "5.59.7"
+            "@typescript-eslint/types": "5.60.0",
+            "@typescript-eslint/visitor-keys": "5.60.0"
           }
         },
         "@typescript-eslint/types": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz",
-          "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.0.tgz",
+          "integrity": "sha512-ascOuoCpNZBccFVNJRSC6rPq4EmJ2NkuoKnd6LDNyAQmdDnziAtxbCGWCbefG1CNzmDvd05zO36AmB7H8RzKPA==",
           "dev": true
         },
         "@typescript-eslint/typescript-estree": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz",
-          "integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.0.tgz",
+          "integrity": "sha512-R43thAuwarC99SnvrBmh26tc7F6sPa2B3evkXp/8q954kYL6Ro56AwASYWtEEi+4j09GbiNAHqYwNNZuNlARGQ==",
           "dev": true,
           "requires": {
-            "@typescript-eslint/types": "5.59.7",
-            "@typescript-eslint/visitor-keys": "5.59.7",
+            "@typescript-eslint/types": "5.60.0",
+            "@typescript-eslint/visitor-keys": "5.60.0",
             "debug": "^4.3.4",
             "globby": "^11.1.0",
             "is-glob": "^4.0.3",
@@ -28975,12 +28388,12 @@
           }
         },
         "@typescript-eslint/visitor-keys": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz",
-          "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.0.tgz",
+          "integrity": "sha512-wm9Uz71SbCyhUKgcaPRauBdTegUyY/ZWl8gLwD/i/ybJqscrrdVSFImpvUz16BLPChIeKBK5Fa9s6KDQjsjyWw==",
           "dev": true,
           "requires": {
-            "@typescript-eslint/types": "5.59.7",
+            "@typescript-eslint/types": "5.60.0",
             "eslint-visitor-keys": "^3.3.0"
           }
         }
@@ -29627,24 +29040,43 @@
         }
       }
     },
+    "@vitest/coverage-v8": {
+      "version": "0.32.2",
+      "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-0.32.2.tgz",
+      "integrity": "sha512-/+V3nB3fyeuuSeKxCfi6XmWjDIxpky7AWSkGVfaMjAk7di8igBwRsThLjultwIZdTDH1RAxpjmCXEfSqsMFZOA==",
+      "dev": true,
+      "requires": {
+        "@ampproject/remapping": "^2.2.1",
+        "@bcoe/v8-coverage": "^0.2.3",
+        "istanbul-lib-coverage": "^3.2.0",
+        "istanbul-lib-report": "^3.0.0",
+        "istanbul-lib-source-maps": "^4.0.1",
+        "istanbul-reports": "^3.1.5",
+        "magic-string": "^0.30.0",
+        "picocolors": "^1.0.0",
+        "std-env": "^3.3.2",
+        "test-exclude": "^6.0.0",
+        "v8-to-istanbul": "^9.1.0"
+      }
+    },
     "@vitest/expect": {
-      "version": "0.31.4",
-      "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.31.4.tgz",
-      "integrity": "sha512-tibyx8o7GUyGHZGyPgzwiaPaLDQ9MMuCOrc03BYT0nryUuhLbL7NV2r/q98iv5STlwMgaKuFJkgBW/8iPKwlSg==",
+      "version": "0.32.2",
+      "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.32.2.tgz",
+      "integrity": "sha512-6q5yzweLnyEv5Zz1fqK5u5E83LU+gOMVBDuxBl2d2Jfx1BAp5M+rZgc5mlyqdnxquyoiOXpXmFNkcGcfFnFH3Q==",
       "dev": true,
       "requires": {
-        "@vitest/spy": "0.31.4",
-        "@vitest/utils": "0.31.4",
+        "@vitest/spy": "0.32.2",
+        "@vitest/utils": "0.32.2",
         "chai": "^4.3.7"
       }
     },
     "@vitest/runner": {
-      "version": "0.31.4",
-      "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.31.4.tgz",
-      "integrity": "sha512-Wgm6UER+gwq6zkyrm5/wbpXGF+g+UBB78asJlFkIOwyse0pz8lZoiC6SW5i4gPnls/zUcPLWS7Zog0LVepXnpg==",
+      "version": "0.32.2",
+      "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.32.2.tgz",
+      "integrity": "sha512-06vEL0C1pomOEktGoLjzZw+1Fb+7RBRhmw/06WkDrd1akkT9i12su0ku+R/0QM69dfkIL/rAIDTG+CSuQVDcKw==",
       "dev": true,
       "requires": {
-        "@vitest/utils": "0.31.4",
+        "@vitest/utils": "0.32.2",
         "concordance": "^5.0.4",
         "p-limit": "^4.0.0",
         "pathe": "^1.1.0"
@@ -29668,9 +29100,9 @@
       }
     },
     "@vitest/snapshot": {
-      "version": "0.31.4",
-      "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.31.4.tgz",
-      "integrity": "sha512-LemvNumL3NdWSmfVAMpXILGyaXPkZbG5tyl6+RQSdcHnTj6hvA49UAI8jzez9oQyE/FWLKRSNqTGzsHuk89LRA==",
+      "version": "0.32.2",
+      "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.32.2.tgz",
+      "integrity": "sha512-JwhpeH/PPc7GJX38vEfCy9LtRzf9F4er7i4OsAJyV7sjPwjj+AIR8cUgpMTWK4S3TiamzopcTyLsZDMuldoi5A==",
       "dev": true,
       "requires": {
         "magic-string": "^0.30.0",
@@ -29704,21 +29136,21 @@
       }
     },
     "@vitest/spy": {
-      "version": "0.31.4",
-      "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.31.4.tgz",
-      "integrity": "sha512-3ei5ZH1s3aqbEyftPAzSuunGICRuhE+IXOmpURFdkm5ybUADk+viyQfejNk6q8M5QGX8/EVKw+QWMEP3DTJDag==",
+      "version": "0.32.2",
+      "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.32.2.tgz",
+      "integrity": "sha512-Q/ZNILJ4ca/VzQbRM8ur3Si5Sardsh1HofatG9wsJY1RfEaw0XKP8IVax2lI1qnrk9YPuG9LA2LkZ0EI/3d4ug==",
       "dev": true,
       "requires": {
         "tinyspy": "^2.1.0"
       }
     },
     "@vitest/utils": {
-      "version": "0.31.4",
-      "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.31.4.tgz",
-      "integrity": "sha512-DobZbHacWznoGUfYU8XDPY78UubJxXfMNY1+SUdOp1NsI34eopSA6aZMeaGu10waSOeYwE8lxrd/pLfT0RMxjQ==",
+      "version": "0.32.2",
+      "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.32.2.tgz",
+      "integrity": "sha512-lnJ0T5i03j0IJaeW73hxe2AuVnZ/y1BhhCOuIcl9LIzXnbpXJT9Lrt6brwKHXLOiA7MZ6N5hSJjt0xE1dGNCzQ==",
       "dev": true,
       "requires": {
-        "concordance": "^5.0.4",
+        "diff-sequences": "^29.4.3",
         "loupe": "^2.3.6",
         "pretty-format": "^27.5.1"
       },
@@ -29841,18 +29273,18 @@
       }
     },
     "@wdio/cli": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.10.7.tgz",
-      "integrity": "sha512-HYKRxtdmjKXzO/ePpMWyG40jb4kuoR66xaIPXN0NOso3x2p27hxYHEb/teEYaxPTG3d6Rpk2PldGIX6qYA4wbg==",
+      "version": "8.11.2",
+      "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.11.2.tgz",
+      "integrity": "sha512-g1vuq+v1Ko//QQFDQsdf3Qs1BkON82NNGYN/ehUVZrvAcKwiIyfOG3WkzLxi8V4tPWbD+vsLbLQs/FRG+4gTag==",
       "dev": true,
       "requires": {
         "@types/node": "^20.1.1",
-        "@wdio/config": "8.10.7",
-        "@wdio/globals": "8.10.7",
-        "@wdio/logger": "8.10.6",
-        "@wdio/protocols": "8.10.2",
+        "@wdio/config": "8.11.0",
+        "@wdio/globals": "8.11.2",
+        "@wdio/logger": "8.11.0",
+        "@wdio/protocols": "8.11.0",
         "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
+        "@wdio/utils": "8.11.0",
         "async-exit-hook": "^2.0.1",
         "chalk": "^5.2.0",
         "chokidar": "^3.5.3",
@@ -29860,126 +29292,39 @@
         "ejs": "^3.1.9",
         "execa": "^7.1.1",
         "import-meta-resolve": "^3.0.0",
-        "inquirer": "9.2.6",
+        "inquirer": "9.2.7",
         "lodash.flattendeep": "^4.4.0",
         "lodash.pickby": "^4.6.0",
         "lodash.union": "^4.6.0",
         "read-pkg-up": "9.1.0",
         "recursive-readdir": "^2.2.3",
-        "webdriverio": "8.10.7",
+        "webdriverio": "8.11.2",
         "yargs": "^17.7.2",
         "yarn-install": "^1.0.0"
       },
       "dependencies": {
-        "chalk": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-          "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-          "dev": true
-        },
-        "devtools": {
-          "version": "8.10.7",
-          "resolved": "https://registry.npmjs.org/devtools/-/devtools-8.10.7.tgz",
-          "integrity": "sha512-picJDxsjpaOW7gnQjcQVGDXvxuP1RZ4VNJpvJ+qiy86Gf3l4FGLKYkpJJFAMsIugL0XPs89bIVhjbtIv5NGL1w==",
+        "@wdio/config": {
+          "version": "8.11.0",
+          "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.11.0.tgz",
+          "integrity": "sha512-nBQXsXbPCjddtI/3rAK5yFs3eD3f0T3lZMivweTkLLR7GKBxGjiFoBjXtfqUrHJYa+2uwfXrwxo6y+dA6fVbuw==",
           "dev": true,
           "requires": {
-            "@types/node": "^20.1.0",
-            "@wdio/config": "8.10.7",
-            "@wdio/logger": "8.10.6",
-            "@wdio/protocols": "8.10.2",
+            "@wdio/logger": "8.11.0",
             "@wdio/types": "8.10.4",
-            "@wdio/utils": "8.10.7",
-            "chrome-launcher": "^0.15.0",
-            "edge-paths": "^3.0.5",
+            "@wdio/utils": "8.11.0",
+            "decamelize": "^6.0.0",
+            "deepmerge-ts": "^5.0.0",
+            "glob": "^10.2.2",
             "import-meta-resolve": "^3.0.0",
-            "puppeteer-core": "20.3.0",
-            "query-selector-shadow-dom": "^1.0.0",
-            "ua-parser-js": "^1.0.1",
-            "uuid": "^9.0.0",
-            "which": "^3.0.0"
+            "read-pkg-up": "^9.1.0"
           }
         },
-        "devtools-protocol": {
-          "version": "0.0.1149535",
-          "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1149535.tgz",
-          "integrity": "sha512-vpM8tGaYz2nrN9n8rvUEhQCgU05ocejO5WIJySsftEHxUahQ/fWuNyPxXuQNBEmaISYyMZkxCunhjtSEyBl/Dg==",
-          "dev": true
-        },
-        "is-plain-obj": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
-          "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+        "chalk": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
+          "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
           "dev": true
         },
-        "minimatch": {
-          "version": "9.0.1",
-          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
-          "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
-          "dev": true,
-          "requires": {
-            "brace-expansion": "^2.0.1"
-          }
-        },
-        "webdriverio": {
-          "version": "8.10.7",
-          "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.10.7.tgz",
-          "integrity": "sha512-TkkPE3zBxdLRdcsNLqHct2OARnfMYB9/A0ri4sccmc3C3dVFiW99NAstN88nzD1SYzXAbxALRuITVd5oswqqhg==",
-          "dev": true,
-          "requires": {
-            "@types/node": "^20.1.0",
-            "@wdio/config": "8.10.7",
-            "@wdio/logger": "8.10.6",
-            "@wdio/protocols": "8.10.2",
-            "@wdio/repl": "8.10.1",
-            "@wdio/types": "8.10.4",
-            "@wdio/utils": "8.10.7",
-            "archiver": "^5.0.0",
-            "aria-query": "^5.0.0",
-            "css-shorthand-properties": "^1.1.1",
-            "css-value": "^0.0.1",
-            "devtools": "8.10.7",
-            "devtools-protocol": "^0.0.1149535",
-            "grapheme-splitter": "^1.0.2",
-            "import-meta-resolve": "^3.0.0",
-            "is-plain-obj": "^4.1.0",
-            "lodash.clonedeep": "^4.5.0",
-            "lodash.zip": "^4.2.0",
-            "minimatch": "^9.0.0",
-            "puppeteer-core": "20.3.0",
-            "query-selector-shadow-dom": "^1.0.0",
-            "resq": "^1.9.1",
-            "rgb2hex": "0.2.5",
-            "serialize-error": "^8.0.0",
-            "webdriver": "8.10.7"
-          }
-        },
-        "which": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
-          "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==",
-          "dev": true,
-          "requires": {
-            "isexe": "^2.0.0"
-          }
-        }
-      }
-    },
-    "@wdio/config": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.10.7.tgz",
-      "integrity": "sha512-m7JX9X/RPM+4KZQkSUhPHXeS3PJJky0UB62ZLh28TYCzVxEKNq1gFb6Cvqfn+w6Ym/UCFBaZzDrRLLXUAgUifw==",
-      "dev": true,
-      "requires": {
-        "@wdio/logger": "8.10.6",
-        "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
-        "decamelize": "^6.0.0",
-        "deepmerge-ts": "^5.0.0",
-        "glob": "^10.2.2",
-        "import-meta-resolve": "^3.0.0",
-        "read-pkg-up": "^9.1.0"
-      },
-      "dependencies": {
         "foreground-child": {
           "version": "3.1.1",
           "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
@@ -29991,9 +29336,9 @@
           }
         },
         "glob": {
-          "version": "10.2.6",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.6.tgz",
-          "integrity": "sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA==",
+          "version": "10.3.0",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.0.tgz",
+          "integrity": "sha512-AQ1/SB9HH0yCx1jXAT4vmCbTOPe5RQ+kCurjbel5xSCGhebumUv+GJZfa1rEqor3XIViqwSEmlkZCQD43RWrBg==",
           "dev": true,
           "requires": {
             "foreground-child": "^3.1.0",
@@ -30004,9 +29349,9 @@
           }
         },
         "minimatch": {
-          "version": "9.0.1",
-          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
-          "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
+          "version": "9.0.2",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz",
+          "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==",
           "dev": true,
           "requires": {
             "brace-expansion": "^2.0.1"
@@ -30027,106 +29372,13 @@
       }
     },
     "@wdio/globals": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.10.7.tgz",
-      "integrity": "sha512-f+oBuQjJAOXoWwUffjbQk26gNGqQ4d8dnB6fVW7C/WwhuButKwm4pyBEp0RpU5G3a5pYn0bQP95cziuozTU1rg==",
+      "version": "8.11.2",
+      "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.11.2.tgz",
+      "integrity": "sha512-oaPyGLmWOHQLYtT6Jn3mtZBSYyWxau6ncBDLPJDUwOxufi3tfT9DOen+65OGBK55GfjrCAZOSGAJ13mN/swIQQ==",
       "dev": true,
       "requires": {
-        "expect-webdriverio": "^4.0.1",
-        "webdriverio": "8.10.7"
-      },
-      "dependencies": {
-        "devtools": {
-          "version": "8.10.7",
-          "resolved": "https://registry.npmjs.org/devtools/-/devtools-8.10.7.tgz",
-          "integrity": "sha512-picJDxsjpaOW7gnQjcQVGDXvxuP1RZ4VNJpvJ+qiy86Gf3l4FGLKYkpJJFAMsIugL0XPs89bIVhjbtIv5NGL1w==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "@types/node": "^20.1.0",
-            "@wdio/config": "8.10.7",
-            "@wdio/logger": "8.10.6",
-            "@wdio/protocols": "8.10.2",
-            "@wdio/types": "8.10.4",
-            "@wdio/utils": "8.10.7",
-            "chrome-launcher": "^0.15.0",
-            "edge-paths": "^3.0.5",
-            "import-meta-resolve": "^3.0.0",
-            "puppeteer-core": "20.3.0",
-            "query-selector-shadow-dom": "^1.0.0",
-            "ua-parser-js": "^1.0.1",
-            "uuid": "^9.0.0",
-            "which": "^3.0.0"
-          }
-        },
-        "devtools-protocol": {
-          "version": "0.0.1149535",
-          "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1149535.tgz",
-          "integrity": "sha512-vpM8tGaYz2nrN9n8rvUEhQCgU05ocejO5WIJySsftEHxUahQ/fWuNyPxXuQNBEmaISYyMZkxCunhjtSEyBl/Dg==",
-          "dev": true,
-          "optional": true
-        },
-        "is-plain-obj": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
-          "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
-          "dev": true,
-          "optional": true
-        },
-        "minimatch": {
-          "version": "9.0.1",
-          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
-          "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "brace-expansion": "^2.0.1"
-          }
-        },
-        "webdriverio": {
-          "version": "8.10.7",
-          "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.10.7.tgz",
-          "integrity": "sha512-TkkPE3zBxdLRdcsNLqHct2OARnfMYB9/A0ri4sccmc3C3dVFiW99NAstN88nzD1SYzXAbxALRuITVd5oswqqhg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "@types/node": "^20.1.0",
-            "@wdio/config": "8.10.7",
-            "@wdio/logger": "8.10.6",
-            "@wdio/protocols": "8.10.2",
-            "@wdio/repl": "8.10.1",
-            "@wdio/types": "8.10.4",
-            "@wdio/utils": "8.10.7",
-            "archiver": "^5.0.0",
-            "aria-query": "^5.0.0",
-            "css-shorthand-properties": "^1.1.1",
-            "css-value": "^0.0.1",
-            "devtools": "8.10.7",
-            "devtools-protocol": "^0.0.1149535",
-            "grapheme-splitter": "^1.0.2",
-            "import-meta-resolve": "^3.0.0",
-            "is-plain-obj": "^4.1.0",
-            "lodash.clonedeep": "^4.5.0",
-            "lodash.zip": "^4.2.0",
-            "minimatch": "^9.0.0",
-            "puppeteer-core": "20.3.0",
-            "query-selector-shadow-dom": "^1.0.0",
-            "resq": "^1.9.1",
-            "rgb2hex": "0.2.5",
-            "serialize-error": "^8.0.0",
-            "webdriver": "8.10.7"
-          }
-        },
-        "which": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
-          "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "isexe": "^2.0.0"
-          }
-        }
+        "expect-webdriverio": "^4.2.5",
+        "webdriverio": "8.11.2"
       }
     },
     "@wdio/local-runner": {
@@ -30143,47 +29395,12 @@
         "async-exit-hook": "^2.0.1",
         "split2": "^4.1.0",
         "stream-buffers": "^3.0.2"
-      },
-      "dependencies": {
-        "@wdio/logger": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-          "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-          "dev": true,
-          "requires": {
-            "chalk": "^5.1.2",
-            "loglevel": "^1.6.0",
-            "loglevel-plugin-prefix": "^0.8.4",
-            "strip-ansi": "^7.1.0"
-          }
-        },
-        "ansi-regex": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-          "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-          "dev": true
-        },
-        "chalk": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-          "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-          "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^6.0.1"
-          }
-        }
       }
     },
     "@wdio/logger": {
-      "version": "8.10.6",
-      "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.10.6.tgz",
-      "integrity": "sha512-pJYKecNYS0vu0FxDaii6MYQlYkORDLGdRWi70hrihH20sMZofzMA1tvzRMRk1VTrsUUE4TLJXKdmT2JRMN+OPw==",
+      "version": "8.11.0",
+      "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
+      "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
       "dev": true,
       "requires": {
         "chalk": "^5.1.2",
@@ -30227,59 +29444,12 @@
         "@wdio/types": "8.10.4",
         "@wdio/utils": "8.11.0",
         "mocha": "^10.0.0"
-      },
-      "dependencies": {
-        "@wdio/logger": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-          "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-          "dev": true,
-          "requires": {
-            "chalk": "^5.1.2",
-            "loglevel": "^1.6.0",
-            "loglevel-plugin-prefix": "^0.8.4",
-            "strip-ansi": "^7.1.0"
-          }
-        },
-        "@wdio/utils": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
-          "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
-          "dev": true,
-          "requires": {
-            "@wdio/logger": "8.11.0",
-            "@wdio/types": "8.10.4",
-            "import-meta-resolve": "^3.0.0",
-            "p-iteration": "^1.1.8"
-          }
-        },
-        "ansi-regex": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-          "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-          "dev": true
-        },
-        "chalk": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-          "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-          "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^6.0.1"
-          }
-        }
       }
     },
     "@wdio/protocols": {
-      "version": "8.10.2",
-      "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.10.2.tgz",
-      "integrity": "sha512-Iv7Nqq6YsMQR9qvOM2mswUcKwx7bdx3cWVSmbMc8hwGJuNCBI+BP1fzmD9OidUftd1CQNvfugsG8Vq8vQWRyGg==",
+      "version": "8.11.0",
+      "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.11.0.tgz",
+      "integrity": "sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==",
       "dev": true
     },
     "@wdio/repl": {
@@ -30303,41 +29473,6 @@
         "diff": "^5.0.0",
         "object-inspect": "^1.12.0",
         "supports-color": "9.3.1"
-      },
-      "dependencies": {
-        "@wdio/logger": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-          "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-          "dev": true,
-          "requires": {
-            "chalk": "^5.1.2",
-            "loglevel": "^1.6.0",
-            "loglevel-plugin-prefix": "^0.8.4",
-            "strip-ansi": "^7.1.0"
-          }
-        },
-        "ansi-regex": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-          "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-          "dev": true
-        },
-        "chalk": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-          "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-          "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^6.0.1"
-          }
-        }
       }
     },
     "@wdio/runner": {
@@ -30375,58 +29510,6 @@
             "read-pkg-up": "^9.1.0"
           }
         },
-        "@wdio/globals": {
-          "version": "8.11.2",
-          "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.11.2.tgz",
-          "integrity": "sha512-oaPyGLmWOHQLYtT6Jn3mtZBSYyWxau6ncBDLPJDUwOxufi3tfT9DOen+65OGBK55GfjrCAZOSGAJ13mN/swIQQ==",
-          "dev": true,
-          "requires": {
-            "expect-webdriverio": "^4.2.5",
-            "webdriverio": "8.11.2"
-          }
-        },
-        "@wdio/logger": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-          "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-          "dev": true,
-          "requires": {
-            "chalk": "^5.1.2",
-            "loglevel": "^1.6.0",
-            "loglevel-plugin-prefix": "^0.8.4",
-            "strip-ansi": "^7.1.0"
-          }
-        },
-        "@wdio/protocols": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.11.0.tgz",
-          "integrity": "sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==",
-          "dev": true
-        },
-        "@wdio/utils": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
-          "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
-          "dev": true,
-          "requires": {
-            "@wdio/logger": "8.11.0",
-            "@wdio/types": "8.10.4",
-            "import-meta-resolve": "^3.0.0",
-            "p-iteration": "^1.1.8"
-          }
-        },
-        "ansi-regex": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-          "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-          "dev": true
-        },
-        "chalk": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-          "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-          "dev": true
-        },
         "foreground-child": {
           "version": "3.1.1",
           "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
@@ -30471,15 +29554,6 @@
           "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==",
           "dev": true
         },
-        "strip-ansi": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-          "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^6.0.1"
-          }
-        },
         "webdriver": {
           "version": "8.11.1",
           "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.11.1.tgz",
@@ -30532,12 +29606,12 @@
       }
     },
     "@wdio/utils": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.10.7.tgz",
-      "integrity": "sha512-G9r/bQl4J25WPKeW0e+27gqNvG+x7MyZEOICl6SwyBe0SqO7JBFOBARx4oUEp2zQYmnCRNtCrHa7yM/O4OPuKA==",
+      "version": "8.11.0",
+      "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
+      "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
       "dev": true,
       "requires": {
-        "@wdio/logger": "8.10.6",
+        "@wdio/logger": "8.11.0",
         "@wdio/types": "8.10.4",
         "import-meta-resolve": "^3.0.0",
         "p-iteration": "^1.1.8"
@@ -32980,48 +32054,6 @@
             "read-pkg-up": "^9.1.0"
           }
         },
-        "@wdio/logger": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-          "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-          "dev": true,
-          "requires": {
-            "chalk": "^5.1.2",
-            "loglevel": "^1.6.0",
-            "loglevel-plugin-prefix": "^0.8.4",
-            "strip-ansi": "^7.1.0"
-          }
-        },
-        "@wdio/protocols": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.11.0.tgz",
-          "integrity": "sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==",
-          "dev": true
-        },
-        "@wdio/utils": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
-          "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
-          "dev": true,
-          "requires": {
-            "@wdio/logger": "8.11.0",
-            "@wdio/types": "8.10.4",
-            "import-meta-resolve": "^3.0.0",
-            "p-iteration": "^1.1.8"
-          }
-        },
-        "ansi-regex": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-          "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-          "dev": true
-        },
-        "chalk": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-          "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-          "dev": true
-        },
         "foreground-child": {
           "version": "3.1.1",
           "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
@@ -33066,15 +32098,6 @@
           "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==",
           "dev": true
         },
-        "strip-ansi": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-          "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^6.0.1"
-          }
-        },
         "which": {
           "version": "3.0.1",
           "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
@@ -33158,9 +32181,9 @@
       }
     },
     "dotenv": {
-      "version": "16.1.4",
-      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.4.tgz",
-      "integrity": "sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw=="
+      "version": "16.3.1",
+      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz",
+      "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ=="
     },
     "download": {
       "version": "8.0.0",
@@ -35481,9 +34504,9 @@
       }
     },
     "get-port": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/get-port/-/get-port-6.1.2.tgz",
-      "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw=="
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.0.0.tgz",
+      "integrity": "sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw=="
     },
     "get-stream": {
       "version": "6.0.1",
@@ -35717,9 +34740,9 @@
       "dev": true
     },
     "graphql": {
-      "version": "16.6.0",
-      "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz",
-      "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw=="
+      "version": "16.7.1",
+      "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.7.1.tgz",
+      "integrity": "sha512-DRYR9tf+UGU0KOsMcKAlXeFfX89UiiIZ0dRU3mR0yJfu6OjZqUcp68NnFLnqQU5RexygFoDy1EW+ccOYcPfmHg=="
     },
     "graphql-tag": {
       "version": "2.12.6",
@@ -36104,9 +35127,9 @@
       "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="
     },
     "inquirer": {
-      "version": "9.2.6",
-      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.6.tgz",
-      "integrity": "sha512-y71l237eJJKS4rl7sQcEUiMhrR0pB/ZnRMMTxLpjJhWL4hdWCT03a6jJnC1w6qIPSRZWEozuieGt3v7XaEJYFw==",
+      "version": "9.2.7",
+      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.7.tgz",
+      "integrity": "sha512-Bf52lnfvNxGPJPltiNO2tLBp3zC339KNlGMqOkW+dsvNikBhcVDK5kqU2lVX2FTPzuXUFX5WJDlsw//w3ZwoTw==",
       "dev": true,
       "requires": {
         "ansi-escapes": "^4.3.2",
@@ -36592,6 +35615,25 @@
         }
       }
     },
+    "istanbul-lib-source-maps": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+      "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+      "dev": true,
+      "requires": {
+        "debug": "^4.1.1",
+        "istanbul-lib-coverage": "^3.0.0",
+        "source-map": "^0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
     "istanbul-reports": {
       "version": "3.1.5",
       "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
@@ -38887,9 +37929,9 @@
       "dev": true
     },
     "octokit": {
-      "version": "2.0.22",
-      "resolved": "https://registry.npmjs.org/octokit/-/octokit-2.0.22.tgz",
-      "integrity": "sha512-QBgGSB+odZ5o3ysLy5d2Qvwwx5+GU1zLVgkgpy3o4XocmrD/YInaIVUCA6nR8jUmdf5lgyyiYPyxRt0UrNwqMQ==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/octokit/-/octokit-2.1.0.tgz",
+      "integrity": "sha512-Pxi6uKTjBRZWgAwsw1NgHdRlL+QASCN35OYS7X79o7PtBME0CLXEroZmPtEwlWZbPTP+iDbEy2wCbSOgm0uGIQ==",
       "requires": {
         "@octokit/app": "^13.1.5",
         "@octokit/core": "^4.2.1",
@@ -38898,6 +37940,7 @@
         "@octokit/plugin-rest-endpoint-methods": "^7.1.1",
         "@octokit/plugin-retry": "^4.1.3",
         "@octokit/plugin-throttling": "^5.2.2",
+        "@octokit/request-error": "^v3.0.3",
         "@octokit/types": "^9.2.2"
       }
     },
@@ -40615,6 +39658,12 @@
         "wait-on": "^7.0.1"
       },
       "dependencies": {
+        "get-port": {
+          "version": "6.1.2",
+          "resolved": "https://registry.npmjs.org/get-port/-/get-port-6.1.2.tgz",
+          "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==",
+          "dev": true
+        },
         "tar-fs": {
           "version": "2.1.1",
           "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
@@ -40738,9 +39787,9 @@
       }
     },
     "semver": {
-      "version": "7.5.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
-      "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
+      "version": "7.5.3",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
+      "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
       "requires": {
         "lru-cache": "^6.0.0"
       },
@@ -41454,9 +40503,9 @@
       }
     },
     "tar-fs": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.2.tgz",
-      "integrity": "sha512-mLQ5iTTCv2tt3a4BwvD8QX1YFVBL/94/Nd+U2il38wt2+zaJSusp1VwJSNkBmB48FeTdOqptf1DAUIosXQBRrQ==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.3.tgz",
+      "integrity": "sha512-ZK36riGYnFI6LujIBfBRoDfeaaWUkStIFKwtPjnDWCKnsDE9kuQthG09aQjLjpzoRtVElEMZ/AIAURNb7N9mkA==",
       "dev": true,
       "requires": {
         "mkdirp-classic": "^0.5.2",
@@ -42641,19 +41690,19 @@
       }
     },
     "vitest": {
-      "version": "0.31.4",
-      "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.31.4.tgz",
-      "integrity": "sha512-GoV0VQPmWrUFOZSg3RpQAPN+LPmHg2/gxlMNJlyxJihkz6qReHDV6b0pPDcqFLNEPya4tWJ1pgwUNP9MLmUfvQ==",
+      "version": "0.32.2",
+      "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.32.2.tgz",
+      "integrity": "sha512-hU8GNNuQfwuQmqTLfiKcqEhZY72Zxb7nnN07koCUNmntNxbKQnVbeIS6sqUgR3eXSlbOpit8+/gr1KpqoMgWCQ==",
       "dev": true,
       "requires": {
         "@types/chai": "^4.3.5",
         "@types/chai-subset": "^1.3.3",
         "@types/node": "*",
-        "@vitest/expect": "0.31.4",
-        "@vitest/runner": "0.31.4",
-        "@vitest/snapshot": "0.31.4",
-        "@vitest/spy": "0.31.4",
-        "@vitest/utils": "0.31.4",
+        "@vitest/expect": "0.32.2",
+        "@vitest/runner": "0.32.2",
+        "@vitest/snapshot": "0.32.2",
+        "@vitest/spy": "0.32.2",
+        "@vitest/utils": "0.32.2",
         "acorn": "^8.8.2",
         "acorn-walk": "^8.2.0",
         "cac": "^6.7.14",
@@ -42669,14 +41718,14 @@
         "tinybench": "^2.5.0",
         "tinypool": "^0.5.0",
         "vite": "^3.0.0 || ^4.0.0",
-        "vite-node": "0.31.4",
+        "vite-node": "0.32.2",
         "why-is-node-running": "^2.2.2"
       },
       "dependencies": {
         "vite-node": {
-          "version": "0.31.4",
-          "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.31.4.tgz",
-          "integrity": "sha512-uzL377GjJtTbuc5KQxVbDu2xfU/x0wVjUtXQR2ihS21q/NK6ROr4oG0rsSkBBddZUVCwzfx22in76/0ZZHXgkQ==",
+          "version": "0.32.2",
+          "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.32.2.tgz",
+          "integrity": "sha512-dTQ1DCLwl2aEseov7cfQ+kDMNJpM1ebpyMMMwWzBvLbis8Nla/6c9WQcqpPssTwS6Rp/+U6KwlIj8Eapw4bLdA==",
           "dev": true,
           "requires": {
             "cac": "^6.7.14",
@@ -42842,6 +41891,12 @@
         "yargs-parser": "^21.1.1"
       },
       "dependencies": {
+        "get-port": {
+          "version": "6.1.2",
+          "resolved": "https://registry.npmjs.org/get-port/-/get-port-6.1.2.tgz",
+          "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==",
+          "dev": true
+        },
         "slash": {
           "version": "5.0.1",
           "resolved": "https://registry.npmjs.org/slash/-/slash-5.0.1.tgz",
@@ -42871,25 +41926,6 @@
       "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz",
       "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA=="
     },
-    "webdriver": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.10.7.tgz",
-      "integrity": "sha512-pBy29S9e8IYKYHfS0gp91Jp9SUvXJQckJKJdj+VNLNL9toSFo10N7xRpv8W1f7HkniXrgESi9GHYNyc1J/5lLA==",
-      "dev": true,
-      "requires": {
-        "@types/node": "^20.1.0",
-        "@types/ws": "^8.5.3",
-        "@wdio/config": "8.10.7",
-        "@wdio/logger": "8.10.6",
-        "@wdio/protocols": "8.10.2",
-        "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
-        "deepmerge-ts": "^5.0.0",
-        "got": "^ 12.6.1",
-        "ky": "^0.33.0",
-        "ws": "^8.8.0"
-      }
-    },
     "webdriverio": {
       "version": "8.11.2",
       "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.11.2.tgz",
@@ -42939,48 +41975,6 @@
             "read-pkg-up": "^9.1.0"
           }
         },
-        "@wdio/logger": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-          "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-          "dev": true,
-          "requires": {
-            "chalk": "^5.1.2",
-            "loglevel": "^1.6.0",
-            "loglevel-plugin-prefix": "^0.8.4",
-            "strip-ansi": "^7.1.0"
-          }
-        },
-        "@wdio/protocols": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.11.0.tgz",
-          "integrity": "sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==",
-          "dev": true
-        },
-        "@wdio/utils": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
-          "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
-          "dev": true,
-          "requires": {
-            "@wdio/logger": "8.11.0",
-            "@wdio/types": "8.10.4",
-            "import-meta-resolve": "^3.0.0",
-            "p-iteration": "^1.1.8"
-          }
-        },
-        "ansi-regex": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-          "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-          "dev": true
-        },
-        "chalk": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-          "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-          "dev": true
-        },
         "foreground-child": {
           "version": "3.1.1",
           "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
@@ -43031,15 +42025,6 @@
           "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==",
           "dev": true
         },
-        "strip-ansi": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-          "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^6.0.1"
-          }
-        },
         "webdriver": {
           "version": "8.11.1",
           "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.11.1.tgz",
@@ -43067,9 +42052,9 @@
       "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
     },
     "webpack": {
-      "version": "5.87.0",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.87.0.tgz",
-      "integrity": "sha512-GOu1tNbQ7p1bDEoFRs2YPcfyGs8xq52yyPBZ3m2VGnXGtV9MxjrkABHm4V9Ia280OefsSLzvbVoXcfLxjKY/Iw==",
+      "version": "5.88.0",
+      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.0.tgz",
+      "integrity": "sha512-O3jDhG5e44qIBSi/P6KpcCcH7HD+nYIHVBhdWFxcLOcIGN8zGo5nqF3BjyNCxIh4p1vFdNnreZv2h2KkoAw3lw==",
       "dev": true,
       "requires": {
         "@types/eslint-scope": "^3.7.3",
diff --git a/package.json b/package.json
index 30f5a88f..1ad2b429 100644
--- a/package.json
+++ b/package.json
@@ -1,8 +1,8 @@
 {
   "name": "runme",
-  "version": "1.5.4-edge.0",
+  "version": "1.6.1",
   "publisher": "stateful",
-  "displayName": "Runme",
+  "displayName": "Runme runs Markdown",
   "description": "Execute commands inside your runbooks, docs, and READMEs.",
   "author": "Sebastian Tiedtke <sebastian@stateful.com>",
   "contributors": [
@@ -97,6 +97,11 @@
         "category": "Runme",
         "title": "Prompt to participate in Feedback survey"
       },
+      {
+        "command": "runme.surveyShebangComingSoon",
+        "category": "Runme",
+        "title": "Prompt when a cell language is unsupported"
+      },
       {
         "command": "runme.openAsRunmeNotebook",
         "category": "Runme",
@@ -590,6 +595,7 @@
     "@typescript-eslint/eslint-plugin": "^5.59.6",
     "@typescript-eslint/parser": "^5.59.6",
     "@vitest/coverage-c8": "^0.31.0",
+    "@vitest/coverage-v8": "^0.32.2",
     "@vscode/vsce": "^2.19.0",
     "@wdio/cli": "^8.10.2",
     "@wdio/local-runner": "^8.10.2",
@@ -615,7 +621,7 @@
     "ts-node": "^10.9.1",
     "typescript": "^5.0.4",
     "unzipper": "^0.10.14",
-    "vitest": "^0.31.0",
+    "vitest": "^0.32.2",
     "vscode-uri": "^3.0.7",
     "wdio-vscode-service": "^5.1.0",
     "webdriverio": "^8.10.2",
@@ -639,7 +645,7 @@
     "detect-port": "^1.5.1",
     "dotenv": "^16.0.3",
     "filenamify": "^6.0.0",
-    "get-port": "^6.1.2",
+    "get-port": "^7.0.0",
     "got": "^12.6.0",
     "graphql": "^16.6.0",
     "lit": "^2.7.4",
diff --git a/src/extension/api/client.ts b/src/extension/api/client.ts
index 8145ccdc..331f6930 100644
--- a/src/extension/api/client.ts
+++ b/src/extension/api/client.ts
@@ -1,13 +1,29 @@
 import { ApolloClient, InMemoryCache, HttpLink } from '@apollo/client'
 import fetch from 'cross-fetch'
+import { setContext } from '@apollo/client/link/context'
 
 import { getRunmeApiUrl } from '../../utils/configuration'
 
-export function InitializeClient({ uri }: { uri: string } = { uri: '' }) {
-  const graphQlApiUrl = getRunmeApiUrl()
+export function InitializeClient({
+  uri,
+  runmeToken,
+}: {
+  uri?: string | undefined
+  runmeToken: string
+}) {
+  const authLink = setContext((_, { headers }) => {
+    return {
+      headers: {
+        ...headers,
+        authorization: runmeToken ? `Bearer ${runmeToken}` : '',
+      },
+    }
+  })
+  const link = new HttpLink({ fetch, uri: uri || `${getRunmeApiUrl()}/graphql` })
   const client = new ApolloClient({
     cache: new InMemoryCache(),
-    link: new HttpLink({ fetch, uri: uri || graphQlApiUrl }),
+    credentials: 'include',
+    link: authLink.concat(link),
   })
 
   return client
diff --git a/src/extension/kernel.ts b/src/extension/kernel.ts
index b4ea20c7..594220be 100644
--- a/src/extension/kernel.ts
+++ b/src/extension/kernel.ts
@@ -27,6 +27,7 @@ import {
 import { API } from '../utils/deno/api'
 import { postClientMessage } from '../utils/messaging'
 
+import * as survey from './survey'
 import getLogger from './logger'
 import executor, { type IEnvironmentManager, ENV_STORE_MANAGER } from './executors'
 import { DENO_ACCESS_TOKEN_KEY } from './constants'
@@ -54,6 +55,7 @@ import { handleCellOutputMessage } from './messages/cellOutput'
 import handleGitHubMessage from './messages/github'
 import { getNotebookCategories } from './utils'
 import { handleCloudApiMessage } from './messages/cloudApiRequest'
+import { SurveyShebangComingSoon } from './survey'
 
 enum ConfirmationItems {
   Yes = 'Yes',
@@ -68,6 +70,7 @@ export class Kernel implements Disposable {
   static readonly type = 'runme' as const
 
   readonly #experiments = new Map<string, boolean>()
+  readonly #shebangComingSoon: SurveyShebangComingSoon
 
   #disposables: Disposable[] = []
   #controller = notebooks.createNotebookController(
@@ -90,6 +93,8 @@ export class Kernel implements Disposable {
     this.#experiments.set('grpcRunner', config.get<boolean>('grpcRunner', true))
     this.#experiments.set('grpcServer', config.get<boolean>('grpcServer', true))
 
+    this.#shebangComingSoon = new survey.SurveyShebangComingSoon(context)
+
     this.#controller.supportsExecutionOrder = false
     this.#controller.description = 'Run your Markdown'
     this.#controller.executeHandler = this._executeAll.bind(this)
@@ -110,6 +115,7 @@ export class Kernel implements Disposable {
 
     this.messaging.postMessage({ from: 'kernel' })
     this.#disposables.push(
+      this.#shebangComingSoon,
       this.messaging.onDidReceiveMessage(this.#handleRendererMessage.bind(this)),
       workspace.onDidOpenNotebookDocument(this.#handleOpenNotebook.bind(this)),
       workspace.onDidSaveNotebookDocument(this.#handleSaveNotebook.bind(this)),
@@ -511,7 +517,7 @@ export class Kernel implements Disposable {
           environmentManager
         )
       } else {
-        window.showErrorMessage('Cell language is not executable')
+        this.#shebangComingSoon.open()
 
         successfulCellExecution = false
       }
diff --git a/src/extension/languages.ts b/src/extension/languages.ts
index 1717ff36..955050d1 100644
--- a/src/extension/languages.ts
+++ b/src/extension/languages.ts
@@ -69,8 +69,8 @@ export default class Languages {
         true
       )
     )
-    // if it's tight at the top (< 1% variance) look for execs
-    while (pstdev < 0.01 && !LANGUAGES.get(top[0]?.languageId) && top.shift()) {
+    // if it's narrow at the top (< 5% variance) look for execs
+    while (pstdev < 0.05 && !LANGUAGES.get(top[0]?.languageId) && top.shift()) {
       if (top.length <= 0) {
         top = results
         break
diff --git a/src/extension/messages/cloudApiRequest/saveCellExecution.ts b/src/extension/messages/cloudApiRequest/saveCellExecution.ts
index 35795f70..022b85c1 100644
--- a/src/extension/messages/cloudApiRequest/saveCellExecution.ts
+++ b/src/extension/messages/cloudApiRequest/saveCellExecution.ts
@@ -1,10 +1,14 @@
-import { ClientMessages } from '../../../constants'
+import { authentication } from 'vscode'
+import { TelemetryReporter } from 'vscode-telemetry'
+
+import { AuthenticationProviders, ClientMessages } from '../../../constants'
 import { ClientMessage, IApiMessage } from '../../../types'
 import { InitializeClient } from '../../api/client'
 import { getCellByUuId } from '../../cell'
 import { getAnnotations, getTerminalByCell } from '../../utils'
 import { createCellExecutionQuery } from '../../api/grapql'
 import { postClientMessage } from '../../../utils/messaging'
+import { RunmeService } from '../../services/runme'
 type APIRequestMessage = IApiMessage<ClientMessage<ClientMessages.cloudApiRequest>>
 
 export default async function saveCellExecution(
@@ -13,6 +17,17 @@ export default async function saveCellExecution(
   const { messaging, message, editor } = requestMessage
 
   try {
+    const session = await authentication.getSession(
+      AuthenticationProviders.GitHub,
+      ['user:email'],
+      {
+        createIfNone: true,
+      }
+    )
+
+    if (!session) {
+      throw new Error('You must authenticate with your GitHub account')
+    }
     const cell = await getCellByUuId({ editor, uuid: message.output.uuid })
     if (!cell) {
       throw new Error('Cell not found')
@@ -30,8 +45,12 @@ export default async function saveCellExecution(
       : 0
     const annotations = getAnnotations(cell)
     delete annotations['runme.dev/uuid']
-
-    const graphClient = InitializeClient()
+    const runmeService = new RunmeService({ githubAccessToken: session.accessToken })
+    const runmeTokenResponse = await runmeService.getAccessToken()
+    if (!runmeTokenResponse) {
+      throw new Error('Unable to retrieve an access token')
+    }
+    const graphClient = InitializeClient({ runmeToken: runmeTokenResponse.token })
     const result = await graphClient.mutate({
       mutation: createCellExecutionQuery({
         ...message.output.data,
@@ -45,12 +64,13 @@ export default async function saveCellExecution(
         },
       }),
     })
-
+    TelemetryReporter.sendTelemetryEvent('runme-app-share')
     return postClientMessage(messaging, ClientMessages.cloudApiResponse, {
       data: result,
       uuid: message.output.uuid,
     })
   } catch (error) {
+    TelemetryReporter.sendTelemetryEvent('runme-app-error')
     return postClientMessage(messaging, ClientMessages.cloudApiResponse, {
       data: (error as any).message,
       uuid: message.output.uuid,
diff --git a/src/extension/serializer.ts b/src/extension/serializer.ts
index 3479ffee..06f40398 100644
--- a/src/extension/serializer.ts
+++ b/src/extension/serializer.ts
@@ -1,6 +1,4 @@
 import {
-  window,
-  commands,
   NotebookSerializer,
   ExtensionContext,
   Uri,
@@ -26,7 +24,7 @@ import { DeserializeRequest, SerializeRequest, Notebook } from './grpc/serialize
 import { initParserClient, ParserServiceClient } from './grpc/client'
 import Languages from './languages'
 import { PLATFORM_OS } from './constants'
-import { canEditFile, initWasm } from './utils'
+import { initWasm } from './utils'
 import RunmeServer from './server/runmeServer'
 import { Kernel } from './kernel'
 
@@ -128,8 +126,6 @@ export abstract class SerializerBase implements NotebookSerializer, Disposable {
     // eslint-disable-next-line @typescript-eslint/no-unused-vars
     token: CancellationToken
   ): Promise<Uint8Array> {
-    await this.preSaveCheck()
-
     const transformedCells = data.cells.map((cell) => {
       return {
         ...cell,
@@ -213,34 +209,6 @@ export abstract class SerializerBase implements NotebookSerializer, Disposable {
     return notebookData
   }
 
-  protected async preSaveCheck() {
-    if (!window.activeNotebookEditor) {
-      throw new Error("Could't save notebook as it is not active!")
-    }
-
-    if (!(await canEditFile(window.activeNotebookEditor.notebook))) {
-      const errorMessage =
-        'You are writing to a file that is not version controlled! ' +
-        "Runme's authoring features are in early stages and require hardening. " +
-        "We wouldn't want you to loose important data. Please version track your file first " +
-        'or disable this restriction in the VS Code settings.'
-      window.showErrorMessage(errorMessage, 'Open Runme Settings').then((openSettings) => {
-        if (openSettings) {
-          return commands.executeCommand(
-            'workbench.action.openSettings',
-            'runme.flags.disableSaveRestriction'
-          )
-        }
-      })
-      throw new Error('saving non version controlled notebooks is disabled by default.')
-    }
-
-    const err = await this.ready
-    if (err) {
-      throw err
-    }
-  }
-
   protected static revive(notebook: Serializer.Notebook) {
     return notebook.cells.reduce((accu, elem) => {
       let cell: NotebookCellData
diff --git a/src/extension/services/runme.ts b/src/extension/services/runme.ts
new file mode 100644
index 00000000..8a37ab23
--- /dev/null
+++ b/src/extension/services/runme.ts
@@ -0,0 +1,35 @@
+import fetch from 'cross-fetch'
+
+import { getRunmeApiUrl } from '../../utils/configuration'
+
+export interface IRunmeToken {
+  token: string
+}
+
+export class RunmeService {
+  protected githubAccessToken: string
+  constructor({ githubAccessToken }: { githubAccessToken: string }) {
+    this.githubAccessToken = githubAccessToken
+  }
+  async getAccessToken(): Promise<IRunmeToken | undefined> {
+    try {
+      const response = await fetch(`${getRunmeApiUrl()}/auth/vscode`, {
+        method: 'POST',
+        headers: {
+          'Content-Type': 'application/json',
+        },
+        body: JSON.stringify({
+          access_token: this.githubAccessToken,
+        }),
+      })
+      if (response.status >= 400) {
+        throw new Error('Failed to get an authorization token')
+      }
+      if (response.ok) {
+        return response.json()
+      }
+    } catch (error) {
+      throw new Error((error as any).message)
+    }
+  }
+}
diff --git a/src/extension/survey.ts b/src/extension/survey.ts
index 46e28211..85699053 100644
--- a/src/extension/survey.ts
+++ b/src/extension/survey.ts
@@ -49,6 +49,8 @@ abstract class Survey implements Disposable {
   protected async done() {
     await this.context.globalState.update(this.id, true)
   }
+
+  abstract prompt(runDirect: boolean): Promise<void>
 }
 
 export class WinDefaultShell extends Survey {
@@ -283,3 +285,34 @@ export class SurveyActiveUserFeedback extends Survey {
     await this.done()
   }
 }
+
+export class SurveyShebangComingSoon extends Survey {
+  static readonly #id: string = 'runme.surveyShebangComingSoon'
+
+  constructor(protected context: ExtensionContext) {
+    super(context, SurveyShebangComingSoon.#id)
+
+    commands.registerCommand(SurveyShebangComingSoon.#id, this.prompt.bind(this))
+  }
+
+  open() {
+    commands.executeCommand(SurveyShebangComingSoon.#id)
+  }
+
+  async prompt(): Promise<void> {
+    const option = await window.showWarningMessage(
+      'Not every language is executable... yet! Coming soon: Mix and match languages in Runme.',
+      'Learn more',
+      'Dismiss'
+    )
+    if (option === 'Dismiss' || option === undefined) {
+      return
+    }
+
+    TelemetryReporter.sendTelemetryEvent('survey.ShebangComingSoon', { never: 'false' })
+    await commands.executeCommand(
+      'vscode.open',
+      Uri.parse('https://runme.dev/spotlight/shebang-support')
+    )
+  }
+}
diff --git a/src/extension/utils.ts b/src/extension/utils.ts
index fc0695e2..45b2cbc4 100644
--- a/src/extension/utils.ts
+++ b/src/extension/utils.ts
@@ -8,7 +8,6 @@ import vscode, {
   Uri,
   workspace,
   env,
-  NotebookDocument,
   NotebookCell,
   NotebookCellExecution,
   NotebookCellOutput,
@@ -292,40 +291,6 @@ export async function verifyCheckedInFile(filePath: string) {
   return isCheckedIn
 }
 
-export async function canEditFile(
-  notebook: NotebookDocument,
-  // for testing purposes only
-  verifyCheckedInFileFn = verifyCheckedInFile
-): Promise<boolean> {
-  const config = vscode.workspace.getConfiguration('runme.flags')
-  const disableSaveRestriction = config.get<boolean>('disableSaveRestriction')
-  const currentDocumentPath = notebook.uri.fsPath
-  const isNewFile = notebook.isUntitled && notebook.notebookType === Kernel.type
-
-  /**
-   * allow serializing files if:
-   */
-  if (
-    /**
-     * the user has disabled this restriction
-     */
-    disableSaveRestriction ||
-    /**
-     * the user just created a new file
-     */
-    isNewFile ||
-    /**
-     * the user works on a checked in file
-     */
-    !currentDocumentPath ||
-    (await verifyCheckedInFileFn(currentDocumentPath))
-  ) {
-    return true
-  }
-
-  return false
-}
-
 export async function initWasm(wasmUri: Uri) {
   const go = new globalThis.Go()
   const wasmFile = await workspace.fs.readFile(wasmUri)


Test patch:
diff --git a/tests/extension/extension.test.ts b/tests/extension/extension.test.ts
index 596e5183..14086e83 100644
--- a/tests/extension/extension.test.ts
+++ b/tests/extension/extension.test.ts
@@ -73,7 +73,7 @@ test('initializes all providers', async () => {
   await ext.initialize(context)
   expect(notebooks.registerNotebookCellStatusBarItemProvider).toBeCalledTimes(6)
   expect(workspace.registerNotebookSerializer).toBeCalledTimes(1)
-  expect(commands.registerCommand).toBeCalledTimes(24)
+  expect(commands.registerCommand).toBeCalledTimes(25)
   expect(window.registerTreeDataProvider).toBeCalledTimes(1)
   expect(window.registerUriHandler).toBeCalledTimes(1)
   expect(bootFile).toBeCalledTimes(1)
diff --git a/tests/extension/kernel.test.ts b/tests/extension/kernel.test.ts
index 5d1dd403..e0449fa6 100644
--- a/tests/extension/kernel.test.ts
+++ b/tests/extension/kernel.test.ts
@@ -233,8 +233,6 @@ suite('_doExecuteCell', () => {
       'cell.endExecute',
       { 'cell.success': 'false' }
     )
-
-    expect(window.showErrorMessage).toHaveBeenCalledWith('Cell language is not executable')
   })
 })
 
diff --git a/tests/extension/languages.test.ts b/tests/extension/languages.test.ts
index 1841a7d4..7d27b640 100644
--- a/tests/extension/languages.test.ts
+++ b/tests/extension/languages.test.ts
@@ -3,18 +3,18 @@ import path from 'node:path'
 import { test, expect } from 'vitest'
 
 import Languages from '../../src/extension/languages'
-import { WasmLib } from '../../src/types'
+import { Serializer } from '../../src/types'
 
 import fixture from './fixtures/document.json'
 
 test('cells', () => {
   // todo(sebastian): tests legacy deserializer
-  expect((fixture as WasmLib.Notebook).cells).toBeTypeOf('object')
+  expect((fixture as Serializer.Notebook).cells).toBeTypeOf('object')
 })
 
 test('languages#run', async () => {
   const langs = new Languages(path.resolve(__dirname, '../..'))
-  const f = fixture as WasmLib.Notebook
+  const f = fixture as Serializer.Notebook
 
   const results = await Promise.all(
     f.cells!
@@ -48,7 +48,7 @@ test('languages#run', async () => {
 
 test('languages#biased', async () => {
   const langs = new Languages(path.resolve(__dirname, '../..'))
-  const f = fixture as WasmLib.Notebook
+  const f = fixture as Serializer.Notebook
 
   const biased = await Promise.all(
     f.cells!
@@ -62,7 +62,7 @@ test('languages#biased', async () => {
 
   expect(biased).toStrictEqual([
     ['bat', 'sh'],
-    ['ini', 'ini'],
+    ['ini', 'sh'],
     ['bat', 'sh'],
     ['bat', 'sh'],
     ['bat', 'sh'],
@@ -76,6 +76,6 @@ test('languages#biased', async () => {
     ['dart', 'sh'],
     ['sh', 'sh'],
     ['bat', 'sh'],
-    ['csv', 'sh'],
+    ['csv', 'sh']
   ])
 })
diff --git a/tests/extension/provider/annotations.test.ts b/tests/extension/provider/annotations.test.ts
index a6b44e85..bf6bd763 100644
--- a/tests/extension/provider/annotations.test.ts
+++ b/tests/extension/provider/annotations.test.ts
@@ -37,7 +37,7 @@ describe('Runme Annotations', () => {
   const kernel = new Kernel({} as any)
   it('should register a command when initializing', () => {
     new AnnotationsProvider(kernel)
-    expect(commands.registerCommand).toBeCalledTimes(1)
+    expect(commands.registerCommand).toBeCalledTimes(2)
     expect(commands.registerCommand).toBeCalledWith('runme.toggleCellAnnotations', expect.anything(), undefined)
   })
 
diff --git a/tests/extension/serializer.test.ts b/tests/extension/serializer.test.ts
index 1e99114d..e7ce4227 100644
--- a/tests/extension/serializer.test.ts
+++ b/tests/extension/serializer.test.ts
@@ -2,7 +2,6 @@ import { NotebookData, NotebookDocument, NotebookEdit, window, workspace } from
 import { expect, vi, it, describe, beforeEach } from 'vitest'
 
 import { SerializerBase, WasmSerializer } from '../../src/extension/serializer'
-import { canEditFile } from '../../src/extension/utils'
 import type { Kernel } from '../../src/extension/kernel'
 import { EventEmitter, Uri } from '../../__mocks__/vscode'
 import { Serializer } from '../../src/types'
@@ -44,7 +43,6 @@ vi.mock('../../src/extension/languages', () => ({
 }))
 
 vi.mock('../../src/extension/utils', () => ({
-    canEditFile: vi.fn().mockResolvedValue(false),
     initWasm: vi.fn()
 }))
 
@@ -163,34 +161,9 @@ describe('WasmSerializer', () => {
     }
 
     describe('serializeNotebook', () => {
-        it('fails when notebook is not active', async () => {
-            const s = new WasmSerializer(context, newKernel())
-            await expect(() => s.serializeNotebook({} as any, {} as any))
-                .rejects.toThrow(/not active/)
-        })
-
-        it('prevents saving if canEditFile returns false', async () => {
-            // @ts-ignore readonly
-            window.activeNotebookEditor = {} as any
-            const s = new WasmSerializer(context, newKernel())
-            await expect(() => s.serializeNotebook({} as any, {} as any))
-                .rejects.toThrow(/saving non version controlled notebooks is disabled/)
-        })
-
-        it('throws if wasm fails to laod', async () => {
-            // @ts-ignore readonly
-            window.activeNotebookEditor = {} as any
-            vi.mocked(canEditFile).mockResolvedValue(true)
-            const s = new WasmSerializer(context, newKernel())
-            // @ts-ignore readonly
-            s['ready'] = Promise.reject('ups')
-            await expect(() => s.serializeNotebook({} as any, {} as any)).rejects.toThrow(/ups/)
-        })
-
         it('uses Runme wasm to save the file', async () => {
             // @ts-ignore readonly
             window.activeNotebookEditor = {} as any
-            vi.mocked(canEditFile).mockResolvedValue(true)
             const s = new WasmSerializer(context, newKernel())
             // @ts-ignore readonly
             s['ready'] = Promise.resolve()
diff --git a/tests/extension/utils.test.ts b/tests/extension/utils.test.ts
index c606913f..f7114de5 100644
--- a/tests/extension/utils.test.ts
+++ b/tests/extension/utils.test.ts
@@ -8,7 +8,6 @@ import {
   getKey,
   getCmdShellSeq,
   normalizeLanguage,
-  canEditFile,
   getAnnotations,
   mapGitIgnoreToGlobFolders,
   hashDocumentUri,
@@ -212,45 +211,6 @@ suite('normalizeLanguage', () => {
   })
 })
 
-suite('canEditFile', () => {
-  const verifyCheckedInFile = vi.fn().mockResolvedValue(false)
-  const notebook: any = {
-    isUntitled: false,
-    notebookType: 'runme',
-    uri: { fsPath: '/foo/bar' }
-  }
-
-  beforeEach(() => {
-    vi.mocked(vscode.workspace.getConfiguration).mockReturnValue({
-      get: vi.fn().mockReturnValue(false)
-    } as any)
-  })
-
-  test('can not edit by default', async () => {
-    expect(await canEditFile(notebook, verifyCheckedInFile)).toBe(false)
-  })
-
-  test('can edit if ignore flag is enabled', async () => {
-    const notebookMock: any = JSON.parse(JSON.stringify(notebook))
-    vi.mocked(vscode.workspace.getConfiguration).mockReturnValue({
-      get: vi.fn().mockReturnValue(true)
-    } as any)
-    expect(await canEditFile(notebookMock, verifyCheckedInFile)).toBe(true)
-  })
-
-  test('can edit file if new', async () => {
-    const notebookMock: any = JSON.parse(JSON.stringify(notebook))
-    notebookMock.isUntitled = true
-    expect(await canEditFile(notebookMock, verifyCheckedInFile)).toBe(true)
-  })
-
-  test('can edit file if checked in', async () => {
-    const notebookMock: any = JSON.parse(JSON.stringify(notebook))
-    verifyCheckedInFile.mockResolvedValue(true)
-    expect(await canEditFile(notebookMock, verifyCheckedInFile)).toBe(true)
-  })
-})
-
 suite('mapGitIgnoreToGlobFolders', () => {
   test('map properly to glob patterns folders', () => {
     const gitIgnoreContents = `