Repository: aiscript-dev/aiscript
Pull request #823 (2024-10-23 20:34:11)

Bump the npm-deps group across 1 directory with 8 updates
Bumps the npm-deps group with 8 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.12.0` | `9.13.0` |
| [@microsoft/api-extractor](https://github.com/microsoft/rushstack/tree/HEAD/apps/api-extractor) | `7.47.9` | `7.47.11` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `22.7.5` | `22.7.9` |
| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `2.1.2` | `2.1.3` |
| [eslint](https://github.com/eslint/eslint) | `9.12.0` | `9.13.0` |
| [typescript](https://github.com/microsoft/TypeScript) | `5.6.2` | `5.6.3` |
| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.8.1` | `8.11.0` |
| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `2.1.2` | `2.1.3` |


Updates `@eslint/js` from 9.12.0 to 9.13.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/eslint/eslint/releases"><code>@​eslint/js</code>'s releases</a>.</em></p>
<blockquote>
<h2>v9.13.0</h2>
<h2>Features</h2>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/381c32b6975fa3208c62ca2b1052eb87182ed731"><code>381c32b</code></a> feat: Allow languages to provide <code>defaultLanguageOptions</code> (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19003">#19003</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/bf723bd0f948dbfef57f9b34ff894e7603aeaf88"><code>bf723bd</code></a> feat: Improve eslintrc warning message (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19023">#19023</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/1def4cdfab1f067c5089df8b36242cdf912b0eb6"><code>1def4cd</code></a> feat: drop support for jiti v1.21 (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/18996">#18996</a>) (Francesco Trotta)</li>
<li><a href="https://github.com/eslint/eslint/commit/f879be240ca7ddf485b700df0eb93985ccb1db45"><code>f879be2</code></a> feat: export <code>ESLint.defaultConfig</code> (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/18983">#18983</a>) (Nitin Kumar)</li>
</ul>
<h2>Bug Fixes</h2>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/78836d40ebd3881e527075a991da4cbb0ff9adfc"><code>78836d4</code></a> fix: update the <code>complexity</code> rule type (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19027">#19027</a>) (Nitin Kumar)</li>
<li><a href="https://github.com/eslint/eslint/commit/064c8b612e2e4b773d6b25867f2045e3ceaa9d66"><code>064c8b6</code></a> fix: update rule types (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/18925">#18925</a>) (Nitin Kumar)</li>
</ul>
<h2>Documentation</h2>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/abdbfa83907712d0d44a35aeed4e0ea7bf106740"><code>abdbfa8</code></a> docs: mark <code>LintMessage#nodeType</code> as deprecated (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19019">#19019</a>) (Nitin Kumar)</li>
<li><a href="https://github.com/eslint/eslint/commit/19e68d3f3a86cf23e5c98eaf8736eeaa33f194f4"><code>19e68d3</code></a> docs: update deprecated rules type definitions (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19018">#19018</a>) (Nitin Kumar)</li>
<li><a href="https://github.com/eslint/eslint/commit/7dd402d33226d821a17b22c4753ce9c40fc909bd"><code>7dd402d</code></a> docs: Update examples of passing multiple values to a CLI option (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19006">#19006</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/5dcbc519b729698be651bdbddb39da774cb70bf1"><code>5dcbc51</code></a> docs: Add example with side-effect imports to no-restricted-imports (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/18997">#18997</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/1ee87ca1c50018947e76c29e78da9aaf711f53a2"><code>1ee87ca</code></a> docs: Update README (GitHub Actions Bot)</li>
<li><a href="https://github.com/eslint/eslint/commit/2c3dbdc2319fcf2f65c2de13f9064c5a315be890"><code>2c3dbdc</code></a> docs: Use prerendered sponsors for README (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/18988">#18988</a>) (Milos Djermanovic)</li>
</ul>
<h2>Chores</h2>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/68d2d9dfd63401b6a9b413f11ac2c4b583e4897a"><code>68d2d9d</code></a> chore: upgrade to <code>@eslint/js@9.13.0</code> and <code>@eslint/core@^0.7.0</code> (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19034">#19034</a>) (Francesco Trotta)</li>
<li><a href="https://github.com/eslint/eslint/commit/2211f0aeb350f55e1fa71d4df93d46bc1795789d"><code>2211f0a</code></a> chore: package.json update for <code>@​eslint/js</code> release (Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/c7abaef5332caf4b6251c9550a81a9c29bf324fd"><code>c7abaef</code></a> perf: using Node.js compile cache (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19012">#19012</a>) (唯然)</li>
<li><a href="https://github.com/eslint/eslint/commit/1d7c077145d070aa7754018b29b038ce2e0c8b0e"><code>1d7c077</code></a> chore: add pkg.type &quot;commonjs&quot; (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19011">#19011</a>) (唯然)</li>
<li><a href="https://github.com/eslint/eslint/commit/468e3bdadfdf5f197a44efd6c8dc5cf2b241f964"><code>468e3bd</code></a> test: fix <code>ESLint</code> tests (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19021">#19021</a>) (Francesco Trotta)</li>
<li><a href="https://github.com/eslint/eslint/commit/ed4635fa0e4fb91705223a7d9c230b6e9a87cd4c"><code>ed4635f</code></a> ci: upgrade knip@5.32.0 (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/18992">#18992</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/efad76732170a9a7db2e056a8d9a0cf503448c48"><code>efad767</code></a> chore: remove unused ignore dependency (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/18993">#18993</a>) (Amaresh  S M)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/eslint/eslint/blob/main/CHANGELOG.md"><code>@​eslint/js</code>'s changelog</a>.</em></p>
<blockquote>
<p>v9.13.0 - October 18, 2024</p>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/68d2d9dfd63401b6a9b413f11ac2c4b583e4897a"><code>68d2d9d</code></a> chore: upgrade to <code>@eslint/js@9.13.0</code> and <code>@eslint/core@^0.7.0</code> (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19034">#19034</a>) (Francesco Trotta)</li>
<li><a href="https://github.com/eslint/eslint/commit/2211f0aeb350f55e1fa71d4df93d46bc1795789d"><code>2211f0a</code></a> chore: package.json update for <code>@​eslint/js</code> release (Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/381c32b6975fa3208c62ca2b1052eb87182ed731"><code>381c32b</code></a> feat: Allow languages to provide <code>defaultLanguageOptions</code> (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19003">#19003</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/78836d40ebd3881e527075a991da4cbb0ff9adfc"><code>78836d4</code></a> fix: update the <code>complexity</code> rule type (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19027">#19027</a>) (Nitin Kumar)</li>
<li><a href="https://github.com/eslint/eslint/commit/c7abaef5332caf4b6251c9550a81a9c29bf324fd"><code>c7abaef</code></a> perf: using Node.js compile cache (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19012">#19012</a>) (唯然)</li>
<li><a href="https://github.com/eslint/eslint/commit/bf723bd0f948dbfef57f9b34ff894e7603aeaf88"><code>bf723bd</code></a> feat: Improve eslintrc warning message (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19023">#19023</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/1d7c077145d070aa7754018b29b038ce2e0c8b0e"><code>1d7c077</code></a> chore: add pkg.type &quot;commonjs&quot; (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19011">#19011</a>) (唯然)</li>
<li><a href="https://github.com/eslint/eslint/commit/abdbfa83907712d0d44a35aeed4e0ea7bf106740"><code>abdbfa8</code></a> docs: mark <code>LintMessage#nodeType</code> as deprecated (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19019">#19019</a>) (Nitin Kumar)</li>
<li><a href="https://github.com/eslint/eslint/commit/468e3bdadfdf5f197a44efd6c8dc5cf2b241f964"><code>468e3bd</code></a> test: fix <code>ESLint</code> tests (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19021">#19021</a>) (Francesco Trotta)</li>
<li><a href="https://github.com/eslint/eslint/commit/19e68d3f3a86cf23e5c98eaf8736eeaa33f194f4"><code>19e68d3</code></a> docs: update deprecated rules type definitions (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19018">#19018</a>) (Nitin Kumar)</li>
<li><a href="https://github.com/eslint/eslint/commit/1def4cdfab1f067c5089df8b36242cdf912b0eb6"><code>1def4cd</code></a> feat: drop support for jiti v1.21 (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/18996">#18996</a>) (Francesco Trotta)</li>
<li><a href="https://github.com/eslint/eslint/commit/7dd402d33226d821a17b22c4753ce9c40fc909bd"><code>7dd402d</code></a> docs: Update examples of passing multiple values to a CLI option (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19006">#19006</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/064c8b612e2e4b773d6b25867f2045e3ceaa9d66"><code>064c8b6</code></a> fix: update rule types (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/18925">#18925</a>) (Nitin Kumar)</li>
<li><a href="https://github.com/eslint/eslint/commit/f879be240ca7ddf485b700df0eb93985ccb1db45"><code>f879be2</code></a> feat: export <code>ESLint.defaultConfig</code> (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/18983">#18983</a>) (Nitin Kumar)</li>
<li><a href="https://github.com/eslint/eslint/commit/5dcbc519b729698be651bdbddb39da774cb70bf1"><code>5dcbc51</code></a> docs: Add example with side-effect imports to no-restricted-imports (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/18997">#18997</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/ed4635fa0e4fb91705223a7d9c230b6e9a87cd4c"><code>ed4635f</code></a> ci: upgrade knip@5.32.0 (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/18992">#18992</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/efad76732170a9a7db2e056a8d9a0cf503448c48"><code>efad767</code></a> chore: remove unused ignore dependency (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/18993">#18993</a>) (Amaresh  S M)</li>
<li><a href="https://github.com/eslint/eslint/commit/1ee87ca1c50018947e76c29e78da9aaf711f53a2"><code>1ee87ca</code></a> docs: Update README (GitHub Actions Bot)</li>
<li><a href="https://github.com/eslint/eslint/commit/2c3dbdc2319fcf2f65c2de13f9064c5a315be890"><code>2c3dbdc</code></a> docs: Use prerendered sponsors for README (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/18988">#18988</a>) (Milos Djermanovic)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/2211f0aeb350f55e1fa71d4df93d46bc1795789d"><code>2211f0a</code></a> chore: package.json update for <code>@​eslint/js</code> release</li>
<li>See full diff in <a href="https://github.com/eslint/eslint/commits/v9.13.0/packages/js">compare view</a></li>
</ul>
</details>
<br />

Updates `@microsoft/api-extractor` from 7.47.9 to 7.47.11
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/microsoft/rushstack/blob/main/apps/api-extractor/CHANGELOG.md"><code>@​microsoft/api-extractor</code>'s changelog</a>.</em></p>
<blockquote>
<h2>7.47.11</h2>
<p>Thu, 17 Oct 2024 08:35:06 GMT</p>
<p><em>Version update only</em></p>
<h2>7.47.10</h2>
<p>Tue, 15 Oct 2024 00:12:31 GMT</p>
<h3>Patches</h3>
<ul>
<li>Fix a compatibility issue with usage of <code>getModeForUsageLocation</code> in TypeScript 5.6</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/microsoft/rushstack/commit/300fcd107dea176ef503ffa073776bff47ee17a1"><code>300fcd1</code></a> Bump versions [skip ci]</li>
<li><a href="https://github.com/microsoft/rushstack/commit/34c1204d15b523737a3ba2f6c15613bd0ae8f94f"><code>34c1204</code></a> Update changelogs [skip ci]</li>
<li><a href="https://github.com/microsoft/rushstack/commit/239ad8a7219c15944863a0c49a5e3a83df6a39e8"><code>239ad8a</code></a> Bump versions [skip ci]</li>
<li><a href="https://github.com/microsoft/rushstack/commit/c113971714c7143817125f786ab303febed56e1a"><code>c113971</code></a> Update changelogs [skip ci]</li>
<li><a href="https://github.com/microsoft/rushstack/commit/681f718a04ffc148d4d25902e9453f5fdd1aacc0"><code>681f718</code></a> [api-extractor] pass compilerOptions into getModeForUsageLocation to fix TS 5...</li>
<li><a href="https://github.com/microsoft/rushstack/commit/459933e8b79fc343909aa8ce575825a2cf1a8535"><code>459933e</code></a> Bump cyclics and pull in a testing version (5.135.0-pr4927.0) of Rush. (<a href="https://github.com/microsoft/rushstack/tree/HEAD/apps/api-extractor/issues/4935">#4935</a>)</li>
<li>See full diff in <a href="https://github.com/microsoft/rushstack/commits/@microsoft/api-extractor_v7.47.11/apps/api-extractor">compare view</a></li>
</ul>
</details>
<br />

Updates `@types/node` from 22.7.5 to 22.7.9
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare view</a></li>
</ul>
</details>
<br />

Updates `@vitest/coverage-v8` from 2.1.2 to 2.1.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/vitest-dev/vitest/releases"><code>@​vitest/coverage-v8</code>'s releases</a>.</em></p>
<blockquote>
<h2>v2.1.3</h2>
<h3>   🐞 Bug Fixes</h3>
<ul>
<li>Fix error diff of <code>toBeNaN, toBeUndefined, toBeNull, toBeTruthy, toBeFalsy</code>  -  by <a href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6697">vitest-dev/vitest#6697</a> <a href="https://github.com/vitest-dev/vitest/commit/e002758c"><!-- raw HTML omitted -->(e0027)<!-- raw HTML omitted --></a></li>
<li><strong>browser</strong>:
<ul>
<li>Provide aria role intellisense  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6629">vitest-dev/vitest#6629</a> <a href="https://github.com/vitest-dev/vitest/commit/f36eac77"><!-- raw HTML omitted -->(f36ea)<!-- raw HTML omitted --></a></li>
<li>Not.toBeInTheDocument works with locators API  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6634">vitest-dev/vitest#6634</a> <a href="https://github.com/vitest-dev/vitest/commit/8bef5d2b"><!-- raw HTML omitted -->(8bef5)<!-- raw HTML omitted --></a></li>
<li>Use <code>/mockServiceWorker.js</code> instead of <code>/__vitest_msw__</code>  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6687">vitest-dev/vitest#6687</a> <a href="https://github.com/vitest-dev/vitest/commit/4b2ce07f"><!-- raw HTML omitted -->(4b2ce)<!-- raw HTML omitted --></a></li>
<li>Don't override the esbuild option in the browser mode  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6692">vitest-dev/vitest#6692</a> <a href="https://github.com/vitest-dev/vitest/commit/d131fd64"><!-- raw HTML omitted -->(d131f)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>expect</strong>:
<ul>
<li>Preserve prototype in <code>toMatchObject</code> diff  -  by <a href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6620">vitest-dev/vitest#6620</a> <a href="https://github.com/vitest-dev/vitest/commit/d289e7eb"><!-- raw HTML omitted -->(d289e)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>mocker</strong>:
<ul>
<li>Specify correct spy dependency  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> <a href="https://github.com/vitest-dev/vitest/commit/7e9584aa"><!-- raw HTML omitted -->(7e958)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>runner</strong>:
<ul>
<li>Ensure sequential suite overrides sequence.concurrent  -  by <a href="https://github.com/dsyddall"><code>@​dsyddall</code></a> and <a href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6653">vitest-dev/vitest#6653</a> <a href="https://github.com/vitest-dev/vitest/commit/5e6de274"><!-- raw HTML omitted -->(5e6de)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>vitest</strong>:
<ul>
<li>Deprecate UserConfig in favor of ViteUserConfig  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6626">vitest-dev/vitest#6626</a> <a href="https://github.com/vitest-dev/vitest/commit/496bd251"><!-- raw HTML omitted -->(496bd)<!-- raw HTML omitted --></a></li>
<li>Don't hang with maxConcurrency 0  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6627">vitest-dev/vitest#6627</a> <a href="https://github.com/vitest-dev/vitest/commit/946d8bb1"><!-- raw HTML omitted -->(946d8)<!-- raw HTML omitted --></a></li>
<li>Deprecate old task types and node-reliant types  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6632">vitest-dev/vitest#6632</a> <a href="https://github.com/vitest-dev/vitest/commit/000459a9"><!-- raw HTML omitted -->(00045)<!-- raw HTML omitted --></a></li>
<li>Fix <code>&lt;empty line&gt;</code> logs when interleaving <code>console.log/error</code>  -  by <a href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6644">vitest-dev/vitest#6644</a> <a href="https://github.com/vitest-dev/vitest/commit/9ece3952"><!-- raw HTML omitted -->(9ece3)<!-- raw HTML omitted --></a></li>
<li>Show rollup error details as test error  -  by <a href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6686">vitest-dev/vitest#6686</a> <a href="https://github.com/vitest-dev/vitest/commit/47dde76f"><!-- raw HTML omitted -->(47dde)<!-- raw HTML omitted --></a></li>
<li>Always inline setup files  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6689">vitest-dev/vitest#6689</a> <a href="https://github.com/vitest-dev/vitest/commit/19d64e20"><!-- raw HTML omitted -->(19d64)<!-- raw HTML omitted --></a></li>
<li>Use <code>fast-glob</code> instead of <code>tinyglobby</code> in Vitest  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6688">vitest-dev/vitest#6688</a> <a href="https://github.com/vitest-dev/vitest/commit/70baaaa9"><!-- raw HTML omitted -->(70baa)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>web-worker</strong>:
<ul>
<li>Share mocker with main executor  -  by <a href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6623">vitest-dev/vitest#6623</a> <a href="https://github.com/vitest-dev/vitest/commit/fe7b8aee"><!-- raw HTML omitted -->(fe7b8)<!-- raw HTML omitted --></a></li>
</ul>
</li>
</ul>
<h3>   🏎 Performance</h3>
<ul>
<li>Reuse full name in reported tasks, update generator types  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6666">vitest-dev/vitest#6666</a> <a href="https://github.com/vitest-dev/vitest/commit/7a0de0a7"><!-- raw HTML omitted -->(7a0de)<!-- raw HTML omitted --></a></li>
</ul>
<h5>    <a href="https://github.com/vitest-dev/vitest/compare/v2.1.2...v2.1.3">View changes on GitHub</a></h5>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/vitest-dev/vitest/commit/4c03a0db53e7a91e5acbfcd8fb4bcc3a8dd3ba99"><code>4c03a0d</code></a> chore: release v2.1.3</li>
<li><a href="https://github.com/vitest-dev/vitest/commit/7155cee210791cb29da94f2ad3e315ca506fb68d"><code>7155cee</code></a> refactor(coverage): move re-usable parts to base provider (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8/issues/6665">#6665</a>)</li>
<li>See full diff in <a href="https://github.com/vitest-dev/vitest/commits/v2.1.3/packages/coverage-v8">compare view</a></li>
</ul>
</details>
<br />

Updates `eslint` from 9.12.0 to 9.13.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/eslint/eslint/releases">eslint's releases</a>.</em></p>
<blockquote>
<h2>v9.13.0</h2>
<h2>Features</h2>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/381c32b6975fa3208c62ca2b1052eb87182ed731"><code>381c32b</code></a> feat: Allow languages to provide <code>defaultLanguageOptions</code> (<a href="https://redirect.github.com/eslint/eslint/issues/19003">#19003</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/bf723bd0f948dbfef57f9b34ff894e7603aeaf88"><code>bf723bd</code></a> feat: Improve eslintrc warning message (<a href="https://redirect.github.com/eslint/eslint/issues/19023">#19023</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/1def4cdfab1f067c5089df8b36242cdf912b0eb6"><code>1def4cd</code></a> feat: drop support for jiti v1.21 (<a href="https://redirect.github.com/eslint/eslint/issues/18996">#18996</a>) (Francesco Trotta)</li>
<li><a href="https://github.com/eslint/eslint/commit/f879be240ca7ddf485b700df0eb93985ccb1db45"><code>f879be2</code></a> feat: export <code>ESLint.defaultConfig</code> (<a href="https://redirect.github.com/eslint/eslint/issues/18983">#18983</a>) (Nitin Kumar)</li>
</ul>
<h2>Bug Fixes</h2>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/78836d40ebd3881e527075a991da4cbb0ff9adfc"><code>78836d4</code></a> fix: update the <code>complexity</code> rule type (<a href="https://redirect.github.com/eslint/eslint/issues/19027">#19027</a>) (Nitin Kumar)</li>
<li><a href="https://github.com/eslint/eslint/commit/064c8b612e2e4b773d6b25867f2045e3ceaa9d66"><code>064c8b6</code></a> fix: update rule types (<a href="https://redirect.github.com/eslint/eslint/issues/18925">#18925</a>) (Nitin Kumar)</li>
</ul>
<h2>Documentation</h2>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/abdbfa83907712d0d44a35aeed4e0ea7bf106740"><code>abdbfa8</code></a> docs: mark <code>LintMessage#nodeType</code> as deprecated (<a href="https://redirect.github.com/eslint/eslint/issues/19019">#19019</a>) (Nitin Kumar)</li>
<li><a href="https://github.com/eslint/eslint/commit/19e68d3f3a86cf23e5c98eaf8736eeaa33f194f4"><code>19e68d3</code></a> docs: update deprecated rules type definitions (<a href="https://redirect.github.com/eslint/eslint/issues/19018">#19018</a>) (Nitin Kumar)</li>
<li><a href="https://github.com/eslint/eslint/commit/7dd402d33226d821a17b22c4753ce9c40fc909bd"><code>7dd402d</code></a> docs: Update examples of passing multiple values to a CLI option (<a href="https://redirect.github.com/eslint/eslint/issues/19006">#19006</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/5dcbc519b729698be651bdbddb39da774cb70bf1"><code>5dcbc51</code></a> docs: Add example with side-effect imports to no-restricted-imports (<a href="https://redirect.github.com/eslint/eslint/issues/18997">#18997</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/1ee87ca1c50018947e76c29e78da9aaf711f53a2"><code>1ee87ca</code></a> docs: Update README (GitHub Actions Bot)</li>
<li><a href="https://github.com/eslint/eslint/commit/2c3dbdc2319fcf2f65c2de13f9064c5a315be890"><code>2c3dbdc</code></a> docs: Use prerendered sponsors for README (<a href="https://redirect.github.com/eslint/eslint/issues/18988">#18988</a>) (Milos Djermanovic)</li>
</ul>
<h2>Chores</h2>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/68d2d9dfd63401b6a9b413f11ac2c4b583e4897a"><code>68d2d9d</code></a> chore: upgrade to <code>@eslint/js@9.13.0</code> and <code>@eslint/core@^0.7.0</code> (<a href="https://redirect.github.com/eslint/eslint/issues/19034">#19034</a>) (Francesco Trotta)</li>
<li><a href="https://github.com/eslint/eslint/commit/2211f0aeb350f55e1fa71d4df93d46bc1795789d"><code>2211f0a</code></a> chore: package.json update for <code>@​eslint/js</code> release (Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/c7abaef5332caf4b6251c9550a81a9c29bf324fd"><code>c7abaef</code></a> perf: using Node.js compile cache (<a href="https://redirect.github.com/eslint/eslint/issues/19012">#19012</a>) (唯然)</li>
<li><a href="https://github.com/eslint/eslint/commit/1d7c077145d070aa7754018b29b038ce2e0c8b0e"><code>1d7c077</code></a> chore: add pkg.type &quot;commonjs&quot; (<a href="https://redirect.github.com/eslint/eslint/issues/19011">#19011</a>) (唯然)</li>
<li><a href="https://github.com/eslint/eslint/commit/468e3bdadfdf5f197a44efd6c8dc5cf2b241f964"><code>468e3bd</code></a> test: fix <code>ESLint</code> tests (<a href="https://redirect.github.com/eslint/eslint/issues/19021">#19021</a>) (Francesco Trotta)</li>
<li><a href="https://github.com/eslint/eslint/commit/ed4635fa0e4fb91705223a7d9c230b6e9a87cd4c"><code>ed4635f</code></a> ci: upgrade knip@5.32.0 (<a href="https://redirect.github.com/eslint/eslint/issues/18992">#18992</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/efad76732170a9a7db2e056a8d9a0cf503448c48"><code>efad767</code></a> chore: remove unused ignore dependency (<a href="https://redirect.github.com/eslint/eslint/issues/18993">#18993</a>) (Amaresh  S M)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/eslint/eslint/blob/main/CHANGELOG.md">eslint's changelog</a>.</em></p>
<blockquote>
<p>v9.13.0 - October 18, 2024</p>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/68d2d9dfd63401b6a9b413f11ac2c4b583e4897a"><code>68d2d9d</code></a> chore: upgrade to <code>@eslint/js@9.13.0</code> and <code>@eslint/core@^0.7.0</code> (<a href="https://redirect.github.com/eslint/eslint/issues/19034">#19034</a>) (Francesco Trotta)</li>
<li><a href="https://github.com/eslint/eslint/commit/2211f0aeb350f55e1fa71d4df93d46bc1795789d"><code>2211f0a</code></a> chore: package.json update for <code>@​eslint/js</code> release (Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/381c32b6975fa3208c62ca2b1052eb87182ed731"><code>381c32b</code></a> feat: Allow languages to provide <code>defaultLanguageOptions</code> (<a href="https://redirect.github.com/eslint/eslint/issues/19003">#19003</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/78836d40ebd3881e527075a991da4cbb0ff9adfc"><code>78836d4</code></a> fix: update the <code>complexity</code> rule type (<a href="https://redirect.github.com/eslint/eslint/issues/19027">#19027</a>) (Nitin Kumar)</li>
<li><a href="https://github.com/eslint/eslint/commit/c7abaef5332caf4b6251c9550a81a9c29bf324fd"><code>c7abaef</code></a> perf: using Node.js compile cache (<a href="https://redirect.github.com/eslint/eslint/issues/19012">#19012</a>) (唯然)</li>
<li><a href="https://github.com/eslint/eslint/commit/bf723bd0f948dbfef57f9b34ff894e7603aeaf88"><code>bf723bd</code></a> feat: Improve eslintrc warning message (<a href="https://redirect.github.com/eslint/eslint/issues/19023">#19023</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/1d7c077145d070aa7754018b29b038ce2e0c8b0e"><code>1d7c077</code></a> chore: add pkg.type &quot;commonjs&quot; (<a href="https://redirect.github.com/eslint/eslint/issues/19011">#19011</a>) (唯然)</li>
<li><a href="https://github.com/eslint/eslint/commit/abdbfa83907712d0d44a35aeed4e0ea7bf106740"><code>abdbfa8</code></a> docs: mark <code>LintMessage#nodeType</code> as deprecated (<a href="https://redirect.github.com/eslint/eslint/issues/19019">#19019</a>) (Nitin Kumar)</li>
<li><a href="https://github.com/eslint/eslint/commit/468e3bdadfdf5f197a44efd6c8dc5cf2b241f964"><code>468e3bd</code></a> test: fix <code>ESLint</code> tests (<a href="https://redirect.github.com/eslint/eslint/issues/19021">#19021</a>) (Francesco Trotta)</li>
<li><a href="https://github.com/eslint/eslint/commit/19e68d3f3a86cf23e5c98eaf8736eeaa33f194f4"><code>19e68d3</code></a> docs: update deprecated rules type definitions (<a href="https://redirect.github.com/eslint/eslint/issues/19018">#19018</a>) (Nitin Kumar)</li>
<li><a href="https://github.com/eslint/eslint/commit/1def4cdfab1f067c5089df8b36242cdf912b0eb6"><code>1def4cd</code></a> feat: drop support for jiti v1.21 (<a href="https://redirect.github.com/eslint/eslint/issues/18996">#18996</a>) (Francesco Trotta)</li>
<li><a href="https://github.com/eslint/eslint/commit/7dd402d33226d821a17b22c4753ce9c40fc909bd"><code>7dd402d</code></a> docs: Update examples of passing multiple values to a CLI option (<a href="https://redirect.github.com/eslint/eslint/issues/19006">#19006</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/064c8b612e2e4b773d6b25867f2045e3ceaa9d66"><code>064c8b6</code></a> fix: update rule types (<a href="https://redirect.github.com/eslint/eslint/issues/18925">#18925</a>) (Nitin Kumar)</li>
<li><a href="https://github.com/eslint/eslint/commit/f879be240ca7ddf485b700df0eb93985ccb1db45"><code>f879be2</code></a> feat: export <code>ESLint.defaultConfig</code> (<a href="https://redirect.github.com/eslint/eslint/issues/18983">#18983</a>) (Nitin Kumar)</li>
<li><a href="https://github.com/eslint/eslint/commit/5dcbc519b729698be651bdbddb39da774cb70bf1"><code>5dcbc51</code></a> docs: Add example with side-effect imports to no-restricted-imports (<a href="https://redirect.github.com/eslint/eslint/issues/18997">#18997</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/ed4635fa0e4fb91705223a7d9c230b6e9a87cd4c"><code>ed4635f</code></a> ci: upgrade knip@5.32.0 (<a href="https://redirect.github.com/eslint/eslint/issues/18992">#18992</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/efad76732170a9a7db2e056a8d9a0cf503448c48"><code>efad767</code></a> chore: remove unused ignore dependency (<a href="https://redirect.github.com/eslint/eslint/issues/18993">#18993</a>) (Amaresh  S M)</li>
<li><a href="https://github.com/eslint/eslint/commit/1ee87ca1c50018947e76c29e78da9aaf711f53a2"><code>1ee87ca</code></a> docs: Update README (GitHub Actions Bot)</li>
<li><a href="https://github.com/eslint/eslint/commit/2c3dbdc2319fcf2f65c2de13f9064c5a315be890"><code>2c3dbdc</code></a> docs: Use prerendered sponsors for README (<a href="https://redirect.github.com/eslint/eslint/issues/18988">#18988</a>) (Milos Djermanovic)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/1a7cdbfad8d3355132aab3201c7dd3f2e879b19d"><code>1a7cdbf</code></a> 9.13.0</li>
<li><a href="https://github.com/eslint/eslint/commit/627d5bfeabf9b412b8679f602e6f6e3e23fd8a23"><code>627d5bf</code></a> Build: changelog update for 9.13.0</li>
<li><a href="https://github.com/eslint/eslint/commit/68d2d9dfd63401b6a9b413f11ac2c4b583e4897a"><code>68d2d9d</code></a> chore: upgrade to <code>@eslint/js@9.13.0</code> and <code>@eslint/core@^0.7.0</code> (<a href="https://redirect.github.com/eslint/eslint/issues/19034">#19034</a>)</li>
<li><a href="https://github.com/eslint/eslint/commit/2211f0aeb350f55e1fa71d4df93d46bc1795789d"><code>2211f0a</code></a> chore: package.json update for <code>@​eslint/js</code> release</li>
<li><a href="https://github.com/eslint/eslint/commit/381c32b6975fa3208c62ca2b1052eb87182ed731"><code>381c32b</code></a> feat: Allow languages to provide <code>defaultLanguageOptions</code> (<a href="https://redirect.github.com/eslint/eslint/issues/19003">#19003</a>)</li>
<li><a href="https://github.com/eslint/eslint/commit/78836d40ebd3881e527075a991da4cbb0ff9adfc"><code>78836d4</code></a> fix: update the <code>complexity</code> rule type (<a href="https://redirect.github.com/eslint/eslint/issues/19027">#19027</a>)</li>
<li><a href="https://github.com/eslint/eslint/commit/c7abaef5332caf4b6251c9550a81a9c29bf324fd"><code>c7abaef</code></a> perf: using Node.js compile cache (<a href="https://redirect.github.com/eslint/eslint/issues/19012">#19012</a>)</li>
<li><a href="https://github.com/eslint/eslint/commit/bf723bd0f948dbfef57f9b34ff894e7603aeaf88"><code>bf723bd</code></a> feat: Improve eslintrc warning message (<a href="https://redirect.github.com/eslint/eslint/issues/19023">#19023</a>)</li>
<li><a href="https://github.com/eslint/eslint/commit/1d7c077145d070aa7754018b29b038ce2e0c8b0e"><code>1d7c077</code></a> chore: add pkg.type &quot;commonjs&quot; (<a href="https://redirect.github.com/eslint/eslint/issues/19011">#19011</a>)</li>
<li><a href="https://github.com/eslint/eslint/commit/abdbfa83907712d0d44a35aeed4e0ea7bf106740"><code>abdbfa8</code></a> docs: mark <code>LintMessage#nodeType</code> as deprecated (<a href="https://redirect.github.com/eslint/eslint/issues/19019">#19019</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/eslint/eslint/compare/v9.12.0...v9.13.0">compare view</a></li>
</ul>
</details>
<br />

Updates `typescript` from 5.6.2 to 5.6.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/microsoft/TypeScript/releases">typescript's releases</a>.</em></p>
<blockquote>
<h2>TypeScript 5.6.3</h2>
<p>For release notes, check out the <a href="https://devblogs.microsoft.com/typescript/announcing-typescript-5-6/">release announcement</a>.</p>
<p>For the complete list of fixed issues, check out the</p>
<ul>
<li><a href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.6.0%22+is%3Aclosed+">fixed issues query for Typescript 5.6.0 (Beta)</a>.</li>
<li><a href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.6.1%22+is%3Aclosed+">fixed issues query for Typescript 5.6.1 (RC)</a>.</li>
<li><a href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.6.2%22+is%3Aclosed+">fixed issues query for Typescript 5.6.2 (Stable)</a>.</li>
<li><a href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.6.3%22+is%3Aclosed+">fixed issues query for Typescript 5.6.3 (Stable)</a>.</li>
</ul>
<p>Downloads are available on:</p>
<ul>
<li><a href="https://www.npmjs.com/package/typescript">npm</a></li>
<li><a href="https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild">NuGet package</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/microsoft/TypeScript/commit/d48a5cf89a62a62d6c6ed53ffa18f070d9458b85"><code>d48a5cf</code></a> Bump version to 5.6.3 and LKG</li>
<li><a href="https://github.com/microsoft/TypeScript/commit/fefa70aa18df825b6b06e79ae3d5b54f17571128"><code>fefa70a</code></a> 🤖 Pick PR <a href="https://redirect.github.com/microsoft/TypeScript/issues/60083">#60083</a> (Don't issue implicit any when obtai...) into release-5.6 (#...</li>
<li><a href="https://github.com/microsoft/TypeScript/commit/ff716921496ab538e74450d32443c899afbf4657"><code>ff71692</code></a> [release-5.6] Remove tsbuildInfo specification error now that we need it for ...</li>
<li><a href="https://github.com/microsoft/TypeScript/commit/1f44dcf4e1d7db05fab64dea6949fe3c0e642d25"><code>1f44dcf</code></a> 🤖 Pick PR <a href="https://redirect.github.com/microsoft/TypeScript/issues/60157">#60157</a> (fix automatic type acquisition) into release-5.6 (<a href="https://redirect.github.com/microsoft/TypeScript/issues/60169">#60169</a>)</li>
<li>See full diff in <a href="https://github.com/microsoft/TypeScript/compare/v5.6.2...v5.6.3">compare view</a></li>
</ul>
</details>
<br />

Updates `typescript-eslint` from 8.8.1 to 8.11.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/typescript-eslint/typescript-eslint/releases">typescript-eslint's releases</a>.</em></p>
<blockquote>
<h2>v8.11.0</h2>
<h2>8.11.0 (2024-10-21)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>eslint-plugin:</strong> [no-base-to-string] add support for catching toLocaleString (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10138">#10138</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-parameters] add suggestion fixer (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10149">#10149</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [class-literal-property-style] don't report nodes with <code>override</code> keyword (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10135">#10135</a>)</li>
<li><strong>rule-tester:</strong> allow custom filename outside directory (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10147">#10147</a>)</li>
</ul>
<h3>❤️  Thank You</h3>
<ul>
<li>Kirk Waiblinger <a href="https://github.com/kirkwaiblinger"><code>@​kirkwaiblinger</code></a></li>
<li>Lotfi Meklati <a href="https://github.com/lotmek"><code>@​lotmek</code></a></li>
<li>Yukihiro Hasegawa <a href="https://github.com/y-hsgw"><code>@​y-hsgw</code></a></li>
</ul>
<p>You can read about our <a href="https://main--typescript-eslint.netlify.app/users/versioning">versioning strategy</a> and <a href="https://main--typescript-eslint.netlify.app/users/releases">releases</a> on our website.</p>
<h2>v8.10.0</h2>
<h2>8.10.0 (2024-10-17)</h2>
<h3>🚀 Features</h3>
<ul>
<li>support TypeScript 5.6 (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/9972">#9972</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>typescript-eslint:</strong> propagate <code>name</code> field to extended configs in <code>config</code> helper (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10094">#10094</a>)</li>
</ul>
<h3>❤️  Thank You</h3>
<ul>
<li>auvred <a href="https://github.com/auvred"><code>@​auvred</code></a></li>
<li>Josh Goldberg ✨</li>
</ul>
<p>You can read about our <a href="https://main--typescript-eslint.netlify.app/users/versioning">versioning strategy</a> and <a href="https://main--typescript-eslint.netlify.app/users/releases">releases</a> on our website.</p>
<h2>v8.9.0</h2>
<h2>8.9.0 (2024-10-14)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>rule-tester:</strong> hooks for test cases (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10109">#10109</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-parameters] cannot assume variables are either type or value (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10093">#10093</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md">typescript-eslint's changelog</a>.</em></p>
<blockquote>
<h2>8.11.0 (2024-10-21)</h2>
<p>This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.</p>
<p>You can read about our <a href="https://main--typescript-eslint.netlify.app/users/versioning">versioning strategy</a> and <a href="https://main--typescript-eslint.netlify.app/users/releases">releases</a> on our website.</p>
<h2>8.10.0 (2024-10-17)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>typescript-eslint:</strong> propagate <code>name</code> field to extended configs in <code>config</code> helper (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10094">#10094</a>)</li>
</ul>
<h3>❤️  Thank You</h3>
<ul>
<li>auvred <a href="https://github.com/auvred"><code>@​auvred</code></a></li>
</ul>
<p>You can read about our <a href="https://main--typescript-eslint.netlify.app/users/versioning">versioning strategy</a> and <a href="https://main--typescript-eslint.netlify.app/users/releases">releases</a> on our website.</p>
<h2>8.9.0 (2024-10-14)</h2>
<p>This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.</p>
<p>You can read about our <a href="https://main--typescript-eslint.netlify.app/users/versioning">versioning strategy</a> and <a href="https://main--typescript-eslint.netlify.app/users/releases">releases</a> on our website.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/79c27a822ee9d5e955b6bcd41a6a8c320938cdaf"><code>79c27a8</code></a> chore(release): publish 8.11.0</li>
<li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/7effdea4307f44dcb2ad21529d42af0250907fad"><code>7effdea</code></a> chore(release): publish 8.10.0</li>
<li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/be5bc0fb488bb4bf25c9aca27e4142946d090a1b"><code>be5bc0f</code></a> fix(typescript-eslint): propagate <code>name</code> field to extended configs in `config...</li>
<li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/4666ed4e0c4b6d4d57aee85f4f1962f914dd53b3"><code>4666ed4</code></a> chore(release): publish 8.9.0</li>
<li>See full diff in <a href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.11.0/packages/typescript-eslint">compare view</a></li>
</ul>
</details>
<br />

Updates `vitest` from 2.1.2 to 2.1.3
<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>v2.1.3</h2>
<h3>   🐞 Bug Fixes</h3>
<ul>
<li>Fix error diff of <code>toBeNaN, toBeUndefined, toBeNull, toBeTruthy, toBeFalsy</code>  -  by <a href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6697">vitest-dev/vitest#6697</a> <a href="https://github.com/vitest-dev/vitest/commit/e002758c"><!-- raw HTML omitted -->(e0027)<!-- raw HTML omitted --></a></li>
<li><strong>browser</strong>:
<ul>
<li>Provide aria role intellisense  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6629">vitest-dev/vitest#6629</a> <a href="https://github.com/vitest-dev/vitest/commit/f36eac77"><!-- raw HTML omitted -->(f36ea)<!-- raw HTML omitted --></a></li>
<li>Not.toBeInTheDocument works with locators API  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6634">vitest-dev/vitest#6634</a> <a href="https://github.com/vitest-dev/vitest/commit/8bef5d2b"><!-- raw HTML omitted -->(8bef5)<!-- raw HTML omitted --></a></li>
<li>Use <code>/mockServiceWorker.js</code> instead of <code>/__vitest_msw__</code>  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6687">vitest-dev/vitest#6687</a> <a href="https://github.com/vitest-dev/vitest/commit/4b2ce07f"><!-- raw HTML omitted -->(4b2ce)<!-- raw HTML omitted --></a></li>
<li>Don't override the esbuild option in the browser mode  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6692">vitest-dev/vitest#6692</a> <a href="https://github.com/vitest-dev/vitest/commit/d131fd64"><!-- raw HTML omitted -->(d131f)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>expect</strong>:
<ul>
<li>Preserve prototype in <code>toMatchObject</code> diff  -  by <a href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6620">vitest-dev/vitest#6620</a> <a href="https://github.com/vitest-dev/vitest/commit/d289e7eb"><!-- raw HTML omitted -->(d289e)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>mocker</strong>:
<ul>
<li>Specify correct spy dependency  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> <a href="https://github.com/vitest-dev/vitest/commit/7e9584aa"><!-- raw HTML omitted -->(7e958)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>runner</strong>:
<ul>
<li>Ensure sequential suite overrides sequence.concurrent  -  by <a href="https://github.com/dsyddall"><code>@​dsyddall</code></a> and <a href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6653">vitest-dev/vitest#6653</a> <a href="https://github.com/vitest-dev/vitest/commit/5e6de274"><!-- raw HTML omitted -->(5e6de)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>vitest</strong>:
<ul>
<li>Deprecate UserConfig in favor of ViteUserConfig  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6626">vitest-dev/vitest#6626</a> <a href="https://github.com/vitest-dev/vitest/commit/496bd251"><!-- raw HTML omitted -->(496bd)<!-- raw HTML omitted --></a></li>
<li>Don't hang with maxConcurrency 0  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6627">vitest-dev/vitest#6627</a> <a href="https://github.com/vitest-dev/vitest/commit/946d8bb1"><!-- raw HTML omitted -->(946d8)<!-- raw HTML omitted --></a></li>
<li>Deprecate old task types and node-reliant types  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6632">vitest-dev/vitest#6632</a> <a href="https://github.com/vitest-dev/vitest/commit/000459a9"><!-- raw HTML omitted -->(00045)<!-- raw HTML omitted --></a></li>
<li>Fix <code>&lt;empty line&gt;</code> logs when interleaving <code>console.log/error</code>  -  by <a href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6644">vitest-dev/vitest#6644</a> <a href="https://github.com/vitest-dev/vitest/commit/9ece3952"><!-- raw HTML omitted -->(9ece3)<!-- raw HTML omitted --></a></li>
<li>Show rollup error details as test error  -  by <a href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6686">vitest-dev/vitest#6686</a> <a href="https://github.com/vitest-dev/vitest/commit/47dde76f"><!-- raw HTML omitted -->(47dde)<!-- raw HTML omitted --></a></li>
<li>Always inline setup files  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6689">vitest-dev/vitest#6689</a> <a href="https://github.com/vitest-dev/vitest/commit/19d64e20"><!-- raw HTML omitted -->(19d64)<!-- raw HTML omitted --></a></li>
<li>Use <code>fast-glob</code> instead of <code>tinyglobby</code> in Vitest  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6688">vitest-dev/vitest#6688</a> <a href="https://github.com/vitest-dev/vitest/commit/70baaaa9"><!-- raw HTML omitted -->(70baa)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>web-worker</strong>:
<ul>
<li>Share mocker with main executor  -  by <a href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6623">vitest-dev/vitest#6623</a> <a href="https://github.com/vitest-dev/vitest/commit/fe7b8aee"><!-- raw HTML omitted -->(fe7b8)<!-- raw HTML omitted --></a></li>
</ul>
</li>
</ul>
<h3>   🏎 Performance</h3>
<ul>
<li>Reuse full name in reported tasks, update generator types  -  by <a href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/6666">vitest-dev/vitest#6666</a> <a href="https://github.com/vitest-dev/vitest/commit/7a0de0a7"><!-- raw HTML omitted -->(7a0de)<!-- raw HTML omitted --></a></li>
</ul>
<h5>    <a href="https://github.com/vitest-dev/vitest/compare/v2.1.2...v2.1.3">View changes on GitHub</a></h5>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/vitest-dev/vitest/commit/4c03a0db53e7a91e5acbfcd8fb4bcc3a8dd3ba99"><code>4c03a0d</code></a> chore: release v2.1.3</li>
<li><a href="https://github.com/vitest-dev/vitest/commit/70baaaa9f67fff6f9fac45417a58b736185fbe3b"><code>70baaaa</code></a> fix(vitest): use <code>fast-glob</code> instead of <code>tinyglobby</code> in Vitest (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/6688">#6688</a>)</li>
<li><a href="https://github.com/vitest-dev/vitest/commit/19d64e20efc248aaaee78c51e334c2b35ebe3a98"><code>19d64e2</code></a> fix(vitest): always inline setup files (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/6689">#6689</a>)</li>
<li><a href="https://github.com/vitest-dev/vitest/commit/47dde76f310faf83c35351b9f612d2dc7ca969c0"><code>47dde76</code></a> fix(vitest): show rollup error details as test error (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/6686">#6686</a>)</li>
<li><a href="https://github.com/vitest-dev/vitest/commit/7155cee210791cb29da94f2ad3e315ca506fb68d"><code>7155cee</code></a> refactor(coverage): move re-usable parts to base provider (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/6665">#6665</a>)</li>
<li><a href="https://github.com/vitest-dev/vitest/commit/7a0de0a7c278ce5e542b0e15b7643a6924ef27f5"><code>7a0de0a</code></a> perf: reuse full name in reported tasks, update generator types (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/6666">#6666</a>)</li>
<li><a href="https://github.com/vitest-dev/vitest/commit/8bef5d2b9903180297c7eece39a155cf1f35f103"><code>8bef5d2</code></a> fix(browser): not.toBeInTheDocument works with locators API (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/6634">#6634</a>)</li>
<li><a href="https://github.com/vitest-dev/vitest/commit/9ece395264c9ee59181194fbbd98145e7f1512a9"><code>9ece395</code></a> fix(vitest): fix <code>\&lt;empty line&gt;</code> logs when interleaving <code>console.log/error</code> (#...</li>
<li><a href="https://github.com/vitest-dev/vitest/commit/000459a9ae9624a8518a6399bd1c1117ef87f0b9"><code>000459a</code></a> fix(vitest): deprecate old task types and node-reliant types (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/6632">#6632</a>)</li>
<li><a href="https://github.com/vitest-dev/vitest/commit/946d8bb1659972905ae21f67936952eb72c2fa7a"><code>946d8bb</code></a> fix(vitest): don't hang with maxConcurrency 0 (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/6627">#6627</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/vitest-dev/vitest/commits/v2.1.3/packages/vitest">compare view</a></li>
</ul>
</details>
<br />


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 show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions


</details>


Patch:
diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml
index d388e4b..486f8de 100644
--- a/.github/workflows/api.yml
+++ b/.github/workflows/api.yml
@@ -14,10 +14,10 @@ jobs:
 
     steps:
       - name: Checkout
-        uses: actions/checkout@v4.2.1
+        uses: actions/checkout@v4.2.2
 
       - name: Setup Node.js
-        uses: actions/setup-node@v4.0.4
+        uses: actions/setup-node@v4.1.0
         with:
           node-version: 20.x
 
diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml
index 96c1a85..cce0243 100644
--- a/.github/workflows/gh-pages.yml
+++ b/.github/workflows/gh-pages.yml
@@ -12,10 +12,10 @@ jobs:
 
     steps:
       - name: Checkout
-        uses: actions/checkout@v4.2.1
+        uses: actions/checkout@v4.2.2
 
       - name: Setup Node.js
-        uses: actions/setup-node@v4.0.4
+        uses: actions/setup-node@v4.1.0
         with:
           node-version: 20.x
 
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index d6645d1..6f2f357 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -14,10 +14,10 @@ jobs:
 
     steps:
       - name: Checkout
-        uses: actions/checkout@v4.2.1
+        uses: actions/checkout@v4.2.2
 
       - name: Setup Node.js
-        uses: actions/setup-node@v4.0.4
+        uses: actions/setup-node@v4.1.0
         with:
           node-version: 20.x
 
diff --git a/.github/workflows/publish-nightly.yml b/.github/workflows/publish-nightly.yml
index 87f8995..dcc57a8 100644
--- a/.github/workflows/publish-nightly.yml
+++ b/.github/workflows/publish-nightly.yml
@@ -12,7 +12,7 @@ jobs:
       matrix: ${{ steps.getb.outputs.matrix }}
     steps:
       - name: Checkout
-        uses: actions/checkout@v4.2.1
+        uses: actions/checkout@v4.2.2
         with:
           fetch-depth: 0
           
@@ -46,12 +46,12 @@ jobs:
 
     steps:
       - name: Checkout ${{ matrix.branch }}
-        uses: actions/checkout@v4.2.1
+        uses: actions/checkout@v4.2.2
         with:
           ref: ${{ matrix.branch }}
 
       - name: Setup Node.js
-        uses: actions/setup-node@v4.0.4
+        uses: actions/setup-node@v4.1.0
         with:
           node-version: 20.x
 
diff --git a/docs/std-math.md b/docs/std-math.md
index ffa2f84..987462f 100644
--- a/docs/std-math.md
+++ b/docs/std-math.md
@@ -95,7 +95,7 @@ _y_ /_x_ の正接を返しますが、_x_ が負値の場合はπだけずれ
 
 ## 指数・対数関数
 ### @Math:pow(_x_: num, _y_: num): num
-_x_ の _y_ 乗を計算します。結果がNaNとなることを許容する点、内部的にJavascriptの`**`演算子ではなく`Math.pow`関数を用いている点の２つを除き、ほぼ`Core:pow`と同じものです。
+_x_ の _y_ 乗を計算します。内部的にJavascriptの`**`演算子ではなく`Math.pow`関数を用いている点を除き、ほぼ`Core:pow`と同じものです。
 
 ### @Math:exp(_x_: num): num
 eの _x_ 乗を計算します。  
diff --git a/etc/aiscript.api.md b/etc/aiscript.api.md
index 34eb921..ad73857 100644
--- a/etc/aiscript.api.md
+++ b/etc/aiscript.api.md
@@ -34,6 +34,13 @@ abstract class AiScriptError extends Error {
     pos?: Pos;
 }
 
+// @public
+class AiScriptHostsideError extends AiScriptError {
+    constructor(message: string, info?: unknown);
+    // (undocumented)
+    name: string;
+}
+
 // @public
 class AiScriptIndexOutOfRangeError extends AiScriptRuntimeError {
     constructor(message: string, info?: unknown);
@@ -281,7 +288,8 @@ declare namespace errors {
         AiScriptNamespaceError,
         AiScriptRuntimeError,
         AiScriptIndexOutOfRangeError,
-        AiScriptUserError
+        AiScriptUserError,
+        AiScriptHostsideError
     }
 }
 export { errors }
@@ -391,6 +399,8 @@ export class Interpreter {
         log?(type: string, params: LogObject): void;
         maxStep?: number;
         abortOnError?: boolean;
+        irqRate?: number;
+        irqSleep?: number | (() => Promise<void>);
     });
     // (undocumented)
     abort(): void;
@@ -854,7 +864,7 @@ type VUserFn = VFnBase & {
 
 // Warnings were encountered during analysis:
 //
-// src/interpreter/index.ts:39:4 - (ae-forgotten-export) The symbol "LogObject" needs to be exported by the entry point index.d.ts
+// src/interpreter/index.ts:38:4 - (ae-forgotten-export) The symbol "LogObject" needs to be exported by the entry point index.d.ts
 // src/interpreter/value.ts:46:2 - (ae-forgotten-export) The symbol "Type" needs to be exported by the entry point index.d.ts
 
 // (No @packageDocumentation comment for this package)
diff --git a/package-lock.json b/package-lock.json
index fca6e62..f98e6fd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14,21 +14,21 @@
 				"uuid": "10.0.0"
 			},
 			"devDependencies": {
-				"@eslint/js": "9.12.0",
-				"@microsoft/api-extractor": "7.47.9",
+				"@eslint/js": "9.13.0",
+				"@microsoft/api-extractor": "7.47.11",
 				"@types/eslint__js": "8.42.3",
-				"@types/node": "22.7.5",
+				"@types/node": "22.7.9",
 				"@types/seedrandom": "3.0.8",
 				"@types/uuid": "10.0.0",
-				"@vitest/coverage-v8": "2.1.2",
+				"@vitest/coverage-v8": "2.1.3",
 				"chalk": "5.3.0",
-				"eslint": "9.12.0",
+				"eslint": "9.13.0",
 				"eslint-plugin-import": "2.31.0",
 				"semver": "7.6.3",
 				"ts-node": "10.9.2",
-				"typescript": "5.6.2",
-				"typescript-eslint": "8.8.1",
-				"vitest": "2.1.2"
+				"typescript": "5.6.3",
+				"typescript-eslint": "8.11.0",
+				"vitest": "2.1.3"
 			}
 		},
 		"node_modules/@ampproject/remapping": {
@@ -563,11 +563,10 @@
 			}
 		},
 		"node_modules/@eslint/core": {
-			"version": "0.6.0",
-			"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.6.0.tgz",
-			"integrity": "sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==",
+			"version": "0.7.0",
+			"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz",
+			"integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==",
 			"dev": true,
-			"license": "Apache-2.0",
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
 			}
@@ -634,11 +633,10 @@
 			}
 		},
 		"node_modules/@eslint/js": {
-			"version": "9.12.0",
-			"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.12.0.tgz",
-			"integrity": "sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==",
+			"version": "9.13.0",
+			"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz",
+			"integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==",
 			"dev": true,
-			"license": "MIT",
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
 			}
@@ -800,9 +798,9 @@
 			}
 		},
 		"node_modules/@microsoft/api-extractor": {
-			"version": "7.47.9",
-			"resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.47.9.tgz",
-			"integrity": "sha512-TTq30M1rikVsO5wZVToQT/dGyJY7UXJmjiRtkHPLb74Prx3Etw8+bX7Bv7iLuby6ysb7fuu1NFWqma+csym8Jw==",
+			"version": "7.47.11",
+			"resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.47.11.tgz",
+			"integrity": "sha512-lrudfbPub5wzBhymfFtgZKuBvXxoSIAdrvS2UbHjoMT2TjIEddq6Z13pcve7A03BAouw0x8sW8G4txdgfiSwpQ==",
 			"dev": true,
 			"dependencies": {
 				"@microsoft/api-extractor-model": "7.29.8",
@@ -811,7 +809,7 @@
 				"@rushstack/node-core-library": "5.9.0",
 				"@rushstack/rig-package": "0.5.3",
 				"@rushstack/terminal": "0.14.2",
-				"@rushstack/ts-command-line": "4.22.8",
+				"@rushstack/ts-command-line": "4.23.0",
 				"lodash": "~4.17.15",
 				"minimatch": "~3.0.3",
 				"resolve": "~1.22.1",
@@ -1253,9 +1251,9 @@
 			}
 		},
 		"node_modules/@rushstack/ts-command-line": {
-			"version": "4.22.8",
-			"resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.22.8.tgz",
-			"integrity": "sha512-XbFjOoV7qZHJnSuFUHv0pKaFA4ixyCuki+xMjsMfDwfvQjs5MYG0IK5COal3tRnG7KCDe2l/G+9LrzYE/RJhgg==",
+			"version": "4.23.0",
+			"resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.23.0.tgz",
+			"integrity": "sha512-jYREBtsxduPV6ptNq8jOKp9+yx0ld1Tb/Tkdnlj8gTjazl1sF3DwX2VbluyYrNd0meWIL0bNeer7WDf5tKFjaQ==",
 			"dev": true,
 			"dependencies": {
 				"@rushstack/terminal": "0.14.2",
@@ -1341,9 +1339,9 @@
 			"license": "MIT"
 		},
 		"node_modules/@types/node": {
-			"version": "22.7.5",
-			"resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz",
-			"integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==",
+			"version": "22.7.9",
+			"resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.9.tgz",
+			"integrity": "sha512-jrTfRC7FM6nChvU7X2KqcrgquofrWLFDeYC1hKfwNWomVvrn7JIksqf344WN2X/y8xrgqBd2dJATZV4GbatBfg==",
 			"dev": true,
 			"dependencies": {
 				"undici-types": "~6.19.2"
@@ -1364,16 +1362,16 @@
 			"license": "MIT"
 		},
 		"node_modules/@typescript-eslint/eslint-plugin": {
-			"version": "8.8.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.1.tgz",
-			"integrity": "sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==",
+			"version": "8.11.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.11.0.tgz",
+			"integrity": "sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==",
 			"dev": true,
 			"dependencies": {
 				"@eslint-community/regexpp": "^4.10.0",
-				"@typescript-eslint/scope-manager": "8.8.1",
-				"@typescript-eslint/type-utils": "8.8.1",
-				"@typescript-eslint/utils": "8.8.1",
-				"@typescript-eslint/visitor-keys": "8.8.1",
+				"@typescript-eslint/scope-manager": "8.11.0",
+				"@typescript-eslint/type-utils": "8.11.0",
+				"@typescript-eslint/utils": "8.11.0",
+				"@typescript-eslint/visitor-keys": "8.11.0",
 				"graphemer": "^1.4.0",
 				"ignore": "^5.3.1",
 				"natural-compare": "^1.4.0",
@@ -1397,15 +1395,15 @@
 			}
 		},
 		"node_modules/@typescript-eslint/parser": {
-			"version": "8.8.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.8.1.tgz",
-			"integrity": "sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==",
+			"version": "8.11.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.11.0.tgz",
+			"integrity": "sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/scope-manager": "8.8.1",
-				"@typescript-eslint/types": "8.8.1",
-				"@typescript-eslint/typescript-estree": "8.8.1",
-				"@typescript-eslint/visitor-keys": "8.8.1",
+				"@typescript-eslint/scope-manager": "8.11.0",
+				"@typescript-eslint/types": "8.11.0",
+				"@typescript-eslint/typescript-estree": "8.11.0",
+				"@typescript-eslint/visitor-keys": "8.11.0",
 				"debug": "^4.3.4"
 			},
 			"engines": {
@@ -1425,13 +1423,13 @@
 			}
 		},
 		"node_modules/@typescript-eslint/scope-manager": {
-			"version": "8.8.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.1.tgz",
-			"integrity": "sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==",
+			"version": "8.11.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.11.0.tgz",
+			"integrity": "sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/types": "8.8.1",
-				"@typescript-eslint/visitor-keys": "8.8.1"
+				"@typescript-eslint/types": "8.11.0",
+				"@typescript-eslint/visitor-keys": "8.11.0"
 			},
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1442,13 +1440,13 @@
 			}
 		},
 		"node_modules/@typescript-eslint/type-utils": {
-			"version": "8.8.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.1.tgz",
-			"integrity": "sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==",
+			"version": "8.11.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.11.0.tgz",
+			"integrity": "sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/typescript-estree": "8.8.1",
-				"@typescript-eslint/utils": "8.8.1",
+				"@typescript-eslint/typescript-estree": "8.11.0",
+				"@typescript-eslint/utils": "8.11.0",
 				"debug": "^4.3.4",
 				"ts-api-utils": "^1.3.0"
 			},
@@ -1466,9 +1464,9 @@
 			}
 		},
 		"node_modules/@typescript-eslint/types": {
-			"version": "8.8.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.1.tgz",
-			"integrity": "sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==",
+			"version": "8.11.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.11.0.tgz",
+			"integrity": "sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==",
 			"dev": true,
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1479,13 +1477,13 @@
 			}
 		},
 		"node_modules/@typescript-eslint/typescript-estree": {
-			"version": "8.8.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.1.tgz",
-			"integrity": "sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==",
+			"version": "8.11.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.11.0.tgz",
+			"integrity": "sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/types": "8.8.1",
-				"@typescript-eslint/visitor-keys": "8.8.1",
+				"@typescript-eslint/types": "8.11.0",
+				"@typescript-eslint/visitor-keys": "8.11.0",
 				"debug": "^4.3.4",
 				"fast-glob": "^3.3.2",
 				"is-glob": "^4.0.3",
@@ -1531,15 +1529,15 @@
 			}
 		},
 		"node_modules/@typescript-eslint/utils": {
-			"version": "8.8.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.1.tgz",
-			"integrity": "sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==",
+			"version": "8.11.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.11.0.tgz",
+			"integrity": "sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==",
 			"dev": true,
 			"dependencies": {
 				"@eslint-community/eslint-utils": "^4.4.0",
-				"@typescript-eslint/scope-manager": "8.8.1",
-				"@typescript-eslint/types": "8.8.1",
-				"@typescript-eslint/typescript-estree": "8.8.1"
+				"@typescript-eslint/scope-manager": "8.11.0",
+				"@typescript-eslint/types": "8.11.0",
+				"@typescript-eslint/typescript-estree": "8.11.0"
 			},
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1553,12 +1551,12 @@
 			}
 		},
 		"node_modules/@typescript-eslint/visitor-keys": {
-			"version": "8.8.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.1.tgz",
-			"integrity": "sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==",
+			"version": "8.11.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.11.0.tgz",
+			"integrity": "sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/types": "8.8.1",
+				"@typescript-eslint/types": "8.11.0",
 				"eslint-visitor-keys": "^3.4.3"
 			},
 			"engines": {
@@ -1582,9 +1580,9 @@
 			}
 		},
 		"node_modules/@vitest/coverage-v8": {
-			"version": "2.1.2",
-			"resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.1.2.tgz",
-			"integrity": "sha512-b7kHrFrs2urS0cOk5N10lttI8UdJ/yP3nB4JYTREvR5o18cR99yPpK4gK8oQgI42BVv0ILWYUSYB7AXkAUDc0g==",
+			"version": "2.1.3",
+			"resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.1.3.tgz",
+			"integrity": "sha512-2OJ3c7UPoFSmBZwqD2VEkUw6A/tzPF0LmW0ZZhhB8PFxuc+9IBG/FaSM+RLEenc7ljzFvGN+G0nGQoZnh7sy2A==",
 			"dev": true,
 			"dependencies": {
 				"@ampproject/remapping": "^2.3.0",
@@ -1604,8 +1602,8 @@
 				"url": "https://opencollective.com/vitest"
 			},
 			"peerDependencies": {
-				"@vitest/browser": "2.1.2",
-				"vitest": "2.1.2"
+				"@vitest/browser": "2.1.3",
+				"vitest": "2.1.3"
 			},
 			"peerDependenciesMeta": {
 				"@vitest/browser": {
@@ -1614,13 +1612,13 @@
 			}
 		},
 		"node_modules/@vitest/expect": {
-			"version": "2.1.2",
-			"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.2.tgz",
-			"integrity": "sha512-FEgtlN8mIUSEAAnlvn7mP8vzaWhEaAEvhSXCqrsijM7K6QqjB11qoRZYEd4AKSCDz8p0/+yH5LzhZ47qt+EyPg==",
+			"version": "2.1.3",
+			"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.3.tgz",
+			"integrity": "sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==",
 			"dev": true,
 			"dependencies": {
-				"@vitest/spy": "2.1.2",
-				"@vitest/utils": "2.1.2",
+				"@vitest/spy": "2.1.3",
+				"@vitest/utils": "2.1.3",
 				"chai": "^5.1.1",
 				"tinyrainbow": "^1.2.0"
 			},
@@ -1629,12 +1627,12 @@
 			}
 		},
 		"node_modules/@vitest/mocker": {
-			"version": "2.1.2",
-			"resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.2.tgz",
-			"integrity": "sha512-ExElkCGMS13JAJy+812fw1aCv2QO/LBK6CyO4WOPAzLTmve50gydOlWhgdBJPx2ztbADUq3JVI0C5U+bShaeEA==",
+			"version": "2.1.3",
+			"resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.3.tgz",
+			"integrity": "sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==",
 			"dev": true,
 			"dependencies": {
-				"@vitest/spy": "^2.1.0-beta.1",
+				"@vitest/spy": "2.1.3",
 				"estree-walker": "^3.0.3",
 				"magic-string": "^0.30.11"
 			},
@@ -1642,7 +1640,7 @@
 				"url": "https://opencollective.com/vitest"
 			},
 			"peerDependencies": {
-				"@vitest/spy": "2.1.2",
+				"@vitest/spy": "2.1.3",
 				"msw": "^2.3.5",
 				"vite": "^5.0.0"
 			},
@@ -1656,11 +1654,10 @@
 			}
 		},
 		"node_modules/@vitest/pretty-format": {
-			"version": "2.1.2",
-			"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.2.tgz",
-			"integrity": "sha512-FIoglbHrSUlOJPDGIrh2bjX1sNars5HbxlcsFKCtKzu4+5lpsRhOCVcuzp0fEhAGHkPZRIXVNzPcpSlkoZ3LuA==",
+			"version": "2.1.3",
+			"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.3.tgz",
+			"integrity": "sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==",
 			"dev": true,
-			"license": "MIT",
 			"dependencies": {
 				"tinyrainbow": "^1.2.0"
 			},
@@ -1669,12 +1666,12 @@
 			}
 		},
 		"node_modules/@vitest/runner": {
-			"version": "2.1.2",
-			"resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.2.tgz",
-			"integrity": "sha512-UCsPtvluHO3u7jdoONGjOSil+uON5SSvU9buQh3lP7GgUXHp78guN1wRmZDX4wGK6J10f9NUtP6pO+SFquoMlw==",
+			"version": "2.1.3",
+			"resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.3.tgz",
+			"integrity": "sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==",
 			"dev": true,
 			"dependencies": {
-				"@vitest/utils": "2.1.2",
+				"@vitest/utils": "2.1.3",
 				"pathe": "^1.1.2"
 			},
 			"funding": {
@@ -1682,12 +1679,12 @@
 			}
 		},
 		"node_modules/@vitest/snapshot": {
-			"version": "2.1.2",
-			"resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.2.tgz",
-			"integrity": "sha512-xtAeNsZ++aRIYIUsek7VHzry/9AcxeULlegBvsdLncLmNCR6tR8SRjn8BbDP4naxtccvzTqZ+L1ltZlRCfBZFA==",
+			"version": "2.1.3",
+			"resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.3.tgz",
+			"integrity": "sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==",
 			"dev": true,
 			"dependencies": {
-				"@vitest/pretty-format": "2.1.2",
+				"@vitest/pretty-format": "2.1.3",
 				"magic-string": "^0.30.11",
 				"pathe": "^1.1.2"
 			},
@@ -1696,9 +1693,9 @@
 			}
 		},
 		"node_modules/@vitest/spy": {
-			"version": "2.1.2",
-			"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.2.tgz",
-			"integrity": "sha512-GSUi5zoy+abNRJwmFhBDC0yRuVUn8WMlQscvnbbXdKLXX9dE59YbfwXxuJ/mth6eeqIzofU8BB5XDo/Ns/qK2A==",
+			"version": "2.1.3",
+			"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.3.tgz",
+			"integrity": "sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==",
 			"dev": true,
 			"dependencies": {
 				"tinyspy": "^3.0.0"
@@ -1708,12 +1705,12 @@
 			}
 		},
 		"node_modules/@vitest/utils": {
-			"version": "2.1.2",
-			"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.2.tgz",
-			"integrity": "sha512-zMO2KdYy6mx56btx9JvAqAZ6EyS3g49krMPPrgOp1yxGZiA93HumGk+bZ5jIZtOg5/VBYl5eBmGRQHqq4FG6uQ==",
+			"version": "2.1.3",
+			"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.3.tgz",
+			"integrity": "sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==",
 			"dev": true,
 			"dependencies": {
-				"@vitest/pretty-format": "2.1.2",
+				"@vitest/pretty-format": "2.1.3",
 				"loupe": "^3.1.1",
 				"tinyrainbow": "^1.2.0"
 			},
@@ -2061,9 +2058,9 @@
 			}
 		},
 		"node_modules/chai": {
-			"version": "5.1.1",
-			"resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz",
-			"integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==",
+			"version": "5.1.2",
+			"resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz",
+			"integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==",
 			"dev": true,
 			"dependencies": {
 				"assertion-error": "^2.0.1",
@@ -2509,18 +2506,17 @@
 			}
 		},
 		"node_modules/eslint": {
-			"version": "9.12.0",
-			"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.12.0.tgz",
-			"integrity": "sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==",
+			"version": "9.13.0",
+			"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz",
+			"integrity": "sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==",
 			"dev": true,
-			"license": "MIT",
 			"dependencies": {
 				"@eslint-community/eslint-utils": "^4.2.0",
 				"@eslint-community/regexpp": "^4.11.0",
 				"@eslint/config-array": "^0.18.0",
-				"@eslint/core": "^0.6.0",
+				"@eslint/core": "^0.7.0",
 				"@eslint/eslintrc": "^3.1.0",
-				"@eslint/js": "9.12.0",
+				"@eslint/js": "9.13.0",
 				"@eslint/plugin-kit": "^0.2.0",
 				"@humanfs/node": "^0.16.5",
 				"@humanwhocodes/module-importer": "^1.0.1",
@@ -4257,9 +4253,9 @@
 			}
 		},
 		"node_modules/picocolors": {
-			"version": "1.1.0",
-			"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
-			"integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
+			"version": "1.1.1",
+			"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+			"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
 			"dev": true
 		},
 		"node_modules/picomatch": {
@@ -5165,9 +5161,9 @@
 			}
 		},
 		"node_modules/typescript": {
-			"version": "5.6.2",
-			"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz",
-			"integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==",
+			"version": "5.6.3",
+			"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
+			"integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
 			"dev": true,
 			"bin": {
 				"tsc": "bin/tsc",
@@ -5178,14 +5174,14 @@
 			}
 		},
 		"node_modules/typescript-eslint": {
-			"version": "8.8.1",
-			"resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.8.1.tgz",
-			"integrity": "sha512-R0dsXFt6t4SAFjUSKFjMh4pXDtq04SsFKCVGDP3ZOzNP7itF0jBcZYU4fMsZr4y7O7V7Nc751dDeESbe4PbQMQ==",
+			"version": "8.11.0",
+			"resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.11.0.tgz",
+			"integrity": "sha512-cBRGnW3FSlxaYwU8KfAewxFK5uzeOAp0l2KebIlPDOT5olVi65KDG/yjBooPBG0kGW/HLkoz1c/iuBFehcS3IA==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/eslint-plugin": "8.8.1",
-				"@typescript-eslint/parser": "8.8.1",
-				"@typescript-eslint/utils": "8.8.1"
+				"@typescript-eslint/eslint-plugin": "8.11.0",
+				"@typescript-eslint/parser": "8.11.0",
+				"@typescript-eslint/utils": "8.11.0"
 			},
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -5262,9 +5258,9 @@
 			"license": "MIT"
 		},
 		"node_modules/vite": {
-			"version": "5.4.8",
-			"resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz",
-			"integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==",
+			"version": "5.4.10",
+			"resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz",
+			"integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==",
 			"dev": true,
 			"dependencies": {
 				"esbuild": "^0.21.3",
@@ -5321,9 +5317,9 @@
 			}
 		},
 		"node_modules/vite-node": {
-			"version": "2.1.2",
-			"resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.2.tgz",
-			"integrity": "sha512-HPcGNN5g/7I2OtPjLqgOtCRu/qhVvBxTUD3qzitmL0SrG1cWFzxzhMDWussxSbrRYWqnKf8P2jiNhPMSN+ymsQ==",
+			"version": "2.1.3",
+			"resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.3.tgz",
+			"integrity": "sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==",
 			"dev": true,
 			"dependencies": {
 				"cac": "^6.7.14",
@@ -5342,18 +5338,18 @@
 			}
 		},
 		"node_modules/vitest": {
-			"version": "2.1.2",
-			"resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.2.tgz",
-			"integrity": "sha512-veNjLizOMkRrJ6xxb+pvxN6/QAWg95mzcRjtmkepXdN87FNfxAss9RKe2far/G9cQpipfgP2taqg0KiWsquj8A==",
-			"dev": true,
-			"dependencies": {
-				"@vitest/expect": "2.1.2",
-				"@vitest/mocker": "2.1.2",
-				"@vitest/pretty-format": "^2.1.2",
-				"@vitest/runner": "2.1.2",
-				"@vitest/snapshot": "2.1.2",
-				"@vitest/spy": "2.1.2",
-				"@vitest/utils": "2.1.2",
+			"version": "2.1.3",
+			"resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.3.tgz",
+			"integrity": "sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==",
+			"dev": true,
+			"dependencies": {
+				"@vitest/expect": "2.1.3",
+				"@vitest/mocker": "2.1.3",
+				"@vitest/pretty-format": "^2.1.3",
+				"@vitest/runner": "2.1.3",
+				"@vitest/snapshot": "2.1.3",
+				"@vitest/spy": "2.1.3",
+				"@vitest/utils": "2.1.3",
 				"chai": "^5.1.1",
 				"debug": "^4.3.6",
 				"magic-string": "^0.30.11",
@@ -5364,7 +5360,7 @@
 				"tinypool": "^1.0.0",
 				"tinyrainbow": "^1.2.0",
 				"vite": "^5.0.0",
-				"vite-node": "2.1.2",
+				"vite-node": "2.1.3",
 				"why-is-node-running": "^2.3.0"
 			},
 			"bin": {
@@ -5379,8 +5375,8 @@
 			"peerDependencies": {
 				"@edge-runtime/vm": "*",
 				"@types/node": "^18.0.0 || >=20.0.0",
-				"@vitest/browser": "2.1.2",
-				"@vitest/ui": "2.1.2",
+				"@vitest/browser": "2.1.3",
+				"@vitest/ui": "2.1.3",
 				"happy-dom": "*",
 				"jsdom": "*"
 			},
diff --git a/package.json b/package.json
index b964331..f67ed1e 100644
--- a/package.json
+++ b/package.json
@@ -32,21 +32,21 @@
 		"prepublishOnly": "node scripts/check-release.mjs"
 	},
 	"devDependencies": {
-		"@eslint/js": "9.12.0",
-		"@microsoft/api-extractor": "7.47.9",
+		"@eslint/js": "9.13.0",
+		"@microsoft/api-extractor": "7.47.11",
 		"@types/eslint__js": "8.42.3",
-		"@types/node": "22.7.5",
+		"@types/node": "22.7.9",
 		"@types/seedrandom": "3.0.8",
 		"@types/uuid": "10.0.0",
-		"@vitest/coverage-v8": "2.1.2",
+		"@vitest/coverage-v8": "2.1.3",
 		"chalk": "5.3.0",
-		"eslint": "9.12.0",
+		"eslint": "9.13.0",
 		"eslint-plugin-import": "2.31.0",
 		"semver": "7.6.3",
 		"ts-node": "10.9.2",
-		"typescript": "5.6.2",
-		"typescript-eslint": "8.8.1",
-		"vitest": "2.1.2"
+		"typescript": "5.6.3",
+		"typescript-eslint": "8.11.0",
+		"vitest": "2.1.3"
 	},
 	"dependencies": {
 		"seedrandom": "3.0.5",
diff --git a/playground/src/App.vue b/playground/src/App.vue
index 8a870b1..9fb1351 100644
--- a/playground/src/App.vue
+++ b/playground/src/App.vue
@@ -1,6 +1,7 @@
 <template>
 <div id="root">
-	<h1>AiScript (v{{ AISCRIPT_VERSION }}) Playground</h1>
+	<Settings v-if="showSettings" @exit="showSettings = false" />
+	<h1>AiScript (v{{ AISCRIPT_VERSION }}) Playground<button id="show-settings-button" @click="showSettings = true">Settings</button></h1>
 	<div id="grid1">
 		<div id="editor" class="container">
 			<header>Input<div class="actions"><button @click="setCode">FizzBuzz</button></div></header>
@@ -57,12 +58,14 @@ import { highlight, languages } from 'prismjs/components/prism-core';
 import 'prismjs/components/prism-clike';
 import 'prismjs/components/prism-javascript';
 import 'prismjs/themes/prism-okaidia.css';
+import Settings, { settings } from './Settings.vue';
 
 const script = ref(window.localStorage.getItem('script') || '<: "Hello, AiScript!"');
 
 const ast = ref(null);
 const logs = ref([]);
 const syntaxErrorMessage = ref(null);
+const showSettings = ref(false);
 
 watch(script, () => {
 	window.localStorage.setItem('script', script.value);
@@ -119,7 +122,9 @@ const run = async () => {
 				}); break;
 				default: break;
 			}
-		}
+		},
+		irqRate: settings.value.irqRate,
+		irqSleep: settings.value.irqSleep,
 	});
 
 	try {
@@ -167,6 +172,11 @@ pre {
 #root > h1 {
 	font-size: 1.5em;
 	margin: 16px 16px 0 16px;
+	display: flex;
+}
+
+#show-settings-button {
+	margin-left: auto;
 }
 
 #grid1 {
diff --git a/playground/src/Settings.vue b/playground/src/Settings.vue
new file mode 100644
index 0000000..28f7f60
--- /dev/null
+++ b/playground/src/Settings.vue
@@ -0,0 +1,59 @@
+<template>
+<div ref="bg" id="settings-bg" @click="(e) => e.target === bg && $emit('exit')">
+	<div id="settings-body">
+		<div class="settings-item">
+			<header>IRQ Rate</header>
+			<input type="number" v-model="settings.irqRate" />
+		</div>
+		<div class="settings-item">
+			<header>IRQ Sleep Time</header>
+			<div>
+				<input type="radio" value="time" v-model="irqSleepMethod" />
+				time(milliseconds)
+				<input type="number" v-model="irqSleepTime" :disabled="irqSleepMethod !== 'time'" />
+			</div>
+			<div>
+				<input type="radio" value="requestIdleCallback" v-model="irqSleepMethod" />
+				requestIdleCallback
+			</div>
+		</div>
+	</div>
+</div>
+</template>
+
+<script>
+import { ref, computed } from 'vue';
+const irqSleepTime = ref(5);
+const irqSleepMethod = ref('time');
+export const settings = ref({
+	irqRate: 300,
+	irqSleep: computed(() => ({
+		time: irqSleepTime.value,
+		requestIdleCallback: () => new Promise(cb => requestIdleCallback(cb)),
+	})[irqSleepMethod.value]),
+});
+</script>
+
+<script setup>
+const emits = defineEmits(['exit']);
+const bg = ref(null);
+</script>
+
+<style>
+#settings-bg {
+	position: fixed;
+	top: 0;
+	left: 0;
+	z-index: 10;
+	width: 100vw;
+	height: 100vh;
+	background: #0008;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+}
+#settings-body {
+	display: grid;
+	gap: 1em;
+}
+</style>
diff --git a/src/error.ts b/src/error.ts
index ba01d0b..e62c9b6 100644
--- a/src/error.ts
+++ b/src/error.ts
@@ -86,3 +86,12 @@ export class AiScriptUserError extends AiScriptRuntimeError {
 		super(message, info);
 	}
 }
+/**
+ * Host side configuration errors.
+ */
+export class AiScriptHostsideError extends AiScriptError {
+	public name = 'Host';
+	constructor(message: string, info?: unknown) {
+		super(message, info);
+	}
+}
diff --git a/src/interpreter/index.ts b/src/interpreter/index.ts
index 9f8c772..a9517de 100644
--- a/src/interpreter/index.ts
+++ b/src/interpreter/index.ts
@@ -3,7 +3,7 @@
  */
 
 import { autobind } from '../utils/mini-autobind.js';
-import { AiScriptError, NonAiScriptError, AiScriptNamespaceError, AiScriptIndexOutOfRangeError, AiScriptRuntimeError } from '../error.js';
+import { AiScriptError, NonAiScriptError, AiScriptNamespaceError, AiScriptIndexOutOfRangeError, AiScriptRuntimeError, AiScriptHostsideError } from '../error.js';
 import { Scope } from './scope.js';
 import { std } from './lib/std.js';
 import { assertNumber, assertString, assertFunction, assertBoolean, assertObject, assertArray, eq, isObject, isArray, expectAny, reprValue } from './util.js';
@@ -14,9 +14,6 @@ import type { JsValue } from './util.js';
 import type { Value, VFn } from './value.js';
 import type * as Ast from '../node.js';
 
-const IRQ_RATE = 300;
-const IRQ_AT = IRQ_RATE - 1;
-
 export type LogObject = {
 	scope?: string;
 	var?: string;
@@ -29,6 +26,8 @@ export class Interpreter {
 	public scope: Scope;
 	private abortHandlers: (() => void)[] = [];
 	private vars: Record<string, Variable> = {};
+	private irqRate: number;
+	private irqSleep: () => Promise<void>;
 
 	constructor(
 		consts: Record<string, Value>,
@@ -39,6 +38,8 @@ export class Interpreter {
 			log?(type: string, params: LogObject): void;
 			maxStep?: number;
 			abortOnError?: boolean;
+			irqRate?: number;
+			irqSleep?: number | (() => Promise<void>);
 		} = {},
 	) {
 		const io = {
@@ -70,6 +71,25 @@ export class Interpreter {
 				default: break;
 			}
 		};
+
+		if (!((this.opts.irqRate ?? 300) >= 0)) {
+			throw new AiScriptHostsideError(`Invalid IRQ rate (${this.opts.irqRate}): must be non-negative number`);
+		}
+		this.irqRate = this.opts.irqRate ?? 300;
+
+		const sleep = (time: number) => (
+			(): Promise<void> => new Promise(resolve => setTimeout(resolve, time))
+		);
+
+		if (typeof this.opts.irqSleep === 'function') {
+			this.irqSleep = this.opts.irqSleep;
+		} else if (this.opts.irqSleep === undefined) {
+			this.irqSleep = sleep(5);
+		} else if (this.opts.irqSleep >= 0) {
+			this.irqSleep = sleep(this.opts.irqSleep);
+		} else {
+			throw new AiScriptHostsideError('irqSleep must be a function or a positive number.');
+		}
 	}
 
 	@autobind
@@ -262,7 +282,10 @@ export class Interpreter {
 	@autobind
 	private async __eval(node: Ast.Node, scope: Scope): Promise<Value> {
 		if (this.stop) return NULL;
-		if (this.stepCount % IRQ_RATE === IRQ_AT) await new Promise(resolve => setTimeout(resolve, 5));
+		// irqRateが小数の場合は不等間隔になる
+		if (this.irqRate !== 0 && this.stepCount % this.irqRate >= this.irqRate - 1) {
+			await this.irqSleep();
+		}
 		this.stepCount++;
 		if (this.opts.maxStep && this.stepCount > this.opts.maxStep) {
 			throw new AiScriptRuntimeError('max step exceeded');
diff --git a/src/interpreter/primitive-props.ts b/src/interpreter/primitive-props.ts
index bc3541b..df3c18c 100644
--- a/src/interpreter/primitive-props.ts
+++ b/src/interpreter/primitive-props.ts
@@ -334,12 +334,12 @@ const PRIMITIVE_PROPS: {
 		splice: (target: VArr): VFn => FN_NATIVE(async ([idx, rc, vs], opts) => {
 			assertNumber(idx);
 			const index = (idx.value < -target.value.length) ? 0
-						: (idx.value < 0) ? target.value.length + idx.value
-						: (idx.value >= target.value.length) ? target.value.length
-						: idx.value;
+				: (idx.value < 0) ? target.value.length + idx.value
+				: (idx.value >= target.value.length) ? target.value.length
+				: idx.value;
 
 			const remove_count = (rc != null) ? (assertNumber(rc), rc.value)
-								: target.value.length - index;
+				: target.value.length - index;
 
 			const items = (vs != null) ? (assertArray(vs), vs.value) : [];
 
@@ -378,7 +378,7 @@ const PRIMITIVE_PROPS: {
 			});
 			const mapped_vals = await Promise.all(vals);
 			return ARR(mapped_vals.flat());
-    }),
+		}),
 
 		every: (target: VArr): VFn => FN_NATIVE(async ([fn], opts) => {
 			assertFunction(fn);
diff --git a/src/utils/random/genrng.ts b/src/utils/random/genrng.ts
index f6a6a4a..799308f 100644
--- a/src/utils/random/genrng.ts
+++ b/src/utils/random/genrng.ts
@@ -1,9 +1,9 @@
 import seedrandom from 'seedrandom';
 import { FN_NATIVE, NULL, NUM } from '../../interpreter/value.js';
+import { textEncoder } from '../../const.js';
 import { SeedRandomWrapper } from './seedrandom.js';
 import { ChaCha20 } from './chacha20.js';
 import type { VNativeFn, VNull, Value } from '../../interpreter/value.js';
-import { textEncoder } from '../../const.js';
 
 export function GenerateLegacyRandom(seed: Value | undefined) : VNativeFn | VNull {
 	if (!seed || seed.type !== 'num' && seed.type !== 'str') return NULL;
diff --git a/unreleased/irq-config.md b/unreleased/irq-config.md
new file mode 100644
index 0000000..5e3edf6
--- /dev/null
+++ b/unreleased/irq-config.md
@@ -0,0 +1,3 @@
+- For Hosts: Interpreterのオプションに`irqRate`と`irqSleep`を追加
+  - `irqRate`はInterpreterの定期休止が何ステップに一回起こるかを指定する数値
+  - `irqSleep`は休止時間をミリ秒で指定する数値、または休止ごとにawaitされるPromiseを返す関数


Test patch:
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 9c55704..6918802 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -18,10 +18,10 @@ jobs:
 
     steps:
       - name: Checkout
-        uses: actions/checkout@v4.2.1
+        uses: actions/checkout@v4.2.2
 
       - name: Setup Node.js ${{ matrix.node-version }}
-        uses: actions/setup-node@v4.0.4
+        uses: actions/setup-node@v4.1.0
         with:
           node-version: ${{ matrix.node-version }}
 
diff --git a/test/interpreter.ts b/test/interpreter.ts
index 70c4089..203b5a4 100644
--- a/test/interpreter.ts
+++ b/test/interpreter.ts
@@ -1,9 +1,9 @@
 import * as assert from 'assert';
-import { describe, expect, test } from 'vitest';
+import { describe, expect, test, vi, beforeEach, afterEach } from 'vitest';
 import { Parser, Interpreter, values, errors, utils, Ast } from '../src';
 
 let { FN_NATIVE } = values;
-let { AiScriptRuntimeError, AiScriptIndexOutOfRangeError } = errors;
+let { AiScriptRuntimeError, AiScriptIndexOutOfRangeError, AiScriptHostsideError } = errors;
 
 describe('Scope', () => {
 	test.concurrent('getAll', async () => {
@@ -114,3 +114,93 @@ describe('error location', () => {
 		`)).resolves.toEqual({ line: 2, column: 6});
 	});
 });
+
+describe('IRQ', () => {
+	describe('irqSleep is function', () => {
+		async function countSleeps(irqRate: number): Promise<number> {
+			let count = 0;
+			const interpreter = new Interpreter({}, {
+				irqRate,
+				// It's safe only when no massive loop occurs
+				irqSleep: async () => count++,
+			});
+			await interpreter.exec(Parser.parse(`
+			'Ai-chan kawaii'
+			'Ai-chan kawaii'
+			'Ai-chan kawaii'
+			'Ai-chan kawaii'
+			'Ai-chan kawaii'
+			'Ai-chan kawaii'
+			'Ai-chan kawaii'
+			'Ai-chan kawaii'
+			'Ai-chan kawaii'
+			'Ai-chan kawaii'`));
+			return count;
+		}
+
+		test.concurrent.each([
+			[0, 0],
+			[1, 10],
+			[2, 5],
+			[10, 1],
+			[Infinity, 0],
+		])('rate = %d', async (rate, count) => {
+			return expect(countSleeps(rate)).resolves.toEqual(count);
+		});
+
+		test.concurrent.each(
+			[-1, NaN],
+		)('rate = %d', async (rate, count) => {
+			return expect(countSleeps(rate)).rejects.toThrow(AiScriptHostsideError);
+		});
+	});
+
+	describe('irqSleep is number', () => {
+		// This function does IRQ 10 times so takes 10 * irqSleep milliseconds in sum when executed.
+		async function countSleeps(irqSleep: number): Promise<void> {
+			const interpreter = new Interpreter({}, {
+				irqRate: 1,
+				irqSleep,
+			});
+			await interpreter.exec(Parser.parse(`
+			'Ai-chan kawaii'
+			'Ai-chan kawaii'
+			'Ai-chan kawaii'
+			'Ai-chan kawaii'
+			'Ai-chan kawaii'
+			'Ai-chan kawaii'
+			'Ai-chan kawaii'
+			'Ai-chan kawaii'
+			'Ai-chan kawaii'
+			'Ai-chan kawaii'`));
+		}
+
+		beforeEach(() => {
+			vi.useFakeTimers();
+		})
+
+		afterEach(() => {
+			vi.restoreAllMocks();
+		})
+
+		test('It ends', async () => {
+			const countSleepsSpy = vi.fn(countSleeps);
+			countSleepsSpy(100);
+			await vi.advanceTimersByTimeAsync(1000);
+			return expect(countSleepsSpy).toHaveResolved();
+		});
+
+		test('It takes time', async () => {
+			const countSleepsSpy = vi.fn(countSleeps);
+			countSleepsSpy(100);
+			await vi.advanceTimersByTimeAsync(999);
+			return expect(countSleepsSpy).not.toHaveResolved();
+		});
+
+		test.each(
+			[-1, NaN]
+		)('Invalid number: %d', (time) => {
+			return expect(countSleeps(time)).rejects.toThrow(AiScriptHostsideError);
+		});
+	});
+});