diff --git a/CHANGES.md b/CHANGES.md index ea82669..de68e02 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -40,6 +40,14 @@ ## Development +## Version 1.2.1 + +### Fixed + +- The update notice no longer announces the version you are already running: + a cached answer is re-checked against the running version, so `self update` + is not followed by "a newer version is available (1.2.0 -> 1.2.0)". + ## Version 1.2.0 ### Added diff --git a/apps/cli/package.json b/apps/cli/package.json index 2b1f12a..76f1920 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -1,6 +1,6 @@ { "name": "ailoud", - "version": "1.2.0", + "version": "1.2.1", "type": "module", "bin": { "ailoud": "./dist/bin/ailoud.js" diff --git a/apps/cli/src/updateNotice.test.ts b/apps/cli/src/updateNotice.test.ts index 165700a..8df8648 100644 --- a/apps/cli/src/updateNotice.test.ts +++ b/apps/cli/src/updateNotice.test.ts @@ -66,6 +66,67 @@ describe('startUpdateCheck', () => { expect(await notice.finish()).toBeNull(); }); + /** + * Reported from a real terminal: `self update` from 1.1.0 to 1.2.0, and the + * line right after it said "a newer version is available (1.2.0 -> 1.2.0)". + * The cache is keyed on nothing but time, so the answer written while 1.1.0 + * was running stayed authoritative for a day after the version it named + * became the version in use. + */ + describe('a cached answer this run has already caught up with', () => { + const cacheWith = (target: string): MemFs => + new MemFs({ + [updateCachePath(DATA_DIR)]: JSON.stringify({ + checkedAt: '2026-01-01T00:00:00.000Z', + target, + }), + }); + + it('says nothing when the cached target is the running version', async () => { + const deps = baseDeps({ + fs: cacheWith('1.2.0'), + currentVersion: '1.2.0', + published: hangingPublished(), + }); + + expect(await startUpdateCheck(deps).finish()).toBeNull(); + }); + + it('says nothing when the running version is newer than the cached target', async () => { + // A local build, or an install from a tarball ahead of the registry. + const deps = baseDeps({ + fs: cacheWith('1.2.0'), + currentVersion: '1.3.0', + published: hangingPublished(), + }); + + expect(await startUpdateCheck(deps).finish()).toBeNull(); + }); + + it('still speaks up when the cached target really is newer', async () => { + const deps = baseDeps({ + fs: cacheWith('1.3.0'), + currentVersion: '1.2.0', + published: hangingPublished(), + }); + + expect(await startUpdateCheck(deps).finish()).toBe('1.3.0'); + }); + + it('says nothing, rather than throwing, when it cannot read its own version', async () => { + // `chooseUpdateTarget` throws on a version it cannot parse, and this + // path runs outside the try that guards the fetch. A notice must never + // be the reason a command fails. + const deps = baseDeps({ + fs: cacheWith('1.3.0'), + currentVersion: 'not-a-version', + published: hangingPublished(), + }); + + expect(await startUpdateCheck(deps).finish()).toBeNull(); + }); + }); + it('prints from the cache when this run could not refresh it', async () => { const fs = new MemFs({ [updateCachePath(DATA_DIR)]: JSON.stringify({ diff --git a/apps/cli/src/updateNotice.ts b/apps/cli/src/updateNotice.ts index fcd4492..48e02ad 100644 --- a/apps/cli/src/updateNotice.ts +++ b/apps/cli/src/updateNotice.ts @@ -257,6 +257,35 @@ async function writeCache(deps: NoticeDeps, target: string | null): Promise 1.2.0)", because the entry written while 1.1.0 ran stayed + * authoritative afterwards. The same applies to any install that happens + * outside ailoud -- `npm i -g ailoud` leaves no trace here to invalidate. + * + * `chooseUpdateTarget` again rather than a fresh comparison: whether a + * version counts as an upgrade is one policy (it also decides what a + * pre-release may move to), and asking the same function twice is what keeps + * the answer from drifting from the one the fetch path gives. `deprecated` + * is false because a deprecated release was already excluded when this + * target was chosen; the cache stores only the string that survived. + * + * Throwing is not an option: this runs outside the try that guards the fetch, + * and a notice must never be why a command failed. + */ +function stillNewer(deps: NoticeDeps, target: string | null): string | null { + if (target === null) return null; + try { + return chooseUpdateTarget(deps.currentVersion, [{ version: target, deprecated: false }]); + } catch { + return null; + } +} + export function startUpdateCheck(deps: NoticeDeps): UpdateCheck { if (suppressed(deps)) return { finish: async () => null }; @@ -264,7 +293,7 @@ export function startUpdateCheck(deps: NoticeDeps): UpdateCheck { const inflight = (async (): Promise => { const cached = await readCache(deps); - if (cached !== null) return cached.target; + if (cached !== null) return stillNewer(deps, cached.target); try { const versions = await deps.published(controller.signal); const target = chooseUpdateTarget(deps.currentVersion, versions); diff --git a/package.json b/package.json index 6ffeace..f1c14e9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ailoud-workspace", - "version": "1.2.0", + "version": "1.2.1", "private": true, "type": "module", "description": "Multilingual audio-to-text CLI with a recording library and LLM summaries", @@ -31,9 +31,9 @@ "devDependencies": { "@eslint/js": "10.0.1", "@types/jest": "30.0.0", - "@types/node": "26.2.0", + "@types/node": "26.3.0", "@vitest/coverage-v8": "4.1.11", - "eslint": "10.9.0", + "eslint": "10.9.1", "eslint-config-prettier": "10.1.8", "eslint-import-resolver-typescript": "4.4.5", "eslint-plugin-boundaries": "7.2.0", @@ -41,7 +41,7 @@ "prettier": "3.9.6", "ts-jest": "29.4.12", "typescript": "6.0.3", - "typescript-eslint": "8.67.0", + "typescript-eslint": "8.68.0", "vitest": "4.1.11" } } diff --git a/packages/core/package.json b/packages/core/package.json index 8f8319b..35b854f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@ailoud/core", - "version": "1.2.0", + "version": "1.2.1", "type": "module", "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/providers/package.json b/packages/providers/package.json index 6d87362..4b9fff4 100644 --- a/packages/providers/package.json +++ b/packages/providers/package.json @@ -1,6 +1,6 @@ { "name": "@ailoud/providers", - "version": "1.2.0", + "version": "1.2.1", "type": "module", "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 98e8222..6ebde28 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,58 +10,58 @@ importers: devDependencies: '@eslint/js': specifier: 10.0.1 - version: 10.0.1(eslint@10.9.0) + version: 10.0.1(eslint@10.9.1) '@types/jest': specifier: 30.0.0 version: 30.0.0 '@types/node': - specifier: 26.2.0 - version: 26.2.0 + specifier: 26.3.0 + version: 26.3.0 '@vitest/coverage-v8': specifier: 4.1.11 version: 4.1.11(vitest@4.1.11) eslint: - specifier: 10.9.0 - version: 10.9.0 + specifier: 10.9.1 + version: 10.9.1 eslint-config-prettier: specifier: 10.1.8 - version: 10.1.8(eslint@10.9.0) + version: 10.1.8(eslint@10.9.1) eslint-import-resolver-typescript: specifier: 4.4.5 - version: 4.4.5(eslint@10.9.0) + version: 4.4.5(eslint@10.9.1) eslint-plugin-boundaries: specifier: 7.2.0 - version: 7.2.0(@typescript-eslint/parser@8.67.0(eslint@10.9.0)(typescript@6.0.3))(eslint-import-resolver-typescript@4.4.5(eslint@10.9.0))(eslint@10.9.0) + version: 7.2.0(@typescript-eslint/parser@8.68.0(eslint@10.9.1)(typescript@6.0.3))(eslint-import-resolver-typescript@4.4.5(eslint@10.9.1))(eslint@10.9.1) jest: specifier: 30.4.2 - version: 30.4.2(@types/node@26.2.0) + version: 30.4.2(@types/node@26.3.0) prettier: specifier: 3.9.6 version: 3.9.6 ts-jest: specifier: 29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.4.2(@types/node@26.2.0))(typescript@6.0.3) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.4.2(@types/node@26.3.0))(typescript@6.0.3) typescript: specifier: 6.0.3 version: 6.0.3 typescript-eslint: - specifier: 8.67.0 - version: 8.67.0(eslint@10.9.0)(typescript@6.0.3) + specifier: 8.68.0 + version: 8.68.0(eslint@10.9.1)(typescript@6.0.3) vitest: specifier: 4.1.11 - version: 4.1.11(@types/node@26.2.0)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@26.2.0)(yaml@2.9.0)) + version: 4.1.11(@types/node@26.3.0)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@26.3.0)(yaml@2.9.0)) apps/cli: dependencies: - '@clack/prompts': - specifier: 1.7.0 - version: 1.7.0 '@ailoud/core': specifier: workspace:* version: link:../../packages/core '@ailoud/providers': specifier: workspace:* version: link:../../packages/providers + '@clack/prompts': + specifier: 1.7.0 + version: 1.7.0 '@modelcontextprotocol/sdk': specifier: 1.30.0 version: 1.30.0(zod@4.4.3) @@ -644,8 +644,8 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/node@26.2.0': - resolution: {integrity: sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==} + '@types/node@26.3.0': + resolution: {integrity: sha512-L3fgrnchriRC2ExBflb8j4uZZURHZfQsmQeyVzhjcHW4kkwVyo8/0h1B2MVzMTrYUJYu6G7EWs14hW/L9putqw==} '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -656,63 +656,63 @@ packages: '@types/yargs@17.0.35': resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} - '@typescript-eslint/eslint-plugin@8.67.0': - resolution: {integrity: sha512-Un7Heoyj65NREbKAyIrFxeM143NZpExWmy1Nep4DLeQOeLlTeumPjoNKnBrU5D5moWXbPJgRa5Uwcdu0faVNGQ==} + '@typescript-eslint/eslint-plugin@8.68.0': + resolution: {integrity: sha512-WASHDpCm6qO5jj9g1a+8NiW5+GCkAyLReR56/4VruYmNgfUmqpxOfZ2Yfb8xGfJPWv5Qi6LSD8sXdces3vbp/Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.67.0 + '@typescript-eslint/parser': ^8.68.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.67.0': - resolution: {integrity: sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w==} + '@typescript-eslint/parser@8.68.0': + resolution: {integrity: sha512-fHq2VC1kpyYfvEcbiMjOpySY4WS7voEp89yAThrHRX5sm9j2lzYppCb2umFMEed4fWcyeLjHxrz0mpjNBaBxMQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.67.0': - resolution: {integrity: sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==} + '@typescript-eslint/project-service@8.68.0': + resolution: {integrity: sha512-5GQtWZCXFcFYux955pvoS02WLc49pXNlvIxocKjS0clvwo3in1RdlzVKyiqQH9vE5AKWFLTaUgeQkOrTS+0Qxw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.67.0': - resolution: {integrity: sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==} + '@typescript-eslint/scope-manager@8.68.0': + resolution: {integrity: sha512-T5eXpcaJNg8bhjHJ8Rjp68Vq/QBteYtTKY8TZqVNPaUbuz0f6jI9t6aDkylwvalpAB9XTTFeFOjrjXAZ3YvmVA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.67.0': - resolution: {integrity: sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==} + '@typescript-eslint/tsconfig-utils@8.68.0': + resolution: {integrity: sha512-F7zrGQfiJHojPwi8vhxZQC1tWtJzvL74cK/nqri2lk8YUXvYaYwl263xOJ69jDWPUk1hmcdoayFwk9lX09npVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.67.0': - resolution: {integrity: sha512-aVWDXbRmdXO9siTfX4ditQI1T9+zVcNazT48EJCD0v40/9RIFoUgZ05CmGEq9H2gixRpjUn/iplwvlcvutJW/Q==} + '@typescript-eslint/type-utils@8.68.0': + resolution: {integrity: sha512-X77zqoY1EjeWGs/0JNxeaMfp5C5lIz4Tw8y66F1Ne8Faq6g424sBNYM6xBAqElfGZPLpWS+CZAp0DXyKDzWiHg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.67.0': - resolution: {integrity: sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==} + '@typescript-eslint/types@8.68.0': + resolution: {integrity: sha512-9RnpsGJjrAllCMefGVVsImJM24YurhC0Q1h4UbvivtvOqXmR/vEJge2OoE++z9m6hyg8T1Q8t5SNT6tHSbrxcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.67.0': - resolution: {integrity: sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==} + '@typescript-eslint/typescript-estree@8.68.0': + resolution: {integrity: sha512-OKKsD0tYmoNiU5PW2zehO1yO56jYOm1ShYlxon/Z0SJNidAkdVg86eg9ruRuoXf8xfnuWZGbwDsStkoXbZtIIA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.67.0': - resolution: {integrity: sha512-U9D1FdwEWBwok3hxxSdhclMb0twvt9QnjIQ0VfQ1AiX2epnpSgv2ubVDsayOFyY8K6FX+AQ7E0FKWVG3iKsj1A==} + '@typescript-eslint/utils@8.68.0': + resolution: {integrity: sha512-PB5gJMMOg0Q5P1tsgWtEAqQacJXq0qEqRHDX/YJ4FaTMLfZPpHB3gjl2EJuiZyPABxmj4ZQYiY9m1bdAJ5y7tQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.67.0': - resolution: {integrity: sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==} + '@typescript-eslint/visitor-keys@8.68.0': + resolution: {integrity: sha512-YR65gGdGvTUAWLldC3xLOvOzamdGzB4A5/N8rehEaHs3Zvoe39BhgY+u0SPch1OvrVTfLcc55wsSgK2NcnTS/A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.3': @@ -974,8 +974,8 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - baseline-browser-mapping@2.11.18: - resolution: {integrity: sha512-1iEmLEYSiE1SeBoAfPo/Mnx3PzfzHUkDK61ASkCpuk3YXugYLH5DYK1SzqV55F8FMI6s0F+/tCP7Polz1QRjxw==} + baseline-browser-mapping@2.11.19: + resolution: {integrity: sha512-Grytf1xOxOEMTGRwx6rLGKkTabd4vMg3VrKdj/7joCmV0qgh4QwMMO6xh34YEXQqirAuUdgQGa5orJQQ+69RBw==} engines: {node: '>=6.0.0'} hasBin: true @@ -1036,8 +1036,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001809: - resolution: {integrity: sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ==} + caniuse-lite@1.0.30001810: + resolution: {integrity: sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==} chai@6.2.2: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} @@ -1172,8 +1172,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.412: - resolution: {integrity: sha512-z4rMe3esBzlzovKHj4gxJnsCGZRK5l4baUvm+gCGJBPE+gsyUMKsuU9tnEUtI1dOebXz1ytAPGjvXhmQ7rIPwA==} + electron-to-chromium@1.5.414: + resolution: {integrity: sha512-aYlviXiaXBbzvKgyALpcMmqa3Np3sDr0XnZbEG62n2UpZFbEcjQ4EEMOLGzVPhwVnwTz0lvKY+GcARbunuHekw==} emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -1292,8 +1292,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.9.0: - resolution: {integrity: sha512-5KeEOJZBfEVA47boFiBsf+6MmmJpffM7qEBg4pLla2e4nlKgdKlqCW0oSLOGsT8Wl5uCGJptLV1bkaiShj90Gw==} + eslint@10.9.1: + resolution: {integrity: sha512-9VaAkDURekixUQJy0oJYl2DcN6oKMfxay7XzaGYAWQwsb6qfKf+x76R2k1L8kb1boc+FyCAaTA9GmiKaaiaF+A==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -2108,6 +2108,10 @@ packages: resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} engines: {node: '>=12'} + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} + engines: {node: '>=12'} + pirates@4.0.7: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} @@ -2433,8 +2437,8 @@ packages: resolution: {integrity: sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==} engines: {node: '>= 18'} - typescript-eslint@8.67.0: - resolution: {integrity: sha512-S2udFs8tCKEKffuJ4TB1idGUZiXdCPGi3IPBGWXarbLQ5UPXORV8QEVzJ4gCRduURMb5EkpNCdjbk0eDIuI8Yg==} + typescript-eslint@8.68.0: + resolution: {integrity: sha512-MHy0Y0ynqeEbx/S45+i/bBssdy3X6KNBfmJAP35GrgtNxu2TQ5K5xsFDhAnmsq1jvpdoZOPG1LGtJo0HWqYCrQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -2825,10 +2829,10 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} - '@boundaries/elements@3.1.1(@typescript-eslint/parser@8.67.0(eslint@10.9.0)(typescript@6.0.3))(eslint-import-resolver-typescript@4.4.5(eslint@10.9.0))(eslint@10.9.0)': + '@boundaries/elements@3.1.1(@typescript-eslint/parser@8.68.0(eslint@10.9.1)(typescript@6.0.3))(eslint-import-resolver-typescript@4.4.5(eslint@10.9.1))(eslint@10.9.1)': dependencies: eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.67.0(eslint@10.9.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.5(eslint@10.9.0))(eslint@10.9.0) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.68.0(eslint@10.9.1)(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.5(eslint@10.9.1))(eslint@10.9.1) handlebars: 4.7.9 is-core-module: 2.16.1 micromatch: 4.0.8 @@ -2870,9 +2874,9 @@ snapshots: tslib: 2.8.1 optional: true - '@eslint-community/eslint-utils@4.10.1(eslint@10.9.0)': + '@eslint-community/eslint-utils@4.10.1(eslint@10.9.1)': dependencies: - eslint: 10.9.0 + eslint: 10.9.1 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -2893,9 +2897,9 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.9.0)': + '@eslint/js@10.0.1(eslint@10.9.1)': optionalDependencies: - eslint: 10.9.0 + eslint: 10.9.1 '@eslint/object-schema@3.0.5': {} @@ -2946,7 +2950,7 @@ snapshots: '@jest/console@30.4.1': dependencies: '@jest/types': 30.4.1 - '@types/node': 26.2.0 + '@types/node': 26.3.0 chalk: 4.1.2 jest-message-util: 30.4.1 jest-util: 30.4.1 @@ -2960,7 +2964,7 @@ snapshots: '@jest/test-result': 30.4.1 '@jest/transform': 30.4.1 '@jest/types': 30.4.1 - '@types/node': 26.2.0 + '@types/node': 26.3.0 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 4.4.0 @@ -2968,7 +2972,7 @@ snapshots: fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.11 jest-changed-files: 30.4.1 - jest-config: 30.4.2(@types/node@26.2.0) + jest-config: 30.4.2(@types/node@26.3.0) jest-haste-map: 30.4.1 jest-message-util: 30.4.1 jest-regex-util: 30.4.0 @@ -2994,7 +2998,7 @@ snapshots: dependencies: '@jest/fake-timers': 30.4.1 '@jest/types': 30.4.1 - '@types/node': 26.2.0 + '@types/node': 26.3.0 jest-mock: 30.4.1 '@jest/expect-utils@30.4.1': @@ -3012,7 +3016,7 @@ snapshots: dependencies: '@jest/types': 30.4.1 '@sinonjs/fake-timers': 15.4.0 - '@types/node': 26.2.0 + '@types/node': 26.3.0 jest-message-util: 30.4.1 jest-mock: 30.4.1 jest-util: 30.4.1 @@ -3030,7 +3034,7 @@ snapshots: '@jest/pattern@30.4.0': dependencies: - '@types/node': 26.2.0 + '@types/node': 26.3.0 jest-regex-util: 30.4.0 '@jest/reporters@30.4.1': @@ -3041,7 +3045,7 @@ snapshots: '@jest/transform': 30.4.1 '@jest/types': 30.4.1 '@jridgewell/trace-mapping': 0.3.31 - '@types/node': 26.2.0 + '@types/node': 26.3.0 chalk: 4.1.2 collect-v8-coverage: 1.0.3 exit-x: 0.2.2 @@ -3117,7 +3121,7 @@ snapshots: '@jest/schemas': 30.4.1 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 26.2.0 + '@types/node': 26.3.0 '@types/yargs': 17.0.35 chalk: 4.1.2 @@ -3289,7 +3293,7 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/node@26.2.0': + '@types/node@26.3.0': dependencies: undici-types: 8.3.0 @@ -3301,15 +3305,15 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.9.0)(typescript@6.0.3))(eslint@10.9.0)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.68.0(@typescript-eslint/parser@8.68.0(eslint@10.9.1)(typescript@6.0.3))(eslint@10.9.1)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.67.0(eslint@10.9.0)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.67.0 - '@typescript-eslint/type-utils': 8.67.0(eslint@10.9.0)(typescript@6.0.3) - '@typescript-eslint/utils': 8.67.0(eslint@10.9.0)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.67.0 - eslint: 10.9.0 + '@typescript-eslint/parser': 8.68.0(eslint@10.9.1)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.68.0 + '@typescript-eslint/type-utils': 8.68.0(eslint@10.9.1)(typescript@6.0.3) + '@typescript-eslint/utils': 8.68.0(eslint@10.9.1)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.68.0 + eslint: 10.9.1 ignore: 7.0.6 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) @@ -3317,56 +3321,56 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.67.0(eslint@10.9.0)(typescript@6.0.3)': + '@typescript-eslint/parser@8.68.0(eslint@10.9.1)(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.67.0 - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/typescript-estree': 8.67.0(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.67.0 + '@typescript-eslint/scope-manager': 8.68.0 + '@typescript-eslint/types': 8.68.0 + '@typescript-eslint/typescript-estree': 8.68.0(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.68.0 debug: 4.4.3 - eslint: 10.9.0 + eslint: 10.9.1 typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.67.0(typescript@6.0.3)': + '@typescript-eslint/project-service@8.68.0(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@6.0.3) - '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/tsconfig-utils': 8.68.0(typescript@6.0.3) + '@typescript-eslint/types': 8.68.0 debug: 4.4.3 typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.67.0': + '@typescript-eslint/scope-manager@8.68.0': dependencies: - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/visitor-keys': 8.67.0 + '@typescript-eslint/types': 8.68.0 + '@typescript-eslint/visitor-keys': 8.68.0 - '@typescript-eslint/tsconfig-utils@8.67.0(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.68.0(typescript@6.0.3)': dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.67.0(eslint@10.9.0)(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.68.0(eslint@10.9.1)(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/typescript-estree': 8.67.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.67.0(eslint@10.9.0)(typescript@6.0.3) + '@typescript-eslint/types': 8.68.0 + '@typescript-eslint/typescript-estree': 8.68.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.68.0(eslint@10.9.1)(typescript@6.0.3) debug: 4.4.3 - eslint: 10.9.0 + eslint: 10.9.1 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.67.0': {} + '@typescript-eslint/types@8.68.0': {} - '@typescript-eslint/typescript-estree@8.67.0(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.68.0(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.67.0(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@6.0.3) - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/visitor-keys': 8.67.0 + '@typescript-eslint/project-service': 8.68.0(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.68.0(typescript@6.0.3) + '@typescript-eslint/types': 8.68.0 + '@typescript-eslint/visitor-keys': 8.68.0 debug: 4.4.3 minimatch: 10.2.6 semver: 7.8.5 @@ -3376,20 +3380,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.67.0(eslint@10.9.0)(typescript@6.0.3)': + '@typescript-eslint/utils@8.68.0(eslint@10.9.1)(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@10.9.0) - '@typescript-eslint/scope-manager': 8.67.0 - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/typescript-estree': 8.67.0(typescript@6.0.3) - eslint: 10.9.0 + '@eslint-community/eslint-utils': 4.10.1(eslint@10.9.1) + '@typescript-eslint/scope-manager': 8.68.0 + '@typescript-eslint/types': 8.68.0 + '@typescript-eslint/typescript-estree': 8.68.0(typescript@6.0.3) + eslint: 10.9.1 typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.67.0': + '@typescript-eslint/visitor-keys@8.68.0': dependencies: - '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/types': 8.68.0 eslint-visitor-keys: 5.0.1 '@ungap/structured-clone@1.3.3': {} @@ -3476,7 +3480,7 @@ snapshots: obug: 2.1.4 std-env: 4.2.0 tinyrainbow: 3.1.1 - vitest: 4.1.11(@types/node@26.2.0)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@26.2.0)(yaml@2.9.0)) + vitest: 4.1.11(@types/node@26.3.0)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@26.3.0)(yaml@2.9.0)) '@vitest/expect@4.1.11': dependencies: @@ -3487,13 +3491,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.1 - '@vitest/mocker@4.1.11(vite@8.2.2(@types/node@26.2.0)(yaml@2.9.0))': + '@vitest/mocker@4.1.11(vite@8.2.2(@types/node@26.3.0)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.11 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.2.2(@types/node@26.2.0)(yaml@2.9.0) + vite: 8.2.2(@types/node@26.3.0)(yaml@2.9.0) '@vitest/pretty-format@4.1.11': dependencies: @@ -3637,7 +3641,7 @@ snapshots: balanced-match@4.0.4: {} - baseline-browser-mapping@2.11.18: {} + baseline-browser-mapping@2.11.19: {} body-parser@2.3.0: dependencies: @@ -3672,9 +3676,9 @@ snapshots: browserslist@4.28.8: dependencies: - baseline-browser-mapping: 2.11.18 - caniuse-lite: 1.0.30001809 - electron-to-chromium: 1.5.412 + baseline-browser-mapping: 2.11.19 + caniuse-lite: 1.0.30001810 + electron-to-chromium: 1.5.414 node-releases: 2.0.53 update-browserslist-db: 1.3.1(browserslist@4.28.8) @@ -3706,7 +3710,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001809: {} + caniuse-lite@1.0.30001810: {} chai@6.2.2: {} @@ -3800,7 +3804,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.412: {} + electron-to-chromium@1.5.414: {} emittery@0.13.1: {} @@ -3832,9 +3836,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.8(eslint@10.9.0): + eslint-config-prettier@10.1.8(eslint@10.9.1): dependencies: - eslint: 10.9.0 + eslint: 10.9.1 eslint-import-context@0.1.9(unrs-resolver@1.12.2): dependencies: @@ -3851,10 +3855,10 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@4.4.5(eslint@10.9.0): + eslint-import-resolver-typescript@4.4.5(eslint@10.9.1): dependencies: debug: 4.4.3 - eslint: 10.9.0 + eslint: 10.9.1 eslint-import-context: 0.1.9(unrs-resolver@1.12.2) get-tsconfig: 4.14.3 is-bun-module: 2.0.0 @@ -3864,24 +3868,24 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.67.0(eslint@10.9.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.5(eslint@10.9.0))(eslint@10.9.0): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.68.0(eslint@10.9.1)(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.5(eslint@10.9.1))(eslint@10.9.1): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.67.0(eslint@10.9.0)(typescript@6.0.3) - eslint: 10.9.0 + '@typescript-eslint/parser': 8.68.0(eslint@10.9.1)(typescript@6.0.3) + eslint: 10.9.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 4.4.5(eslint@10.9.0) + eslint-import-resolver-typescript: 4.4.5(eslint@10.9.1) transitivePeerDependencies: - supports-color - eslint-plugin-boundaries@7.2.0(@typescript-eslint/parser@8.67.0(eslint@10.9.0)(typescript@6.0.3))(eslint-import-resolver-typescript@4.4.5(eslint@10.9.0))(eslint@10.9.0): + eslint-plugin-boundaries@7.2.0(@typescript-eslint/parser@8.68.0(eslint@10.9.1)(typescript@6.0.3))(eslint-import-resolver-typescript@4.4.5(eslint@10.9.1))(eslint@10.9.1): dependencies: - '@boundaries/elements': 3.1.1(@typescript-eslint/parser@8.67.0(eslint@10.9.0)(typescript@6.0.3))(eslint-import-resolver-typescript@4.4.5(eslint@10.9.0))(eslint@10.9.0) + '@boundaries/elements': 3.1.1(@typescript-eslint/parser@8.68.0(eslint@10.9.1)(typescript@6.0.3))(eslint-import-resolver-typescript@4.4.5(eslint@10.9.1))(eslint@10.9.1) chalk: 4.1.2 - eslint: 10.9.0 + eslint: 10.9.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.67.0(eslint@10.9.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.5(eslint@10.9.0))(eslint@10.9.0) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.68.0(eslint@10.9.1)(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.5(eslint@10.9.1))(eslint@10.9.1) handlebars: 4.7.9 micromatch: 4.0.8 transitivePeerDependencies: @@ -3901,9 +3905,9 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.9.0: + eslint@10.9.1: dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@10.9.0) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.9.1) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.5 '@eslint/config-helpers': 0.7.0 @@ -4308,7 +4312,7 @@ snapshots: '@jest/expect': 30.4.1 '@jest/test-result': 30.4.1 '@jest/types': 30.4.1 - '@types/node': 26.2.0 + '@types/node': 26.3.0 chalk: 4.1.2 co: 4.6.0 dedent: 1.7.2 @@ -4328,7 +4332,7 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@30.4.2(@types/node@26.2.0): + jest-cli@30.4.2(@types/node@26.3.0): dependencies: '@jest/core': 30.4.2 '@jest/test-result': 30.4.1 @@ -4336,7 +4340,7 @@ snapshots: chalk: 4.1.2 exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 30.4.2(@types/node@26.2.0) + jest-config: 30.4.2(@types/node@26.3.0) jest-util: 30.4.1 jest-validate: 30.4.1 yargs: 17.7.3 @@ -4347,7 +4351,7 @@ snapshots: - supports-color - ts-node - jest-config@30.4.2(@types/node@26.2.0): + jest-config@30.4.2(@types/node@26.3.0): dependencies: '@babel/core': 7.29.7 '@jest/get-type': 30.1.0 @@ -4373,7 +4377,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 26.2.0 + '@types/node': 26.3.0 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -4402,7 +4406,7 @@ snapshots: '@jest/environment': 30.4.1 '@jest/fake-timers': 30.4.1 '@jest/types': 30.4.1 - '@types/node': 26.2.0 + '@types/node': 26.3.0 jest-mock: 30.4.1 jest-util: 30.4.1 jest-validate: 30.4.1 @@ -4410,14 +4414,14 @@ snapshots: jest-haste-map@30.4.1: dependencies: '@jest/types': 30.4.1 - '@types/node': 26.2.0 + '@types/node': 26.3.0 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 jest-regex-util: 30.4.0 jest-util: 30.4.1 jest-worker: 30.4.1 - picomatch: 4.0.5 + picomatch: 4.0.7 walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 @@ -4450,7 +4454,7 @@ snapshots: jest-mock@30.4.1: dependencies: '@jest/types': 30.4.1 - '@types/node': 26.2.0 + '@types/node': 26.3.0 jest-util: 30.4.1 jest-pnp-resolver@1.2.3(jest-resolve@30.4.1): @@ -4484,7 +4488,7 @@ snapshots: '@jest/test-result': 30.4.1 '@jest/transform': 30.4.1 '@jest/types': 30.4.1 - '@types/node': 26.2.0 + '@types/node': 26.3.0 chalk: 4.1.2 emittery: 0.13.1 exit-x: 0.2.2 @@ -4513,7 +4517,7 @@ snapshots: '@jest/test-result': 30.4.1 '@jest/transform': 30.4.1 '@jest/types': 30.4.1 - '@types/node': 26.2.0 + '@types/node': 26.3.0 chalk: 4.1.2 cjs-module-lexer: 2.2.1 collect-v8-coverage: 1.0.3 @@ -4560,11 +4564,11 @@ snapshots: jest-util@30.4.1: dependencies: '@jest/types': 30.4.1 - '@types/node': 26.2.0 + '@types/node': 26.3.0 chalk: 4.1.2 ci-info: 4.4.0 graceful-fs: 4.2.11 - picomatch: 4.0.5 + picomatch: 4.0.7 jest-validate@30.4.1: dependencies: @@ -4579,7 +4583,7 @@ snapshots: dependencies: '@jest/test-result': 30.4.1 '@jest/types': 30.4.1 - '@types/node': 26.2.0 + '@types/node': 26.3.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -4588,18 +4592,18 @@ snapshots: jest-worker@30.4.1: dependencies: - '@types/node': 26.2.0 + '@types/node': 26.3.0 '@ungap/structured-clone': 1.3.3 jest-util: 30.4.1 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@30.4.2(@types/node@26.2.0): + jest@30.4.2(@types/node@26.3.0): dependencies: '@jest/core': 30.4.2 '@jest/types': 30.4.1 import-local: 3.2.0 - jest-cli: 30.4.2(@types/node@26.2.0) + jest-cli: 30.4.2(@types/node@26.3.0) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -4872,6 +4876,8 @@ snapshots: picomatch@4.0.5: {} + picomatch@4.0.7: {} + pirates@4.0.7: {} pkce-challenge@5.0.1: {} @@ -5153,12 +5159,12 @@ snapshots: dependencies: typescript: 6.0.3 - ts-jest@29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.4.2(@types/node@26.2.0))(typescript@6.0.3): + ts-jest@29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.4.2(@types/node@26.3.0))(typescript@6.0.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 handlebars: 4.7.9 - jest: 30.4.2(@types/node@26.2.0) + jest: 30.4.2(@types/node@26.3.0) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 @@ -5192,13 +5198,13 @@ snapshots: media-typer: 1.1.1 mime-types: 3.0.2 - typescript-eslint@8.67.0(eslint@10.9.0)(typescript@6.0.3): + typescript-eslint@8.68.0(eslint@10.9.1)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.9.0)(typescript@6.0.3))(eslint@10.9.0)(typescript@6.0.3) - '@typescript-eslint/parser': 8.67.0(eslint@10.9.0)(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.67.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.67.0(eslint@10.9.0)(typescript@6.0.3) - eslint: 10.9.0 + '@typescript-eslint/eslint-plugin': 8.68.0(@typescript-eslint/parser@8.68.0(eslint@10.9.1)(typescript@6.0.3))(eslint@10.9.1)(typescript@6.0.3) + '@typescript-eslint/parser': 8.68.0(eslint@10.9.1)(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.68.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.68.0(eslint@10.9.1)(typescript@6.0.3) + eslint: 10.9.1 typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -5257,22 +5263,22 @@ snapshots: vary@1.1.2: {} - vite@8.2.2(@types/node@26.2.0)(yaml@2.9.0): + vite@8.2.2(@types/node@26.3.0)(yaml@2.9.0): dependencies: lightningcss: 1.33.0 - picomatch: 4.0.5 + picomatch: 4.0.7 postcss: 8.5.26 rolldown: 1.2.5 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 26.2.0 + '@types/node': 26.3.0 fsevents: 2.3.3 yaml: 2.9.0 - vitest@4.1.11(@types/node@26.2.0)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@26.2.0)(yaml@2.9.0)): + vitest@4.1.11(@types/node@26.3.0)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@26.3.0)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.11 - '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@26.2.0)(yaml@2.9.0)) + '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@26.3.0)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.11 '@vitest/runner': 4.1.11 '@vitest/snapshot': 4.1.11 @@ -5289,10 +5295,10 @@ snapshots: tinyexec: 1.3.0 tinyglobby: 0.2.17 tinyrainbow: 3.1.1 - vite: 8.2.2(@types/node@26.2.0)(yaml@2.9.0) + vite: 8.2.2(@types/node@26.3.0)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 26.2.0 + '@types/node': 26.3.0 '@vitest/coverage-v8': 4.1.11(vitest@4.1.11) transitivePeerDependencies: - msw