From 8024e307a54978a981c1bae781258650356edab3 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Tue, 28 Jul 2026 23:43:01 +0800 Subject: [PATCH 01/22] Revise interaction service API documentation (#1408) Updated section headings and clarified usage instructions for the interaction service API. --- .../src/content/docs/extensibility/interaction-service.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/frontend/src/content/docs/extensibility/interaction-service.mdx b/src/frontend/src/content/docs/extensibility/interaction-service.mdx index 58b971a11..39210558f 100644 --- a/src/frontend/src/content/docs/extensibility/interaction-service.mdx +++ b/src/frontend/src/content/docs/extensibility/interaction-service.mdx @@ -28,11 +28,11 @@ If you need to collect input for a [custom resource command](/fundamentals/custo The `IInteractionService` API is not yet available in the TypeScript AppHost SDK. -## The `IInteractionService` API +## The interaction service API The `IInteractionService` interface is retrieved from the `DistributedApplication` dependency injection container. `IInteractionService` can be injected into types created from DI or resolved from `IServiceProvider`, which is usually available on a context argument passed to events. -When you request `IInteractionService`, be sure to check if it's available for usage. If you attempt to use the interaction service when it's not available (`IInteractionService.IsAvailable` returns `false`), an exception is thrown. For example, the interaction service isn't available when a command is triggered from the CLI. +When you request the interaction service, be sure to check if it's available for usage. If you attempt to use the interaction service when it's not available (`IInteractionService.IsAvailable` returns `false`), an exception is thrown. For example, the interaction service isn't available when a command is triggered from the CLI. ```csharp var interactionService = serviceProvider.GetRequiredService(); From 9aa68083af47da79b63bc15b80f44c1927bf9c08 Mon Sep 17 00:00:00 2001 From: David Pine Date: Tue, 28 Jul 2026 10:43:55 -0500 Subject: [PATCH 02/22] [auto-sec] Consolidate aspire.dev frontend dependency security remediations (#1392) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * build(deps): bump the npm-all group across 1 directory with 32 updates Bumps the npm-all group with 32 updates in the /src/frontend directory: | Package | From | To | | --- | --- | --- | | [@astrojs/markdown-remark](https://github.com/withastro/astro/tree/HEAD/packages/markdown/remark) | `7.2.0` | `7.2.1` | | [@astrojs/mdx](https://github.com/withastro/astro/tree/HEAD/packages/integrations/mdx) | `7.0.0` | `7.0.3` | | [@astrojs/rss](https://github.com/withastro/astro/tree/HEAD/packages/astro-rss) | `4.0.18` | `4.0.19` | | [@astrojs/starlight](https://github.com/withastro/starlight/tree/HEAD/packages/starlight) | `0.41.1` | `0.41.3` | | [@catppuccin/starlight](https://github.com/catppuccin/starlight/tree/HEAD/packages/catppuccin-starlight) | `2.0.1` | `2.1.0` | | [@expressive-code/plugin-collapsible-sections](https://github.com/expressive-code/expressive-code/tree/HEAD/packages/@expressive-code/plugin-collapsible-sections) | `0.44.0` | `0.44.1` | | [@expressive-code/plugin-line-numbers](https://github.com/expressive-code/expressive-code/tree/HEAD/packages/@expressive-code/plugin-line-numbers) | `0.44.0` | `0.44.1` | | [@fontsource-variable/fira-code](https://github.com/fontsource/font-files/tree/HEAD/fonts/variable/fira-code) | `5.2.7` | `5.3.0` | | [@fontsource-variable/outfit](https://github.com/fontsource/font-files/tree/HEAD/fonts/variable/outfit) | `5.2.8` | `5.3.0` | | [@fontsource-variable/rubik](https://github.com/fontsource/font-files/tree/HEAD/fonts/variable/rubik) | `5.2.8` | `5.3.0` | | [@fontsource/poppins](https://github.com/fontsource/font-files/tree/HEAD/fonts/google/poppins) | `5.2.7` | `5.3.0` | | [asciinema-player](https://github.com/asciinema/asciinema-player) | `3.16.0` | `3.17.0` | | [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) | `7.0.3` | `7.1.3` | | [astro-expressive-code](https://github.com/expressive-code/expressive-code/tree/HEAD/packages/astro-expressive-code) | `0.44.0` | `0.44.1` | | [satori](https://github.com/vercel/satori) | `0.26.0` | `0.28.1` | | [satteri](https://github.com/bruits/satteri) | `0.9.4` | `0.9.5` | | [sharp](https://github.com/lovell/sharp) | `0.34.5` | `0.35.3` | | [starlight-github-alerts](https://github.com/HiDeoo/starlight-github-alerts/tree/HEAD/packages/starlight-github-alerts) | `0.3.0` | `0.4.0` | | [starlight-links-validator](https://github.com/HiDeoo/starlight-links-validator/tree/HEAD/packages/starlight-links-validator) | `0.25.1` | `0.25.2` | | [starlight-llms-txt](https://github.com/delucis/starlight-llms-txt/tree/HEAD/packages/starlight-llms-txt) | `0.10.0` | `0.11.0` | | [starlight-page-actions](https://github.com/dlcastillop/starlight-page-actions/tree/HEAD/packages/starlight-page-actions) | `0.6.2` | `0.7.0` | | [@iconify-json/material-icon-theme](https://github.com/iconify/icon-sets) | `1.2.68` | `1.2.69` | | [@types/hast](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/hast) | `3.0.4` | `3.0.5` | | [@unocss/astro](https://github.com/unocss/unocss/tree/HEAD/packages-integrations/astro) | `66.6.8` | `66.7.5` | | [astro-embed](https://github.com/delucis/astro-embed/tree/HEAD/packages/astro-embed) | `0.13.0` | `0.13.1` | | [eslint](https://github.com/eslint/eslint) | `10.6.0` | `10.7.0` | | [prettier](https://github.com/prettier/prettier) | `3.9.1` | `3.9.5` | | [tsx](https://github.com/privatenumber/tsx) | `4.22.4` | `4.23.1` | | [typescript](https://github.com/microsoft/TypeScript) | `6.0.3` | `7.0.2` | | [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.62.0` | `8.65.0` | | [unocss](https://github.com/unocss/unocss/tree/HEAD/packages-presets/unocss) | `66.6.8` | `66.7.5` | | [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.9` | `4.1.10` | Updates `@astrojs/markdown-remark` from 7.2.0 to 7.2.1 - [Release notes](https://github.com/withastro/astro/releases) - [Changelog](https://github.com/withastro/astro/blob/main/packages/markdown/remark/CHANGELOG.md) - [Commits](https://github.com/withastro/astro/commits/@astrojs/markdown-remark@7.2.1/packages/markdown/remark) Updates `@astrojs/mdx` from 7.0.0 to 7.0.3 - [Release notes](https://github.com/withastro/astro/releases) - [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/mdx/CHANGELOG.md) - [Commits](https://github.com/withastro/astro/commits/@astrojs/mdx@7.0.3/packages/integrations/mdx) Updates `@astrojs/rss` from 4.0.18 to 4.0.19 - [Release notes](https://github.com/withastro/astro/releases) - [Changelog](https://github.com/withastro/astro/blob/main/packages/astro-rss/CHANGELOG.md) - [Commits](https://github.com/withastro/astro/commits/@astrojs/rss@4.0.19/packages/astro-rss) Updates `@astrojs/starlight` from 0.41.1 to 0.41.3 - [Release notes](https://github.com/withastro/starlight/releases) - [Changelog](https://github.com/withastro/starlight/blob/main/packages/starlight/CHANGELOG.md) - [Commits](https://github.com/withastro/starlight/commits/@astrojs/starlight@0.41.3/packages/starlight) Updates `@catppuccin/starlight` from 2.0.1 to 2.1.0 - [Release notes](https://github.com/catppuccin/starlight/releases) - [Changelog](https://github.com/catppuccin/starlight/blob/main/packages/catppuccin-starlight/CHANGELOG.md) - [Commits](https://github.com/catppuccin/starlight/commits/v2.1.0/packages/catppuccin-starlight) Updates `@expressive-code/plugin-collapsible-sections` from 0.44.0 to 0.44.1 - [Release notes](https://github.com/expressive-code/expressive-code/releases) - [Changelog](https://github.com/expressive-code/expressive-code/blob/main/packages/@expressive-code/plugin-collapsible-sections/CHANGELOG.md) - [Commits](https://github.com/expressive-code/expressive-code/commits/@expressive-code/plugin-collapsible-sections@0.44.1/packages/@expressive-code/plugin-collapsible-sections) Updates `@expressive-code/plugin-line-numbers` from 0.44.0 to 0.44.1 - [Release notes](https://github.com/expressive-code/expressive-code/releases) - [Changelog](https://github.com/expressive-code/expressive-code/blob/main/packages/@expressive-code/plugin-line-numbers/CHANGELOG.md) - [Commits](https://github.com/expressive-code/expressive-code/commits/@expressive-code/plugin-line-numbers@0.44.1/packages/@expressive-code/plugin-line-numbers) Updates `@fontsource-variable/fira-code` from 5.2.7 to 5.3.0 - [Changelog](https://github.com/fontsource/font-files/blob/main/CHANGELOG.md) - [Commits](https://github.com/fontsource/font-files/commits/HEAD/fonts/variable/fira-code) Updates `@fontsource-variable/outfit` from 5.2.8 to 5.3.0 - [Changelog](https://github.com/fontsource/font-files/blob/main/CHANGELOG.md) - [Commits](https://github.com/fontsource/font-files/commits/HEAD/fonts/variable/outfit) Updates `@fontsource-variable/rubik` from 5.2.8 to 5.3.0 - [Changelog](https://github.com/fontsource/font-files/blob/main/CHANGELOG.md) - [Commits](https://github.com/fontsource/font-files/commits/HEAD/fonts/variable/rubik) Updates `@fontsource/poppins` from 5.2.7 to 5.3.0 - [Changelog](https://github.com/fontsource/font-files/blob/main/CHANGELOG.md) - [Commits](https://github.com/fontsource/font-files/commits/HEAD/fonts/google/poppins) Updates `asciinema-player` from 3.16.0 to 3.17.0 - [Release notes](https://github.com/asciinema/asciinema-player/releases) - [Commits](https://github.com/asciinema/asciinema-player/compare/v3.16.0...v3.17.0) Updates `astro` from 7.0.3 to 7.1.3 - [Release notes](https://github.com/withastro/astro/releases) - [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md) - [Commits](https://github.com/withastro/astro/commits/astro@7.1.3/packages/astro) Updates `astro-expressive-code` from 0.44.0 to 0.44.1 - [Release notes](https://github.com/expressive-code/expressive-code/releases) - [Changelog](https://github.com/expressive-code/expressive-code/blob/main/packages/astro-expressive-code/CHANGELOG.md) - [Commits](https://github.com/expressive-code/expressive-code/commits/astro-expressive-code@0.44.1/packages/astro-expressive-code) Updates `satori` from 0.26.0 to 0.28.1 - [Release notes](https://github.com/vercel/satori/releases) - [Commits](https://github.com/vercel/satori/compare/0.26.0...0.28.1) Updates `satteri` from 0.9.4 to 0.9.5 - [Release notes](https://github.com/bruits/satteri/releases) - [Commits](https://github.com/bruits/satteri/compare/satteri-v0.9.4...satteri-v0.9.5) Updates `sharp` from 0.34.5 to 0.35.3 - [Release notes](https://github.com/lovell/sharp/releases) - [Commits](https://github.com/lovell/sharp/compare/v0.34.5...v0.35.3) Updates `starlight-github-alerts` from 0.3.0 to 0.4.0 - [Release notes](https://github.com/HiDeoo/starlight-github-alerts/releases) - [Changelog](https://github.com/HiDeoo/starlight-github-alerts/blob/main/packages/starlight-github-alerts/CHANGELOG.md) - [Commits](https://github.com/HiDeoo/starlight-github-alerts/commits/starlight-github-alerts@0.4.0/packages/starlight-github-alerts) Updates `starlight-links-validator` from 0.25.1 to 0.25.2 - [Release notes](https://github.com/HiDeoo/starlight-links-validator/releases) - [Changelog](https://github.com/HiDeoo/starlight-links-validator/blob/main/packages/starlight-links-validator/CHANGELOG.md) - [Commits](https://github.com/HiDeoo/starlight-links-validator/commits/starlight-links-validator@0.25.2/packages/starlight-links-validator) Updates `starlight-llms-txt` from 0.10.0 to 0.11.0 - [Release notes](https://github.com/delucis/starlight-llms-txt/releases) - [Changelog](https://github.com/delucis/starlight-llms-txt/blob/main/packages/starlight-llms-txt/CHANGELOG.md) - [Commits](https://github.com/delucis/starlight-llms-txt/commits/starlight-llms-txt@0.11.0/packages/starlight-llms-txt) Updates `starlight-page-actions` from 0.6.2 to 0.7.0 - [Release notes](https://github.com/dlcastillop/starlight-page-actions/releases) - [Commits](https://github.com/dlcastillop/starlight-page-actions/commits/v0.7.0/packages/starlight-page-actions) Updates `@iconify-json/material-icon-theme` from 1.2.68 to 1.2.69 - [Commits](https://github.com/iconify/icon-sets/commits) Updates `@types/hast` from 3.0.4 to 3.0.5 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/hast) Updates `@unocss/astro` from 66.6.8 to 66.7.5 - [Release notes](https://github.com/unocss/unocss/releases) - [Commits](https://github.com/unocss/unocss/commits/v66.7.5/packages-integrations/astro) Updates `astro-embed` from 0.13.0 to 0.13.1 - [Release notes](https://github.com/delucis/astro-embed/releases) - [Changelog](https://github.com/delucis/astro-embed/blob/main/packages/astro-embed/CHANGELOG.md) - [Commits](https://github.com/delucis/astro-embed/commits/astro-embed@0.13.1/packages/astro-embed) Updates `eslint` from 10.6.0 to 10.7.0 - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](https://github.com/eslint/eslint/compare/v10.6.0...v10.7.0) Updates `prettier` from 3.9.1 to 3.9.5 - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/3.9.1...3.9.5) Updates `tsx` from 4.22.4 to 4.23.1 - [Release notes](https://github.com/privatenumber/tsx/releases) - [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs) - [Commits](https://github.com/privatenumber/tsx/compare/v4.22.4...v4.23.1) Updates `typescript` from 6.0.3 to 7.0.2 - [Release notes](https://github.com/microsoft/TypeScript/releases) - [Commits](https://github.com/microsoft/TypeScript/commits) Updates `typescript-eslint` from 8.62.0 to 8.65.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.65.0/packages/typescript-eslint) Updates `unocss` from 66.6.8 to 66.7.5 - [Release notes](https://github.com/unocss/unocss/releases) - [Commits](https://github.com/unocss/unocss/commits/v66.7.5/packages-presets/unocss) Updates `vitest` from 4.1.9 to 4.1.10 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.10/packages/vitest) --- updated-dependencies: - dependency-name: "@astrojs/markdown-remark" dependency-version: 7.2.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm-all - dependency-name: "@astrojs/mdx" dependency-version: 7.0.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm-all - dependency-name: "@astrojs/rss" dependency-version: 4.0.19 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm-all - dependency-name: "@astrojs/starlight" dependency-version: 0.41.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm-all - dependency-name: "@catppuccin/starlight" dependency-version: 2.1.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-all - dependency-name: "@expressive-code/plugin-collapsible-sections" dependency-version: 0.44.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm-all - dependency-name: "@expressive-code/plugin-line-numbers" dependency-version: 0.44.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm-all - dependency-name: "@fontsource-variable/fira-code" dependency-version: 5.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-all - dependency-name: "@fontsource-variable/outfit" dependency-version: 5.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-all - dependency-name: "@fontsource-variable/rubik" dependency-version: 5.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-all - dependency-name: "@fontsource/poppins" dependency-version: 5.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-all - dependency-name: asciinema-player dependency-version: 3.17.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-all - dependency-name: astro dependency-version: 7.1.3 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-all - dependency-name: astro-expressive-code dependency-version: 0.44.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm-all - dependency-name: satori dependency-version: 0.28.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-all - dependency-name: satteri dependency-version: 0.9.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm-all - dependency-name: sharp dependency-version: 0.35.3 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-all - dependency-name: starlight-github-alerts dependency-version: 0.4.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-all - dependency-name: starlight-links-validator dependency-version: 0.25.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm-all - dependency-name: starlight-llms-txt dependency-version: 0.11.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-all - dependency-name: starlight-page-actions dependency-version: 0.7.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-all - dependency-name: "@iconify-json/material-icon-theme" dependency-version: 1.2.69 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm-all - dependency-name: "@types/hast" dependency-version: 3.0.5 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm-all - dependency-name: "@unocss/astro" dependency-version: 66.7.5 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm-all - dependency-name: astro-embed dependency-version: 0.13.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm-all - dependency-name: eslint dependency-version: 10.7.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm-all - dependency-name: prettier dependency-version: 3.9.5 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm-all - dependency-name: tsx dependency-version: 4.23.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm-all - dependency-name: typescript dependency-version: 7.0.2 dependency-type: direct:development update-type: version-update:semver-major dependency-group: npm-all - dependency-name: typescript-eslint dependency-version: 8.65.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm-all - dependency-name: unocss dependency-version: 66.7.5 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm-all - dependency-name: vitest dependency-version: 4.1.10 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm-all ... Signed-off-by: dependabot[bot] * fix: revert typescript 7.x to 6.x to restore twoslash/expressive-code compatibility TypeScript 7.0 ('Corsa') is a native Go rewrite that removes the programmatic JS API entirely. twoslash accesses ts.ModuleKind.Cjs which is undefined in TS7, causing ec.config.mjs -> expressive-code-twoslash -> twoslash to crash at build time with: 'The requested module expressive-code-twoslash does not provide an export named default' and related CJS/ESM resolution failures. Fix: - Revert typescript ^7.0.2 -> ^6.0.3 in package.json - Update pnpm-lock.yaml: swap integrity hash, version specifier, remove the @typescript/typescript-* platform-native binaries (TS7-only), and fix all peer-dep snapshot keys to reference typescript@6.0.3 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(frontend): skip canonicalizing redirects while prerendering Astro 7.1 runs middleware while prerendering the .md/.json API and schema endpoints, so the trailing-slash redirects were baked into dist/ as redirect stubs that shadowed the real prerendered markdown/JSON and broke the api-markdown-routes and schema-routes E2E checks. Guard the redirects behind context.isPrerendered so they only apply to on-demand (SSR/dev) requests. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 572347d9-75da-4b54-9a3d-f9589ef4e39b * fix(security): bump dompurify to 3.4.12 (GHSA-c2j3-45gr-mqc4) and tighten brace-expansion override - dompurify@<3.4.12: '>=3.4.12' — GHSA-c2j3-45gr-mqc4 (low): bypass in CUSTOM_ELEMENT_HANDLING, fixed in 3.4.12 - brace-expansion@<5.0.7: '>=5.0.7' — GHSA-3jxr-9vmj-r5cp (high): DoS via exponential-time expansion, 5.0.7 is the patched version - postcss@8.5.20 already satisfies GHSA-r28c-9q8g-f849 (<=8.5.17) via existing override; no change needed - GHSA-mh99-v99m-4gvg (brace-expansion <=5.0.7): no upstream fix available, documented as unfixable in canonical PR body Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 572347d9-75da-4b54-9a3d-f9589ef4e39b --- src/frontend/package.json | 62 +- src/frontend/pnpm-lock.yaml | 2855 +++++++++++++++--------------- src/frontend/pnpm-workspace.yaml | 4 +- src/frontend/src/middleware.ts | 23 +- 4 files changed, 1489 insertions(+), 1455 deletions(-) diff --git a/src/frontend/package.json b/src/frontend/package.json index 05fe3687b..cf49a837e 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -59,39 +59,39 @@ "dependencies": { "@astro-community/astro-embed-vimeo": "^0.3.12", "@astro-community/astro-embed-youtube": "^0.5.10", - "@astrojs/markdown-remark": "7.2.0", - "@astrojs/mdx": "^7.0.0", - "@astrojs/rss": "^4.0.18", - "@astrojs/starlight": "^0.41.1", - "@catppuccin/starlight": "^2.0.1", - "@expressive-code/plugin-collapsible-sections": "^0.44.0", - "@expressive-code/plugin-line-numbers": "^0.44.0", - "@fontsource-variable/fira-code": "^5.2.7", - "@fontsource-variable/outfit": "^5.2.8", - "@fontsource-variable/rubik": "^5.2.8", - "@fontsource/poppins": "^5.2.7", + "@astrojs/markdown-remark": "7.2.1", + "@astrojs/mdx": "^7.0.3", + "@astrojs/rss": "^4.0.19", + "@astrojs/starlight": "^0.41.3", + "@catppuccin/starlight": "^2.1.0", + "@expressive-code/plugin-collapsible-sections": "^0.44.1", + "@expressive-code/plugin-line-numbers": "^0.44.1", + "@fontsource-variable/fira-code": "^5.3.0", + "@fontsource-variable/outfit": "^5.3.0", + "@fontsource-variable/rubik": "^5.3.0", + "@fontsource/poppins": "^5.3.0", "@jop-software/astro-cookieconsent": "^3.0.1", "@lunariajs/core": "^0.1.1", "@lunariajs/starlight": "^0.1.1", - "asciinema-player": "^3.16.0", - "astro": "^7.0.3", + "asciinema-player": "^3.17.0", + "astro": "^7.1.3", "astro-contributors": "^0.9.0", - "astro-expressive-code": "^0.44.0", + "astro-expressive-code": "^0.44.1", "astro-mermaid": "^2.1.0", "astro-tooltips": "^0.6.2", "hast-util-to-html": "^9.0.5", "mdast-util-to-hast": "^13.2.1", "mermaid": "^11.16.0", "remark-directive": "^4.0.0", - "satori": "^0.26.0", - "satteri": "^0.9.4", - "sharp": "0.34.5", - "starlight-github-alerts": "^0.3.0", + "satori": "^0.28.1", + "satteri": "^0.9.5", + "sharp": "0.35.3", + "starlight-github-alerts": "^0.4.0", "starlight-image-zoom": "^0.15.0", "starlight-kbd": "^0.4.0", - "starlight-links-validator": "^0.25.1", - "starlight-llms-txt": "^0.10.0", - "starlight-page-actions": "^0.6.2", + "starlight-links-validator": "^0.25.2", + "starlight-llms-txt": "^0.11.0", + "starlight-page-actions": "^0.7.0", "starlight-plugin-icons": "^1.1.6", "starlight-scroll-to-top": "^1.0.1", "starlight-sidebar-topics": "^0.8.0", @@ -101,14 +101,14 @@ "@axe-core/playwright": "^4.12.1", "@ec-ts/twoslash": "^1.0.0", "@eslint/js": "^10.0.1", - "@iconify-json/material-icon-theme": "^1.2.68", + "@iconify-json/material-icon-theme": "^1.2.69", "@playwright/test": "^1.61.1", - "@types/hast": "^3.0.4", + "@types/hast": "^3.0.5", "@types/mdast": "^4.0.4", - "@unocss/astro": "66.6.8", - "astro-embed": "^0.13.0", + "@unocss/astro": "66.7.5", + "astro-embed": "^0.13.1", "astro-vtbot": "^3.0.0", - "eslint": "^10.6.0", + "eslint": "^10.7.0", "eslint-config-prettier": "^10.1.8", "expressive-code-twoslash": "^0.6.1", "globals": "^17.7.0", @@ -116,18 +116,18 @@ "http-proxy-agent": "^9.1.0", "https-proxy-agent": "^9.1.0", "node-fetch": "^3.3.2", - "prettier": "^3.9.1", + "prettier": "^3.9.5", "prettier-plugin-astro": "^0.14.1", "rehype-parse": "^9.0.1", "rehype-remark": "^10.0.1", "remark-gfm": "^4.0.1", "remark-stringify": "^11.0.0", - "tsx": "^4.22.4", + "tsx": "^4.23.1", "typescript": "^6.0.3", - "typescript-eslint": "^8.62.0", + "typescript-eslint": "^8.65.0", "unified": "^11.0.5", "unist-util-remove": "^4.0.0", - "unocss": "66.6.8", - "vitest": "^4.1.9" + "unocss": "66.7.5", + "vitest": "^4.1.10" } } diff --git a/src/frontend/pnpm-lock.yaml b/src/frontend/pnpm-lock.yaml index f384188a7..8cd23dd0d 100644 --- a/src/frontend/pnpm-lock.yaml +++ b/src/frontend/pnpm-lock.yaml @@ -8,9 +8,9 @@ overrides: '@anthropic-ai/claude-code@<2.0.31': '>=2.0.31' ajv@<6.14.0: 6.14.0 ajv@>=7.0.0-alpha.0 <8.18.0: 8.18.0 - brace-expansion@<5.0.6: '>=5.0.6' + brace-expansion@<5.0.7: '>=5.0.7' devalue@<5.6.4: '>=5.6.4' - dompurify@<3.4.11: '>=3.4.11' + dompurify@<3.4.12: '>=3.4.12' esbuild@<0.28.1: '>=0.28.1' fast-xml-builder@<1.1.7: '>=1.1.7' fast-xml-parser@<5.7.0: '>=5.7.0' @@ -40,38 +40,38 @@ importers: specifier: ^0.5.10 version: 0.5.10 '@astrojs/markdown-remark': - specifier: 7.2.0 - version: 7.2.0 + specifier: 7.2.1 + version: 7.2.1 '@astrojs/mdx': - specifier: ^7.0.0 - version: 7.0.0(@astrojs/markdown-satteri@0.3.2)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0)) + specifier: ^7.0.3 + version: 7.0.3(@astrojs/markdown-satteri@0.3.4)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) '@astrojs/rss': - specifier: ^4.0.18 - version: 4.0.18 + specifier: ^4.0.19 + version: 4.0.19 '@astrojs/starlight': - specifier: ^0.41.1 - version: 0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3) + specifier: ^0.41.3 + version: 0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3) '@catppuccin/starlight': - specifier: ^2.0.1 - version: 2.0.1(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3))(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0)) + specifier: ^2.1.0 + version: 2.1.0(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3))(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) '@expressive-code/plugin-collapsible-sections': - specifier: ^0.44.0 - version: 0.44.0 + specifier: ^0.44.1 + version: 0.44.1 '@expressive-code/plugin-line-numbers': - specifier: ^0.44.0 - version: 0.44.0 + specifier: ^0.44.1 + version: 0.44.1 '@fontsource-variable/fira-code': - specifier: ^5.2.7 - version: 5.2.7 + specifier: ^5.3.0 + version: 5.3.0 '@fontsource-variable/outfit': - specifier: ^5.2.8 - version: 5.2.8 + specifier: ^5.3.0 + version: 5.3.0 '@fontsource-variable/rubik': - specifier: ^5.2.8 - version: 5.2.8 + specifier: ^5.3.0 + version: 5.3.0 '@fontsource/poppins': - specifier: ^5.2.7 - version: 5.2.7 + specifier: ^5.3.0 + version: 5.3.0 '@jop-software/astro-cookieconsent': specifier: ^3.0.1 version: 3.0.1(vanilla-cookieconsent@3.1.0) @@ -80,22 +80,22 @@ importers: version: 0.1.1 '@lunariajs/starlight': specifier: ^0.1.1 - version: 0.1.1(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3))(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0)) + version: 0.1.1(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3))(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) asciinema-player: - specifier: ^3.16.0 - version: 3.16.0 + specifier: ^3.17.0 + version: 3.17.0 astro: - specifier: ^7.0.3 - version: 7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0) + specifier: ^7.1.3 + version: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) astro-contributors: specifier: ^0.9.0 - version: 0.9.0(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0)) + version: 0.9.0(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) astro-expressive-code: - specifier: ^0.44.0 - version: 0.44.0(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0)) + specifier: ^0.44.1 + version: 0.44.1(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) astro-mermaid: specifier: ^2.1.0 - version: 2.1.0(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(mermaid@11.16.0) + version: 2.1.0(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(mermaid@11.16.0) astro-tooltips: specifier: ^0.6.2 version: 0.6.2 @@ -112,41 +112,41 @@ importers: specifier: ^4.0.0 version: 4.0.0 satori: - specifier: ^0.26.0 - version: 0.26.0 + specifier: ^0.28.1 + version: 0.28.1 satteri: - specifier: ^0.9.4 - version: 0.9.4 + specifier: ^0.9.5 + version: 0.9.5 sharp: - specifier: 0.34.5 - version: 0.34.5 + specifier: 0.35.3 + version: 0.35.3(@types/node@24.13.3) starlight-github-alerts: - specifier: ^0.3.0 - version: 0.3.0(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3)) + specifier: ^0.4.0 + version: 0.4.0(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3)) starlight-image-zoom: specifier: ^0.15.0 - version: 0.15.0(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3)) + version: 0.15.0(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3)) starlight-kbd: specifier: ^0.4.0 - version: 0.4.0(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3)) + version: 0.4.0(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3)) starlight-links-validator: - specifier: ^0.25.1 - version: 0.25.1(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3))(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0)) + specifier: ^0.25.2 + version: 0.25.2(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3))(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) starlight-llms-txt: - specifier: ^0.10.0 - version: 0.10.0(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3))(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0)) + specifier: ^0.11.0 + version: 0.11.0(@astrojs/markdown-satteri@0.3.4)(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3))(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) starlight-page-actions: - specifier: ^0.6.2 - version: 0.6.2(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3))(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) + specifier: ^0.7.0 + version: 0.7.0(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3))(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) starlight-plugin-icons: specifier: ^1.1.6 - version: 1.1.6(patch_hash=ecdc00afa0722d3cdc77871f9debee551f67d1c02d82fea11c5aa41bf0f48a54)(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3))(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3)(unocss@66.6.8(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@unocss/astro@66.6.8(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(zod@4.4.3) + version: 1.1.6(patch_hash=ecdc00afa0722d3cdc77871f9debee551f67d1c02d82fea11c5aa41bf0f48a54)(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3))(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3)(unocss@66.7.5(@unocss/astro@66.7.5(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)))(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)))(zod@4.4.3) starlight-scroll-to-top: specifier: ^1.0.1 - version: 1.0.1(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3)) + version: 1.0.1(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3)) starlight-sidebar-topics: specifier: ^0.8.0 - version: 0.8.0(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3)) + version: 0.8.0(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3)) vanilla-cookieconsent: specifier: ^3.1.0 version: 3.1.0 @@ -159,37 +159,37 @@ importers: version: 1.0.0(typescript@6.0.3) '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.6.0(jiti@1.21.7)) + version: 10.0.1(eslint@10.7.0(jiti@2.7.0)) '@iconify-json/material-icon-theme': - specifier: ^1.2.68 - version: 1.2.68 + specifier: ^1.2.69 + version: 1.2.69 '@playwright/test': specifier: ^1.61.1 version: 1.61.1 '@types/hast': - specifier: ^3.0.4 - version: 3.0.4 + specifier: ^3.0.5 + version: 3.0.5 '@types/mdast': specifier: ^4.0.4 version: 4.0.4 '@unocss/astro': - specifier: 66.6.8 - version: 66.6.8(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) + specifier: 66.7.5 + version: 66.7.5(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) astro-embed: - specifier: ^0.13.0 - version: 0.13.0(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0)) + specifier: ^0.13.1 + version: 0.13.1(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3) astro-vtbot: specifier: ^3.0.0 version: 3.0.0 eslint: - specifier: ^10.6.0 - version: 10.6.0(jiti@1.21.7) + specifier: ^10.7.0 + version: 10.7.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.6.0(jiti@1.21.7)) + version: 10.1.8(eslint@10.7.0(jiti@2.7.0)) expressive-code-twoslash: specifier: ^0.6.1 - version: 0.6.1(@expressive-code/core@0.44.0)(eslint@10.6.0(jiti@1.21.7))(expressive-code@0.44.0)(typescript@6.0.3) + version: 0.6.1(@expressive-code/core@0.44.1)(eslint@10.7.0(jiti@2.7.0))(expressive-code@0.44.1)(typescript@6.0.3) globals: specifier: ^17.7.0 version: 17.7.0 @@ -206,8 +206,8 @@ importers: specifier: ^3.3.2 version: 3.3.2 prettier: - specifier: ^3.9.1 - version: 3.9.1 + specifier: ^3.9.5 + version: 3.9.5 prettier-plugin-astro: specifier: ^0.14.1 version: 0.14.1 @@ -224,14 +224,14 @@ importers: specifier: ^11.0.0 version: 11.0.0 tsx: - specifier: ^4.22.4 - version: 4.22.4 + specifier: ^4.23.1 + version: 4.23.1 typescript: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.62.0 - version: 8.62.0(eslint@10.6.0(jiti@1.21.7))(typescript@6.0.3) + specifier: ^8.65.0 + version: 8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3) unified: specifier: ^11.0.5 version: 11.0.5 @@ -239,11 +239,11 @@ importers: specifier: ^4.0.0 version: 4.0.0 unocss: - specifier: 66.6.8 - version: 66.6.8(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@unocss/astro@66.6.8(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) + specifier: 66.7.5 + version: 66.7.5(@unocss/astro@66.7.5(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)))(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) vitest: - specifier: ^4.1.9 - version: 4.1.9(@types/node@24.13.2)(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) + specifier: ^4.1.10 + version: 4.1.10(@types/node@24.13.3)(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) packages: @@ -253,16 +253,16 @@ packages: '@astro-community/astro-embed-baseline-status@0.2.2': resolution: {integrity: sha512-07TBEb+xQWWZfMuoHohcZv/r2VSB80/1xN5iLhzSqavLmdsMyebEnbc6tvw3yMkxvX9IBLduNA5SxvVkpmowNQ==} - '@astro-community/astro-embed-bluesky@0.2.1': - resolution: {integrity: sha512-rp6pgyEviUH+ysVCVi6bGcHycFSBTc7q3u5IDNyZOiGtCL4BCurDyDvanbKRVlgn50TWKBziomXxvHSLzQPTQQ==} + '@astro-community/astro-embed-bluesky@0.2.3': + resolution: {integrity: sha512-smevGXIBZTOwsS4S4KpSRzQp9v2C2DOg/3kR5cfpLB9Tc1TG4WFy2qxY6zyxzMfHsEAk7RsLdkQqrdEQ8ylf6A==} '@astro-community/astro-embed-gist@0.1.0': resolution: {integrity: sha512-wP3EoBZZjDoPLH6TZzem8jDJxOuweDoK5zWmSra0QBKz3Lry1tZGCwKII5mlnOL2AmTKLrfqrBXTxSGwb7AimQ==} - '@astro-community/astro-embed-integration@0.12.0': - resolution: {integrity: sha512-ozw6ObA5/6tEEynitxKJAtiuSeAaXQmlD1SWbvlCz1vaYyDW9So7xHFVaHtqFYVhonAW3k/9scTJC98cu6xI8Q==} + '@astro-community/astro-embed-integration@0.12.1': + resolution: {integrity: sha512-c0OFLOWnfJ/nOE/pTaSp50PIbcijZ0UeTcn8+/pDuIIGTIAH+Z2LYtxpG5+wktXnxarr47Ed7WEVcKHFV75TLQ==} peerDependencies: - astro: ^5.0.0 || ^6.0.0-alpha + astro: ^5.0.0 || ^6.0.0-alpha || ^7.0.0 '@astro-community/astro-embed-link-preview@0.3.1': resolution: {integrity: sha512-TI++efm08+kJqxqA7bvxBr7+Zt4yCceA6s3wvAQJ87eiaxbLqAFUSQ+paQD66ET9dIC+IuKzHOMwsoDfqBidYw==} @@ -282,100 +282,89 @@ packages: '@astro-community/astro-embed-youtube@0.5.10': resolution: {integrity: sha512-hVlx77KQLjKzElVQnrU5znQ5/E60keVSAPrhuWvQQHuqva5auJtt8YBpOThkwDMuEKXjQybEF1/3C07RZ8MAOQ==} - '@astrojs/compiler-binding-darwin-arm64@0.2.3': - resolution: {integrity: sha512-sJIHeL1ONXEBLob8ZaXfmX6iCftUno08G/cMXj2FJnL0xNbHuELcEq1mjxHVFHNgUYu4P7xJNm2mpc0zUEPoKw==} + '@astrojs/compiler-binding-darwin-arm64@0.3.1': + resolution: {integrity: sha512-IEmEF2fUIlTHtpeE/isyEGVOB14cEyh/LZOFYt6wn3jNyVpdC8aR5OZ+RzFUR/f+8ZDM1LaMwZKvoA7eMyJeFw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@astrojs/compiler-binding-darwin-x64@0.2.3': - resolution: {integrity: sha512-P0NYu6aaIeLCqFfszxxBHL0a5WRaYigNVbDoO654Gi5Q2au5duDb5xZBv5EqUg4qnQVC173FXNvGZu1M7nk+/w==} + '@astrojs/compiler-binding-darwin-x64@0.3.1': + resolution: {integrity: sha512-GF2kIxjpPDLsn94zbZNMsxEmkU828QqnmM7kiQJnaooS3jmI+I7kk6+oI6EpwOsK3femCMdcm+wmOsEqtGrmjQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@astrojs/compiler-binding-linux-arm64-gnu@0.2.3': - resolution: {integrity: sha512-PqVN5AqhuDqfx3ejaerwrC8codpV9jnyKV+IOel027qsJ1anFUJLdjUlY8VVys0xgd8lmqveX11OkcaQj/otTg==} + '@astrojs/compiler-binding-linux-arm64-gnu@0.3.1': + resolution: {integrity: sha512-XJL3SDmOtVrqFhCirNcHwE91+IesJqlgNo23I4qW9QUYfwzm/TBZuH61fgqsb1ttgR1mMYz6ooPWs0JDhwMqpQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@astrojs/compiler-binding-linux-arm64-musl@0.2.3': - resolution: {integrity: sha512-O3e2CbN4yTsRguWYNnRd0p5YQ0H3fb7KpcR0W4R319q/gq5B1pJ7eqNbiO3b8g2AuiEcRTiUz5jeGT9j69cxOQ==} + '@astrojs/compiler-binding-linux-arm64-musl@0.3.1': + resolution: {integrity: sha512-xqE8BVbDoBueK/B47w30PtkVofUWJKGkwoMVE+EOMLf11rnoANxIAdA9FPqY+rng4oNI5ndHGsri1yPj2k8vZQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@astrojs/compiler-binding-linux-x64-gnu@0.2.3': - resolution: {integrity: sha512-hbLBjXVp+96psMe7/7uqyrquGiULXANrq6REVxxPK/I5VzebZ7LHmSfykmByUbLyR1u+K6CTBKgvdQsK2L+2Xw==} + '@astrojs/compiler-binding-linux-x64-gnu@0.3.1': + resolution: {integrity: sha512-1y0StU1qiCuDFH3rmbRJXcxdfHxFPrES1Rd+RLffosvUR7I2cH5SF5SFnBN9vXpzpkmyElZm3Yr47iJBPN7vVA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@astrojs/compiler-binding-linux-x64-musl@0.2.3': - resolution: {integrity: sha512-vIiEvOwrJfHZMaTmqUCrFTIwMYL0+PD3Rvy7kFDQgERyx3zhaw8CPa01MCCqa+/sj344BGrXKZ6ti37SgNLMhw==} + '@astrojs/compiler-binding-linux-x64-musl@0.3.1': + resolution: {integrity: sha512-16q0fYf7kpbmdObZEeZJEup8hQv/whgNwVjrSvT8umrKwLDSnNIWiQpm09lQQu6bweZB0XyIvHwlPitvJhC+hg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@astrojs/compiler-binding-wasm32-wasi@0.2.3': - resolution: {integrity: sha512-p9S2X8z/mUR2SMzAVJRFMCt8YaalKR+pjl2DgpdjzCQc6ww4bo8kiy54tgKqxZeNF5c+/2tCDTQIxVSm9V1FsA==} + '@astrojs/compiler-binding-wasm32-wasi@0.3.1': + resolution: {integrity: sha512-cB456shIwDv/PrVT+2QG7LFndpHkVge5HjqADKZgGaAc9JHVktCtjSrcdkRQ+3tbkPazNKaTLRjXLIiz2NIx9g==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@astrojs/compiler-binding-win32-arm64-msvc@0.2.3': - resolution: {integrity: sha512-vcCG6JttIb5vbSmcxO2O398hpVj7lQ349iS7cjgYP6ZuLVEnw+9qPAr2MM2kJkU5wEGZqJ2gyi/M7UJoPwH1iQ==} + '@astrojs/compiler-binding-win32-arm64-msvc@0.3.1': + resolution: {integrity: sha512-ur/9+If/yTE69mmeX5MqSZndL0HOyx67GeNZUy3N7wVdWpLz9UTJXwyWS4UR2PUQHitghjsM5xoX0Ge56WRVQQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@astrojs/compiler-binding-win32-x64-msvc@0.2.3': - resolution: {integrity: sha512-hKssjNvC36e00Inb1GW1JsVyCFSCGnIjKem4S8q0VIW6cpWAUpvYB4qQU2HIDGD6SDX0ork4F5sWkNWkp2hrGQ==} + '@astrojs/compiler-binding-win32-x64-msvc@0.3.1': + resolution: {integrity: sha512-k0W+kDBzDkNZOqu4kElDvCOIbKw5Ut9S1WZ1Krj3KTgNuBERNKXsMMsRLLcbgfdMdbe7bTekQLshZrrvmYpmwA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@astrojs/compiler-binding@0.2.3': - resolution: {integrity: sha512-Xz3iBNse+hXXD25IXxsuXEt2ai8klAWE15CRm/EQBc9+aE3jXaF07DZx+iakk3HC6NHvWlEPzLPyxsLgPzOJsw==} + '@astrojs/compiler-binding@0.3.1': + resolution: {integrity: sha512-DaAUj29AIBU2XdJ8uwcab8lW5O2pk9pY8AXkcMw0sw77nVa3oeTYRcO+Dvbbpoexf6ThMc0FMWYCQ/wN1/T7oQ==} engines: {node: ^20.19.0 || >=22.12.0} - '@astrojs/compiler-rs@0.2.3': - resolution: {integrity: sha512-JRAtRcPxS4JeAZEIQFQ6GecBs/Wyp4m6/E8vBNxSgVfo1AtRVLUqRCl5oCGOZ0X/BSBB3Vef/7IlzyiGKi2ORA==} + '@astrojs/compiler-rs@0.3.1': + resolution: {integrity: sha512-aT7xkgsbNoS6nriY5qKpbihK43slFHO41iqgHCTdOvn1ifaQxLCc5yXy+6GzAtiafoaC1zA7OwVXCXMsvUZOkg==} + engines: {node: '>=22.12.0'} '@astrojs/compiler@2.13.1': resolution: {integrity: sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==} - '@astrojs/internal-helpers@0.10.0': - resolution: {integrity: sha512-Ry2R3VPeIN4uPCSA4xQc+e+vsJXkalKpEbDc07hV+a/o5Bs2N/s/uDcPJH/05L19DKh9tAy7e6JM3YZ6Cxfezw==} + '@astrojs/internal-helpers@0.10.1': + resolution: {integrity: sha512-5phcroT/vmOOrYuuAxtkbPixy5hePtlz9i8K4OeDv3dNK6/UQRuXPOSRTxIOBbUY5Sonw2UaxjbuVc43Mcir6Q==} - '@astrojs/internal-helpers@0.9.1': - resolution: {integrity: sha512-1pWuARqYom/TzuU3+0ZugsTrKlUydWKuULmDqSMTuonY+9IRDUEGKX/8PXQ1nBxRq3w85uGtd9q9SXfqEldMIQ==} + '@astrojs/markdown-remark@7.2.1': + resolution: {integrity: sha512-jPVNIqTvk+yKviikszv/Y1U4jGUSKpp/Nw48QZV4qjWgp70j4Lkq3lhSDRbWwCfgKvEyO9GHuVbV1dM2WYXy1w==} - '@astrojs/markdown-remark@7.1.2': - resolution: {integrity: sha512-caXZ4Dc2St2dW8luEg22GlP0gupLdztCTQE4EzZOxW1pqWXz9mbeJEuHUkgDYcKWW8tjIHkydYDhWLVoxJ327Q==} + '@astrojs/markdown-satteri@0.3.4': + resolution: {integrity: sha512-6Lvt/bQZEBW+zzdhPblvfZEy5PGEYJaUsUqaCgwHeRPxZJL1gc9I+DRLKWJjjYTWDzVUTzXlMq4WwSK+X34CVw==} - '@astrojs/markdown-remark@7.2.0': - resolution: {integrity: sha512-+YxmVQu1Bd+MFfSzjq1rOJvD9+nIOJzz5YIIhdIH01RrxRkKbyKoEgyIqP3yv51MhzMDgd79QaPv+kCVPT8vHw==} - - '@astrojs/markdown-satteri@0.3.2': - resolution: {integrity: sha512-feXuUPy41gVfeM7EHT1ciUim8ozGr+YHXab9uUBc1Hk8y60DQosO8ldL+AoPXnCAoGj1OChwHfvXmmJ6XVnY9A==} - - '@astrojs/mdx@5.0.6': - resolution: {integrity: sha512-4dKe0ZMmqujofPNDHahzClkwinn9f8jHPcaXcgdGvPAlboD2mjzkUCofli2cBnxYAkdfhC6d50gBJ8i/cH8gHw==} - engines: {node: '>=22.12.0'} - peerDependencies: - astro: ^6.0.0 - - '@astrojs/mdx@7.0.0': - resolution: {integrity: sha512-LKwNA8nnLtEM0auoP6OfH/UnlKe1Ub59qZjbcYkZjPBGw6PkJewWkA/1qwLpECvV6gMDd6TR6eqV9p/VYZrcrQ==} + '@astrojs/mdx@7.0.3': + resolution: {integrity: sha512-RxyIwU0uFam5ftwqKOjpIdhnFxZ/kEikeimLyQy3eGXbHT8WgRGzzesOIHVU8+m9TY8ag5WVOyvV24/GyqPdPQ==} engines: {node: '>=22.12.0'} peerDependencies: - '@astrojs/markdown-satteri': ^0.3.1-alpha.0 - astro: ^7.0.0-alpha.0 + '@astrojs/markdown-satteri': ^0.3.1 + astro: ^7.0.0 peerDependenciesMeta: '@astrojs/markdown-satteri': optional: true @@ -384,14 +373,14 @@ packages: resolution: {integrity: sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA==} engines: {node: '>=22.12.0'} - '@astrojs/rss@4.0.18': - resolution: {integrity: sha512-wc5DwKlbTEdgVAWnHy8krFTeQ42t1v/DJqeq5HtulYK3FYHE4krtRGjoyhS3eXXgfdV6Raoz2RU3wrMTFAitRg==} + '@astrojs/rss@4.0.19': + resolution: {integrity: sha512-e+z5wYeYtffQdHQO8c2tkSd2JEBdAuRXJV4ZEU5IxkYeE6e39woDd7nw1PH1Kk2tEYNCYuKdylnnbhGmt61awA==} '@astrojs/sitemap@3.7.3': resolution: {integrity: sha512-f8euLVsyeAmAkSm/1M2Kb8sL8byQmfgbvBNaHFItCheTj/IpiJYSEWVcqDHZ/yEHxiS7+w87mQkzwZaPHmk5GA==} - '@astrojs/starlight@0.41.1': - resolution: {integrity: sha512-avf2OmrVg6GdVU18juebjjIIuLa+uS3syHuJ/3yDaEFP/8it+YvcxRrYDSf7K6rC4v770UxIddba2hAqQyTeYA==} + '@astrojs/starlight@0.41.3': + resolution: {integrity: sha512-8xsG6UpK581TJmtOc7/pnxHKEbP16rV06VLWaVa7FOyE/VEwnaHOsLtL+miifCEfuiuv0Wn+j8u3JSluRQesMQ==} peerDependencies: '@astrojs/markdown-remark': ^7.2.0 astro: ^7.0.2 @@ -399,41 +388,41 @@ packages: '@astrojs/markdown-remark': optional: true - '@astrojs/telemetry@3.3.2': - resolution: {integrity: sha512-j8DNruA8ors99Al39RYZPJK4DC1bKkoNm93mAMuBhY9TCNC4R8n1q7ovFnJ5qhGh5Lsh7pa1gpQVpYpsJPeTHQ==} + '@astrojs/telemetry@3.3.3': + resolution: {integrity: sha512-C1TLn5sPJr0x4vk56piHWKbnqlEB8BKyte5Y45V02U+D7BGO5eMqZDH5aPjnkXQWJggvmsTXxH03QMZ9NgWLzQ==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} - '@atcute/atproto@3.1.12': - resolution: {integrity: sha512-SaHY0vV5+VfS2ViOcbYtxPmmh82vbxoK5ccHTGn5+ciHNY2arEVcBUFbIQKtsQP4PPZ+lNAVooH+Wh62flvCzg==} + '@atcute/atproto@4.0.3': + resolution: {integrity: sha512-BNylfO7nK0yYBpSpnGhOYgrJTeZWrXHPrb6tOQmp9A3Am0epctIWm6/5lPC4ZNPHpUbwr5w/LzH/v7kjAoKEDg==} peerDependencies: - '@atcute/lexicons': ^1.0.0 + '@atcute/lexicons': ^2.0.0 - '@atcute/bluesky-richtext-segmenter@3.0.0': - resolution: {integrity: sha512-NhZTUKtFpeBBbILwAcxj5u4RobIoHOmGw3CAaaEFNebKYSvmTecrXJ7XufHw5DFOUdr8SiKXQVRQxGAxulMNWg==} + '@atcute/bluesky-richtext-segmenter@3.0.2': + resolution: {integrity: sha512-LXsUuElLQ/gQe2g04SzgTeEbSwhcnmswioGdneve8e3vE+FU353EjuEVIsnA/H5rnGeLswLdrua7Io1twezynA==} - '@atcute/bluesky@3.3.5': - resolution: {integrity: sha512-DmzdCQ1VkPRBsIMr79EDxLWLpg0UNWVahFjMelfzau717r+I3ceJm9SxfOK/of+biLOUj4rlr00tNZT+BRe6Ww==} + '@atcute/bluesky@4.0.14': + resolution: {integrity: sha512-XttxcMS81Ld089FFqSF8c1bBZutlNkTWMxCL150IuQeoC/aKNK1M9jd0RrMtVVsaxiWUFSX5yetfEfOCwIZm7A==} peerDependencies: - '@atcute/lexicons': ^1.0.0 + '@atcute/lexicons': ^2.0.0 - '@atcute/client@4.2.2': - resolution: {integrity: sha512-z16BaGgdO6WIkDCxqeI+zhnh2KmW9jsjd312PJ6YYsoDBpPPqL+WkBmxQ7eO9C6CMFxXsZpYcM81RzZEETA4PQ==} + '@atcute/client@5.1.1': + resolution: {integrity: sha512-cn5/Zi/qo37WtQG6gzIC7JPs0RDzX9Z4eaceX45SpKgLZoc3fCFDJcE7C8xsbxBNfjry2T6PmUxWA8obebZsEQ==} peerDependencies: - '@atcute/lexicons': ^1.0.0 + '@atcute/lexicons': ^2.0.0 - '@atcute/identity@1.1.5': - resolution: {integrity: sha512-5i9nl1UVnBDPCumUwrLNl4BZpGvQ/XABEXbjhiw3PQwRUfpQA8FqByDGxXy2gWpFDrNvQ9yVuOoNsjzxJgjjVA==} + '@atcute/identity@2.0.2': + resolution: {integrity: sha512-amr/EQceqVtBVmjBK4uUF7nKKYuRttadigpvOcAn4dnO6SNSwSjQi8KDH9LnukEotPsSP4UDsQvNfHWEoUcslw==} peerDependencies: - '@atcute/lexicons': ^1.0.0 + '@atcute/lexicons': ^2.0.0 - '@atcute/lexicons@1.3.1': - resolution: {integrity: sha512-2JVxDmHt+QwsUoPyVYWIN7ZLRLfLx4GeJxKFjA9ofStuby9hCMv7Q4GAPIXuJD8wPv8vrnhr1yRNQhiJX+bthw==} + '@atcute/lexicons@2.0.3': + resolution: {integrity: sha512-rs3WqZIQ7lhSYXEvRU/x9rBMY2/fzvrsTgTf2/bgt+MgIQqOKAMySK3TWqfrvesGHDLxFlunHE3uMXeNdEC90Q==} - '@atcute/uint8array@1.1.2': - resolution: {integrity: sha512-n+lutnbN9mKzSjSVdfsYfzJ40u2971H+iLSL46D6d7zcrA4delxusf/ftGFvj5oGW03OioaFgQOy3Lqa3JmTeA==} + '@atcute/uint8array@1.1.5': + resolution: {integrity: sha512-1SFCXOtjE3ismP92CqzbOfYSwJmPPPFbj798wLXSpLv2hSd5OIaUrTh6EqRVR1VZ3ZhR+vaBmd3kxAN0wkw+gQ==} - '@atcute/util-text@1.3.2': - resolution: {integrity: sha512-OoStneAmB/2pkl376axW620SwNq3a/OdfIyRUBrB+3QRHjw/enE+yqFAb8OBOyGcuM/8DiVBzH+92uNwgSK4eg==} + '@atcute/util-text@1.3.4': + resolution: {integrity: sha512-u2UAM7iSM09sQaSG9jtxWFSPgB8boVj50/BoyMvYnhVgGBu+nXIuAcdDUQCsZA44YZgTPPhN/b86JX+jH7SPzQ==} '@axe-core/playwright@4.12.1': resolution: {integrity: sha512-rMd7xriptqKpP+w5265i4Hdkv2X5kbu6uiBi/B2I7uf3hieRBM3qDCfaKPtxfiYb2mKXfF+yLODJwIx+Jv1GDw==} @@ -461,108 +450,55 @@ packages: resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} engines: {node: '>=6.9.0'} - '@badrap/valita@0.4.6': - resolution: {integrity: sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg==} - engines: {node: '>= 18'} - '@braintree/sanitize-url@7.1.2': resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} - '@bruits/satteri-darwin-arm64@0.9.3': - resolution: {integrity: sha512-dRUZZrdwh1asfTOyM1nDNmzolhnHtlIFpqYrl1Tdd3YVcaebKmrfJgGL7NAoGPjbEwYmZxaugrxA0uzw83c0dw==} - cpu: [arm64] - os: [darwin] - - '@bruits/satteri-darwin-arm64@0.9.4': - resolution: {integrity: sha512-W3MSUkr2mZRR8Stoe+lqNAyzQzRuFMU8WffV9IvFSxTok0LGWR0ZZQPLELU4QTRiUbhL2Y4VUP9vV7pj8rHjgg==} + '@bruits/satteri-darwin-arm64@0.9.5': + resolution: {integrity: sha512-iw4nZgx9v30lWo/MTngQqi1pI78KI0DnkSm+lVJGYdmPLgAyDNJigVhpG42/Iq55A6c1Ll8q66ljyyRiQUxwow==} cpu: [arm64] os: [darwin] - '@bruits/satteri-darwin-x64@0.9.3': - resolution: {integrity: sha512-wgNCTRp2hPSpNMGFv5A4+6+VXgRJIlBZ7XKb3iwjV8YjRWNIjzE5zV2fUeYynyZYVRkuJ9aYFqQmWhc1e5H+UQ==} + '@bruits/satteri-darwin-x64@0.9.5': + resolution: {integrity: sha512-6T26Z5Kf3cFW2PSlk9p7zT7yVxvuBSiJvYyz9u8KjYwMTqZyIDOj2wDyNpxKV4+6yUVG7rddq2QwvG/8LJA2+Q==} cpu: [x64] os: [darwin] - '@bruits/satteri-darwin-x64@0.9.4': - resolution: {integrity: sha512-DXOuuaE1lsv7mpk2mOvGrzqoEWEvOIZEO/fXVa7zfM23Iob+CBjBkRAMwpHA4pmZ3j6Gj7WJzPKw0kQ7w741AQ==} - cpu: [x64] - os: [darwin] - - '@bruits/satteri-linux-arm64-gnu@0.9.3': - resolution: {integrity: sha512-A/pWy8Jb/PhDYc2/JFuYh06gFJcsfBUBDl81YydGYBrL/Z4nItDfhNDNOibyeSN/lKKDRlycIHEIajjErk00sQ==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@bruits/satteri-linux-arm64-gnu@0.9.4': - resolution: {integrity: sha512-gJxU9rGGoqIznSEgEzpjxkry24jeHuMpoo1tCIAhHYh7WaD3j5F8zt3jmHxEaN1Uwa+K5+wFgIR2uIGOnMzEmw==} + '@bruits/satteri-linux-arm64-gnu@0.9.5': + resolution: {integrity: sha512-u51id17uJwNEMK9nBlICsq6U31c+XVqQueVBkwRIzZG+gMpS8TOJctt5h5Wz33Z8xnMdTd+adtACVz0yHgGuOA==} cpu: [arm64] os: [linux] libc: [glibc] - '@bruits/satteri-linux-arm64-musl@0.9.3': - resolution: {integrity: sha512-L6YxmyOSickzo4pE5WmZfNTJnjX0MtgKOsuwQfNZECTx9Ir5vl2B37EIwnxe2AybuPPHl+FqVQtthNDUdH4Vgg==} + '@bruits/satteri-linux-arm64-musl@0.9.5': + resolution: {integrity: sha512-v39HxiwGC5Rqm01HksP6+5Y+xKLPlsuVFgIgpEAo+SiQ22c+mJVhS3u7Z6ePAKdhL5NJoK1xq70kLz3L13AhpQ==} cpu: [arm64] os: [linux] libc: [musl] - '@bruits/satteri-linux-arm64-musl@0.9.4': - resolution: {integrity: sha512-Wjzu9hmmAbfmDkBfPI1VdZygJtYz9uYZQnkEyrXi6S2JFi+2pXQ1A5irj38bqm0IZmWcTbk0cVG4NZnPdtVNJA==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@bruits/satteri-linux-x64-gnu@0.9.3': - resolution: {integrity: sha512-RgH6GPihg9Lzs2yHUsMjqiLxfLyOdmBty8sg9pBY9B4CBnvdOzvg8vklqN+C4qrEEdA9TwpbDpHr1AshLKyRpw==} + '@bruits/satteri-linux-x64-gnu@0.9.5': + resolution: {integrity: sha512-F3uO8uFp3pAP5ZGXttwvh57GS7s0lL953tnNdyI2gRyP4kOOkp6pyGojNJzCjkDvWI2Cvb9iNrKok3aqQPauAw==} cpu: [x64] os: [linux] libc: [glibc] - '@bruits/satteri-linux-x64-gnu@0.9.4': - resolution: {integrity: sha512-MR1Q+wMx65FQlbSV7cRqWW87Knp0zkoaIV55Dt+xZl028wJABXEPEEmG3670SLq7lVZvcGIDwCgSg2kCYxvRwA==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@bruits/satteri-linux-x64-musl@0.9.3': - resolution: {integrity: sha512-BeWhVORjNTIomePznUKiMbHZTqC0j7sMXZFsISmbX+po5d33KLkqBqKh6K332CHJ8KUmCWx16FfPjwsoysttQg==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@bruits/satteri-linux-x64-musl@0.9.4': - resolution: {integrity: sha512-T4gxhXve3zyNAZesrXAd/rDZOGRkbfFIUFld4TGsw6BsjoIteCcDji6IMqeXyaWEVSykY2X8Eid2hr6aXGYAaw==} + '@bruits/satteri-linux-x64-musl@0.9.5': + resolution: {integrity: sha512-bicEqglLlz++mWyADaZoP0JY20s4vDfLjaPYgQqC+NI4zZLTOOg1T4GB8aqtc822Pqji8SQBmSrTb7CrP8i08Q==} cpu: [x64] os: [linux] libc: [musl] - '@bruits/satteri-wasm32-wasi@0.9.3': - resolution: {integrity: sha512-dFNcOHKWV2cztCPnYTn7kZ9D7kNOt8N239z5ysFkNHLxJrfK7zaKIXQbfXYN32C+JoVFqAcTIOeWH2+VnsCOHg==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - - '@bruits/satteri-wasm32-wasi@0.9.4': - resolution: {integrity: sha512-/CEG8LUlpaBEnhFnYVn0UnlHFLs51UhrkJBUPDUXLzkadzAcnR88iRA/nOl7Zwhjb4WhfBV4p3P5qeOJMtH0iA==} + '@bruits/satteri-wasm32-wasi@0.9.5': + resolution: {integrity: sha512-zauAuMwfPnKPUkd4AFixRFpXdgKwP2mKgxrIIo2gJzW0/ZneF9dbHnLkojSpaBnCCp7VUL1hIi5WWZvB1CqmAQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@bruits/satteri-win32-arm64-msvc@0.9.3': - resolution: {integrity: sha512-VnwjBHiAra/PNNEza8eSZdQiG4A3PtTJJwUDtOPAc6iTs0BWZwZX8+OPUZE7//yQCBhgvEMcI8vpwsAwCb6qGQ==} + '@bruits/satteri-win32-arm64-msvc@0.9.5': + resolution: {integrity: sha512-SrfE7NEsgZjBvU3c+RR6oQRu0ToXY5uVJEbieXEF0YTctIV2zAVlbaMjWLts074QCgh3a+XHWkR/lWh2VH2LUg==} cpu: [arm64] os: [win32] - '@bruits/satteri-win32-arm64-msvc@0.9.4': - resolution: {integrity: sha512-E1ZPQbgCtFKiU7pFYVndynvY7ne4coeVDUgnVThErSFlJ2ceQCBZrfRTD1lzrIDy63Bbqo+g/cZY9duw+JYjIw==} - cpu: [arm64] - os: [win32] - - '@bruits/satteri-win32-x64-msvc@0.9.3': - resolution: {integrity: sha512-Dsoe4reWe69MyILmMwU6iISIceTW7YIFqbyym7haf9DhUvqkYfMAyp7GMM21JzV0SpG9A2BwzFVP7iq9mmxrpA==} - cpu: [x64] - os: [win32] - - '@bruits/satteri-win32-x64-msvc@0.9.4': - resolution: {integrity: sha512-5I7SiarsNdAUuhJb50CXJPTwr/ECVrBoU+fymoLjChK5fW//+srhY4lstcNTzgFRtQSYfVtm4OQZz16CVMeTeA==} + '@bruits/satteri-win32-x64-msvc@0.9.5': + resolution: {integrity: sha512-5Kw9ZAtTGS8WHizyn+CJhjjfIQrw+7jcZodpmpXJjefnO15M8UexIi6JR2E5thyvsmHyhL6ZDDMUNR4bKJPd4g==} cpu: [x64] os: [win32] @@ -570,11 +506,11 @@ packages: resolution: {integrity: sha512-CuNiSqg7+e1cO/GjffyMOm5Tt2jUF9CWHHnvQ/UkqvtkGfHdgwEC0wpmq7fkN3gxwpRnrAN0WzO3vREKmNolMQ==} engines: {node: '>=18'} - '@catppuccin/starlight@2.0.1': - resolution: {integrity: sha512-+ddv7PS8z0E+eae92KYVPTKl3f7zi6Rz/y1aLC0pleybtHfvqrM4eHRa5TUS9R5xfXEcoFWShDw3rPBJ4sBF9g==} + '@catppuccin/starlight@2.1.0': + resolution: {integrity: sha512-S5zr0WMHUZgsKzoAebj48DAT5r96jRgJSNftNEIoSi9Nk9KatxP5IUntYqmX5B2L5PGfvKO/oEjINuLLaiRn0g==} peerDependencies: '@astrojs/starlight': '>=0.38' - astro: ^6.0.0 + astro: ^6.0.0 || ^7.0.0 '@chevrotain/types@11.1.2': resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} @@ -582,12 +518,12 @@ packages: '@clack/core@0.3.5': resolution: {integrity: sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==} - '@clack/core@1.4.2': - resolution: {integrity: sha512-0Ty/1Gfm+Kb07sXcuESjyKfwEhSy4Ns1AgeEisHb/bDY5fWme0tTeTkU14T1Gmcs17YIjB/teiDe4uaCghbYqQ==} + '@clack/core@1.4.3': + resolution: {integrity: sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ==} engines: {node: '>= 20.12.0'} - '@clack/prompts@1.6.0': - resolution: {integrity: sha512-EYlRokl8szrP9Z25qT5aepMdBjzBvHF9ZEhzIiUBc9guz/T31EqRgvD0QSgZcpE93xiwrr+OkB4nz0BZyF6fSA==} + '@clack/prompts@1.7.0': + resolution: {integrity: sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A==} engines: {node: '>= 20.12.0'} '@ctrl/tinycolor@4.2.0': @@ -609,12 +545,24 @@ packages: peerDependencies: typescript: ^5.5.0 + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + '@emnapi/core@1.11.1': resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + '@emnapi/runtime@1.11.1': resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} + '@emnapi/runtime@1.11.2': + resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} + + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + '@emnapi/wasi-threads@1.2.2': resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} @@ -813,35 +761,35 @@ packages: resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@expressive-code/core@0.44.0': - resolution: {integrity: sha512-xgiF2P6tYUbrhi3+x0S8xHZWT1t3Bvb3U91tAtRbLb9HLejLvYc5GZUqKICKLaUN4iSGhhNJu2fM/aH8e5yCMg==} + '@expressive-code/core@0.44.1': + resolution: {integrity: sha512-3dDo9N8D7hYrLNNMMWFovg3+aDUtnQm7c7z0GZc1c0LEFVBc0Q6lKG+tVT28gDadOvsgOANfCn35fgpe97Pmgg==} - '@expressive-code/plugin-collapsible-sections@0.44.0': - resolution: {integrity: sha512-dK8axLBt0uXPaifZUZ0ZxVL/QjlqSatBds8xdXh8ecLsjXO55uQ+igK9yyI+BtU/gb/sZggcST8Ya5VNyCjH0g==} + '@expressive-code/plugin-collapsible-sections@0.44.1': + resolution: {integrity: sha512-1XG4PfamU5JPpWf9Z5jEsS1mNbeymntwn1EoQE40PPS5K9rUNTKpY5GFYEI60vWwj890a3/Oz9bCWTomvFityQ==} - '@expressive-code/plugin-frames@0.44.0': - resolution: {integrity: sha512-V6M6+zVc1GzqCvXkQHc2m5rcFOIVzJgMq5gnfrMnVf2gwtj/sg4H93c1f/mGeqHycubwkHFUDyParAOiGeDZeA==} + '@expressive-code/plugin-frames@0.44.1': + resolution: {integrity: sha512-HC/bdRao9225ApcgO/e3jn8ZOhldKO7ob1O/Tcipvtv7Vb5nMphZhMtD9uuywpvxkPYBHJi3504WhrKg05Dwqg==} - '@expressive-code/plugin-line-numbers@0.44.0': - resolution: {integrity: sha512-jZbCinT19JTZ1TCl18vGZBAgbNcegkWQjsuvqEDN2OeAlCqcSFE62j9d70+fk2zUd8nHnEgXF214D3a+STsrAQ==} + '@expressive-code/plugin-line-numbers@0.44.1': + resolution: {integrity: sha512-rWZmmSXBq9sq0DSe5+bXA+7j+3bYrh4EwXJdaBZtxEKB2I99OUSrU2d+4FAyu9Afpm5tCijbCs9AOg7Y93suOw==} - '@expressive-code/plugin-shiki@0.44.0': - resolution: {integrity: sha512-RZsdaqlbGqyAQKuoX4myQXxjmiE2l5KBpJ/gKPh62tCdIdpWyjbzVqSo8+5XsezZxkfi8AJ/J6EUaBTPROFX/Q==} + '@expressive-code/plugin-shiki@0.44.1': + resolution: {integrity: sha512-YApiZt3buUzBwL5tqj8G+sYC5NjMjRCHgQwr9bmGl69rtcHy6fE9dooWUeKYB978fJT2BuxT5FeHcF47rA3SEg==} - '@expressive-code/plugin-text-markers@0.44.0': - resolution: {integrity: sha512-0/m3A5b+lz2upyNq+wzZ1S69HRoJmyFs5LsR42lVZ9pmGRlBiSBYQpvqlji4DBj1+Riamxc0AvcCr5kuzOQeWA==} + '@expressive-code/plugin-text-markers@0.44.1': + resolution: {integrity: sha512-B3BsJoJ8CFMlcIX9f+X9tcI3C4zPDO601+YuLi9GheSTNro7ZfqSjLptMQKBHOWZvxnAtY5zvIX7iO/qtBhNBg==} - '@fontsource-variable/fira-code@5.2.7': - resolution: {integrity: sha512-J2bxN7fz5rd8WpQYyau4o19WqTzxoTqaNj9jhsv4p21GSu1Rf34tbqsxqjyDCR+wDMHM3SajyFqtq+5uvRUQ7w==} + '@fontsource-variable/fira-code@5.3.0': + resolution: {integrity: sha512-ZhvHeknlicraKVSJBa1NrJnXDVByUkC407zwgELYfmnx3p9g8vwIPfQCxx8YD3K7dAeCdLuHJOHlpMfRsIcApQ==} - '@fontsource-variable/outfit@5.2.8': - resolution: {integrity: sha512-4oUDCZx/Tcz6HZP423w/niqEH31Gks5IsqHV2ZZz1qKHaVIZdj2f0/S1IK2n8jl6Xo0o3N+3RjNHlV9R73ozQA==} + '@fontsource-variable/outfit@5.3.0': + resolution: {integrity: sha512-fPb5XnYK0k7SbR++HEmm4+ZqDszmLKQ+sPRUr8oQ/KNC0vy6r6hazJFe8iYozv4cqlHbvJ/JECkJWrfDodUMVQ==} - '@fontsource-variable/rubik@5.2.8': - resolution: {integrity: sha512-vGDExLzB4a2Fj9mca5LqNoA2ZKcU9o+x5FEBLte/nxYkCB9hOQwZS6ZlItUv+Ssn7YMzKauGuI/Po+YueFuZbg==} + '@fontsource-variable/rubik@5.3.0': + resolution: {integrity: sha512-yQUf8qle24MJYA+EuauyF+cqjjN6I715nGjitt3sGmwZA0XfA4fWJcLq1C/diREZl4Qzn1E80nLMc0ipC/a4Lg==} - '@fontsource/poppins@5.2.7': - resolution: {integrity: sha512-6uQyPmseo4FgI97WIhA4yWRlNaoLk4vSDK/PyRwdqqZb5zAEuc+Kunt8JTMcsHYUEGYBtN15SNkMajMdqUSUmg==} + '@fontsource/poppins@5.3.0': + resolution: {integrity: sha512-cms1nM7U6SN8epIV1WMVOV8VsA645aSm3wHfzIQnkk188U341ThbJGSl2Sv54V29gnDbT2arMPfLzvVIIVCceQ==} '@humanfs/core@0.19.2': resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} @@ -863,8 +811,8 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@iconify-json/material-icon-theme@1.2.68': - resolution: {integrity: sha512-08ZX1L3Lt1lKvcflvp57ZTpXwpMBtr1KI2CxTRQ1ryPkiDI3WacoSXVfE7/nO7CeV9RewfegjfgsPbidF1BxLA==} + '@iconify-json/material-icon-theme@1.2.69': + resolution: {integrity: sha512-BqVadW0C19qyzp7Gtl2z0wExBFhfGKDPrgq4ajnGUe9atBcqSwz/yULCbZWzjPlOPrFFu4P3hhfs8Vl503nhEg==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -872,156 +820,168 @@ packages: '@iconify/utils@3.1.3': resolution: {integrity: sha512-LPKOXPn/zV+zis1oOfGWogaXVpqUybF3ZS6SCZIsz8vg0ivVp9+fVqyYB7xq0aiST/VhUQYGO1qo6uoYSiEJqw==} + '@iconify/utils@3.1.4': + resolution: {integrity: sha512-b1S7B1k9ohZ+iNTi2ATxbRYG9fTrJmUT0rc46bvVnNxqNRGW7dyo/vRREwyniI5IRN2RSJHDcm+s3BjWrSAjHw==} + '@img/colour@1.1.0': resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} - '@img/sharp-darwin-arm64@0.34.5': - resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-darwin-arm64@0.35.3': + resolution: {integrity: sha512-RMnFX7YQsMoh7lWfcM4NEHHymBX/rLuKNPVM84XE9ONPcaSCDgE7CHIHpSgPcO2xcRthgBy1HfNO319mwhIAkg==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.34.5': - resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-darwin-x64@0.35.3': + resolution: {integrity: sha512-Xo+5uFBtLN0BKqieTxiFzFPQAUlBbbH5iBKyRX/z1JrbnYsHTfKJnUfL8+p2TPXr1pXqao4eeL4Rl144uDpK9w==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.2.4': - resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + '@img/sharp-freebsd-wasm32@0.35.3': + resolution: {integrity: sha512-lUxcqWIj2wMQ9BrwNjngcr1gWUr5xgaGThBRqPPalIC2n67Cqj1uPh8NnA/ZhAg8hUbKl+kVHKwgUIwe6ZYPrg==} + engines: {node: '>=20.9.0'} + os: [freebsd] + + '@img/sharp-libvips-darwin-arm64@1.3.2': + resolution: {integrity: sha512-9J6ypZFpQBj4YnePGoq/S38w6nz+vqg5WZLrLGY4YuSemdMq47GMLBPO42MzwdGwpg/agZ7xzZcFHa48xlywfg==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.2.4': - resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + '@img/sharp-libvips-darwin-x64@1.3.2': + resolution: {integrity: sha512-m2pW1n6cns9VaubNwsZ+c3CRYjxNQWgJ5gPlnL1nbBcpkBvFm6SCFN5o0psFHI8w9n11NKhFkeEDns98tiqbEw==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.2.4': - resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + '@img/sharp-libvips-linux-arm64@1.3.2': + resolution: {integrity: sha512-dqVSFynCox4C/J8kT16V7SIFAns0IjgLwkvYT7p8LQVmJ5OS5b6tI9IGflxTeuBS//zXeFIUbwt5dwxyZ17cnA==} cpu: [arm64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-arm@1.2.4': - resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + '@img/sharp-libvips-linux-arm@1.3.2': + resolution: {integrity: sha512-1eMLzy92I4J6rmi4mAT8yC3HxOtniyGELlzGbNMLLeqe052ahFQ0h6LFq+lh5DsDIdYViIDst08abvSbcEdLXQ==} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-ppc64@1.2.4': - resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + '@img/sharp-libvips-linux-ppc64@1.3.2': + resolution: {integrity: sha512-3z0NHDxD6n5I9gc05U1eW1AyRm+Gznzq3naMrthPNqE6oYykcogW0l/jfpJdjYnuNl8R7yI9pNbE1XiUeyq0Aw==} cpu: [ppc64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-riscv64@1.2.4': - resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + '@img/sharp-libvips-linux-riscv64@1.3.2': + resolution: {integrity: sha512-bsb4rI+NldGOsXuej2r8OdSS8+zXDVaCWxyWrcv6kneTOlgAHtZABRzBBCwdsPiD90J4myNJuHpg6kA20ImW/w==} cpu: [riscv64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.2.4': - resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + '@img/sharp-libvips-linux-s390x@1.3.2': + resolution: {integrity: sha512-/ABshyj8gCpyIrNXnHn4LorDJ0HHm1VhXPBlxZ8zAtfVPAaSafXPGn+sUSIRiwaSBy0mmFjSjiXI5mkcwdChKQ==} cpu: [s390x] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-x64@1.2.4': - resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + '@img/sharp-libvips-linux-x64@1.3.2': + resolution: {integrity: sha512-ITPEtgffGJ0S6G9dRyw/366tJQqFRcHWPHhC+Stpg3Z8AEMrDrTr2lhdz4f/Y/HMbRh//7Z5mBzEpVdi62Oc3w==} cpu: [x64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': - resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + '@img/sharp-libvips-linuxmusl-arm64@1.3.2': + resolution: {integrity: sha512-zE9EdiUzUmg5mDT5a1rk5fYJ6GWPloTwWBYDS14naqHsL+EaMpDj1AWnpLgh3u0YCORv2Tt50wrcrpYqkP97Kw==} cpu: [arm64] os: [linux] libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.2.4': - resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + '@img/sharp-libvips-linuxmusl-x64@1.3.2': + resolution: {integrity: sha512-m0lrLiUt+lBYnCFr8qV/65yMR4E/c7/wf78I5eKTdkEakFAlZ9QlzEM3QIhhAwVeUhLAHLcCq7a7Vszq/oFNZQ==} cpu: [x64] os: [linux] libc: [musl] - '@img/sharp-linux-arm64@0.34.5': - resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-arm64@0.35.3': + resolution: {integrity: sha512-QgKDspHPnrU+GQ55XPhGwyhC8acLVOOSyAvo1oVfFmrIXLkDNmGWzAfDZ4xK8oSA1qBQrALcHX0G5UZni/SuFQ==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [linux] libc: [glibc] - '@img/sharp-linux-arm@0.34.5': - resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-arm@0.35.3': + resolution: {integrity: sha512-affVWCTLooy8TSxbDx2qkzuDeaWLNVBA+P//FNBirHsXpP2fuBhk5AuboYUnrDnzoXes8GFjpTx0SBFOCRg+FA==} + engines: {node: '>=20.9.0'} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-linux-ppc64@0.34.5': - resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-ppc64@0.35.3': + resolution: {integrity: sha512-sMd8rDxmpLOwv/7N44klFjOD5DUO7FLdjiXDI0hoxYaf7Ar262dQIEkosE98bps+5HPLtp/EvNqeqQtOycP/IA==} + engines: {node: '>=20.9.0'} cpu: [ppc64] os: [linux] libc: [glibc] - '@img/sharp-linux-riscv64@0.34.5': - resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-riscv64@0.35.3': + resolution: {integrity: sha512-0Eob78yjlYPfL5vMNWAW55l3R9Y6BQS/gOfe0ZcP9mEz9ohhKSt4im1hayiknXgf8AWrFqMvJcKIdmLmEe7yeQ==} + engines: {node: '>=20.9.0'} cpu: [riscv64] os: [linux] libc: [glibc] - '@img/sharp-linux-s390x@0.34.5': - resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-s390x@0.35.3': + resolution: {integrity: sha512-KgAxQ0DxpNOq1rG2t5cgTgShJFGSuU7XO45cqC+1NVOuZnP6tlgZRuSYOfNupGkHID0o3cJOsw4DVeJpMovcGw==} + engines: {node: '>=20.9.0'} cpu: [s390x] os: [linux] libc: [glibc] - '@img/sharp-linux-x64@0.34.5': - resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-x64@0.35.3': + resolution: {integrity: sha512-8pqvxubL2PGdhlPy6GLqzDYMUjyRmKAwKHYKixpdJYBUK7PJ0C029XdsnpFIdgRZG68fZiGdHVWcKPvtiPB4cA==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [linux] libc: [glibc] - '@img/sharp-linuxmusl-arm64@0.34.5': - resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linuxmusl-arm64@0.35.3': + resolution: {integrity: sha512-Vz0iQjzzcSX3HCbfwFfCSG/9SCIqyO0mH2sXyiHaAYfBk0cRsCWXRyQYX0ovCK/PAQBbTzQ0dsPQHh5MAFL59w==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [linux] libc: [musl] - '@img/sharp-linuxmusl-x64@0.34.5': - resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linuxmusl-x64@0.35.3': + resolution: {integrity: sha512-6O1NPKcDVj9QEdg7Hx549EX8U0rp6yXQERqru6yRN7fGBn32UvIRJUlWnk+8xDCiG76hXVBbX82NZ/ZKr0euIg==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [linux] libc: [musl] - '@img/sharp-wasm32@0.34.5': - resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-wasm32@0.35.3': + resolution: {integrity: sha512-cZ0XkcYGpHZkqW6iCkqTcmUC0CD9DhD5d/qeZlZkfRBn6GnHniZXLUo5+9xw8Iv76YE6LQFN9YNBlKREcCG76w==} + engines: {node: '>=20.9.0'} + + '@img/sharp-webcontainers-wasm32@0.35.3': + resolution: {integrity: sha512-2rnq7bX3NzeR2T4YWgz8qiG4h3TSdMe+vN1iQXpJleSJ3SM5zQ8Fy2SyyXAWlbxpEZ2Y+Z4u1BePgJEYbSy80Q==} + engines: {node: '>=20.9.0'} cpu: [wasm32] - '@img/sharp-win32-arm64@0.34.5': - resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-win32-arm64@0.35.3': + resolution: {integrity: sha512-4bPwFdMbeC4JQ8L8LOyWp6nsHcboP5fxkp6iPOXz2Vg49R42TuMs2whkJ5OAP4/Ul035qOzy0AecOF9VOscn4w==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [win32] - '@img/sharp-win32-ia32@0.34.5': - resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-win32-ia32@0.35.3': + resolution: {integrity: sha512-r53mXsBN6lFUDiST764SvgwUdHAqM4rPAiDzAmf4fLoB6X/rkfyTrLCg6+g17wJJiCmB3JYgHuUldCWUIRFSXw==} + engines: {node: ^20.9.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.34.5': - resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-win32-x64@0.35.3': + resolution: {integrity: sha512-D4y1vNeZrIIJCN+uHaWVtH86B+aCrdMYYjicy9pXHvbGZeGYLLSd3wdVuC37FxVXlU1ARsk84eKWfWMXGYEqvA==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [win32] @@ -1080,8 +1040,8 @@ packages: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 - '@nodable/entities@2.2.0': - resolution: {integrity: sha512-9uGyhaQavEUMC8AIddIjau4NsnsXhou+j5sBAGojCM1oxmQpVKTWR/9JxABD6UAv12vpIms55fPZKFQEhG6uBg==} + '@nodable/entities@3.0.0': + resolution: {integrity: sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -1098,138 +1058,138 @@ packages: '@oslojs/encoding@1.1.0': resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} - '@oxc-parser/binding-android-arm-eabi@0.124.0': - resolution: {integrity: sha512-+R9zCafSL8ovjokdPtorUp3sXrh8zQ2AC2L0ivXNvlLR0WS+5WdPkNVrnENq5UvzagM4Xgl0NPsJKz3Hv9+y8g==} + '@oxc-parser/binding-android-arm-eabi@0.131.0': + resolution: {integrity: sha512-t2xicr9pfzkSRYx5aPqZqlLaayIwJTqgQ81Jor31Xep2nGyL2Aq3d0K5wOfeR7VevaSdxaS9dzSQP9xDwn8fDg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxc-parser/binding-android-arm64@0.124.0': - resolution: {integrity: sha512-ULHC/gVZ+nP4pd3kNNQTYaQ/e066BW/KuY5qUsvwkVWwOUQGDg+WpfyVOmQ4xfxoue6cMlkKkJ+ntdzfDXpNlg==} + '@oxc-parser/binding-android-arm64@0.131.0': + resolution: {integrity: sha512-nlGIod6gw75x1aEDgLS+srj+JRGY0HHm9MI9YgzE/B64l6d6+H3MSP9NOgp0+HTg8tp4vV9rVfgQGgd+TfVZcA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxc-parser/binding-darwin-arm64@0.124.0': - resolution: {integrity: sha512-fGJ2hw7bnbUYn6UvTjp0m4WJ9zXz3cohgcwcgeo7gUZehpPNpvcVEVeIVHNmHnAuAw/ysf4YJR8DA1E+xCA4Lw==} + '@oxc-parser/binding-darwin-arm64@0.131.0': + resolution: {integrity: sha512-jukuV6xe5RbQKFo7QD34NDCLDZp4PSOm8rmckhNdH/60ymG5zXbDzGBEyc+nTkuLQNama2aSGCt+CPfpjNTqyw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxc-parser/binding-darwin-x64@0.124.0': - resolution: {integrity: sha512-j0+re9pgps5BH2Tk3fm59Hi3QuLP3C4KhqXi6A+wRHHHJWDFR8mc/KI9mBrfk2JRT+15doGo+zv1eN75/9DuOw==} + '@oxc-parser/binding-darwin-x64@0.131.0': + resolution: {integrity: sha512-g3JOo4khe9rslHm5WYaVDWb0HS/M1MLR3I9S8560MkKIcC96VQY00QjOlsuRyfSj/JDXj8i9T7ryPO2RidiXVg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxc-parser/binding-freebsd-x64@0.124.0': - resolution: {integrity: sha512-0k5mS0npnrhKy72UfF51lpOZ2ESoPWn6gdFw+RdeRWcokraDW1O2kSx3laQ+yk7cCEavQdJSpWCYS/GvBbUCXQ==} + '@oxc-parser/binding-freebsd-x64@0.131.0': + resolution: {integrity: sha512-1hziITDTxjMePnX+dR9ocVT+EuZkQ8wm4FPAbmbEiKG+Phbo73J1ZnPAA6Y/aGsWF3McOFnQuZIktAFwalkfJQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxc-parser/binding-linux-arm-gnueabihf@0.124.0': - resolution: {integrity: sha512-P/i4eguRWvAUfGdfhQYg1jpwYkyUV6D3gefIH7HhmRl1Ph6P4IqTIEVcyJr1i/3vr1V5OHU4wonH6/ue/Qzvrw==} + '@oxc-parser/binding-linux-arm-gnueabihf@0.131.0': + resolution: {integrity: sha512-9uRxfXwyKG9+MwmGQBo2ncPNwZH5HTmCETFM2WiuDBNDCW4NC5ttSQkwCAMrTAWgwMzVBH1CP8pM0v7nebCWXQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm-musleabihf@0.124.0': - resolution: {integrity: sha512-/ameqFQH5fFP+66Atr8Ynv/2rYe4utcU7L4MoWS5JtrFLVO78g4qDLavyIlJxa6caSwYOvG/eO3c/DXqY5/6Rw==} + '@oxc-parser/binding-linux-arm-musleabihf@0.131.0': + resolution: {integrity: sha512-mgbLvzRShXOLBdWGInf08Af4q+pfj1xD8hSgLClDZ9of/BXkB6+LIhTH7fihiDUipqB3yoSkKBWaZ3Ejlf5Yag==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm64-gnu@0.124.0': - resolution: {integrity: sha512-gNeyEcXTtfrRCbj2EfxWU85Fs0wIX3p44Y3twnvuMfkWlLrb9M1Z25AYNSKjJM+fdAjeeQCjw0on47zFuBYwQw==} + '@oxc-parser/binding-linux-arm64-gnu@0.131.0': + resolution: {integrity: sha512-OPT8++4aN6j2GJ8+3IZHS/byXoZP4aSBn+FoG6rgBJ2fKwPKXWF3MqrFMNW7NKHM28FLY579xYLxJSfgobEqPA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-arm64-musl@0.124.0': - resolution: {integrity: sha512-uvG7v4Tz9S8/PVqY0SP0DLHxo4hZGe+Pv2tGVnwcsjKCCUPjplbrFVvDzXq+kOaEoUkiCY0Kt1hlZ6FDJ1LKNQ==} + '@oxc-parser/binding-linux-arm64-musl@0.131.0': + resolution: {integrity: sha512-vtPiwmfVTAXzaxDKsOXG+LwgRAA7WEnaeHzhS5z0GE89gAK18KSXnly7Z6saXXq6L3dVMyK44uoTI03zKxrpmw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxc-parser/binding-linux-ppc64-gnu@0.124.0': - resolution: {integrity: sha512-t7KZaaUhfp2au0MRpoENEFqwLKYDdptEry6V7pTAVdPEcFG4P6ii8yeGU9m6p5vb+b8WEKmdpGMNXBEYy7iJdw==} + '@oxc-parser/binding-linux-ppc64-gnu@0.131.0': + resolution: {integrity: sha512-8AW8L7w5cGHSdZPcyZX2yR0+GUODsT15rbRjfdD54rv6DMbtuEB19ysLOpKJlRGfH6UNYNpCHaU1uJWgTWf1/w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-riscv64-gnu@0.124.0': - resolution: {integrity: sha512-eurGGaxHZiIQ+fBSageS8TAkRqZgdOiBeqNrWAqAPup9hXBTmQ0WcBjwsLElf+3jvDL9NhnX0dOgOqPfsjSjdg==} + '@oxc-parser/binding-linux-riscv64-gnu@0.131.0': + resolution: {integrity: sha512-vvpjkjEOUsPcsYf8evE4MO3aGx9+3wodXEBOicGNnOwTuAik8eBONNkgSdhkGsAblQmfVHJyanRnpxglddTXIA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-riscv64-musl@0.124.0': - resolution: {integrity: sha512-d1V7/ll1i/LhqE/gZy6Wbz6evlk0egh2XKkwMI3epiojtbtUwQSLIER0Y3yDBBocPuWOjJdvmjtEmPTTLXje/w==} + '@oxc-parser/binding-linux-riscv64-musl@0.131.0': + resolution: {integrity: sha512-AqmcNC3fClXX+fxQ6VGEN1667xVFiRBkY0CZmDMSiaeFUsv1+UkBPYYi48IUKcA9/ivvoKNRzQl2I4//kT9F/w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxc-parser/binding-linux-s390x-gnu@0.124.0': - resolution: {integrity: sha512-w1+cBvriUteOpox6ATqCFVkpGL47PFdcfCPGmgUZbd78Fw44U0gQkc+kVGvAOTvGrptMYgwomD1c6OTVvkrpGg==} + '@oxc-parser/binding-linux-s390x-gnu@0.131.0': + resolution: {integrity: sha512-7d3jOMKy7RSQCcDLIci+ySll2FgsOMl/GiRux4q2JNv0zg4EdhFISa9idvrdN/HEUIQQJNg6dmveUeJl2YErGA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-x64-gnu@0.124.0': - resolution: {integrity: sha512-RRB1evQiXRtMCsQQiAh9U0H3HzguLpE0ytfStuhRgmOj7tqUCOVxkHsvM9geZjAax6NqVRj7VXx32qjjkZPsBw==} + '@oxc-parser/binding-linux-x64-gnu@0.131.0': + resolution: {integrity: sha512-JHK/h95qVqVQ+ITER837kcTdwBDFpFaNnOTYGCP0zdUSX/mLKC7tXOoyrTb6vG7iRPwGlcgBil3v2IjYw1FqJA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-x64-musl@0.124.0': - resolution: {integrity: sha512-asVYN0qmSHlCU8H9Q47SmeJ/Z5EG4IWCC+QGxkfFboI5qh15aLlJnHmnrV61MwQRPXGnVC/sC3qKhrUyqGxUqw==} + '@oxc-parser/binding-linux-x64-musl@0.131.0': + resolution: {integrity: sha512-b2BO82O8azXAyf7EUgOPKu145nWypbNyk07HbU09fkzhm9lEA5oPvaN/M8Nlo7tOErVTa2WOgS4QbOnxAPXdDQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxc-parser/binding-openharmony-arm64@0.124.0': - resolution: {integrity: sha512-nhwuxm6B8pn9lzAzMUfa571L5hCXYwQo8C8cx5aGOuHWCzruR8gPJnRRXGBci+uGaIIQEZDyU/U6HDgrSp/JlQ==} + '@oxc-parser/binding-openharmony-arm64@0.131.0': + resolution: {integrity: sha512-GHO9glZaX7LkX/OGfluEPf1yjg+ehiFbUdowbX6uNWOQhmwKWU4m4+nZ9FJkrHNKuxyI1KKertMdGjVKCApKWA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxc-parser/binding-wasm32-wasi@0.124.0': - resolution: {integrity: sha512-LWuq4Dl9tff7n+HjJcqoBjDlVCtruc0shgtdtGM+rTUIE9aFxHA/P+wCYR+aWMjN8m9vNaRME/sKXErmhmeKrA==} - engines: {node: '>=14.0.0'} + '@oxc-parser/binding-wasm32-wasi@0.131.0': + resolution: {integrity: sha512-3SkikPaEFoih1N83qLVEDLRLeY4nYsf6JT9SnWiMCQ5lGQdKup6bEuKCqkRiG9dD1IIaFeYz9RjlciPmYoFIWA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@oxc-parser/binding-win32-arm64-msvc@0.124.0': - resolution: {integrity: sha512-aOh3Lf3AeH0dgzT4yBXcArFZ8VhqNXwZ/xlN0GqBtgVaGoHOOqL2YHlcVIgT+ghsXPVR2PTtYgBiQ1CNK7jp5A==} + '@oxc-parser/binding-win32-arm64-msvc@0.131.0': + resolution: {integrity: sha512-Os5bEhryeA2jkH+ZrnZyAC1EP5gs+X4YB1Fjqml7UPD5kU7ecsK1MPEVMfCrdt/GDNpDbavYXiOXOdyJ5b3OPw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxc-parser/binding-win32-ia32-msvc@0.124.0': - resolution: {integrity: sha512-sib5xC0nz/+SCpaETBuHBz4SXS02KuG5HtyOcHsO/SK5ZvLRGhOZx0elDKawjb6adFkD7dQCqpXUS25wY6ELKQ==} + '@oxc-parser/binding-win32-ia32-msvc@0.131.0': + resolution: {integrity: sha512-m+jNz9EuF0NXoiptc6B9h5yompZQVW/a5MJeOu5zojfH5yWk82tvF2ccrHkfhgtrS9h9DD5l1Qv8dWlfY7Nz8g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxc-parser/binding-win32-x64-msvc@0.124.0': - resolution: {integrity: sha512-UgojtjGUgZgAZQYt7SC6VO65OVdxEkRe2q+2vbHJO//18qw3Hrk6UvHGQKldsQKgbVcIBT/YBrt85YberiYIPQ==} + '@oxc-parser/binding-win32-x64-msvc@0.131.0': + resolution: {integrity: sha512-o14Hk8dAyiEUMFEWEgmAwFZvBt1RzAYLM3xeQ+5315JXgVYhoemivgYcbYVRbsFkS71ShMGlAFE0kPnr460rww==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@oxc-project/types@0.124.0': - resolution: {integrity: sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg==} + '@oxc-project/types@0.131.0': + resolution: {integrity: sha512-PgnWDfV0h+b16XNKbXU7Daib/BFSt/J2mEzfYIBu6JB/wNdlU+kVYXCkGA1A9fWkTbOgbjh4e6NhPeQOYvFhEA==} - '@oxc-project/types@0.137.0': - resolution: {integrity: sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==} + '@oxc-project/types@0.139.0': + resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} '@pagefind/darwin-arm64@1.5.2': resolution: {integrity: sha512-MXpI+7HsAdPkvJ0gk9xj9g541BCqBZOBbdwj9g6lB5LCj6kSV6nqDSjzcAJwvOsfu0fjwvC8hQU+ecfhp+MpiQ==} @@ -1288,97 +1248,97 @@ packages: '@quansync/fs@1.0.0': resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} - '@rolldown/binding-android-arm64@1.1.3': - resolution: {integrity: sha512-DT6Z3PhvioeHMvxo+xHc3KtqggrI7CCTXCmC2h/5zUlp5jVitv7XEy+9q5/7v8IolhlioawpMo8Kg0EEBy7J0g==} + '@rolldown/binding-android-arm64@1.1.5': + resolution: {integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.1.3': - resolution: {integrity: sha512-0NwgwsjM7LrsuVnXMK3koTpagBNOhloc/BNjKqZjv4V5zI5r13qx69uVhRx+o5Z0yy4Hzq+lpy7TAgUG/ocvrw==} + '@rolldown/binding-darwin-arm64@1.1.5': + resolution: {integrity: sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.1.3': - resolution: {integrity: sha512-YtiBp4disu6V560loT6PjMdiRaWmVvDNrUunAalbiFx2ggeJwxdAsgZMcoGP17uyAsTwAj5V1niksxlHnVQ1Sw==} + '@rolldown/binding-darwin-x64@1.1.5': + resolution: {integrity: sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.1.3': - resolution: {integrity: sha512-yD3EkEdXk2LypPxnf/kSZHirarsI8gcPzc62SukhR9VJTyvV+F9Q/GxWNuCojc7sXyuVC4DxRGhdDK4X8VSsbw==} + '@rolldown/binding-freebsd-x64@1.1.5': + resolution: {integrity: sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.1.3': - resolution: {integrity: sha512-c+8vieQbsD7HNAHKIA34w0GJ9FedFFuJGD+7E6vz7Q3uqAIugL5p45fhlsj4UaAsHpcmlqugBWMhA0/j7o0sIg==} + '@rolldown/binding-linux-arm-gnueabihf@1.1.5': + resolution: {integrity: sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.1.3': - resolution: {integrity: sha512-50jD0uUwLvur7Zz9LHz17kaAdTPjn5wN93hEgjvmYFRZwiR7ZJYovTd5ipyWJDAnXKvZ+wgc+/Ika6dwSF5OcA==} + '@rolldown/binding-linux-arm64-gnu@1.1.5': + resolution: {integrity: sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.1.3': - resolution: {integrity: sha512-BO9+oPL8K9poZJBfYPsXNtYjPE5uM3qeehT3aFcW4LITOl+iSqhp0abzjR2nWBUNjIZeKXjAEWBZ64WjNoHd6w==} + '@rolldown/binding-linux-arm64-musl@1.1.5': + resolution: {integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.1.3': - resolution: {integrity: sha512-f3VpLB1vQ0Eo6ecr/6cekLnvYMFF4YBFoVGkfkvPLq1bAkbAwHYQPZKoAmG6OJyTcxxoC+AvezGx/S1obNC0Mw==} + '@rolldown/binding-linux-ppc64-gnu@1.1.5': + resolution: {integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.1.3': - resolution: {integrity: sha512-AmurZ26Pqx/RI9N1gzEOCklkKXl927yjfXWUUS0O7Puh8ARM/Ob8qfrD3qnWksScdw6cSrW5PSHE9DyLu7+PtA==} + '@rolldown/binding-linux-s390x-gnu@1.1.5': + resolution: {integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.1.3': - resolution: {integrity: sha512-JJpqs8bRGITDOdbkNKnlojzBabbOHrqjSvDr0IVsZObE1lBcPjxItUEY9eWIDbxaJ3cGrXPWGfGkIxFijg/URg==} + '@rolldown/binding-linux-x64-gnu@1.1.5': + resolution: {integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.1.3': - resolution: {integrity: sha512-rSJcdjPxzA/by/6/rYs+v+bXU7UjvnbUWz8MJb6kh6+knqB1dCrtHg0uu7C/4haqJvqdkYHQ5IGn+tCH9GLW/g==} + '@rolldown/binding-linux-x64-musl@1.1.5': + resolution: {integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.1.3': - resolution: {integrity: sha512-hQ3/PYkDJICgevvyNcVrihVeqq7k1Pp3VZ9lY+dauAYUJKO+auqApvANhvR1An9BhmqYKvW2Mu1F9u4DXSMLxQ==} + '@rolldown/binding-openharmony-arm64@1.1.5': + resolution: {integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.1.3': - resolution: {integrity: sha512-Elcv/BtML9lXrV6JuKITc/grN2kYV9gjsQpW8Jfw4ioK0TOkjBjye0nnyqQNy9STNaI20lXNaQBRrD5gSgR0Yg==} + '@rolldown/binding-wasm32-wasi@1.1.5': + resolution: {integrity: sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.1.3': - resolution: {integrity: sha512-2DrEfhluH9yhiaFApmsjsjwrSYbNcY1oFTzYSP1a535jDbV98zCFanA/96TBUd0iDFcxGmw9QRExwGCXz3U+/g==} + '@rolldown/binding-win32-arm64-msvc@1.1.5': + resolution: {integrity: sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.1.3': - resolution: {integrity: sha512-OL4OMk7UPXOeVGGd3qo5zJyPIljf4AFgk5QAkPPS+OoLuOOozhuaQGC18MxVTnw/06q93gShAJzlwnSCY9YtqA==} + '@rolldown/binding-win32-x64-msvc@1.1.5': + resolution: {integrity: sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -1395,32 +1355,32 @@ packages: rollup: optional: true - '@shikijs/core@4.3.0': - resolution: {integrity: sha512-EooU3i9F6IAE8kEu+AnGf9DFZWkQBZ+hJn3tLVbsH+61mtQiva5biai66fAA6nvFPXkLgvrh7BrR7YcJU83xQQ==} + '@shikijs/core@4.3.1': + resolution: {integrity: sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA==} engines: {node: '>=20'} - '@shikijs/engine-javascript@4.3.0': - resolution: {integrity: sha512-hTv/KiFf2tpiqlACPiztGGurEARWIutB8YUhcrA1pUC7VzzwKO+g5crUocrLztrZ5ro5Z4hbXg7bYclETn3gSQ==} + '@shikijs/engine-javascript@4.3.1': + resolution: {integrity: sha512-JBItcnPuYq7jVJdZo/vMj94r+szT7XEjHFX+mvFDGSEIbVAXAGyHAHzhbWzpGOwYidCZrErJLLgn2PVeiokHnQ==} engines: {node: '>=20'} - '@shikijs/engine-oniguruma@4.3.0': - resolution: {integrity: sha512-1vMdN3gHfnKfLYwecUI2ITJI4RhHt96xEaJumVn7Heb0IlJ8WQMIH0Voak+2j22BpSNKdnOfB/pCTPnPm2gq7A==} + '@shikijs/engine-oniguruma@4.3.1': + resolution: {integrity: sha512-OXyNMzg0pews+msMj4cHeqT4xiYKKvbnn6VbdAXxfoFl3SSx4fJTc8FadECuc5/H9p3BzhNAoAUXKwAu9rWYhg==} engines: {node: '>=20'} - '@shikijs/langs@4.3.0': - resolution: {integrity: sha512-rnlqFbBRSys9bT4gl/5rw9RnS0W/I84ZldXPkO7cvlEMoV85TyF/aU01N7/NbSR776RNLjrJKjfFUXJR6wN1Cg==} + '@shikijs/langs@4.3.1': + resolution: {integrity: sha512-m0l9nsDqgBHvbZbk7A0/kXz/impK3uB/c6rAn6Gpg/uPtdZRQ+alsN/17MU5thb68XTj/4DxkZAotrM0GGSpDQ==} engines: {node: '>=20'} - '@shikijs/primitive@4.3.0': - resolution: {integrity: sha512-CPkz64PTa5diRW1ggzMZH9VM/du4RNChYgVtgqrFcgruvIybmCvySv8GkiHSczUHXYuuR8TdKEwFx+UnZMpgdg==} + '@shikijs/primitive@4.3.1': + resolution: {integrity: sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A==} engines: {node: '>=20'} - '@shikijs/themes@4.3.0': - resolution: {integrity: sha512-Avgt05YiT+Y3prjIc9lmQxhJzHBcCfR6cjiFW4OyaMBbt2A6trX5rfjUzx+Vj/mE9qpArYjatnqo9XPjQNW/AQ==} + '@shikijs/themes@4.3.1': + resolution: {integrity: sha512-dgpoJ4WqNi2yTmizQHBJ5zcX6j2lE6icN/0yt4l1kkf16jrY/pwPLoTb1ETsWMz0OBLf9ZNvwmxft+cH+N9qSA==} engines: {node: '>=20'} - '@shikijs/types@4.3.0': - resolution: {integrity: sha512-oc8b9U2SYvofKZk8e/737nIX0qwf6eV2vHFATeObAu7r+mUVpLs8Re0BmVkIjAWAYgkmG/CzLNo7rzuBzRu/wQ==} + '@shikijs/types@4.3.1': + resolution: {integrity: sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g==} engines: {node: '>=20'} '@shikijs/vscode-textmate@10.0.2': @@ -1437,8 +1397,8 @@ packages: '@simple-git/argv-parser@1.1.1': resolution: {integrity: sha512-Q9lBcfQ+VQCpQqGJFHe5yooOS5hGdLFFbJ5R+R5aDsnkPCahtn1hSkMcORX65J2Z5lxSkD0lQorMsncuBQxYUw==} - '@solid-primitives/refs@1.1.3': - resolution: {integrity: sha512-aam02fjNKpBteewF/UliPSQCVJsIIGOLEWQOh+ll6R/QePzBOOBMcC4G+5jTaO75JuUS1d/14Q1YXT3X0Ow6iA==} + '@solid-primitives/refs@1.1.4': + resolution: {integrity: sha512-bLjwIs6ZPu8NQnuw04sU3Zc8qKSpbc0umUU/O4SHf6oWOdO4+dHY8vb1T7C4b/Tg103+9WGr6sEE0+NFlbaB/A==} peerDependencies: solid-js: ^1.6.12 @@ -1447,8 +1407,8 @@ packages: peerDependencies: solid-js: ^1.6.12 - '@solid-primitives/utils@6.4.0': - resolution: {integrity: sha512-AeGTBg8Wtkh/0s+evyLtP8piQoS4wyqqQaAFs2HJcFMMjYAtUgo+ZPduRXLjPlqKVc2ejeR544oeqpbn8Egn8A==} + '@solid-primitives/utils@6.4.1': + resolution: {integrity: sha512-ISSB5QX1qP2ynrheIpYwc4oKR5Ny4siNuUyf1qZniy+Il+p/PtDB0QK1Dnle8noiHpwRD3gpPdubOC3qI/Zamg==} peerDependencies: solid-js: ^1.6.12 @@ -1575,8 +1535,8 @@ packages: '@types/geojson@7946.0.16': resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/hast@3.0.5': + resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==} '@types/js-yaml@4.0.9': resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} @@ -1599,8 +1559,8 @@ packages: '@types/nlcst@2.0.3': resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} - '@types/node@24.13.2': - resolution: {integrity: sha512-fRa09kZTgu8o71KFcDjUFuc7F+dEbZYZmkI0mg5YBTRs0yMKjYHsq/c0urDKeDb+D5qVgXOdFcuu+DZPKOITwA==} + '@types/node@24.13.3': + resolution: {integrity: sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==} '@types/picomatch@4.0.3': resolution: {integrity: sha512-iG0T6+nYJ9FAPmx9SsUlnwcq1ZVRuCXcVEvWnntoPlrOpwtSTKNDC9uVAxTsC3PUvJ+99n4RpAcNgBbHX3JSnQ==} @@ -1617,11 +1577,11 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@typescript-eslint/eslint-plugin@8.62.0': - resolution: {integrity: sha512-o+mpz7EYiMzXoySXiKmzlabIvTVqUuK5yLrAedRPRDA0IpPFMUV1IXt6OqljIxX/kumN6EjUYp41Hqelh6p/Dw==} + '@typescript-eslint/eslint-plugin@8.65.0': + resolution: {integrity: sha512-IEgob78X12rHpUmtcwFsXhZdVGJtwTVP8FiCLZkR6GlYVrl2PcuB+KhCE5BlVC/eQpQnu8WXRtkHZuPar+gCRA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.62.0 + '@typescript-eslint/parser': ^8.65.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' @@ -1632,24 +1592,47 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/parser@8.65.0': + resolution: {integrity: sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==} + 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.62.0': resolution: {integrity: sha512-wexnCqiTg7BOGtbLDftYpRWlmLq4xfoMd7BKFR6Y75sZS3QmRKLdN3yWLhmIYgqMmP/OXWpj3H8odkb5nGURCQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/project-service@8.65.0': + resolution: {integrity: sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/scope-manager@8.62.0': resolution: {integrity: sha512-1lX38kNxXIRb8mEc3lbq5mdHq1Pf2+U0nFU65KfT18mtPxxl0fvjuEE92mHuXPuCtElJhOrddOpyMlM3Z0umEA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.65.0': + resolution: {integrity: sha512-Esbl8OSYiVxBokYgWPf7VVWg/BE798wXhimnn9ML9Pt5qoDf8bfQlgjlKXR/k98+AcNzlLKYrpCcrcuZ9DZLgg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.62.0': resolution: {integrity: sha512-y2GAdB6ykaXUvuspbYnizQc4oDDz0Tz/Yc7iWrXf9mx8vm/L/0vLHCe0tS2boG96Zy+DivnVDQ9ZUEWoHqqx1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.62.0': - resolution: {integrity: sha512-+g5O3j0w2ldzC86Pv6fvbO/xhAonbJFIdf/MKQ1d30gndlsVzUOE83ldfSE15Qrl9fhFjK6AovHs5Wpp6vx86w==} + '@typescript-eslint/tsconfig-utils@8.65.0': + resolution: {integrity: sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/type-utils@8.65.0': + resolution: {integrity: sha512-YjaZ7PRI5qY7ax2L3PbvX0rRyGtipAReCWs0mhhDBHjH/vl0g0BonaGXrKdKpMbIIsMIwDgbk/xzkBTyAltS5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -1659,14 +1642,24 @@ packages: resolution: {integrity: sha512-KvAclkktORPvM54TgLgA4z9HIV1M8zOgw9ZVNXl9f/8dLYfXYX1wkMXP7qmabpijQRV5bHJLOmoyGQbLMaUYeg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.65.0': + resolution: {integrity: sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.62.0': resolution: {integrity: sha512-+hVbNxtW64pIcZWDPGbyaKF7vp2IBTVY5ma1blwwksrjdsbdqqEKvJWMGbBofei4F6Dovx1M0RJgoFeNu2279A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.62.0': - resolution: {integrity: sha512-82r66fi9zYwZ+mTq3vKgwjbZ1PVk/DJzrXFLpG6RnBbdvH8TEGVHIs9H4d2drhkOzf0syZuD/OZvvlu6GDbP4g==} + '@typescript-eslint/typescript-estree@8.65.0': + resolution: {integrity: sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/utils@8.65.0': + resolution: {integrity: sha512-gXiwIHsYreboxeJucHKPvgwl7dXt50mF8s1/c00cP/WoVTyWKFdtfhRWwZiXYFU5H2O8vVoSLNrexFZjYS/SGA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -1675,98 +1668,122 @@ packages: '@typescript-eslint/visitor-keys@8.62.0': resolution: {integrity: sha512-CY3uyFSRbcQv3nnSv8S0+lDftMVz6P963PoRlxrV7ew/Md564g9ut60PYzdLM5qW4jFn93GBF+Soi90ISAN+GQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/visitor-keys@8.65.0': + resolution: {integrity: sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + + + + + + + + + + + + + + + + + + + '@ungap/structured-clone@1.3.2': resolution: {integrity: sha512-5jsZFwgR5rTdKwidH9Qmat75RKwqfpKlWWB1frDkljN127mwqBu8K0PYo7/hFpF03IEJpfVPpCQDY/eDx3iHvA==} - '@unocss/astro@66.6.8': - resolution: {integrity: sha512-yOc7UzCVxr+tVlcCeiT7eguVsFMeGc+sNk6eqO8sPYsFaDt3IL0FFlfTSHE8jSvpWMe0bBuHU35nLsjn8BgO5w==} + '@ungap/structured-clone@1.3.3': + resolution: {integrity: sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==} + + '@unocss/astro@66.7.5': + resolution: {integrity: sha512-OjXSlwj3SI3pmDVyJlSI6Lm2romCxkUuHi7l5p5Nud4ITyYjOqQWV8nzwXFLGK2+91vNiqUE6IkdsDf23qJR6A==} peerDependencies: - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 || ^8.0.0-0 + vite: ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 || ^8.0.0-0 peerDependenciesMeta: vite: optional: true - '@unocss/cli@66.6.8': - resolution: {integrity: sha512-dJ4AmrhCtQwEDJtpFG7AgJ4Qi4GWnNgWWlLWq4DhKBOCcvldr9k98mscdhs3MOwph25DIxU5MdLRAg/OS1JryQ==} - engines: {node: '>=14'} + '@unocss/cli@66.7.5': + resolution: {integrity: sha512-fgWkECRn2LGVo9sEpmjk/KJ3NSKUDitaZCNrJcEYM93DG+ELriTHcL+VWBlF4rcZf9fdGlq1nKbbRHUZirFCHQ==} hasBin: true - '@unocss/config@66.6.8': - resolution: {integrity: sha512-f+a8OyhD7ZoK8Pa1b3Cbx1RQc3n5x+Qht/cHg3wh/g4DNQIjBI2EqwSLfBigWhdO96zIqFAdyTlO3onmrJwUOw==} - engines: {node: '>=14'} + '@unocss/config@66.7.5': + resolution: {integrity: sha512-dkPl9glhEahJ+Xoja5ZseKKnH+vZaeaKQzg8b0otcKcPPNrHQgu1nu3QgfeOjnXOGrjZIotHwUeVtt4ZA2Skgg==} - '@unocss/core@66.6.8': - resolution: {integrity: sha512-P9IlQfgms+8/nka7fBhiiWU4SPwrTNKbTdK0z1SLnttXMHHjsB2zpG+Vi1JQDpICfY9Y1/2pWtguPE+zeOVu9Q==} + '@unocss/core@66.7.5': + resolution: {integrity: sha512-UdJb8MiMywcau8QrWEVgUAz0kvoFHyR+sACwYCgmBh/BpKJGyR/zw/Ys3wvysbm0f+i/20VGBex/QQxYVlzdyQ==} - '@unocss/extractor-arbitrary-variants@66.6.8': - resolution: {integrity: sha512-cOXstpPTOLt/HYcL0OsqFkNau0e8ktZ5Q8fgnXBZjmLGmi+VzdESNlwxZyCXLuamZGnbrZ8lDsKdsGG7P1pMKQ==} + '@unocss/extractor-arbitrary-variants@66.7.5': + resolution: {integrity: sha512-5zOkbnLIJc8E749qNjLXfPHl3FdHloop12h706/ojr6idK4ix0KLm43R//uLnphixCehdHJRuHnavnM4C/kQbA==} - '@unocss/inspector@66.6.8': - resolution: {integrity: sha512-g8uRzXDdmoNRjXX/mZP7m0rWXLtOimyOW7+VFK6FNxRWBmvIGYgTLHkutF6Wyh9lLPDYx3pkkEmfgL35BDT3Sg==} + '@unocss/inspector@66.7.5': + resolution: {integrity: sha512-WmTJMnj8bmRxvw/wGeShmL2eEHr2/L0BdGTXSxhfzwcO8y5XZEbBmVciLcM7pqaTXQ6JY4+KnITrDUf1urjZxQ==} - '@unocss/preset-attributify@66.6.8': - resolution: {integrity: sha512-YxyRSF5rq0WbY8kCG0gpj3DSXPL89QGxZeqABmceCzPJbXJBBHEJz/pgBPmzSa2Ziulgs0AEkHzWFPfpb2uGTA==} + '@unocss/preset-attributify@66.7.5': + resolution: {integrity: sha512-1Oi1Cp81pqYJwG3h4+OlP5A0FKyaa07MFBXaXc4Yr3faiTbsI8SKj2TqnZCb+NQvBsEqslEd+jKXGZ3lKzCVOQ==} - '@unocss/preset-icons@66.6.8': - resolution: {integrity: sha512-+zD5TNGZIXvVOMcvDIYaTXinffpDMERGj6Ch8WTtJluA6qHHBvRuFexoU2bY8nF1r0HZkYzNT9C+RujFSP+6TA==} + '@unocss/preset-icons@66.7.5': + resolution: {integrity: sha512-ZsxadWnGGtHdANTikuMnjkQaT1qwUFJHZBF4fzVsPMnUiiKGs8rzXukwM9w3Gi9ontM7nbG2FYi9clWETSlpFg==} - '@unocss/preset-mini@66.6.8': - resolution: {integrity: sha512-vAechrReO7LtWzFAeF54P7CintG2m65SlVlBsi1x2Ru7IdgUNJEHII0MfXUvf9r1x8vsIlhATyaqqtBVT6ps/w==} + '@unocss/preset-mini@66.7.5': + resolution: {integrity: sha512-o37TSl4ecT0dKu+3/TYuTYht75h82SEwDNl476m9ve0KW4Pv1O2tT/9TWd7N5cutEpySr8/YtjMwtWBD+drxBg==} - '@unocss/preset-tagify@66.6.8': - resolution: {integrity: sha512-cG6zBYswtWTpeQe/Lb1Bh+IzU4Ck+VI8rpYvrnvSGl22rJjAsXd+buB1P0PjyDpoe924rq0bLTayZ8r6Ayyyvw==} + '@unocss/preset-tagify@66.7.5': + resolution: {integrity: sha512-/8YB1tXVi+WmNKPhsCdtO1xnQKEkshSnWDp6AbvVP3f6qOF7adlMYpAt3kpWCoVUBsfOQ06ZQlnfricMjObyoQ==} - '@unocss/preset-typography@66.6.8': - resolution: {integrity: sha512-wOApJpE0QfeOTWN5RuQts8zS6PXhTZIfjpt6cBj8dmv7+GlIQlwopxL7wcDb2wVwdCByuMvUbWl7nC3kz/iFTA==} + '@unocss/preset-typography@66.7.5': + resolution: {integrity: sha512-2dxC8LT9KYa29UZT4muDFl7DbIXvKktTfeSMbUGMdZKbHcuMtKSP2U52wti1PL5I9duqp4v+8G33EeVutGTUaQ==} - '@unocss/preset-uno@66.6.8': - resolution: {integrity: sha512-z01Rw/rBuahRulwQRnobUFnGqyU+UenOLz72KGn4p0Yh8gBC44fPlNHsOWA0TNediHRJg33HptX4kx16HCVWDg==} + '@unocss/preset-uno@66.7.5': + resolution: {integrity: sha512-zaUlYgNngbt50fZA/LbtsEnmPKojPqeiXCyUUiKQMv2uJQhncR32xhLZXVQ+TJD7hlfZ+6FAqlco1NIiAcub9w==} - '@unocss/preset-web-fonts@66.6.8': - resolution: {integrity: sha512-AgEHO8h0AkeOT57AOE9PS7dJOa5Rfr0gIyz/FxA7vJ/FwgQL70uX+bRW8kmoH81zcjo5xBP2IX3Z6A8VAOo3Vw==} + '@unocss/preset-web-fonts@66.7.5': + resolution: {integrity: sha512-OLLTK7kswdSu51qxEm6O+AehecgCfS08Ivqo+280lKzFW7V1jXr5okeJ1ty+85oHCprJqzcD9iG1khxNRLomcA==} - '@unocss/preset-wind3@66.6.8': - resolution: {integrity: sha512-WNTeDAYCatmEFjBJ4itUmz0TElBvNFqjh5i2/ianDJO/vkd+IYUb03jEPLUppVlvMhy8bN8AunP0AtW3Xf2psA==} + '@unocss/preset-wind3@66.7.5': + resolution: {integrity: sha512-atFe/7Qein+oMdyZs0hEo+3EjV99Av2LVxDbzpCungxIfbS3TnQt70EIuHXMPNCVWLYwrMV+/P1n9Ntb0E3mow==} - '@unocss/preset-wind4@66.6.8': - resolution: {integrity: sha512-CheOm7KXOsTI5t4RXgeYz95CO5p589F6jsyYp+inOCk4N0/d+DWiDHrQ+V0x0HWs3JXWlD+/Va/yXjlc3o2sIw==} + '@unocss/preset-wind4@66.7.5': + resolution: {integrity: sha512-n3jIvQv8x1jXpmWfvNFBIqHNARki4mKZXfxAA31gekpXsRRTg16u1+yC1+PBBJgoEDFEnnmKnG7EZP88S8LVXA==} - '@unocss/preset-wind@66.6.8': - resolution: {integrity: sha512-F0mdmwK/HelYOgBRMHl+Yx/VyARCQJtPlcgPBejI3E9ZWOZlKS7hvPqPrgvS63WTGMHgM3/22cGuYYFjpi/ugA==} + '@unocss/preset-wind@66.7.5': + resolution: {integrity: sha512-LVKgGr0A9Lc7F85xGXrrb71DDXMlHGA8bcj/Kht8BCsuRdBZadNbLlnv5qnSJiHYhi3/blzcgVoaeRor6L9yNA==} - '@unocss/reset@66.6.8': - resolution: {integrity: sha512-H+YP3ltizUiPO9FzFgFhv8WGsefO7fTgT1If1/9ritPDqZlvzTqMmjelhcq8D8MGoQ1RQBUvtkZ5HJoKVY0Tgw==} + '@unocss/reset@66.7.5': + resolution: {integrity: sha512-z3wbt2cuQPjtT6w5xzRYZYFIIlUPzhVKz8yIcE9fvu7BgR3hO7uVsg/5mzDoGwQ96Ya3Sk68rpmI/gLYl4bJag==} - '@unocss/rule-utils@66.6.8': - resolution: {integrity: sha512-WR35L07mLP6PElD4hlUHo5KbQ48uz2HT/XCuJyAsHP+15Gv6539hPWA5SresPuva9r8rl+PeGIgMSIKf4A5Ihw==} - engines: {node: '>=14'} + '@unocss/rule-utils@66.7.5': + resolution: {integrity: sha512-/AKHBRF6ZOexE3EDDv8ZEYh40P5e2Eha41IYUbE1wjigW7++ssmvimSTdufJzZvU5DGP++E3B3WEsFPprZMjAg==} - '@unocss/transformer-attributify-jsx@66.6.8': - resolution: {integrity: sha512-g+7lvm+8V1MnJ21ialTxFBonCTtenn/KcZQbm0JfvQjgG+KuuSnt3BGEcXAHQZu3eBDGuJuasTHiXWwzCYIRBQ==} + '@unocss/transformer-attributify-jsx@66.7.5': + resolution: {integrity: sha512-r8qDwNSt0eGSwWws3xsuIHb3PZYR2embFdYoE67hD/xlYgLjX1uPy/HUlGCSSh4uLc4vVYjurr0Oq5xF/B8YiA==} - '@unocss/transformer-compile-class@66.6.8': - resolution: {integrity: sha512-37dFuzgYo8ki033KmuvyZXugQRVH1c3+/z5kcWLPhcMR8UJscAtjgRx80S1UvWup2q6TPxPpmy/rMbqWvs3jfg==} + '@unocss/transformer-compile-class@66.7.5': + resolution: {integrity: sha512-KuECgsGF7tGe808vIvKViEjI0UCUgYgneJfK+/TWBkjC7s8dLVaUtJzzcP9/r6OfGlgyn/x1YTdRqTaCENa7Xg==} - '@unocss/transformer-directives@66.6.8': - resolution: {integrity: sha512-9hC3mQ8eycliW/igI9le0LovTIMBKoL6crucTkr4MmWuNqICMvNxTmGj5Xh64olBPnascevFwam6xsy+J1lX4Q==} + '@unocss/transformer-directives@66.7.5': + resolution: {integrity: sha512-VMJApXXOwlDubkW+cNMmOkfxLefFupJr+yU23gGYUB2NPsuVltc8H5CDM0gfVebpeL5CUW05evxzEAk2wsju+Q==} - '@unocss/transformer-variant-group@66.6.8': - resolution: {integrity: sha512-+t7gJDW3W3z3/f8zBf0DfV2UZyGyFOwG5CIsIj5ofu3VJ91mKD/5ZAH8fD3cryXCBSqslj4yv+8R+BLV07T5AA==} + '@unocss/transformer-variant-group@66.7.5': + resolution: {integrity: sha512-iDmP3mM8J+IxuQf5Uh33zsi528xnGxTpKRJ0c+LCrqBTTkR2tZr4aCzNmJ0g29Js2yEOsyNXRRc8BNTuvgn0AA==} - '@unocss/vite@66.6.8': - resolution: {integrity: sha512-bXfEnEHdW7zTGLIYU16MsfKSFy3Q47Pevhrt5f9fOGzC4UI1JGkkoQSfoFpXZGliDrhoSFK4Msz9Jt43Ta4j+w==} + '@unocss/vite@66.7.5': + resolution: {integrity: sha512-1z1TBCNJCR2WzjPtjzmCHr8rtzXHosMjLdsCNe6Mzsfwiw044gzzLVuiEZO9vIjkI50lvQ+gIOxOiVQG0hGAeA==} peerDependencies: - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 || ^8.0.0-0 + vite: ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 || ^8.0.0-0 '@upsetjs/venn.js@2.0.0': resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} - '@vitest/expect@4.1.9': - resolution: {integrity: sha512-vl/rYsUKcBr3SnQn166+XR5ZQcgMx3DQhFWdfli/cWpLnLUmbxZvyrJZotLFUryib+LtArYMSTJ5RbQ57ZqrlA==} + '@vitest/expect@4.1.10': + resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==} - '@vitest/mocker@4.1.9': - resolution: {integrity: sha512-EVkXzBjrPGM+cK8/ANWgBrkUCfJfb38/EfTSO8h7pWvKkyPkpWxvR7BkD2MyItMF62C97zAEoqdpUixwR/e+Rw==} + '@vitest/mocker@4.1.10': + resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1776,20 +1793,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.1.9': - resolution: {integrity: sha512-s0iufns3iIFitdgm+YR7g1whCAaGtXz459VS9/PqyKDEEFgYIhsHOQmXgIgDuYCt7DeQmiZT0Qe2OA2p4ZPu5A==} + '@vitest/pretty-format@4.1.10': + resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==} - '@vitest/runner@4.1.9': - resolution: {integrity: sha512-KXLMDtc7oe70+3mJfGrPUWPesswH+3sTxAMAMl8DG7I8IUQT4XW718dY5ID3vPUcmlu27CcKfY4P3h3I29SLJg==} + '@vitest/runner@4.1.10': + resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==} - '@vitest/snapshot@4.1.9': - resolution: {integrity: sha512-Jc7RKGNBo8Z28WYIm0Niej4xdSPByRf6mU58VpHQkd6Zh05rlnA+twjbK5HyeIGHxrzsc3mJgS43uM0CZKzaIA==} + '@vitest/snapshot@4.1.10': + resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==} - '@vitest/spy@4.1.9': - resolution: {integrity: sha512-fHpsS6mIi+PiEW+vcRVOMkX1oSaPKne3VOclSFICPcGOmfKgXPU5iAah+wcNcj2xPrCCmfq99IDGf+EojhhvhA==} + '@vitest/spy@4.1.10': + resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==} - '@vitest/utils@4.1.9': - resolution: {integrity: sha512-A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==} + '@vitest/utils@4.1.10': + resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} '@volar/language-core@2.4.28': resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} @@ -1872,8 +1889,8 @@ packages: array-iterate@2.0.1: resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} - asciinema-player@3.16.0: - resolution: {integrity: sha512-bl6U6QD6/2as3F8AaNnAQ1dAZMq9Q/mvlSE5XxQrththGcDQS+jqAUCEr3jrUl2xatIQwblNIyJuFUpX8qjK+g==} + asciinema-player@3.17.0: + resolution: {integrity: sha512-JbjNJmA2TLIeYNaOEja+kVSzXadKoqpIzVVmfBGNj2DmdtE/vExBCnkE8NYEcpaQcDvUYg8Ltt0urT80frACmw==} assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} @@ -1883,11 +1900,11 @@ packages: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true - astro-auto-import@0.5.1: - resolution: {integrity: sha512-7YZKVA7LE5nLkopOM+KIHqnh6g2CfHrysj2JUXNBrC3FppHH42RSNBM7mgsEgaq2lgHVDt7hsDQIA0JKTwIN8A==} + astro-auto-import@0.5.2: + resolution: {integrity: sha512-C7sxtj0nK4F7AiafNoS8lY/JyqW6/JlnkXTdNIT6CKroV/p4m5j6dkpKEAXZf/7Z+SeDcmAlWI6G1nVMssRRPQ==} engines: {node: '>=20.0.0'} peerDependencies: - astro: ^5.0.0-beta || ^6.0.0-alpha + astro: ^5.0.0 || ^6.0.0 || ^7.0.0 astro-contributors@0.9.0: resolution: {integrity: sha512-GIDlHJrQFEMEkvWmZaQj7nKIw4db3CXrP9aJ6pvoJ3/kfw/O5aJt07163AlyLLtyh08hdSWOKJu9ChAvkyKtLA==} @@ -1895,13 +1912,13 @@ packages: peerDependencies: astro: ^5.0.0 || ^6.0.0 || ^7.0.0 - astro-embed@0.13.0: - resolution: {integrity: sha512-SIp+ES9zYpCOLGJbbgnzbzjmSeYvNXteHnOwD1tu3UX5cyeQ6eOFRBos6a96pyJ7GQxdcn/R/NK1KUH/h/Mamg==} + astro-embed@0.13.1: + resolution: {integrity: sha512-X79C+Uh9wA4JWkBRTk6drLpOfzqpPlibAL/p0MTV2811canAPzF9Sv9Bq3gdUSCDCQXRFxTVsW89CKtDkg8xqA==} peerDependencies: - astro: ^5.0.0 || ^6.0.0-alpha + astro: ^5.0.0 || ^6.0.0-alpha || ^7.0.0 - astro-expressive-code@0.44.0: - resolution: {integrity: sha512-b1wN/ZvbJprzxlGKIpIes2kQrCY5KRLwys2tWbZAZyjGZcW5ZtgneZnBwzNRiBna9/48d4mQl19KLjcRuhO1hw==} + astro-expressive-code@0.44.1: + resolution: {integrity: sha512-DT1LnCqbHasBKlvzJ3m6LR4VI94wwx3W9EV/YbP1te4rqjOHsvsezHYuqb5MeLWLftXms/1FA9QBbwCo43DnJQ==} peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta || ^7.0.0 @@ -1921,12 +1938,12 @@ packages: astro-vtbot@3.0.0: resolution: {integrity: sha512-jVpYqaPi9Nz5UP9KgDFatSzXIe6n0w2YJjjzdsxNicd2ETQlfOkzbP8Qu7W6HC0DCE4dNTWLs8o7QRiFDqJkfw==} - astro@7.0.3: - resolution: {integrity: sha512-CK+G+Tl2DMV1EXCwVG45vyurxf2IfRTklMxDhRKn+tst9Yl8rWXpudL62Fa6zin5Bt968FBvuyASj1aJShROZg==} + astro@7.1.3: + resolution: {integrity: sha512-4dhPyAAXthf3xLEYnG8SeL7yr/nTPPABfY7e9YF0yuO+vK9Xp+8Q5j4xzsmL3GueukQv4oNwGNTBepLOiDGeJA==} engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true peerDependencies: - '@astrojs/markdown-remark': 7.2.0 + '@astrojs/markdown-remark': 7.2.1 peerDependenciesMeta: '@astrojs/markdown-remark': optional: true @@ -1953,8 +1970,8 @@ packages: bcp-47-match@2.0.3: resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} - bcp-47@2.1.0: - resolution: {integrity: sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==} + bcp-47@2.1.1: + resolution: {integrity: sha512-KLw+H/gd2p4zly1X7Yh/qziuyae5/w/QFnvTng9eZL5fvszL7Whl3MBoWF8yxL7ksUjBfOD+OxkytiqbBpG+Fw==} binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} @@ -1963,8 +1980,8 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - brace-expansion@5.0.6: - resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} + brace-expansion@5.0.7: + resolution: {integrity: sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==} engines: {node: 18 || 20 || >=22} braces@3.0.3: @@ -2054,9 +2071,9 @@ packages: cookie-es@1.2.3: resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==} - cookie@1.1.1: - resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} - engines: {node: '>=18'} + cookie@2.0.1: + resolution: {integrity: sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w==} + engines: {node: '>=22'} cose-base@1.0.3: resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} @@ -2340,8 +2357,8 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} - dompurify@3.4.11: - resolution: {integrity: sha512-zhlUV12GsaRzMsf9q5M254YhA4+VuF0fG+QFqu6aYpoGlKtz+w8//jBcGVYBgQkR5GHjUomejY84AV+/uPbWdw==} + dompurify@3.4.12: + resolution: {integrity: sha512-zQvGet8Z2sWbQhCmfFz/T5QWH2oBmjnqK3qvOjaqaNLrLEF912WamU+ohnTp0TCep/MFVHpdJuCZEdFOdTnEFg==} domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} @@ -2377,8 +2394,8 @@ packages: resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} - es-module-lexer@2.1.0: - resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} + es-module-lexer@2.3.1: + resolution: {integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==} es-toolkit@1.49.0: resolution: {integrity: sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g==} @@ -2423,8 +2440,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.6.0: - resolution: {integrity: sha512-6lVbcqSodALYo+4ELD0heG6lFiFxnLMuLkiMi2qV8LMp54N8tE8FT1GMH+ev4Ti00nFjNze2+Su6DsV5OQW3Dg==} + eslint@10.7.0: + resolution: {integrity: sha512-GVTD7s1vdIl6UYvAfriOPeY1Df8LIZjfofLvHwde+erDHGGuHyuM6xoxRxmHiebhYuD2p1vN4wWh0XzPARSGDQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -2494,8 +2511,8 @@ packages: expressive-code: ^0.41.7 typescript: ^5.5.0 - expressive-code@0.44.0: - resolution: {integrity: sha512-JXVWVNCKlLuZLMQH8cOiDUSosT0Bb+elwE/dbAkpwFwDFmyFyWlECoWZIohh2FkIF1iI67TQJ+Ts9k7oNDh2qA==} + expressive-code@0.44.1: + resolution: {integrity: sha512-GakidxhapWDzpKLqEaFQ8wGk6gAqEtPQibu8+yPBfnDLgev5Vdsh1pasTxnrXL/mzIknyqeTwhMHTghdaiUrTg==} extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -2522,11 +2539,11 @@ packages: fast-wrap-ansi@0.2.2: resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} - fast-xml-builder@1.2.0: - resolution: {integrity: sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==} + fast-xml-builder@1.3.0: + resolution: {integrity: sha512-F74cZEdCvuw9P41GAC3rod4X04jjWGM1JPEv/GWSqFTWLsdyMSBMBMlm9Hk3GLBgLBbdBNY8yee0pQh2RBVESQ==} - fast-xml-parser@5.9.3: - resolution: {integrity: sha512-brCNCeScma/kqa54J4PIDriSSSLssRkuYaUCpvHJulGc3HGI/xxKUCTDcYkAdqJsyb//ydpbxecjC3hB9+tb/g==} + fast-xml-parser@5.10.1: + resolution: {integrity: sha512-IEMIf7298kXuZSRFoGfMYrl7is8LpavODgbNz1cwIudv7KwVFnuU+UsMporfq6PD6aXSlawZlARiA3UywCTfMw==} hasBin: true fastq@1.20.1: @@ -2726,10 +2743,10 @@ packages: resolution: {integrity: sha512-ag87y7cJJ9/3+GxFr8Oy4O5faDsGRGnBGsJj/YjOSsSx/5eadKLYTMPlzuR6obgoCDDm0abAAZitXXQkMOPSpA==} engines: {node: '>= 20'} - i18next@26.3.3: - resolution: {integrity: sha512-aYVegyBdXSO93CMMihvr47jI7GHSOcIahMpJX+qzUXDzW4xDJf2uenIA+45vDU+YhiVdcfsql70AC9RVdMNrHg==} + i18next@26.3.6: + resolution: {integrity: sha512-Bu5Z2nAXgfVyM8xvW3jk9EKRIuX37PudsrBViThNFx7CR7aaYTpP01cxNB/E4c4UUzTDiAZRstEhsRfPOL/8xA==} peerDependencies: - typescript: ^5 || ^6 + typescript: ^5 || ^6 || ^7 peerDependenciesMeta: typescript: optional: true @@ -2742,8 +2759,8 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + ignore@7.0.6: + resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==} engines: {node: '>= 4'} import-meta-resolve@4.2.0: @@ -2783,11 +2800,6 @@ packages: is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - is-docker@4.0.0: resolution: {integrity: sha512-LHE+wROyG/Y/0ZnbktRCoTix2c1RhgWaZraMZ8o1Q7zCh0VSrICJQO5oqIIISrcSBtrXv0o233w1IYwsWCjTzA==} engines: {node: '>=20'} @@ -2804,11 +2816,6 @@ packages: is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -2817,12 +2824,8 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - is-unsafe@1.0.1: - resolution: {integrity: sha512-CLK2+VdgERgD96EYm5lUQssZYlRg2tkZnbsxZoacmSiRxiFJ4Nk4SzjCl+Ur+v3kXIY9dTIdb3IH22y1mZ56LA==} - - is-wsl@3.1.1: - resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} - engines: {node: '>=16'} + is-unsafe@2.0.0: + resolution: {integrity: sha512-2LdV822R+wmI86unXA93WCFpL6g+av8ynWk0nrHyJqGop5VoocYsSLFgN8jrfalT6iGeLNM4KXuVSsULP53kEA==} isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -2973,6 +2976,10 @@ packages: resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==} engines: {node: 20 || >=22} + lru-cache@11.5.2: + resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==} + engines: {node: 20 || >=22} + magic-regexp@0.10.0: resolution: {integrity: sha512-Uly1Bu4lO1hwHUW0CQeSWuRtzCMNO00CmXtS8N6fyvB3B979GOEEeAkiTUDsmbYLAbvpUS/Kt5c4ibosAzVyVg==} @@ -3194,16 +3201,16 @@ packages: muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - nanoid@3.3.15: - resolution: {integrity: sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==} + nanoid@3.3.16: + resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - neotraverse@0.6.18: - resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} + neotraverse@1.0.1: + resolution: {integrity: sha512-WmmLty1YWwJl9yZi77v2dVIV6X2kuYV8YYBI/G3LWGKdGHmHUvL1z7FW0iDvEvGAwNEoc5x1tOOOyDnf5jJw/w==} engines: {node: '>= 10'} nlcst-to-string@4.0.0: @@ -3231,8 +3238,8 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - obug@2.1.3: - resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} + obug@2.1.4: + resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} engines: {node: '>=12.20.0'} ofetch@1.5.1: @@ -3251,8 +3258,8 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - oxc-parser@0.124.0: - resolution: {integrity: sha512-h07SFj/tp2U3cf3+LFX6MmOguQiM9ahwpGs0ZK5CGhgL8p4kk24etrJKsEzhXAvo7mfvoKTZooZ5MLKAPRmJ1g==} + oxc-parser@0.131.0: + resolution: {integrity: sha512-SJ3/7ZPbgie8dr5Z9BI/M51zZbpXba+hRSG0MDzVwMW5CRQg2fjYE0jHGlLX4eeiibGgC/mzoDFKSDHwVZEHRQ==} engines: {node: ^20.19.0 || >=22.12.0} oxc-walker@0.7.0: @@ -3272,12 +3279,12 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-map@7.0.4: - resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} + p-map@7.0.5: + resolution: {integrity: sha512-e8vJF4XdVkzqqSHguEMz41mQO1wKwxKm5ENrUJQUu9kLDCtn83cxbyHZcszr4QC5zEA7WffRRC4gsTecC7J9oA==} engines: {node: '>=18'} - p-queue@9.3.0: - resolution: {integrity: sha512-7NED7xhQ74Ngp4JP/2e0VZHp7vSWfJfqeiR92jPgxsz6m0Se4P03YoTKa9dDXyZ3r6P616gUXttrB6nnHYKang==} + p-queue@9.3.1: + resolution: {integrity: sha512-POWdiIPmsUPGwb4FeQ4OBg46aqmcInSWe45CKDsGHiOBiVQM9chqfQTuqhuTzcg2Vz9faTI65at0KkVyVEiCHw==} engines: {node: '>=20'} p-timeout@7.0.1: @@ -3287,8 +3294,8 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@1.6.0: - resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + package-manager-detector@1.7.0: + resolution: {integrity: sha512-xg1eHpwYL/D/HEdWw2goFZP6vV0FH7W+PZ5rFkGjdIDLtxq7EkzBUeT3m+lndYCt8wKbmofUu1MUdMCXkCk9ZQ==} pagefind@1.5.2: resolution: {integrity: sha512-XTUaK0hXMCu2jszWE584JGQT7y284TmMV9l/HX3rnG5uo3rHI/uHU56XTyyyPFjeWEBxECbAi0CaFDJOONtG0Q==} @@ -3322,8 +3329,8 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - path-expression-matcher@1.6.1: - resolution: {integrity: sha512-h7bxdzhHk8Knyc4Tj+jMaa7fEEoUJy7p1qtbVgkYg1Uhpe5Np5VuGXCRZnkZvU+Q42M1vStt0ifa3ueykRJPmQ==} + path-expression-matcher@1.6.2: + resolution: {integrity: sha512-enSlaiat05iasnzmgNxRj8reFdj3puY2QpNgP1aPIaVfT6nn9ICuPoFlKHk8EN22HcwewshO+mN2DGbkCEOtqQ==} engines: {node: '>=14.0.0'} path-key@3.1.1: @@ -3357,6 +3364,10 @@ packages: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} + picomatch@4.0.5: + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + engines: {node: '>=12'} + pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} @@ -3389,8 +3400,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.5.15: - resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} + postcss@8.5.20: + resolution: {integrity: sha512-lW616l85ucIQL+FocMmL7pQFPqBmwejrCMg+iPxyImlrANNJG9NHq/RkyCZopDhd8C3LA03PHRJDjkbGu8vvug==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -3401,8 +3412,8 @@ packages: resolution: {integrity: sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==} engines: {node: ^14.15.0 || >=16.0.0} - prettier@3.9.1: - resolution: {integrity: sha512-ppiDo2CSwexck1eyZUwJHg/N3nf1+6IRCv7W/VJ5vaLnVCmB7+3CdRfMwoCHBBX6xTrREDTksZ4OZl5SSf4zXA==} + prettier@3.9.5: + resolution: {integrity: sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg==} engines: {node: '>=14'} hasBin: true @@ -3474,8 +3485,8 @@ packages: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true - rehype-expressive-code@0.44.0: - resolution: {integrity: sha512-5r74C5F2sMR3X+QJH8OKWgZBO/cqRw5W1fLT6GVlSfLqepk+4j8tGFkyPqZYWjwntsBHzKPDH2zI68sZ7ScLfA==} + rehype-expressive-code@0.44.1: + resolution: {integrity: sha512-+VZgs7Evw4LXRN3owpoBNSTpYuW6GeOdjqcUT1TuY8o/4MGPtbd0EU7Bgrju7X8KrQ6SslOBAuGWJ5fV5TriJQ==} rehype-format@5.0.1: resolution: {integrity: sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==} @@ -3545,8 +3556,8 @@ packages: robust-predicates@3.0.3: resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==} - rolldown@1.1.3: - resolution: {integrity: sha512-1F1eEtUBtFvcGm1HQ9TiUIUHPQG7mSAODrhIzjxoUEFuo8OcbrGLiVLkevNgj84TE4lnHvnumwFjhJO5Eu135g==} + rolldown@1.1.5: + resolution: {integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -3568,15 +3579,12 @@ packages: sass-formatter@0.7.9: resolution: {integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==} - satori@0.26.0: - resolution: {integrity: sha512-tkMFrfIs3l2mQ2JEcyW0ADTy3zGggFRFzi6Ef8YozQSFsFKEqaSO1Y8F9wJg4//PJGQauMalHGTUEkPrFwhVPA==} + satori@0.28.1: + resolution: {integrity: sha512-PjF/PhstPlvBHxsBhMi8A8F2z9pgd1VkEI8a7n2ZkFg4cKE1f8rRP/LGiXLv3EFTw7a2gr9wS2pWwgMYdVJKUg==} engines: {node: '>=16'} - satteri@0.9.3: - resolution: {integrity: sha512-2XfBh89LCnBMFkNOeVKkBLelAZcIA17VLHsgJum1tJ2fXiPZDN/TDXv4ku46rFOQXYd41LJ0kiZh5gPqExcCsg==} - - satteri@0.9.4: - resolution: {integrity: sha512-BKob126Tay84diOZsnVNH/Q/c+3njPJTCad3w5zLKa6j8bVjxskPNHDtxrMwYK4bN/RlqUSdMnPwKY4k65EMOQ==} + satteri@0.9.5: + resolution: {integrity: sha512-ZuWVl+vnM64y+/TtX8Kosv2c00W+hLQiiwnEL6H0UKVVrxFqMw4D2CJHHQaouVd89OAhtBBfjWLqhKi3TVUV4w==} sax@1.6.0: resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} @@ -3587,19 +3595,24 @@ packages: engines: {node: '>=10'} hasBin: true - seroval-plugins@1.5.4: - resolution: {integrity: sha512-S0xQPhUTefAhNvNWFg0c1J8qJArHt5KdtJ/cFAofo06KD1MVSeFWyl4iiu+ApDIuw0WhjpOfCdgConOfAnLgkw==} + seroval-plugins@1.5.6: + resolution: {integrity: sha512-HXuLAX2pu/UByPpaeo/TaMfvMIi+1QqIoPJYCcAtU8QkVNwgR6MPlGuCQTErV1JwraaMbYaWVIBX7mppzGLATQ==} engines: {node: '>=10'} peerDependencies: seroval: '>=1.4.1' - seroval@1.5.4: - resolution: {integrity: sha512-46uFvgrXTVxZcUorgSSRZ4y+ieqLLQRMlG4bnCZKW3qI6BZm7Rg4ntMW4p1mILEEBZWrFlcpp0AyIIlM6jD9iw==} + seroval@1.5.6: + resolution: {integrity: sha512-rVQVWjjSvlINzaQPZH5JFqsqEsIWdTxY3iJZCnTL/5gQbXIRooVZKI60tVCkOVfzcRPejboxO2t0P89dg5mQaA==} engines: {node: '>=10'} - sharp@0.34.5: - resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + sharp@0.35.3: + resolution: {integrity: sha512-ej0zVHuZGHCiABXcNxeYhpRnPNPAcvbG8RMdBAhDAxLKkCRVSpK3Iyu7qbqw3JMzoj0REeM6f3tJLtVwl0023Q==} + engines: {node: '>=20.9.0'} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -3609,8 +3622,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@4.3.0: - resolution: {integrity: sha512-NKKjWzR6LIGL3sXBrWDw9sDS9cxx42/DkysaNqJEeOWE8Kix5gpak0bc00OfDVEO4oyXSyz8+aRaqKoBD1yo7A==} + shiki@4.3.1: + resolution: {integrity: sha512-oR+qDVi2OjX1tmDpyv+3KviX01KzO6Af+0NNnKnsp9491UEGz2YpxTuJboS/6VhYpTdqzmuJBuiTlrAWWJAssw==} engines: {node: '>=20'} siginfo@2.0.0: @@ -3639,8 +3652,8 @@ packages: resolution: {integrity: sha512-aqVvWoyO21L23mb+drl4RmMXbf6N7FdHjAhTRA9ZBL7apWBgfWC16KjrASI+1p9GAroljyMHj6fK67i0UiTNvQ==} engines: {node: '>= 18'} - solid-js@1.9.13: - resolution: {integrity: sha512-6hJeJMOcEX8ktqjpDoJZEmld3ijvcvWBDtiXBm7f4332SiFN66QeAQI1REQshvyUoISsSeJ4PHDauKYbwao9JQ==} + solid-js@1.9.14: + resolution: {integrity: sha512-sAEXC0Kk0S1EDg+8ysEWJDbYhA3RRoEjwuySUGlKIemeo0I5YZfOyumNjNs9Sv3y2nmhD+0rW66ag2HsMuQiGQ==} solid-transition-group@0.2.3: resolution: {integrity: sha512-iB72c9N5Kz9ykRqIXl0lQohOau4t0dhel9kjwFvx81UZJbVwaChMuBuyhiZmK24b8aKEK0w3uFM96ZxzcyZGdg==} @@ -3662,11 +3675,11 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - starlight-github-alerts@0.3.0: - resolution: {integrity: sha512-KbyOvBmaTeywKobE+qUwmhsAFMmN9YD6e53QY4FcsZxXyC+xTSG61tHJU39dGivZQDKJl2aI4OeZa0IpB/3aDg==} + starlight-github-alerts@0.4.0: + resolution: {integrity: sha512-YxyL1OKed12ZcvdgHXA2iZX21Cz9h0Ei7DuAzHym6nbt5St0V3/w2djjM+/z05ktp0fA3F+BkOgWc6je4BOf/w==} engines: {node: '>=22.12.0'} peerDependencies: - '@astrojs/starlight': '>=0.40.0' + '@astrojs/starlight': '>=0.41.0' starlight-image-zoom@0.15.0: resolution: {integrity: sha512-GIZVuaiaVuFsbyYqiT7M4FYJBvkTsvdO1XoOKM/iNHt85BaVn/A7/kLpdb5XnUsAZohOMS77ahaolofnGIqeOQ==} @@ -3680,21 +3693,21 @@ packages: peerDependencies: '@astrojs/starlight': '>=0.38.0' - starlight-links-validator@0.25.1: - resolution: {integrity: sha512-49F1JRvaJmvKSnM/jPFTjDVVwDJBUJ78jZE+fOResTRwYSa8MzPQzsJlSS1FeolsdqAat1evAu//WgIm65uyzw==} + starlight-links-validator@0.25.2: + resolution: {integrity: sha512-RQiHkM8FHKermsjMkSb+uS/q50Dv5P0O0ECWKxJyTv4stuO8QTorIEKnITDDLEf9/xyg7M69arxiK2ola3OMqA==} engines: {node: '>=22.12.0'} peerDependencies: '@astrojs/starlight': '>=0.41.0' astro: '>=7.0.2' - starlight-llms-txt@0.10.0: - resolution: {integrity: sha512-LgkSjkvdACsGHkFq1ES00F0BU4lRepjJoaUmOgxBxNWx4txwpySVPtntKdAvDvlhinyN0ZBRpnAsN/sVQ1UEfA==} + starlight-llms-txt@0.11.0: + resolution: {integrity: sha512-83TU5zPgJhL9fXIWAOWjQjyQ6EKocshEjJyA4zOJjOqu/oxQsrTpYGYxjHLyfZe4LRD52N9eCuykSkaIYwUyDw==} peerDependencies: - '@astrojs/starlight': '>=0.38.0' - astro: ^6.0.0 + '@astrojs/starlight': '>=0.41.0' + astro: ^7.0.0 - starlight-page-actions@0.6.2: - resolution: {integrity: sha512-Mr4ZpvxTAbofvW8L08inl0wdeHrjGP+Kujro7TfTMYvw1prrWBhIGQJe/ykAK16zwG1eeCl+vzYieGcwH7tILg==} + starlight-page-actions@0.7.0: + resolution: {integrity: sha512-zZFtBB1x5KKfgh/P0iki0JJleaAu2I0isnqze1B2ThPMlhUrZEmMyHouq7Altff6mmiSSQRvAhHGK7kP5xwLdQ==} engines: {node: ^22.0.0 || >=24.0.0} peerDependencies: '@astrojs/starlight': '>=0.36.0' @@ -3721,8 +3734,8 @@ packages: peerDependencies: '@astrojs/starlight': '>=0.38.0' - std-env@4.1.0: - resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} + std-env@4.2.0: + resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} stream-replace-string@2.0.0: resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} @@ -3756,8 +3769,8 @@ packages: resolution: {integrity: sha512-ZW2OvfeCXrNTbLakPUzjQG922EeGCOteFSVoek5DKStTh898wf7zgtuFlzQN8HfZCxC3Eh02yJVrRW51hADf+w==} engines: {node: '>=20'} - svgo@4.0.1: - resolution: {integrity: sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==} + svgo@4.0.2: + resolution: {integrity: sha512-ekx94z1rRc5LDi6oSUaeRnYhd0UOJxdtQCL2rF8xpWxD3TPAsISWOrxezqGovqS38GRZOdpDfvQe3ts6F7nsng==} engines: {node: '>=16'} hasBin: true @@ -3765,6 +3778,9 @@ packages: resolution: {integrity: sha512-qFAy10MTMwjzjU8U16YS4YoZD+NQLHzLssFMNqgravjbvIPNiqkGFR4yjhJfmY9R5OFU7+yHxc6y+uGHkKwLRA==} engines: {node: '>=20'} + tidymd@0.1.0: + resolution: {integrity: sha512-zgwjLyj5KvZSNtoAFZgq7AVXuztNamC69/NNPjd4LJ/DnF3l4kCCgj9u82TO+LbZ7F+lOo8Vc+FPMfBFG4nz+Q==} + tiny-inflate@1.0.3: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} @@ -3820,8 +3836,8 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsx@4.22.4: - resolution: {integrity: sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg==} + tsx@4.23.1: + resolution: {integrity: sha512-GQHnkIfxyx1wYCOS/wonik5MVRZU9hi1TEZmzGZSCJB1y9YgoZ8H6itNE/u4suE+yLmOzuE4E5S4TZ/ZX2wcWQ==} engines: {node: '>=18.0.0'} hasBin: true @@ -3840,8 +3856,8 @@ packages: type-level-regexp@0.1.17: resolution: {integrity: sha512-wTk4DH3cxwk196uGLK/E9pE45aLfeKJacKmcEgEOA/q5dnPGNxXt0cfYdFxb57L+sEpf1oJH4Dnx/pnRcku9jg==} - typescript-eslint@8.62.0: - resolution: {integrity: sha512-8QxXi+ZACKX0kaqO4gY8kn0RSD9gFfaHDWwjqtEN48aWCBkX4MJaufWN+c3BzlrXLOxfywDL8CaoqUwcRq4j4Q==} + typescript-eslint@8.65.0: + resolution: {integrity: sha512-/ggrHAwyjENDusvyxbuqxAC2dTnZg/Z8F+fgQtYIz+L6n/9HfSlEZcFGV/NsMNa6CkGk0xUjUAFwC0vHOflvIA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3855,8 +3871,8 @@ packages: ufo@1.6.4: resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} - ultrahtml@1.6.0: - resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} + ultrahtml@1.7.0: + resolution: {integrity: sha512-2xRd0VHoAQE4M+vF/DvFFB7pUV0ZxTW1TLi7lHQWnF/Sb5TPeEUV/l+hxcNnGO00ZXGnR0voCMmYRKQf+rvJ2g==} ultramatter@0.0.4: resolution: {integrity: sha512-1f/hO3mR+/Hgue4eInOF/Qm/wzDqwhYha4DxM0hre9YIUyso3fE2XtrAU6B4njLqTC8CM49EZaYgsVSa+dXHGw==} @@ -3873,8 +3889,8 @@ packages: undici-types@7.18.2: resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} - unicode-segmenter@0.14.5: - resolution: {integrity: sha512-jHGmj2LUuqDcX3hqY12Ql+uhUTn8huuxNZGq7GvtF6bSybzH3aFgedYu/KTzQStEgt1Ra2F3HxadNXsNjb3m3g==} + unicode-segmenter@0.17.0: + resolution: {integrity: sha512-rN+u/LmZx2SISURhq2vy+JeQmmf+9lFVsdVgvFJHa6wL42h3ojnYaS/UK4Fgsjku9C2P23WB/JK5sQWeBaZt+A==} unicode-trie@2.0.0: resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} @@ -3921,13 +3937,12 @@ packages: unist-util-visit@5.1.0: resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} - unocss@66.6.8: - resolution: {integrity: sha512-stq9FbxedTDkoWrxnNQNnPQXOaM6L2Lobq8HzjXdR2tMc55gtfqDArqL7TESfnN7qeZsIocNYCHLNA4DXq50YQ==} - engines: {node: '>=14'} + unocss@66.7.5: + resolution: {integrity: sha512-nAdmU8TwnQoiLnQjZ6Hm1GmHy9lTexKsAZNEJtZnxN9wyFRc1eLjQgmh9r7UEGxBQMQLD8OZOgmk5HpwObbh0Q==} peerDependencies: - '@unocss/astro': 66.6.8 - '@unocss/postcss': 66.6.8 - '@unocss/webpack': 66.6.8 + '@unocss/astro': 66.7.5 + '@unocss/postcss': 66.7.5 + '@unocss/webpack': 66.7.5 peerDependenciesMeta: '@unocss/astro': optional: true @@ -3936,8 +3951,8 @@ packages: '@unocss/webpack': optional: true - unplugin-utils@0.3.1: - resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==} + unplugin-utils@0.3.2: + resolution: {integrity: sha512-xVToRh2CTmLk2HnEG7ac4rl1MJTT3RFkpS8B++/SnB0kXvuaavD+n3m/vrzyWQOdJNSZQACnbz01pnppbwV5BA==} engines: {node: '>=20.19.0'} unplugin@2.3.11: @@ -4020,6 +4035,14 @@ packages: resolution: {integrity: sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew==} hasBin: true + valibot@1.4.2: + resolution: {integrity: sha512-gjdCvJ6d3RyHAneqxMYMW9QMCwYMb3jpOO0IyHZV1bnRHFBHrX3VkIILt5XYR0WhwHiH7Mty8ovuPZ/O3gamrg==} + peerDependencies: + typescript: '>=5' + peerDependenciesMeta: + typescript: + optional: true + vanilla-cookieconsent@3.1.0: resolution: {integrity: sha512-/McNRtm/3IXzb9dhqMIcbquoU45SzbN2VB+To4jxEPqMmp7uVniP6BhGLjU8MC7ZCDsNQVOp27fhQTM/ruIXAA==} @@ -4043,8 +4066,8 @@ packages: peerDependencies: vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - vite@8.1.0: - resolution: {integrity: sha512-BuJcQK/56NQTWDGn4ABea3q4SSBdNPWwNZKTkkUpcMPnLoquSYH8llRtSUIgoL1KSCpHt5eghLShn50mH36y7Q==} + vite@8.1.5: + resolution: {integrity: sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -4094,20 +4117,20 @@ packages: vite: optional: true - vitest@4.1.9: - resolution: {integrity: sha512-nE3/LEyc0z87uHYLZebqCUOaJr2hdtuPp7BQ4BosVFnfltxgAvMG08NyrSGlPpOUWvR27c5flSmYFTNr78L9GQ==} + vitest@4.1.10: + resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.9 - '@vitest/browser-preview': 4.1.9 - '@vitest/browser-webdriverio': 4.1.9 - '@vitest/coverage-istanbul': 4.1.9 - '@vitest/coverage-v8': 4.1.9 - '@vitest/ui': 4.1.9 + '@vitest/browser-playwright': 4.1.10 + '@vitest/browser-preview': 4.1.10 + '@vitest/browser-webdriverio': 4.1.10 + '@vitest/coverage-istanbul': 4.1.10 + '@vitest/coverage-v8': 4.1.10 + '@vitest/ui': 4.1.10 happy-dom: '*' jsdom: '*' vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -4145,10 +4168,6 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - which-pm-runs@1.1.0: - resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} - engines: {node: '>=4'} - which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -4163,8 +4182,8 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - xml-naming@0.1.0: - resolution: {integrity: sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==} + xml-naming@0.3.0: + resolution: {integrity: sha512-ghig2TBE/H11aOVgmahA3MhimvkBr6JIYknH/Dhdk10nXwdbIqBJsbfMxpvFPG8bAw77gN29aQWvKpmVoPlvPQ==} engines: {node: '>=16.0.0'} xxhash-wasm@1.1.0: @@ -4203,28 +4222,30 @@ snapshots: '@antfu/install-pkg@1.1.0': dependencies: - package-manager-detector: 1.6.0 + package-manager-detector: 1.7.0 tinyexec: 1.2.4 '@astro-community/astro-embed-baseline-status@0.2.2': dependencies: '@astro-community/astro-embed-utils': 0.2.0 - '@astro-community/astro-embed-bluesky@0.2.1': + '@astro-community/astro-embed-bluesky@0.2.3(typescript@6.0.3)': dependencies: - '@atcute/atproto': 3.1.12(@atcute/lexicons@1.3.1) - '@atcute/bluesky': 3.3.5(@atcute/lexicons@1.3.1) - '@atcute/bluesky-richtext-segmenter': 3.0.0 - '@atcute/client': 4.2.2(@atcute/lexicons@1.3.1) - '@atcute/lexicons': 1.3.1 + '@atcute/atproto': 4.0.3(@atcute/lexicons@2.0.3) + '@atcute/bluesky': 4.0.14(@atcute/lexicons@2.0.3) + '@atcute/bluesky-richtext-segmenter': 3.0.2 + '@atcute/client': 5.1.1(@atcute/lexicons@2.0.3)(typescript@6.0.3) + '@atcute/lexicons': 2.0.3 + transitivePeerDependencies: + - typescript '@astro-community/astro-embed-gist@0.1.0': dependencies: '@astro-community/astro-embed-utils': 0.2.0 - '@astro-community/astro-embed-integration@0.12.0(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))': + '@astro-community/astro-embed-integration@0.12.1(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3)': dependencies: - '@astro-community/astro-embed-bluesky': 0.2.1 + '@astro-community/astro-embed-bluesky': 0.2.3(typescript@6.0.3) '@astro-community/astro-embed-gist': 0.1.0 '@astro-community/astro-embed-link-preview': 0.3.1 '@astro-community/astro-embed-mastodon': 0.1.1 @@ -4232,9 +4253,11 @@ snapshots: '@astro-community/astro-embed-vimeo': 0.3.12 '@astro-community/astro-embed-youtube': 0.5.10 '@types/unist': 3.0.3 - astro: 7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0) - astro-auto-import: 0.5.1(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0)) + astro: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) + astro-auto-import: 0.5.2(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) unist-util-select: 5.1.0 + transitivePeerDependencies: + - typescript '@astro-community/astro-embed-link-preview@0.3.1': dependencies: @@ -4260,25 +4283,25 @@ snapshots: dependencies: lite-youtube-embed: 0.3.4 - '@astrojs/compiler-binding-darwin-arm64@0.2.3': + '@astrojs/compiler-binding-darwin-arm64@0.3.1': optional: true - '@astrojs/compiler-binding-darwin-x64@0.2.3': + '@astrojs/compiler-binding-darwin-x64@0.3.1': optional: true - '@astrojs/compiler-binding-linux-arm64-gnu@0.2.3': + '@astrojs/compiler-binding-linux-arm64-gnu@0.3.1': optional: true - '@astrojs/compiler-binding-linux-arm64-musl@0.2.3': + '@astrojs/compiler-binding-linux-arm64-musl@0.3.1': optional: true - '@astrojs/compiler-binding-linux-x64-gnu@0.2.3': + '@astrojs/compiler-binding-linux-x64-gnu@0.3.1': optional: true - '@astrojs/compiler-binding-linux-x64-musl@0.2.3': + '@astrojs/compiler-binding-linux-x64-musl@0.3.1': optional: true - '@astrojs/compiler-binding-wasm32-wasi@0.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + '@astrojs/compiler-binding-wasm32-wasi@0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': dependencies: '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) transitivePeerDependencies: @@ -4286,59 +4309,54 @@ snapshots: - '@emnapi/runtime' optional: true - '@astrojs/compiler-binding-win32-arm64-msvc@0.2.3': + '@astrojs/compiler-binding-win32-arm64-msvc@0.3.1': optional: true - '@astrojs/compiler-binding-win32-x64-msvc@0.2.3': + '@astrojs/compiler-binding-win32-x64-msvc@0.3.1': optional: true - '@astrojs/compiler-binding@0.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + '@astrojs/compiler-binding@0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': optionalDependencies: - '@astrojs/compiler-binding-darwin-arm64': 0.2.3 - '@astrojs/compiler-binding-darwin-x64': 0.2.3 - '@astrojs/compiler-binding-linux-arm64-gnu': 0.2.3 - '@astrojs/compiler-binding-linux-arm64-musl': 0.2.3 - '@astrojs/compiler-binding-linux-x64-gnu': 0.2.3 - '@astrojs/compiler-binding-linux-x64-musl': 0.2.3 - '@astrojs/compiler-binding-wasm32-wasi': 0.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - '@astrojs/compiler-binding-win32-arm64-msvc': 0.2.3 - '@astrojs/compiler-binding-win32-x64-msvc': 0.2.3 + '@astrojs/compiler-binding-darwin-arm64': 0.3.1 + '@astrojs/compiler-binding-darwin-x64': 0.3.1 + '@astrojs/compiler-binding-linux-arm64-gnu': 0.3.1 + '@astrojs/compiler-binding-linux-arm64-musl': 0.3.1 + '@astrojs/compiler-binding-linux-x64-gnu': 0.3.1 + '@astrojs/compiler-binding-linux-x64-musl': 0.3.1 + '@astrojs/compiler-binding-wasm32-wasi': 0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + '@astrojs/compiler-binding-win32-arm64-msvc': 0.3.1 + '@astrojs/compiler-binding-win32-x64-msvc': 0.3.1 transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' - '@astrojs/compiler-rs@0.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + '@astrojs/compiler-rs@0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': dependencies: - '@astrojs/compiler-binding': 0.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + '@astrojs/compiler-binding': 0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' '@astrojs/compiler@2.13.1': {} - '@astrojs/internal-helpers@0.10.0': + '@astrojs/internal-helpers@0.10.1': dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 js-yaml: 4.3.0 - picomatch: 4.0.4 + picomatch: 4.0.5 retext-smartypants: 6.2.0 - shiki: 4.3.0 + shiki: 4.3.1 smol-toml: 1.7.0 unified: 11.0.5 - '@astrojs/internal-helpers@0.9.1': - dependencies: - picomatch: 4.0.4 - - '@astrojs/markdown-remark@7.1.2': + '@astrojs/markdown-remark@7.2.1': dependencies: - '@astrojs/internal-helpers': 0.9.1 + '@astrojs/internal-helpers': 0.10.1 '@astrojs/prism': 4.0.2 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 hast-util-to-text: 4.0.2 - js-yaml: 4.3.0 mdast-util-definitions: 6.0.0 rehype-raw: 7.0.0 rehype-stringify: 10.0.1 @@ -4346,9 +4364,6 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.2 remark-smartypants: 3.0.2 - retext-smartypants: 6.2.0 - shiki: 4.3.0 - smol-toml: 1.7.0 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.1.0 @@ -4357,62 +4372,22 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/markdown-remark@7.2.0': + '@astrojs/markdown-satteri@0.3.4': dependencies: - '@astrojs/internal-helpers': 0.10.0 + '@astrojs/internal-helpers': 0.10.1 '@astrojs/prism': 4.0.2 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 - hast-util-to-text: 4.0.2 - mdast-util-definitions: 6.0.0 - rehype-raw: 7.0.0 - rehype-stringify: 10.0.1 - remark-gfm: 4.0.1 - remark-parse: 11.0.0 - remark-rehype: 11.1.2 - remark-smartypants: 3.0.2 - unified: 11.0.5 - unist-util-remove-position: 5.0.0 - unist-util-visit: 5.1.0 - unist-util-visit-parents: 6.0.2 - vfile: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@astrojs/markdown-satteri@0.3.2': - dependencies: - '@astrojs/internal-helpers': 0.10.0 - '@astrojs/prism': 4.0.2 - github-slugger: 2.0.0 - satteri: 0.9.3 - - '@astrojs/mdx@5.0.6(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))': - dependencies: - '@astrojs/markdown-remark': 7.1.2 - '@mdx-js/mdx': 3.1.1 - acorn: 8.17.0 - astro: 7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0) - es-module-lexer: 2.1.0 - estree-util-visit: 2.0.0 - hast-util-to-html: 9.0.5 - piccolore: 0.1.3 - rehype-raw: 7.0.0 - remark-gfm: 4.0.1 - remark-smartypants: 3.0.2 - source-map: 0.7.6 - unist-util-visit: 5.1.0 - vfile: 6.0.3 - transitivePeerDependencies: - - supports-color + satteri: 0.9.5 - '@astrojs/mdx@7.0.0(@astrojs/markdown-satteri@0.3.2)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))': + '@astrojs/mdx@7.0.3(@astrojs/markdown-satteri@0.3.4)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))': dependencies: - '@astrojs/internal-helpers': 0.10.0 - '@astrojs/markdown-remark': 7.2.0 + '@astrojs/internal-helpers': 0.10.1 + '@astrojs/markdown-remark': 7.2.1 '@mdx-js/mdx': 3.1.1 acorn: 8.17.0 - astro: 7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0) - es-module-lexer: 2.1.0 + astro: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) + es-module-lexer: 2.3.1 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 piccolore: 0.1.3 @@ -4423,7 +4398,7 @@ snapshots: unist-util-visit: 5.1.0 vfile: 6.0.3 optionalDependencies: - '@astrojs/markdown-satteri': 0.3.2 + '@astrojs/markdown-satteri': 0.3.4 transitivePeerDependencies: - supports-color @@ -4431,9 +4406,9 @@ snapshots: dependencies: prismjs: 1.30.0 - '@astrojs/rss@4.0.18': + '@astrojs/rss@4.0.19': dependencies: - fast-xml-parser: 5.9.3 + fast-xml-parser: 5.10.1 piccolore: 0.1.3 zod: 4.4.3 @@ -4443,23 +4418,23 @@ snapshots: stream-replace-string: 2.0.0 zod: 4.4.3 - '@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3)': + '@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3)': dependencies: - '@astrojs/markdown-satteri': 0.3.2 - '@astrojs/mdx': 7.0.0(@astrojs/markdown-satteri@0.3.2)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0)) + '@astrojs/markdown-satteri': 0.3.4 + '@astrojs/mdx': 7.0.3(@astrojs/markdown-satteri@0.3.4)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) '@astrojs/sitemap': 3.7.3 '@pagefind/default-ui': 1.5.2 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0) - astro-expressive-code: 0.44.0(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0)) - bcp-47: 2.1.0 + astro: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) + astro-expressive-code: 0.44.1(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) + bcp-47: 2.1.1 hast-util-from-html: 2.0.3 hast-util-select: 6.0.4 hast-util-to-string: 3.0.1 hastscript: 9.0.1 - i18next: 26.3.3(typescript@6.0.3) + i18next: 26.3.6(typescript@6.0.3) js-yaml: 4.3.0 klona: 2.0.6 magic-string: 0.30.21 @@ -4470,58 +4445,61 @@ snapshots: rehype: 13.0.2 rehype-format: 5.0.1 remark-directive: 4.0.0 - satteri: 0.9.3 - ultrahtml: 1.6.0 + satteri: 0.9.5 + ultrahtml: 1.7.0 unified: 11.0.5 unist-util-visit: 5.1.0 vfile: 6.0.3 optionalDependencies: - '@astrojs/markdown-remark': 7.2.0 + '@astrojs/markdown-remark': 7.2.1 transitivePeerDependencies: - supports-color - typescript - '@astrojs/telemetry@3.3.2': + '@astrojs/telemetry@3.3.3': dependencies: ci-info: 4.4.0 dset: 3.1.4 is-docker: 4.0.0 - is-wsl: 3.1.1 - which-pm-runs: 1.1.0 + package-manager-detector: 1.7.0 - '@atcute/atproto@3.1.12(@atcute/lexicons@1.3.1)': + '@atcute/atproto@4.0.3(@atcute/lexicons@2.0.3)': dependencies: - '@atcute/lexicons': 1.3.1 + '@atcute/lexicons': 2.0.3 - '@atcute/bluesky-richtext-segmenter@3.0.0': {} + '@atcute/bluesky-richtext-segmenter@3.0.2': {} - '@atcute/bluesky@3.3.5(@atcute/lexicons@1.3.1)': + '@atcute/bluesky@4.0.14(@atcute/lexicons@2.0.3)': dependencies: - '@atcute/atproto': 3.1.12(@atcute/lexicons@1.3.1) - '@atcute/lexicons': 1.3.1 + '@atcute/atproto': 4.0.3(@atcute/lexicons@2.0.3) + '@atcute/lexicons': 2.0.3 - '@atcute/client@4.2.2(@atcute/lexicons@1.3.1)': + '@atcute/client@5.1.1(@atcute/lexicons@2.0.3)(typescript@6.0.3)': dependencies: - '@atcute/identity': 1.1.5(@atcute/lexicons@1.3.1) - '@atcute/lexicons': 1.3.1 + '@atcute/identity': 2.0.2(@atcute/lexicons@2.0.3)(typescript@6.0.3) + '@atcute/lexicons': 2.0.3 + transitivePeerDependencies: + - typescript - '@atcute/identity@1.1.5(@atcute/lexicons@1.3.1)': + '@atcute/identity@2.0.2(@atcute/lexicons@2.0.3)(typescript@6.0.3)': dependencies: - '@atcute/lexicons': 1.3.1 - '@badrap/valita': 0.4.6 + '@atcute/lexicons': 2.0.3 + valibot: 1.4.2(typescript@6.0.3) + transitivePeerDependencies: + - typescript - '@atcute/lexicons@1.3.1': + '@atcute/lexicons@2.0.3': dependencies: - '@atcute/uint8array': 1.1.2 - '@atcute/util-text': 1.3.2 + '@atcute/uint8array': 1.1.5 + '@atcute/util-text': 1.3.4 '@standard-schema/spec': 1.1.0 esm-env: 1.2.2 - '@atcute/uint8array@1.1.2': {} + '@atcute/uint8array@1.1.5': {} - '@atcute/util-text@1.3.2': + '@atcute/util-text@1.3.4': dependencies: - unicode-segmenter: 0.14.5 + unicode-segmenter: 0.17.0 '@axe-core/playwright@4.12.1(playwright-core@1.61.1)': dependencies: @@ -4543,80 +4521,47 @@ snapshots: '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@badrap/valita@0.4.6': {} - '@braintree/sanitize-url@7.1.2': {} - '@bruits/satteri-darwin-arm64@0.9.3': - optional: true - - '@bruits/satteri-darwin-arm64@0.9.4': - optional: true - - '@bruits/satteri-darwin-x64@0.9.3': - optional: true - - '@bruits/satteri-darwin-x64@0.9.4': + '@bruits/satteri-darwin-arm64@0.9.5': optional: true - '@bruits/satteri-linux-arm64-gnu@0.9.3': + '@bruits/satteri-darwin-x64@0.9.5': optional: true - '@bruits/satteri-linux-arm64-gnu@0.9.4': + '@bruits/satteri-linux-arm64-gnu@0.9.5': optional: true - '@bruits/satteri-linux-arm64-musl@0.9.3': + '@bruits/satteri-linux-arm64-musl@0.9.5': optional: true - '@bruits/satteri-linux-arm64-musl@0.9.4': + '@bruits/satteri-linux-x64-gnu@0.9.5': optional: true - '@bruits/satteri-linux-x64-gnu@0.9.3': + '@bruits/satteri-linux-x64-musl@0.9.5': optional: true - '@bruits/satteri-linux-x64-gnu@0.9.4': - optional: true - - '@bruits/satteri-linux-x64-musl@0.9.3': - optional: true - - '@bruits/satteri-linux-x64-musl@0.9.4': - optional: true - - '@bruits/satteri-wasm32-wasi@0.9.3': + '@bruits/satteri-wasm32-wasi@0.9.5': dependencies: '@emnapi/core': 1.11.1 '@emnapi/runtime': 1.11.1 '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optional: true - '@bruits/satteri-wasm32-wasi@0.9.4': - dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - optional: true - - '@bruits/satteri-win32-arm64-msvc@0.9.3': - optional: true - - '@bruits/satteri-win32-arm64-msvc@0.9.4': + '@bruits/satteri-win32-arm64-msvc@0.9.5': optional: true - '@bruits/satteri-win32-x64-msvc@0.9.3': - optional: true - - '@bruits/satteri-win32-x64-msvc@0.9.4': + '@bruits/satteri-win32-x64-msvc@0.9.5': optional: true '@capsizecss/unpack@4.0.1': dependencies: fontkitten: 1.0.3 - '@catppuccin/starlight@2.0.1(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3))(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))': + '@catppuccin/starlight@2.1.0(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3))(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))': dependencies: - '@astrojs/starlight': 0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3) - astro: 7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0) + '@astrojs/starlight': 0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3) + astro: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) '@chevrotain/types@11.1.2': {} @@ -4625,14 +4570,14 @@ snapshots: picocolors: 1.1.1 sisteransi: 1.0.5 - '@clack/core@1.4.2': + '@clack/core@1.4.3': dependencies: fast-wrap-ansi: 0.2.2 sisteransi: 1.0.5 - '@clack/prompts@1.6.0': + '@clack/prompts@1.7.0': dependencies: - '@clack/core': 1.4.2 + '@clack/core': 1.4.3 fast-string-width: 3.0.2 fast-wrap-ansi: 0.2.2 sisteransi: 1.0.5 @@ -4656,17 +4601,38 @@ snapshots: dependencies: typescript: 6.0.3 + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + '@emnapi/core@1.11.1': dependencies: '@emnapi/wasi-threads': 1.2.2 tslib: 2.8.1 optional: true + '@emnapi/runtime@1.10.0': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.11.1': dependencies: tslib: 2.8.1 optional: true + '@emnapi/runtime@1.11.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/wasi-threads@1.2.2': dependencies: tslib: 2.8.1 @@ -4750,9 +4716,9 @@ snapshots: '@esbuild/win32-x64@0.28.1': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.6.0(jiti@1.21.7))': + '@eslint-community/eslint-utils@4.9.1(eslint@10.7.0(jiti@2.7.0))': dependencies: - eslint: 10.6.0(jiti@1.21.7) + eslint: 10.7.0(jiti@2.7.0) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -4773,9 +4739,9 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.6.0(jiti@1.21.7))': + '@eslint/js@10.0.1(eslint@10.7.0(jiti@2.7.0))': optionalDependencies: - eslint: 10.6.0(jiti@1.21.7) + eslint: 10.7.0(jiti@2.7.0) '@eslint/object-schema@3.0.5': {} @@ -4784,46 +4750,46 @@ snapshots: '@eslint/core': 1.2.1 levn: 0.4.1 - '@expressive-code/core@0.44.0': + '@expressive-code/core@0.44.1': dependencies: '@ctrl/tinycolor': 4.2.0 hast-util-select: 6.0.4 hast-util-to-html: 9.0.5 hast-util-to-text: 4.0.2 hastscript: 9.0.1 - postcss: 8.5.15 - postcss-nested: 6.2.0(postcss@8.5.15) + postcss: 8.5.20 + postcss-nested: 6.2.0(postcss@8.5.20) unist-util-visit: 5.1.0 unist-util-visit-parents: 6.0.2 - '@expressive-code/plugin-collapsible-sections@0.44.0': + '@expressive-code/plugin-collapsible-sections@0.44.1': dependencies: - '@expressive-code/core': 0.44.0 + '@expressive-code/core': 0.44.1 - '@expressive-code/plugin-frames@0.44.0': + '@expressive-code/plugin-frames@0.44.1': dependencies: - '@expressive-code/core': 0.44.0 + '@expressive-code/core': 0.44.1 - '@expressive-code/plugin-line-numbers@0.44.0': + '@expressive-code/plugin-line-numbers@0.44.1': dependencies: - '@expressive-code/core': 0.44.0 + '@expressive-code/core': 0.44.1 - '@expressive-code/plugin-shiki@0.44.0': + '@expressive-code/plugin-shiki@0.44.1': dependencies: - '@expressive-code/core': 0.44.0 - shiki: 4.3.0 + '@expressive-code/core': 0.44.1 + shiki: 4.3.1 - '@expressive-code/plugin-text-markers@0.44.0': + '@expressive-code/plugin-text-markers@0.44.1': dependencies: - '@expressive-code/core': 0.44.0 + '@expressive-code/core': 0.44.1 - '@fontsource-variable/fira-code@5.2.7': {} + '@fontsource-variable/fira-code@5.3.0': {} - '@fontsource-variable/outfit@5.2.8': {} + '@fontsource-variable/outfit@5.3.0': {} - '@fontsource-variable/rubik@5.2.8': {} + '@fontsource-variable/rubik@5.3.0': {} - '@fontsource/poppins@5.2.7': {} + '@fontsource/poppins@5.3.0': {} '@humanfs/core@0.19.2': dependencies: @@ -4841,7 +4807,7 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@iconify-json/material-icon-theme@1.2.68': + '@iconify-json/material-icon-theme@1.2.69': dependencies: '@iconify/types': 2.0.0 @@ -4853,100 +4819,116 @@ snapshots: '@iconify/types': 2.0.0 import-meta-resolve: 4.2.0 + '@iconify/utils@3.1.4': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@iconify/types': 2.0.0 + import-meta-resolve: 4.2.0 + '@img/colour@1.1.0': {} - '@img/sharp-darwin-arm64@0.34.5': + '@img/sharp-darwin-arm64@0.35.3': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-arm64': 1.3.2 optional: true - '@img/sharp-darwin-x64@0.34.5': + '@img/sharp-darwin-x64@0.35.3': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.3.2 + optional: true + + '@img/sharp-freebsd-wasm32@0.35.3': + dependencies: + '@img/sharp-wasm32': 0.35.3 optional: true - '@img/sharp-libvips-darwin-arm64@1.2.4': + '@img/sharp-libvips-darwin-arm64@1.3.2': optional: true - '@img/sharp-libvips-darwin-x64@1.2.4': + '@img/sharp-libvips-darwin-x64@1.3.2': optional: true - '@img/sharp-libvips-linux-arm64@1.2.4': + '@img/sharp-libvips-linux-arm64@1.3.2': optional: true - '@img/sharp-libvips-linux-arm@1.2.4': + '@img/sharp-libvips-linux-arm@1.3.2': optional: true - '@img/sharp-libvips-linux-ppc64@1.2.4': + '@img/sharp-libvips-linux-ppc64@1.3.2': optional: true - '@img/sharp-libvips-linux-riscv64@1.2.4': + '@img/sharp-libvips-linux-riscv64@1.3.2': optional: true - '@img/sharp-libvips-linux-s390x@1.2.4': + '@img/sharp-libvips-linux-s390x@1.3.2': optional: true - '@img/sharp-libvips-linux-x64@1.2.4': + '@img/sharp-libvips-linux-x64@1.3.2': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + '@img/sharp-libvips-linuxmusl-arm64@1.3.2': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.2.4': + '@img/sharp-libvips-linuxmusl-x64@1.3.2': optional: true - '@img/sharp-linux-arm64@0.34.5': + '@img/sharp-linux-arm64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.3.2 optional: true - '@img/sharp-linux-arm@0.34.5': + '@img/sharp-linux-arm@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.3.2 optional: true - '@img/sharp-linux-ppc64@0.34.5': + '@img/sharp-linux-ppc64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.3.2 optional: true - '@img/sharp-linux-riscv64@0.34.5': + '@img/sharp-linux-riscv64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.3.2 optional: true - '@img/sharp-linux-s390x@0.34.5': + '@img/sharp-linux-s390x@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.3.2 optional: true - '@img/sharp-linux-x64@0.34.5': + '@img/sharp-linux-x64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.3.2 optional: true - '@img/sharp-linuxmusl-arm64@0.34.5': + '@img/sharp-linuxmusl-arm64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.2 optional: true - '@img/sharp-linuxmusl-x64@0.34.5': + '@img/sharp-linuxmusl-x64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.3.2 optional: true - '@img/sharp-wasm32@0.34.5': + '@img/sharp-wasm32@0.35.3': dependencies: - '@emnapi/runtime': 1.11.1 + '@emnapi/runtime': 1.11.2 optional: true - '@img/sharp-win32-arm64@0.34.5': + '@img/sharp-webcontainers-wasm32@0.35.3': + dependencies: + '@img/sharp-wasm32': 0.35.3 optional: true - '@img/sharp-win32-ia32@0.34.5': + '@img/sharp-win32-arm64@0.35.3': optional: true - '@img/sharp-win32-x64@0.34.5': + '@img/sharp-win32-ia32@0.35.3': + optional: true + + '@img/sharp-win32-x64@0.35.3': optional: true '@isaacs/cliui@9.0.0': {} @@ -4997,11 +4979,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@lunariajs/starlight@0.1.1(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3))(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))': + '@lunariajs/starlight@0.1.1(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3))(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))': dependencies: - '@astrojs/starlight': 0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3) + '@astrojs/starlight': 0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3) '@lunariajs/core': 0.1.1 - astro: 7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0) + astro: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) transitivePeerDependencies: - supports-color @@ -5009,7 +4991,7 @@ snapshots: dependencies: '@types/estree': 1.0.9 '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdx': 2.0.14 acorn: 8.17.0 collapse-white-space: 2.1.0 @@ -5039,6 +5021,13 @@ snapshots: dependencies: '@chevrotain/types': 11.1.2 + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.3 + optional: true + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': dependencies: '@emnapi/core': 1.11.1 @@ -5046,7 +5035,7 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true - '@nodable/entities@2.2.0': {} + '@nodable/entities@3.0.0': {} '@nodelib/fs.scandir@2.1.5': dependencies: @@ -5062,74 +5051,73 @@ snapshots: '@oslojs/encoding@1.1.0': {} - '@oxc-parser/binding-android-arm-eabi@0.124.0': + '@oxc-parser/binding-android-arm-eabi@0.131.0': optional: true - '@oxc-parser/binding-android-arm64@0.124.0': + '@oxc-parser/binding-android-arm64@0.131.0': optional: true - '@oxc-parser/binding-darwin-arm64@0.124.0': + '@oxc-parser/binding-darwin-arm64@0.131.0': optional: true - '@oxc-parser/binding-darwin-x64@0.124.0': + '@oxc-parser/binding-darwin-x64@0.131.0': optional: true - '@oxc-parser/binding-freebsd-x64@0.124.0': + '@oxc-parser/binding-freebsd-x64@0.131.0': optional: true - '@oxc-parser/binding-linux-arm-gnueabihf@0.124.0': + '@oxc-parser/binding-linux-arm-gnueabihf@0.131.0': optional: true - '@oxc-parser/binding-linux-arm-musleabihf@0.124.0': + '@oxc-parser/binding-linux-arm-musleabihf@0.131.0': optional: true - '@oxc-parser/binding-linux-arm64-gnu@0.124.0': + '@oxc-parser/binding-linux-arm64-gnu@0.131.0': optional: true - '@oxc-parser/binding-linux-arm64-musl@0.124.0': + '@oxc-parser/binding-linux-arm64-musl@0.131.0': optional: true - '@oxc-parser/binding-linux-ppc64-gnu@0.124.0': + '@oxc-parser/binding-linux-ppc64-gnu@0.131.0': optional: true - '@oxc-parser/binding-linux-riscv64-gnu@0.124.0': + '@oxc-parser/binding-linux-riscv64-gnu@0.131.0': optional: true - '@oxc-parser/binding-linux-riscv64-musl@0.124.0': + '@oxc-parser/binding-linux-riscv64-musl@0.131.0': optional: true - '@oxc-parser/binding-linux-s390x-gnu@0.124.0': + '@oxc-parser/binding-linux-s390x-gnu@0.131.0': optional: true - '@oxc-parser/binding-linux-x64-gnu@0.124.0': + '@oxc-parser/binding-linux-x64-gnu@0.131.0': optional: true - '@oxc-parser/binding-linux-x64-musl@0.124.0': + '@oxc-parser/binding-linux-x64-musl@0.131.0': optional: true - '@oxc-parser/binding-openharmony-arm64@0.124.0': + '@oxc-parser/binding-openharmony-arm64@0.131.0': optional: true - '@oxc-parser/binding-wasm32-wasi@0.124.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + '@oxc-parser/binding-wasm32-wasi@0.131.0': dependencies: - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optional: true - '@oxc-parser/binding-win32-arm64-msvc@0.124.0': + '@oxc-parser/binding-win32-arm64-msvc@0.131.0': optional: true - '@oxc-parser/binding-win32-ia32-msvc@0.124.0': + '@oxc-parser/binding-win32-ia32-msvc@0.131.0': optional: true - '@oxc-parser/binding-win32-x64-msvc@0.124.0': + '@oxc-parser/binding-win32-x64-msvc@0.131.0': optional: true - '@oxc-project/types@0.124.0': {} + '@oxc-project/types@0.131.0': {} - '@oxc-project/types@0.137.0': {} + '@oxc-project/types@0.139.0': {} '@pagefind/darwin-arm64@1.5.2': optional: true @@ -5170,53 +5158,53 @@ snapshots: dependencies: quansync: 1.0.0 - '@rolldown/binding-android-arm64@1.1.3': + '@rolldown/binding-android-arm64@1.1.5': optional: true - '@rolldown/binding-darwin-arm64@1.1.3': + '@rolldown/binding-darwin-arm64@1.1.5': optional: true - '@rolldown/binding-darwin-x64@1.1.3': + '@rolldown/binding-darwin-x64@1.1.5': optional: true - '@rolldown/binding-freebsd-x64@1.1.3': + '@rolldown/binding-freebsd-x64@1.1.5': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.1.3': + '@rolldown/binding-linux-arm-gnueabihf@1.1.5': optional: true - '@rolldown/binding-linux-arm64-gnu@1.1.3': + '@rolldown/binding-linux-arm64-gnu@1.1.5': optional: true - '@rolldown/binding-linux-arm64-musl@1.1.3': + '@rolldown/binding-linux-arm64-musl@1.1.5': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.1.3': + '@rolldown/binding-linux-ppc64-gnu@1.1.5': optional: true - '@rolldown/binding-linux-s390x-gnu@1.1.3': + '@rolldown/binding-linux-s390x-gnu@1.1.5': optional: true - '@rolldown/binding-linux-x64-gnu@1.1.3': + '@rolldown/binding-linux-x64-gnu@1.1.5': optional: true - '@rolldown/binding-linux-x64-musl@1.1.3': + '@rolldown/binding-linux-x64-musl@1.1.5': optional: true - '@rolldown/binding-openharmony-arm64@1.1.3': + '@rolldown/binding-openharmony-arm64@1.1.5': optional: true - '@rolldown/binding-wasm32-wasi@1.1.3': + '@rolldown/binding-wasm32-wasi@1.1.5': dependencies: '@emnapi/core': 1.11.1 '@emnapi/runtime': 1.11.1 '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optional: true - '@rolldown/binding-win32-arm64-msvc@1.1.3': + '@rolldown/binding-win32-arm64-msvc@1.1.5': optional: true - '@rolldown/binding-win32-x64-msvc@1.1.3': + '@rolldown/binding-win32-x64-msvc@1.1.5': optional: true '@rolldown/pluginutils@1.0.1': {} @@ -5225,45 +5213,45 @@ snapshots: dependencies: '@types/estree': 1.0.9 estree-walker: 2.0.2 - picomatch: 4.0.4 + picomatch: 4.0.5 - '@shikijs/core@4.3.0': + '@shikijs/core@4.3.1': dependencies: - '@shikijs/primitive': 4.3.0 - '@shikijs/types': 4.3.0 + '@shikijs/primitive': 4.3.1 + '@shikijs/types': 4.3.1 '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@4.3.0': + '@shikijs/engine-javascript@4.3.1': dependencies: - '@shikijs/types': 4.3.0 + '@shikijs/types': 4.3.1 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.6 - '@shikijs/engine-oniguruma@4.3.0': + '@shikijs/engine-oniguruma@4.3.1': dependencies: - '@shikijs/types': 4.3.0 + '@shikijs/types': 4.3.1 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@4.3.0': + '@shikijs/langs@4.3.1': dependencies: - '@shikijs/types': 4.3.0 + '@shikijs/types': 4.3.1 - '@shikijs/primitive@4.3.0': + '@shikijs/primitive@4.3.1': dependencies: - '@shikijs/types': 4.3.0 + '@shikijs/types': 4.3.1 '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 - '@shikijs/themes@4.3.0': + '@shikijs/themes@4.3.1': dependencies: - '@shikijs/types': 4.3.0 + '@shikijs/types': 4.3.1 - '@shikijs/types@4.3.0': + '@shikijs/types@4.3.1': dependencies: '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@shikijs/vscode-textmate@10.0.2': {} @@ -5278,18 +5266,18 @@ snapshots: dependencies: '@simple-git/args-pathspec': 1.0.3 - '@solid-primitives/refs@1.1.3(solid-js@1.9.13)': + '@solid-primitives/refs@1.1.4(solid-js@1.9.14)': dependencies: - '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) - solid-js: 1.9.13 + '@solid-primitives/utils': 6.4.1(solid-js@1.9.14) + solid-js: 1.9.14 - '@solid-primitives/transition-group@1.1.2(solid-js@1.9.13)': + '@solid-primitives/transition-group@1.1.2(solid-js@1.9.14)': dependencies: - solid-js: 1.9.13 + solid-js: 1.9.14 - '@solid-primitives/utils@6.4.0(solid-js@1.9.13)': + '@solid-primitives/utils@6.4.1(solid-js@1.9.14)': dependencies: - solid-js: 1.9.13 + solid-js: 1.9.14 '@standard-schema/spec@1.1.0': {} @@ -5438,7 +5426,7 @@ snapshots: '@types/geojson@7946.0.16': {} - '@types/hast@3.0.4': + '@types/hast@3.0.5': dependencies: '@types/unist': 3.0.3 @@ -5462,7 +5450,7 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/node@24.13.2': + '@types/node@24.13.3': dependencies: undici-types: 7.18.2 @@ -5470,7 +5458,7 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 24.13.2 + '@types/node': 24.13.3 '@types/trusted-types@2.0.7': optional: true @@ -5479,30 +5467,42 @@ snapshots: '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.62.0(@typescript-eslint/parser@8.62.0(eslint@10.6.0(jiti@1.21.7))(typescript@6.0.3))(eslint@10.6.0(jiti@1.21.7))(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.62.0(eslint@10.6.0(jiti@1.21.7))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.62.0 - '@typescript-eslint/type-utils': 8.62.0(eslint@10.6.0(jiti@1.21.7))(typescript@6.0.3) - '@typescript-eslint/utils': 8.62.0(eslint@10.6.0(jiti@1.21.7))(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.62.0 - eslint: 10.6.0(jiti@1.21.7) - ignore: 7.0.5 + '@typescript-eslint/parser': 8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.65.0 + '@typescript-eslint/type-utils': 8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/utils': 8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.65.0 + eslint: 10.7.0(jiti@2.7.0) + ignore: 7.0.6 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.62.0(eslint@10.6.0(jiti@1.21.7))(typescript@6.0.3)': + '@typescript-eslint/parser@8.62.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: '@typescript-eslint/scope-manager': 8.62.0 '@typescript-eslint/types': 8.62.0 '@typescript-eslint/typescript-estree': 8.62.0(typescript@6.0.3) '@typescript-eslint/visitor-keys': 8.62.0 debug: 4.4.3 - eslint: 10.6.0(jiti@1.21.7) + eslint: 10.7.0(jiti@2.7.0) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.65.0 + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/typescript-estree': 8.65.0(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.65.0 + debug: 4.4.3 + eslint: 10.7.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -5516,22 +5516,40 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.65.0(typescript@6.0.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.65.0(typescript@6.0.3) + '@typescript-eslint/types': 8.65.0 + debug: 4.4.3 + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@8.62.0': dependencies: '@typescript-eslint/types': 8.62.0 '@typescript-eslint/visitor-keys': 8.62.0 + '@typescript-eslint/scope-manager@8.65.0': + dependencies: + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/visitor-keys': 8.65.0 + '@typescript-eslint/tsconfig-utils@8.62.0(typescript@6.0.3)': dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.62.0(eslint@10.6.0(jiti@1.21.7))(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.65.0(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/typescript-estree': 8.62.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.62.0(eslint@10.6.0(jiti@1.21.7))(typescript@6.0.3) + typescript: 6.0.3 + + '@typescript-eslint/type-utils@8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/typescript-estree': 8.65.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3) debug: 4.4.3 - eslint: 10.6.0(jiti@1.21.7) + eslint: 10.7.0(jiti@2.7.0) ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: @@ -5539,6 +5557,8 @@ snapshots: '@typescript-eslint/types@8.62.0': {} + '@typescript-eslint/types@8.65.0': {} + '@typescript-eslint/typescript-estree@8.62.0(typescript@6.0.3)': dependencies: '@typescript-eslint/project-service': 8.62.0(typescript@6.0.3) @@ -5554,13 +5574,28 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.62.0(eslint@10.6.0(jiti@1.21.7))(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.65.0(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@1.21.7)) - '@typescript-eslint/scope-manager': 8.62.0 - '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/typescript-estree': 8.62.0(typescript@6.0.3) - eslint: 10.6.0(jiti@1.21.7) + '@typescript-eslint/project-service': 8.65.0(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.65.0(typescript@6.0.3) + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/visitor-keys': 8.65.0 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.8.5 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.65.0 + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/typescript-estree': 8.65.0(typescript@6.0.3) + eslint: 10.7.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -5569,25 +5604,52 @@ snapshots: dependencies: '@typescript-eslint/types': 8.62.0 eslint-visitor-keys: 5.0.1 + + '@typescript-eslint/visitor-keys@8.65.0': + dependencies: + '@typescript-eslint/types': 8.65.0 + eslint-visitor-keys: 5.0.1 + + + + + + + + + + + + + + + + + + + + '@ungap/structured-clone@1.3.2': {} - '@unocss/astro@66.6.8(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))': + '@ungap/structured-clone@1.3.3': {} + + '@unocss/astro@66.7.5(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))': dependencies: - '@unocss/core': 66.6.8 - '@unocss/reset': 66.6.8 - '@unocss/vite': 66.6.8(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) + '@unocss/core': 66.7.5 + '@unocss/reset': 66.7.5 + '@unocss/vite': 66.7.5(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) optionalDependencies: - vite: 8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0) + vite: 8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) - '@unocss/cli@66.6.8': + '@unocss/cli@66.7.5': dependencies: '@jridgewell/remapping': 2.3.5 - '@unocss/config': 66.6.8 - '@unocss/core': 66.6.8 - '@unocss/preset-wind3': 66.6.8 - '@unocss/preset-wind4': 66.6.8 - '@unocss/transformer-directives': 66.6.8 + '@unocss/config': 66.7.5 + '@unocss/core': 66.7.5 + '@unocss/preset-wind3': 66.7.5 + '@unocss/preset-wind4': 66.7.5 + '@unocss/transformer-directives': 66.7.5 cac: 7.0.0 chokidar: 5.0.0 colorette: 2.0.20 @@ -5596,167 +5658,164 @@ snapshots: pathe: 2.0.3 perfect-debounce: 2.1.0 tinyglobby: 0.2.17 - unplugin-utils: 0.3.1 + unplugin-utils: 0.3.2 - '@unocss/config@66.6.8': + '@unocss/config@66.7.5': dependencies: - '@unocss/core': 66.6.8 + '@unocss/core': 66.7.5 colorette: 2.0.20 consola: 3.4.2 unconfig: 7.5.0 - '@unocss/core@66.6.8': {} + '@unocss/core@66.7.5': {} - '@unocss/extractor-arbitrary-variants@66.6.8': + '@unocss/extractor-arbitrary-variants@66.7.5': dependencies: - '@unocss/core': 66.6.8 + '@unocss/core': 66.7.5 - '@unocss/inspector@66.6.8': + '@unocss/inspector@66.7.5': dependencies: - '@unocss/core': 66.6.8 - '@unocss/rule-utils': 66.6.8 + '@unocss/core': 66.7.5 + '@unocss/rule-utils': 66.7.5 colorette: 2.0.20 gzip-size: 6.0.0 sirv: 3.0.2 - '@unocss/preset-attributify@66.6.8': + '@unocss/preset-attributify@66.7.5': dependencies: - '@unocss/core': 66.6.8 + '@unocss/core': 66.7.5 - '@unocss/preset-icons@66.6.8': + '@unocss/preset-icons@66.7.5': dependencies: - '@iconify/utils': 3.1.3 - '@unocss/core': 66.6.8 + '@iconify/utils': 3.1.4 + '@unocss/core': 66.7.5 ofetch: 1.5.1 - '@unocss/preset-mini@66.6.8': + '@unocss/preset-mini@66.7.5': dependencies: - '@unocss/core': 66.6.8 - '@unocss/extractor-arbitrary-variants': 66.6.8 - '@unocss/rule-utils': 66.6.8 + '@unocss/core': 66.7.5 + '@unocss/extractor-arbitrary-variants': 66.7.5 + '@unocss/rule-utils': 66.7.5 - '@unocss/preset-tagify@66.6.8': + '@unocss/preset-tagify@66.7.5': dependencies: - '@unocss/core': 66.6.8 + '@unocss/core': 66.7.5 - '@unocss/preset-typography@66.6.8': + '@unocss/preset-typography@66.7.5': dependencies: - '@unocss/core': 66.6.8 - '@unocss/rule-utils': 66.6.8 + '@unocss/core': 66.7.5 + '@unocss/rule-utils': 66.7.5 - '@unocss/preset-uno@66.6.8': + '@unocss/preset-uno@66.7.5': dependencies: - '@unocss/core': 66.6.8 - '@unocss/preset-wind3': 66.6.8 + '@unocss/core': 66.7.5 + '@unocss/preset-wind3': 66.7.5 - '@unocss/preset-web-fonts@66.6.8': + '@unocss/preset-web-fonts@66.7.5': dependencies: - '@unocss/core': 66.6.8 + '@unocss/core': 66.7.5 ofetch: 1.5.1 - '@unocss/preset-wind3@66.6.8': + '@unocss/preset-wind3@66.7.5': dependencies: - '@unocss/core': 66.6.8 - '@unocss/preset-mini': 66.6.8 - '@unocss/rule-utils': 66.6.8 + '@unocss/core': 66.7.5 + '@unocss/preset-mini': 66.7.5 + '@unocss/rule-utils': 66.7.5 - '@unocss/preset-wind4@66.6.8': + '@unocss/preset-wind4@66.7.5': dependencies: - '@unocss/core': 66.6.8 - '@unocss/extractor-arbitrary-variants': 66.6.8 - '@unocss/rule-utils': 66.6.8 + '@unocss/core': 66.7.5 + '@unocss/extractor-arbitrary-variants': 66.7.5 + '@unocss/rule-utils': 66.7.5 - '@unocss/preset-wind@66.6.8': + '@unocss/preset-wind@66.7.5': dependencies: - '@unocss/core': 66.6.8 - '@unocss/preset-wind3': 66.6.8 + '@unocss/core': 66.7.5 + '@unocss/preset-wind3': 66.7.5 - '@unocss/reset@66.6.8': {} + '@unocss/reset@66.7.5': {} - '@unocss/rule-utils@66.6.8': + '@unocss/rule-utils@66.7.5': dependencies: - '@unocss/core': 66.6.8 + '@unocss/core': 66.7.5 magic-string: 0.30.21 - '@unocss/transformer-attributify-jsx@66.6.8(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + '@unocss/transformer-attributify-jsx@66.7.5': dependencies: - '@unocss/core': 66.6.8 - oxc-parser: 0.124.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - oxc-walker: 0.7.0(oxc-parser@0.124.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' + '@unocss/core': 66.7.5 + oxc-parser: 0.131.0 + oxc-walker: 0.7.0(oxc-parser@0.131.0) - '@unocss/transformer-compile-class@66.6.8': + '@unocss/transformer-compile-class@66.7.5': dependencies: - '@unocss/core': 66.6.8 + '@unocss/core': 66.7.5 - '@unocss/transformer-directives@66.6.8': + '@unocss/transformer-directives@66.7.5': dependencies: - '@unocss/core': 66.6.8 - '@unocss/rule-utils': 66.6.8 + '@unocss/core': 66.7.5 + '@unocss/rule-utils': 66.7.5 css-tree: 3.2.1 - '@unocss/transformer-variant-group@66.6.8': + '@unocss/transformer-variant-group@66.7.5': dependencies: - '@unocss/core': 66.6.8 + '@unocss/core': 66.7.5 - '@unocss/vite@66.6.8(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))': + '@unocss/vite@66.7.5(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))': dependencies: '@jridgewell/remapping': 2.3.5 - '@unocss/config': 66.6.8 - '@unocss/core': 66.6.8 - '@unocss/inspector': 66.6.8 + '@unocss/config': 66.7.5 + '@unocss/core': 66.7.5 + '@unocss/inspector': 66.7.5 chokidar: 5.0.0 magic-string: 0.30.21 pathe: 2.0.3 tinyglobby: 0.2.17 - unplugin-utils: 0.3.1 - vite: 8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0) + unplugin-utils: 0.3.2 + vite: 8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) '@upsetjs/venn.js@2.0.0': optionalDependencies: d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) - '@vitest/expect@4.1.9': + '@vitest/expect@4.1.10': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.1.9 - '@vitest/utils': 4.1.9 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.9(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))': dependencies: - '@vitest/spy': 4.1.9 + '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0) + vite: 8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) - '@vitest/pretty-format@4.1.9': + '@vitest/pretty-format@4.1.10': dependencies: tinyrainbow: 3.1.0 - '@vitest/runner@4.1.9': + '@vitest/runner@4.1.10': dependencies: - '@vitest/utils': 4.1.9 + '@vitest/utils': 4.1.10 pathe: 2.0.3 - '@vitest/snapshot@4.1.9': + '@vitest/snapshot@4.1.10': dependencies: - '@vitest/pretty-format': 4.1.9 - '@vitest/utils': 4.1.9 + '@vitest/pretty-format': 4.1.10 + '@vitest/utils': 4.1.10 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.1.9': {} + '@vitest/spy@4.1.10': {} - '@vitest/utils@4.1.9': + '@vitest/utils@4.1.10': dependencies: - '@vitest/pretty-format': 4.1.9 + '@vitest/pretty-format': 4.1.10 convert-source-map: 2.0.0 tinyrainbow: 3.1.0 @@ -5797,7 +5856,7 @@ snapshots: alien-signals: 3.2.1 muggle-string: 0.4.1 path-browserify: 1.0.1 - picomatch: 4.0.4 + picomatch: 4.0.5 '@vue/shared@3.5.39': {} @@ -5841,47 +5900,49 @@ snapshots: array-iterate@2.0.1: {} - asciinema-player@3.16.0: + asciinema-player@3.17.0: dependencies: '@babel/runtime': 7.29.7 - solid-js: 1.9.13 - solid-transition-group: 0.2.3(solid-js@1.9.13) + solid-js: 1.9.14 + solid-transition-group: 0.2.3(solid-js@1.9.14) assertion-error@2.0.1: {} astring@1.9.0: {} - astro-auto-import@0.5.1(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0)): + astro-auto-import@0.5.2(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)): dependencies: acorn: 8.17.0 - astro: 7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0) + astro: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) - astro-contributors@0.9.0(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0)): + astro-contributors@0.9.0(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)): dependencies: - astro: 7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0) + astro: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) - astro-embed@0.13.0(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0)): + astro-embed@0.13.1(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3): dependencies: '@astro-community/astro-embed-baseline-status': 0.2.2 - '@astro-community/astro-embed-bluesky': 0.2.1 + '@astro-community/astro-embed-bluesky': 0.2.3(typescript@6.0.3) '@astro-community/astro-embed-gist': 0.1.0 - '@astro-community/astro-embed-integration': 0.12.0(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0)) + '@astro-community/astro-embed-integration': 0.12.1(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3) '@astro-community/astro-embed-link-preview': 0.3.1 '@astro-community/astro-embed-mastodon': 0.1.1 '@astro-community/astro-embed-twitter': 0.5.11 '@astro-community/astro-embed-vimeo': 0.3.12 '@astro-community/astro-embed-youtube': 0.5.10 - astro: 7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0) + astro: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) + transitivePeerDependencies: + - typescript - astro-expressive-code@0.44.0(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0)): + astro-expressive-code@0.44.1(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)): dependencies: - astro: 7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0) - rehype-expressive-code: 0.44.0 + astro: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) + rehype-expressive-code: 0.44.1 url-extras: 0.1.0 - astro-mermaid@2.1.0(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(mermaid@11.16.0): + astro-mermaid@2.1.0(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(mermaid@11.16.0): dependencies: - astro: 7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0) + astro: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) import-meta-resolve: 4.2.0 mdast-util-to-string: 4.0.0 mermaid: 11.16.0 @@ -5899,14 +5960,14 @@ snapshots: '@vtbag/turn-signal': 1.3.1 '@vtbag/utensil-drawer': 1.2.16 - astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0): + astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0): dependencies: - '@astrojs/compiler-rs': 0.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - '@astrojs/internal-helpers': 0.10.0 - '@astrojs/markdown-satteri': 0.3.2 - '@astrojs/telemetry': 3.3.2 + '@astrojs/compiler-rs': 0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + '@astrojs/internal-helpers': 0.10.1 + '@astrojs/markdown-satteri': 0.3.4 + '@astrojs/telemetry': 3.3.3 '@capsizecss/unpack': 4.0.1 - '@clack/prompts': 1.6.0 + '@clack/prompts': 1.7.0 '@oslojs/encoding': 1.1.0 '@rollup/pluginutils': 5.4.0 am-i-vibing: 0.4.0 @@ -5915,11 +5976,11 @@ snapshots: ci-info: 4.4.0 clsx: 2.1.1 common-ancestor-path: 2.0.0 - cookie: 1.1.1 + cookie: 2.0.1 devalue: 5.8.1 diff: 8.0.4 dset: 3.1.4 - es-module-lexer: 2.1.0 + es-module-lexer: 2.3.1 esbuild: 0.28.1 flattie: 1.1.1 fontace: 0.4.1 @@ -5932,34 +5993,31 @@ snapshots: magic-string: 0.30.21 magicast: 0.5.3 mrmime: 2.0.1 - neotraverse: 0.6.18 - obug: 2.1.3 + neotraverse: 1.0.1 + obug: 2.1.4 p-limit: 7.3.0 - p-queue: 9.3.0 - package-manager-detector: 1.6.0 + p-queue: 9.3.1 + package-manager-detector: 1.7.0 piccolore: 0.1.3 - picomatch: 4.0.4 - rehype: 13.0.2 + picomatch: 4.0.5 semver: 7.8.5 - shiki: 4.3.0 + shiki: 4.3.1 smol-toml: 1.7.0 - svgo: 4.0.1 + svgo: 4.0.2 tinyclip: 0.1.15 tinyexec: 1.2.4 tinyglobby: 0.2.17 - ultrahtml: 1.6.0 + ultrahtml: 1.7.0 unifont: 0.7.4 - unist-util-visit: 5.1.0 unstorage: 1.17.5 - vfile: 6.0.3 - vite: 8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0) - vitefu: 1.1.3(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) + vite: 8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) + vitefu: 1.1.3(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) xxhash-wasm: 1.1.0 yargs-parser: 22.0.0 zod: 4.4.3 optionalDependencies: - '@astrojs/markdown-remark': 7.2.0 - sharp: 0.34.5 + '@astrojs/markdown-remark': 7.2.1 + sharp: 0.35.3(@types/node@24.13.3) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -6007,7 +6065,7 @@ snapshots: bcp-47-match@2.0.3: {} - bcp-47@2.1.0: + bcp-47@2.1.1: dependencies: is-alphabetical: 2.0.1 is-alphanumerical: 2.0.1 @@ -6017,7 +6075,7 @@ snapshots: boolbase@1.0.0: {} - brace-expansion@5.0.6: + brace-expansion@5.0.7: dependencies: balanced-match: 4.0.4 @@ -6085,7 +6143,7 @@ snapshots: cookie-es@1.2.3: {} - cookie@1.1.1: {} + cookie@2.0.1: {} cose-base@1.0.3: dependencies: @@ -6383,7 +6441,7 @@ snapshots: dependencies: domelementtype: 2.3.0 - dompurify@3.4.11: + dompurify@3.4.12: optionalDependencies: '@types/trusted-types': 2.0.7 @@ -6409,7 +6467,7 @@ snapshots: environment@1.1.0: {} - es-module-lexer@2.1.0: {} + es-module-lexer@2.3.1: {} es-toolkit@1.49.0: {} @@ -6462,9 +6520,9 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-prettier@10.1.8(eslint@10.6.0(jiti@1.21.7)): + eslint-config-prettier@10.1.8(eslint@10.7.0(jiti@2.7.0)): dependencies: - eslint: 10.6.0(jiti@1.21.7) + eslint: 10.7.0(jiti@2.7.0) eslint-scope@9.1.2: dependencies: @@ -6477,9 +6535,9 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.6.0(jiti@1.21.7): + eslint@10.7.0(jiti@2.7.0): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0(jiti@2.7.0)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.5 '@eslint/config-helpers': 0.6.0 @@ -6510,7 +6568,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 1.21.7 + jiti: 2.7.0 transitivePeerDependencies: - supports-color @@ -6573,29 +6631,29 @@ snapshots: expect-type@1.4.0: {} - expressive-code-twoslash@0.6.1(@expressive-code/core@0.44.0)(eslint@10.6.0(jiti@1.21.7))(expressive-code@0.44.0)(typescript@6.0.3): + expressive-code-twoslash@0.6.1(@expressive-code/core@0.44.1)(eslint@10.7.0(jiti@2.7.0))(expressive-code@0.44.1)(typescript@6.0.3): dependencies: '@ec-ts/twoslash': 1.0.0(typescript@6.0.3) '@ec-ts/twoslash-vue': 1.0.0(typescript@6.0.3) - '@expressive-code/core': 0.44.0 - '@typescript-eslint/parser': 8.62.0(eslint@10.6.0(jiti@1.21.7))(typescript@6.0.3) + '@expressive-code/core': 0.44.1 + '@typescript-eslint/parser': 8.62.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3) css-js-gen: 1.1.0 - expressive-code: 0.44.0 + expressive-code: 0.44.1 mdast-util-from-markdown: 2.0.3 mdast-util-gfm: 3.1.0 mdast-util-to-hast: 13.2.1 - twoslash-eslint: 0.3.9(eslint@10.6.0(jiti@1.21.7)) + twoslash-eslint: 0.3.9(eslint@10.7.0(jiti@2.7.0)) typescript: 6.0.3 transitivePeerDependencies: - eslint - supports-color - expressive-code@0.44.0: + expressive-code@0.44.1: dependencies: - '@expressive-code/core': 0.44.0 - '@expressive-code/plugin-frames': 0.44.0 - '@expressive-code/plugin-shiki': 0.44.0 - '@expressive-code/plugin-text-markers': 0.44.0 + '@expressive-code/core': 0.44.1 + '@expressive-code/plugin-frames': 0.44.1 + '@expressive-code/plugin-shiki': 0.44.1 + '@expressive-code/plugin-text-markers': 0.44.1 extend@3.0.2: {} @@ -6623,27 +6681,27 @@ snapshots: dependencies: fast-string-width: 3.0.2 - fast-xml-builder@1.2.0: + fast-xml-builder@1.3.0: dependencies: - path-expression-matcher: 1.6.1 - xml-naming: 0.1.0 + path-expression-matcher: 1.6.2 + xml-naming: 0.3.0 - fast-xml-parser@5.9.3: + fast-xml-parser@5.10.1: dependencies: - '@nodable/entities': 2.2.0 - fast-xml-builder: 1.2.0 - is-unsafe: 1.0.1 - path-expression-matcher: 1.6.1 + '@nodable/entities': 3.0.0 + fast-xml-builder: 1.3.0 + is-unsafe: 2.0.0 + path-expression-matcher: 1.6.2 strnum: 2.4.1 - xml-naming: 0.1.0 + xml-naming: 0.3.0 fastq@1.20.1: dependencies: reusify: 1.1.0 - fdir@6.5.0(picomatch@4.0.4): + fdir@6.5.0(picomatch@4.0.5): optionalDependencies: - picomatch: 4.0.4 + picomatch: 4.0.5 fetch-blob@3.2.0: dependencies: @@ -6746,12 +6804,12 @@ snapshots: hast-util-embedded@3.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-is-element: 3.0.0 hast-util-format@1.1.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-embedded: 3.0.0 hast-util-minify-whitespace: 1.0.1 hast-util-phrasing: 3.0.1 @@ -6761,7 +6819,7 @@ snapshots: hast-util-from-html@2.0.3: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 devlop: 1.1.0 hast-util-from-parse5: 8.0.3 parse5: 7.3.0 @@ -6770,7 +6828,7 @@ snapshots: hast-util-from-parse5@8.0.3: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/unist': 3.0.3 devlop: 1.1.0 hastscript: 9.0.1 @@ -6781,19 +6839,19 @@ snapshots: hast-util-has-property@3.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-is-body-ok-link@3.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-is-element@3.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-minify-whitespace@1.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-embedded: 3.0.0 hast-util-is-element: 3.0.0 hast-util-whitespace: 3.0.0 @@ -6801,11 +6859,11 @@ snapshots: hast-util-parse-selector@4.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-phrasing@3.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-embedded: 3.0.0 hast-util-has-property: 3.0.0 hast-util-is-body-ok-link: 3.0.1 @@ -6813,9 +6871,9 @@ snapshots: hast-util-raw@9.1.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/unist': 3.0.3 - '@ungap/structured-clone': 1.3.2 + '@ungap/structured-clone': 1.3.3 hast-util-from-parse5: 8.0.3 hast-util-to-parse5: 8.0.1 html-void-elements: 3.0.0 @@ -6829,7 +6887,7 @@ snapshots: hast-util-select@6.0.4: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/unist': 3.0.3 bcp-47-match: 2.0.3 comma-separated-tokens: 2.0.3 @@ -6849,7 +6907,7 @@ snapshots: dependencies: '@types/estree': 1.0.9 '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 comma-separated-tokens: 2.0.3 devlop: 1.1.0 estree-util-attach-comments: 3.0.0 @@ -6868,7 +6926,7 @@ snapshots: hast-util-to-html@9.0.5: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/unist': 3.0.3 ccount: 2.0.1 comma-separated-tokens: 2.0.3 @@ -6883,7 +6941,7 @@ snapshots: hast-util-to-jsx-runtime@2.3.6: dependencies: '@types/estree': 1.0.9 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 devlop: 1.1.0 @@ -6902,7 +6960,7 @@ snapshots: hast-util-to-mdast@10.1.2: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 '@ungap/structured-clone': 1.3.2 hast-util-phrasing: 3.0.1 @@ -6919,7 +6977,7 @@ snapshots: hast-util-to-parse5@8.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 comma-separated-tokens: 2.0.3 devlop: 1.1.0 property-information: 7.2.0 @@ -6929,22 +6987,22 @@ snapshots: hast-util-to-string@3.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-to-text@4.0.2: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/unist': 3.0.3 hast-util-is-element: 3.0.0 unist-util-find-after: 5.0.0 hast-util-whitespace@3.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hastscript@9.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 property-information: 7.2.0 @@ -6978,7 +7036,7 @@ snapshots: - kerberos - supports-color - i18next@26.3.3(typescript@6.0.3): + i18next@26.3.6(typescript@6.0.3): optionalDependencies: typescript: 6.0.3 @@ -6988,7 +7046,7 @@ snapshots: ignore@5.3.2: {} - ignore@7.0.5: {} + ignore@7.0.6: {} import-meta-resolve@4.2.0: {} @@ -7017,8 +7075,6 @@ snapshots: is-decimal@2.0.1: {} - is-docker@3.0.0: {} - is-docker@4.0.0: {} is-extglob@2.1.1: {} @@ -7029,19 +7085,11 @@ snapshots: is-hexadecimal@2.0.1: {} - is-inside-container@1.0.0: - dependencies: - is-docker: 3.0.0 - is-number@7.0.0: {} is-plain-obj@4.1.0: {} - is-unsafe@1.0.1: {} - - is-wsl@3.1.1: - dependencies: - is-inside-container: 1.0.0 + is-unsafe@2.0.0: {} isexe@2.0.0: {} @@ -7152,6 +7200,8 @@ snapshots: lru-cache@11.5.1: {} + lru-cache@11.5.2: {} + magic-regexp@0.10.0: dependencies: estree-walker: 3.0.3 @@ -7282,7 +7332,7 @@ snapshots: mdast-util-mdx-expression@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.3 @@ -7293,7 +7343,7 @@ snapshots: mdast-util-mdx-jsx@3.2.0: dependencies: '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 '@types/unist': 3.0.3 ccount: 2.0.1 @@ -7320,7 +7370,7 @@ snapshots: mdast-util-mdxjs-esm@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.3 @@ -7335,7 +7385,7 @@ snapshots: mdast-util-to-hast@13.2.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 '@ungap/structured-clone': 1.3.2 devlop: 1.1.0 @@ -7381,7 +7431,7 @@ snapshots: d3-sankey: 0.12.3 dagre-d3-es: 7.0.14 dayjs: 1.11.21 - dompurify: 3.4.11 + dompurify: 3.4.12 es-toolkit: 1.49.0 katex: 0.16.47 khroma: 2.1.0 @@ -7672,7 +7722,7 @@ snapshots: minimatch@10.2.5: dependencies: - brace-expansion: 5.0.6 + brace-expansion: 5.0.7 minipass@7.1.3: {} @@ -7689,11 +7739,11 @@ snapshots: muggle-string@0.4.1: {} - nanoid@3.3.15: {} + nanoid@3.3.16: {} natural-compare@1.4.0: {} - neotraverse@0.6.18: {} + neotraverse@1.0.1: {} nlcst-to-string@4.0.0: dependencies: @@ -7717,7 +7767,7 @@ snapshots: dependencies: boolbase: 1.0.0 - obug@2.1.3: {} + obug@2.1.4: {} ofetch@1.5.1: dependencies: @@ -7744,38 +7794,35 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - oxc-parser@0.124.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1): + oxc-parser@0.131.0: dependencies: - '@oxc-project/types': 0.124.0 + '@oxc-project/types': 0.131.0 optionalDependencies: - '@oxc-parser/binding-android-arm-eabi': 0.124.0 - '@oxc-parser/binding-android-arm64': 0.124.0 - '@oxc-parser/binding-darwin-arm64': 0.124.0 - '@oxc-parser/binding-darwin-x64': 0.124.0 - '@oxc-parser/binding-freebsd-x64': 0.124.0 - '@oxc-parser/binding-linux-arm-gnueabihf': 0.124.0 - '@oxc-parser/binding-linux-arm-musleabihf': 0.124.0 - '@oxc-parser/binding-linux-arm64-gnu': 0.124.0 - '@oxc-parser/binding-linux-arm64-musl': 0.124.0 - '@oxc-parser/binding-linux-ppc64-gnu': 0.124.0 - '@oxc-parser/binding-linux-riscv64-gnu': 0.124.0 - '@oxc-parser/binding-linux-riscv64-musl': 0.124.0 - '@oxc-parser/binding-linux-s390x-gnu': 0.124.0 - '@oxc-parser/binding-linux-x64-gnu': 0.124.0 - '@oxc-parser/binding-linux-x64-musl': 0.124.0 - '@oxc-parser/binding-openharmony-arm64': 0.124.0 - '@oxc-parser/binding-wasm32-wasi': 0.124.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - '@oxc-parser/binding-win32-arm64-msvc': 0.124.0 - '@oxc-parser/binding-win32-ia32-msvc': 0.124.0 - '@oxc-parser/binding-win32-x64-msvc': 0.124.0 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - - oxc-walker@0.7.0(oxc-parser@0.124.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)): + '@oxc-parser/binding-android-arm-eabi': 0.131.0 + '@oxc-parser/binding-android-arm64': 0.131.0 + '@oxc-parser/binding-darwin-arm64': 0.131.0 + '@oxc-parser/binding-darwin-x64': 0.131.0 + '@oxc-parser/binding-freebsd-x64': 0.131.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.131.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.131.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.131.0 + '@oxc-parser/binding-linux-arm64-musl': 0.131.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.131.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.131.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.131.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.131.0 + '@oxc-parser/binding-linux-x64-gnu': 0.131.0 + '@oxc-parser/binding-linux-x64-musl': 0.131.0 + '@oxc-parser/binding-openharmony-arm64': 0.131.0 + '@oxc-parser/binding-wasm32-wasi': 0.131.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.131.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.131.0 + '@oxc-parser/binding-win32-x64-msvc': 0.131.0 + + oxc-walker@0.7.0(oxc-parser@0.131.0): dependencies: magic-regexp: 0.10.0 - oxc-parser: 0.124.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + oxc-parser: 0.131.0 p-limit@3.1.0: dependencies: @@ -7789,9 +7836,9 @@ snapshots: dependencies: p-limit: 3.1.0 - p-map@7.0.4: {} + p-map@7.0.5: {} - p-queue@9.3.0: + p-queue@9.3.1: dependencies: eventemitter3: 5.0.4 p-timeout: 7.0.1 @@ -7800,7 +7847,7 @@ snapshots: package-json-from-dist@1.0.1: {} - package-manager-detector@1.6.0: {} + package-manager-detector@1.7.0: {} pagefind@1.5.2: optionalDependencies: @@ -7852,7 +7899,7 @@ snapshots: path-exists@4.0.0: {} - path-expression-matcher@1.6.1: {} + path-expression-matcher@1.6.2: {} path-key@3.1.1: {} @@ -7875,6 +7922,8 @@ snapshots: picomatch@4.0.4: {} + picomatch@4.0.5: {} + pkg-types@1.3.1: dependencies: confbox: 0.1.8 @@ -7896,9 +7945,9 @@ snapshots: path-data-parser: 0.1.0 points-on-curve: 0.2.0 - postcss-nested@6.2.0(postcss@8.5.15): + postcss-nested@6.2.0(postcss@8.5.20): dependencies: - postcss: 8.5.15 + postcss: 8.5.20 postcss-selector-parser: 6.1.4 postcss-selector-parser@6.1.4: @@ -7908,9 +7957,9 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.5.15: + postcss@8.5.20: dependencies: - nanoid: 3.3.15 + nanoid: 3.3.16 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -7919,10 +7968,10 @@ snapshots: prettier-plugin-astro@0.14.1: dependencies: '@astrojs/compiler': 2.13.1 - prettier: 3.9.1 + prettier: 3.9.5 sass-formatter: 0.7.9 - prettier@3.9.1: {} + prettier@3.9.5: {} prismjs@1.30.0: {} @@ -7987,43 +8036,43 @@ snapshots: regexp-tree@0.1.27: {} - rehype-expressive-code@0.44.0: + rehype-expressive-code@0.44.1: dependencies: - expressive-code: 0.44.0 + expressive-code: 0.44.1 rehype-format@5.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-format: 1.1.0 rehype-minify-whitespace@6.0.2: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-minify-whitespace: 1.0.1 rehype-parse@9.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-from-html: 2.0.3 unified: 11.0.5 rehype-raw@7.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-raw: 9.1.0 vfile: 6.0.3 rehype-recma@1.0.0: dependencies: '@types/estree': 1.0.9 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-to-estree: 3.1.3 transitivePeerDependencies: - supports-color rehype-remark@10.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 hast-util-to-mdast: 10.1.2 unified: 11.0.5 @@ -8031,13 +8080,13 @@ snapshots: rehype-stringify@10.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-to-html: 9.0.5 unified: 11.0.5 rehype@13.0.2: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 rehype-parse: 9.0.1 rehype-stringify: 10.0.1 unified: 11.0.5 @@ -8080,7 +8129,7 @@ snapshots: remark-rehype@11.1.2: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 mdast-util-to-hast: 13.2.1 unified: 11.0.5 @@ -8130,26 +8179,26 @@ snapshots: robust-predicates@3.0.3: {} - rolldown@1.1.3: + rolldown@1.1.5: dependencies: - '@oxc-project/types': 0.137.0 + '@oxc-project/types': 0.139.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.1.3 - '@rolldown/binding-darwin-arm64': 1.1.3 - '@rolldown/binding-darwin-x64': 1.1.3 - '@rolldown/binding-freebsd-x64': 1.1.3 - '@rolldown/binding-linux-arm-gnueabihf': 1.1.3 - '@rolldown/binding-linux-arm64-gnu': 1.1.3 - '@rolldown/binding-linux-arm64-musl': 1.1.3 - '@rolldown/binding-linux-ppc64-gnu': 1.1.3 - '@rolldown/binding-linux-s390x-gnu': 1.1.3 - '@rolldown/binding-linux-x64-gnu': 1.1.3 - '@rolldown/binding-linux-x64-musl': 1.1.3 - '@rolldown/binding-openharmony-arm64': 1.1.3 - '@rolldown/binding-wasm32-wasi': 1.1.3 - '@rolldown/binding-win32-arm64-msvc': 1.1.3 - '@rolldown/binding-win32-x64-msvc': 1.1.3 + '@rolldown/binding-android-arm64': 1.1.5 + '@rolldown/binding-darwin-arm64': 1.1.5 + '@rolldown/binding-darwin-x64': 1.1.5 + '@rolldown/binding-freebsd-x64': 1.1.5 + '@rolldown/binding-linux-arm-gnueabihf': 1.1.5 + '@rolldown/binding-linux-arm64-gnu': 1.1.5 + '@rolldown/binding-linux-arm64-musl': 1.1.5 + '@rolldown/binding-linux-ppc64-gnu': 1.1.5 + '@rolldown/binding-linux-s390x-gnu': 1.1.5 + '@rolldown/binding-linux-x64-gnu': 1.1.5 + '@rolldown/binding-linux-x64-musl': 1.1.5 + '@rolldown/binding-openharmony-arm64': 1.1.5 + '@rolldown/binding-wasm32-wasi': 1.1.5 + '@rolldown/binding-win32-arm64-msvc': 1.1.5 + '@rolldown/binding-win32-x64-msvc': 1.1.5 roughjs@4.6.6: dependencies: @@ -8172,7 +8221,7 @@ snapshots: dependencies: suf-log: 2.5.3 - satori@0.26.0: + satori@0.28.1: dependencies: '@shuding/opentype.js': 1.4.0-beta.0 css-background-parser: 0.1.0 @@ -8186,80 +8235,65 @@ snapshots: postcss-value-parser: 4.2.0 yoga-layout: 3.2.1 - satteri@0.9.3: + satteri@0.9.5: dependencies: '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 '@types/unist': 3.0.3 optionalDependencies: - '@bruits/satteri-darwin-arm64': 0.9.3 - '@bruits/satteri-darwin-x64': 0.9.3 - '@bruits/satteri-linux-arm64-gnu': 0.9.3 - '@bruits/satteri-linux-arm64-musl': 0.9.3 - '@bruits/satteri-linux-x64-gnu': 0.9.3 - '@bruits/satteri-linux-x64-musl': 0.9.3 - '@bruits/satteri-wasm32-wasi': 0.9.3 - '@bruits/satteri-win32-arm64-msvc': 0.9.3 - '@bruits/satteri-win32-x64-msvc': 0.9.3 - - satteri@0.9.4: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - optionalDependencies: - '@bruits/satteri-darwin-arm64': 0.9.4 - '@bruits/satteri-darwin-x64': 0.9.4 - '@bruits/satteri-linux-arm64-gnu': 0.9.4 - '@bruits/satteri-linux-arm64-musl': 0.9.4 - '@bruits/satteri-linux-x64-gnu': 0.9.4 - '@bruits/satteri-linux-x64-musl': 0.9.4 - '@bruits/satteri-wasm32-wasi': 0.9.4 - '@bruits/satteri-win32-arm64-msvc': 0.9.4 - '@bruits/satteri-win32-x64-msvc': 0.9.4 + '@bruits/satteri-darwin-arm64': 0.9.5 + '@bruits/satteri-darwin-x64': 0.9.5 + '@bruits/satteri-linux-arm64-gnu': 0.9.5 + '@bruits/satteri-linux-arm64-musl': 0.9.5 + '@bruits/satteri-linux-x64-gnu': 0.9.5 + '@bruits/satteri-linux-x64-musl': 0.9.5 + '@bruits/satteri-wasm32-wasi': 0.9.5 + '@bruits/satteri-win32-arm64-msvc': 0.9.5 + '@bruits/satteri-win32-x64-msvc': 0.9.5 sax@1.6.0: {} semver@7.8.5: {} - seroval-plugins@1.5.4(seroval@1.5.4): + seroval-plugins@1.5.6(seroval@1.5.6): dependencies: - seroval: 1.5.4 + seroval: 1.5.6 - seroval@1.5.4: {} + seroval@1.5.6: {} - sharp@0.34.5: + sharp@0.35.3(@types/node@24.13.3): dependencies: '@img/colour': 1.1.0 detect-libc: 2.1.2 semver: 7.8.5 optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.5 - '@img/sharp-darwin-x64': 0.34.5 - '@img/sharp-libvips-darwin-arm64': 1.2.4 - '@img/sharp-libvips-darwin-x64': 1.2.4 - '@img/sharp-libvips-linux-arm': 1.2.4 - '@img/sharp-libvips-linux-arm64': 1.2.4 - '@img/sharp-libvips-linux-ppc64': 1.2.4 - '@img/sharp-libvips-linux-riscv64': 1.2.4 - '@img/sharp-libvips-linux-s390x': 1.2.4 - '@img/sharp-libvips-linux-x64': 1.2.4 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 - '@img/sharp-linux-arm': 0.34.5 - '@img/sharp-linux-arm64': 0.34.5 - '@img/sharp-linux-ppc64': 0.34.5 - '@img/sharp-linux-riscv64': 0.34.5 - '@img/sharp-linux-s390x': 0.34.5 - '@img/sharp-linux-x64': 0.34.5 - '@img/sharp-linuxmusl-arm64': 0.34.5 - '@img/sharp-linuxmusl-x64': 0.34.5 - '@img/sharp-wasm32': 0.34.5 - '@img/sharp-win32-arm64': 0.34.5 - '@img/sharp-win32-ia32': 0.34.5 - '@img/sharp-win32-x64': 0.34.5 + '@img/sharp-darwin-arm64': 0.35.3 + '@img/sharp-darwin-x64': 0.35.3 + '@img/sharp-freebsd-wasm32': 0.35.3 + '@img/sharp-libvips-darwin-arm64': 1.3.2 + '@img/sharp-libvips-darwin-x64': 1.3.2 + '@img/sharp-libvips-linux-arm': 1.3.2 + '@img/sharp-libvips-linux-arm64': 1.3.2 + '@img/sharp-libvips-linux-ppc64': 1.3.2 + '@img/sharp-libvips-linux-riscv64': 1.3.2 + '@img/sharp-libvips-linux-s390x': 1.3.2 + '@img/sharp-libvips-linux-x64': 1.3.2 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.2 + '@img/sharp-libvips-linuxmusl-x64': 1.3.2 + '@img/sharp-linux-arm': 0.35.3 + '@img/sharp-linux-arm64': 0.35.3 + '@img/sharp-linux-ppc64': 0.35.3 + '@img/sharp-linux-riscv64': 0.35.3 + '@img/sharp-linux-s390x': 0.35.3 + '@img/sharp-linux-x64': 0.35.3 + '@img/sharp-linuxmusl-arm64': 0.35.3 + '@img/sharp-linuxmusl-x64': 0.35.3 + '@img/sharp-webcontainers-wasm32': 0.35.3 + '@img/sharp-win32-arm64': 0.35.3 + '@img/sharp-win32-ia32': 0.35.3 + '@img/sharp-win32-x64': 0.35.3 + '@types/node': 24.13.3 shebang-command@2.0.0: dependencies: @@ -8267,16 +8301,16 @@ snapshots: shebang-regex@3.0.0: {} - shiki@4.3.0: + shiki@4.3.1: dependencies: - '@shikijs/core': 4.3.0 - '@shikijs/engine-javascript': 4.3.0 - '@shikijs/engine-oniguruma': 4.3.0 - '@shikijs/langs': 4.3.0 - '@shikijs/themes': 4.3.0 - '@shikijs/types': 4.3.0 + '@shikijs/core': 4.3.1 + '@shikijs/engine-javascript': 4.3.1 + '@shikijs/engine-oniguruma': 4.3.1 + '@shikijs/langs': 4.3.1 + '@shikijs/themes': 4.3.1 + '@shikijs/types': 4.3.1 '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 siginfo@2.0.0: {} @@ -8302,24 +8336,24 @@ snapshots: sitemap@9.0.1: dependencies: - '@types/node': 24.13.2 + '@types/node': 24.13.3 '@types/sax': 1.2.7 arg: 5.0.2 sax: 1.6.0 smol-toml@1.7.0: {} - solid-js@1.9.13: + solid-js@1.9.14: dependencies: csstype: 3.2.3 - seroval: 1.5.4 - seroval-plugins: 1.5.4(seroval@1.5.4) + seroval: 1.5.6 + seroval-plugins: 1.5.6(seroval@1.5.6) - solid-transition-group@0.2.3(solid-js@1.9.13): + solid-transition-group@0.2.3(solid-js@1.9.14): dependencies: - '@solid-primitives/refs': 1.1.3(solid-js@1.9.13) - '@solid-primitives/transition-group': 1.1.2(solid-js@1.9.13) - solid-js: 1.9.13 + '@solid-primitives/refs': 1.1.4(solid-js@1.9.14) + '@solid-primitives/transition-group': 1.1.2(solid-js@1.9.14) + solid-js: 1.9.14 source-map-js@1.2.1: {} @@ -8329,14 +8363,15 @@ snapshots: stackback@0.0.2: {} - starlight-github-alerts@0.3.0(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3)): + starlight-github-alerts@0.4.0(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3)): dependencies: - '@astrojs/starlight': 0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3) + '@astrojs/starlight': 0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3) + satteri: 0.9.5 unist-util-visit: 5.1.0 - starlight-image-zoom@0.15.0(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3)): + starlight-image-zoom@0.15.0(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3)): dependencies: - '@astrojs/starlight': 0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3) + '@astrojs/starlight': 0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3) mdast-util-mdx-jsx: 3.2.0 rehype-raw: 7.0.0 unist-util-visit: 5.1.0 @@ -8344,36 +8379,36 @@ snapshots: transitivePeerDependencies: - supports-color - starlight-kbd@0.4.0(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3)): + starlight-kbd@0.4.0(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3)): dependencies: - '@astrojs/starlight': 0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3) + '@astrojs/starlight': 0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3) - starlight-links-validator@0.25.1(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3))(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0)): + starlight-links-validator@0.25.2(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3))(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)): dependencies: - '@astrojs/markdown-satteri': 0.3.2 - '@astrojs/starlight': 0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3) + '@astrojs/markdown-satteri': 0.3.4 + '@astrojs/starlight': 0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3) '@types/picomatch': 4.0.3 - astro: 7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0) + astro: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) github-slugger: 2.0.0 hast-util-from-html: 2.0.3 is-absolute-url: 5.0.0 mdast-util-mdx-jsx: 3.2.0 mdast-util-to-hast: 13.2.1 - picomatch: 4.0.4 - satteri: 0.9.3 + picomatch: 4.0.5 + satteri: 0.9.5 terminal-link: 5.0.0 unist-util-visit: 5.1.0 yaml: 2.9.0 transitivePeerDependencies: - supports-color - starlight-llms-txt@0.10.0(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3))(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0)): + starlight-llms-txt@0.11.0(@astrojs/markdown-satteri@0.3.4)(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3))(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)): dependencies: - '@astrojs/mdx': 5.0.6(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0)) - '@astrojs/starlight': 0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3) - '@types/hast': 3.0.4 + '@astrojs/mdx': 7.0.3(@astrojs/markdown-satteri@0.3.4)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) + '@astrojs/starlight': 0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3) + '@types/hast': 3.0.5 '@types/micromatch': 4.0.10 - astro: 7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0) + astro: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) github-slugger: 2.0.0 hast-util-select: 6.0.4 micromatch: 4.0.8 @@ -8384,21 +8419,23 @@ snapshots: unified: 11.0.5 unist-util-remove: 4.0.0 transitivePeerDependencies: + - '@astrojs/markdown-satteri' - supports-color - starlight-page-actions@0.6.2(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3))(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)): + starlight-page-actions@0.7.0(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3))(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)): dependencies: - '@astrojs/starlight': 0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3) - astro: 7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0) - vite-plugin-static-copy: 4.1.1(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) - vite-plugin-virtual: 0.5.0(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) + '@astrojs/starlight': 0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3) + astro: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) + tidymd: 0.1.0 + vite-plugin-static-copy: 4.1.1(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) + vite-plugin-virtual: 0.5.0(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) transitivePeerDependencies: - vite - starlight-plugin-icons@1.1.6(patch_hash=ecdc00afa0722d3cdc77871f9debee551f67d1c02d82fea11c5aa41bf0f48a54)(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3))(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3)(unocss@66.6.8(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@unocss/astro@66.6.8(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(zod@4.4.3): + starlight-plugin-icons@1.1.6(patch_hash=ecdc00afa0722d3cdc77871f9debee551f67d1c02d82fea11c5aa41bf0f48a54)(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3))(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3)(unocss@66.7.5(@unocss/astro@66.7.5(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)))(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)))(zod@4.4.3): dependencies: - '@astrojs/starlight': 0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3) - astro: 7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0) + '@astrojs/starlight': 0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3) + astro: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) glob: 11.1.0 hast-util-select: 6.0.4 hast-util-to-string: 3.0.1 @@ -8406,19 +8443,19 @@ snapshots: rehype: 13.0.2 typescript: 6.0.3 unist-util-visit: 5.1.0 - unocss: 66.6.8(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@unocss/astro@66.6.8(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) + unocss: 66.7.5(@unocss/astro@66.7.5(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)))(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) zod: 4.4.3 - starlight-scroll-to-top@1.0.1(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3)): + starlight-scroll-to-top@1.0.1(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3)): dependencies: - '@astrojs/starlight': 0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3) + '@astrojs/starlight': 0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3) - starlight-sidebar-topics@0.8.0(@astrojs/starlight@0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3)): + starlight-sidebar-topics@0.8.0(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3)): dependencies: - '@astrojs/starlight': 0.41.1(@astrojs/markdown-remark@7.2.0)(astro@7.0.3(@astrojs/markdown-remark@7.2.0)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.2)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3) + '@astrojs/starlight': 0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3) picomatch: 4.0.4 - std-env@4.1.0: {} + std-env@4.2.0: {} stream-replace-string@2.0.0: {} @@ -8454,7 +8491,7 @@ snapshots: has-flag: 5.0.1 supports-color: 10.2.2 - svgo@4.0.1: + svgo@4.0.2: dependencies: commander: 11.1.0 css-select: 5.2.2 @@ -8469,6 +8506,8 @@ snapshots: ansi-escapes: 7.3.0 supports-hyperlinks: 4.5.0 + tidymd@0.1.0: {} + tiny-inflate@1.0.3: {} tinybench@2.9.0: {} @@ -8479,8 +8518,8 @@ snapshots: tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 tinyrainbow@3.1.0: {} @@ -8509,15 +8548,15 @@ snapshots: tslib@2.8.1: optional: true - tsx@4.22.4: + tsx@4.23.1: dependencies: esbuild: 0.28.1 optionalDependencies: fsevents: 2.3.3 - twoslash-eslint@0.3.9(eslint@10.6.0(jiti@1.21.7)): + twoslash-eslint@0.3.9(eslint@10.7.0(jiti@2.7.0)): dependencies: - eslint: 10.6.0(jiti@1.21.7) + eslint: 10.7.0(jiti@2.7.0) twoslash-protocol: 0.3.9 twoslash-protocol@0.3.9: {} @@ -8528,22 +8567,23 @@ snapshots: type-level-regexp@0.1.17: {} - typescript-eslint@8.62.0(eslint@10.6.0(jiti@1.21.7))(typescript@6.0.3): + typescript-eslint@8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.62.0(@typescript-eslint/parser@8.62.0(eslint@10.6.0(jiti@1.21.7))(typescript@6.0.3))(eslint@10.6.0(jiti@1.21.7))(typescript@6.0.3) - '@typescript-eslint/parser': 8.62.0(eslint@10.6.0(jiti@1.21.7))(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.62.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.62.0(eslint@10.6.0(jiti@1.21.7))(typescript@6.0.3) - eslint: 10.6.0(jiti@1.21.7) + '@typescript-eslint/eslint-plugin': 8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/parser': 8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.65.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3) + eslint: 10.7.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: - supports-color typescript@6.0.3: {} + ufo@1.6.4: {} - ultrahtml@1.6.0: {} + ultrahtml@1.7.0: {} ultramatter@0.0.4: {} @@ -8564,7 +8604,7 @@ snapshots: undici-types@7.18.2: {} - unicode-segmenter@0.14.5: {} + unicode-segmenter@0.17.0: {} unicode-trie@2.0.0: dependencies: @@ -8647,42 +8687,40 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - unocss@66.6.8(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@unocss/astro@66.6.8(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)): - dependencies: - '@unocss/cli': 66.6.8 - '@unocss/core': 66.6.8 - '@unocss/preset-attributify': 66.6.8 - '@unocss/preset-icons': 66.6.8 - '@unocss/preset-mini': 66.6.8 - '@unocss/preset-tagify': 66.6.8 - '@unocss/preset-typography': 66.6.8 - '@unocss/preset-uno': 66.6.8 - '@unocss/preset-web-fonts': 66.6.8 - '@unocss/preset-wind': 66.6.8 - '@unocss/preset-wind3': 66.6.8 - '@unocss/preset-wind4': 66.6.8 - '@unocss/transformer-attributify-jsx': 66.6.8(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - '@unocss/transformer-compile-class': 66.6.8 - '@unocss/transformer-directives': 66.6.8 - '@unocss/transformer-variant-group': 66.6.8 - '@unocss/vite': 66.6.8(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) + unocss@66.7.5(@unocss/astro@66.7.5(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)))(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)): + dependencies: + '@unocss/cli': 66.7.5 + '@unocss/core': 66.7.5 + '@unocss/preset-attributify': 66.7.5 + '@unocss/preset-icons': 66.7.5 + '@unocss/preset-mini': 66.7.5 + '@unocss/preset-tagify': 66.7.5 + '@unocss/preset-typography': 66.7.5 + '@unocss/preset-uno': 66.7.5 + '@unocss/preset-web-fonts': 66.7.5 + '@unocss/preset-wind': 66.7.5 + '@unocss/preset-wind3': 66.7.5 + '@unocss/preset-wind4': 66.7.5 + '@unocss/transformer-attributify-jsx': 66.7.5 + '@unocss/transformer-compile-class': 66.7.5 + '@unocss/transformer-directives': 66.7.5 + '@unocss/transformer-variant-group': 66.7.5 + '@unocss/vite': 66.7.5(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) optionalDependencies: - '@unocss/astro': 66.6.8(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) + '@unocss/astro': 66.7.5(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - vite - unplugin-utils@0.3.1: + unplugin-utils@0.3.2: dependencies: pathe: 2.0.3 - picomatch: 4.0.4 + picomatch: 4.0.5 unplugin@2.3.11: dependencies: '@jridgewell/remapping': 2.3.5 acorn: 8.17.0 - picomatch: 4.0.4 + picomatch: 4.0.5 webpack-virtual-modules: 0.6.2 unstorage@1.17.5: @@ -8691,7 +8729,7 @@ snapshots: chokidar: 5.0.0 destr: 2.0.5 h3: 1.15.11 - lru-cache: 11.5.1 + lru-cache: 11.5.2 node-fetch-native: 1.6.7 ofetch: 1.5.1 ufo: 1.6.4 @@ -8706,6 +8744,10 @@ snapshots: uuid@14.0.1: {} + valibot@1.4.2(typescript@6.0.3): + optionalDependencies: + typescript: 6.0.3 + vanilla-cookieconsent@3.1.0: {} vfile-location@5.0.3: @@ -8723,76 +8765,61 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-plugin-static-copy@4.1.1(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)): + vite-plugin-static-copy@4.1.1(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)): dependencies: chokidar: 3.6.0 - p-map: 7.0.4 + p-map: 7.0.5 picocolors: 1.1.1 tinyglobby: 0.2.17 - vite: 8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0) - - vite-plugin-virtual@0.5.0(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)): - dependencies: - vite: 8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0) + vite: 8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) - vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@1.21.7)(tsx@4.22.4)(yaml@2.9.0): + vite-plugin-virtual@0.5.0(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)): dependencies: - lightningcss: 1.32.0 - picomatch: 4.0.4 - postcss: 8.5.15 - rolldown: 1.1.3 - tinyglobby: 0.2.17 - optionalDependencies: - '@types/node': 24.13.2 - esbuild: 0.28.1 - fsevents: 2.3.3 - jiti: 1.21.7 - tsx: 4.22.4 - yaml: 2.9.0 + vite: 8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) - vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0): + vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0): dependencies: lightningcss: 1.32.0 - picomatch: 4.0.4 - postcss: 8.5.15 - rolldown: 1.1.3 + picomatch: 4.0.5 + postcss: 8.5.20 + rolldown: 1.1.5 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 24.13.2 + '@types/node': 24.13.3 esbuild: 0.28.1 fsevents: 2.3.3 jiti: 2.7.0 - tsx: 4.22.4 + tsx: 4.23.1 yaml: 2.9.0 - vitefu@1.1.3(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)): + vitefu@1.1.3(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)): optionalDependencies: - vite: 8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0) - - vitest@4.1.9(@types/node@24.13.2)(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)): - dependencies: - '@vitest/expect': 4.1.9 - '@vitest/mocker': 4.1.9(vite@8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.9 - '@vitest/runner': 4.1.9 - '@vitest/snapshot': 4.1.9 - '@vitest/spy': 4.1.9 - '@vitest/utils': 4.1.9 - es-module-lexer: 2.1.0 + vite: 8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) + + vitest@4.1.10(@types/node@24.13.3)(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)): + dependencies: + '@vitest/expect': 4.1.10 + '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.10 + '@vitest/runner': 4.1.10 + '@vitest/snapshot': 4.1.10 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 + es-module-lexer: 2.3.1 expect-type: 1.4.0 magic-string: 0.30.21 - obug: 2.1.3 + obug: 2.1.4 pathe: 2.0.3 - picomatch: 4.0.4 - std-env: 4.1.0 + picomatch: 4.0.5 + std-env: 4.2.0 tinybench: 2.9.0 tinyexec: 1.2.4 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 8.1.0(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0) + vite: 8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.13.2 + '@types/node': 24.13.3 transitivePeerDependencies: - msw @@ -8802,8 +8829,6 @@ snapshots: webpack-virtual-modules@0.6.2: {} - which-pm-runs@1.1.0: {} - which@2.0.2: dependencies: isexe: 2.0.0 @@ -8815,7 +8840,7 @@ snapshots: word-wrap@1.2.5: {} - xml-naming@0.1.0: {} + xml-naming@0.3.0: {} xxhash-wasm@1.1.0: {} diff --git a/src/frontend/pnpm-workspace.yaml b/src/frontend/pnpm-workspace.yaml index 9b8c5c202..504b5764b 100644 --- a/src/frontend/pnpm-workspace.yaml +++ b/src/frontend/pnpm-workspace.yaml @@ -27,9 +27,9 @@ overrides: '@anthropic-ai/claude-code@<2.0.31': '>=2.0.31' ajv@<6.14.0: 6.14.0 ajv@>=7.0.0-alpha.0 <8.18.0: 8.18.0 - brace-expansion@<5.0.6: '>=5.0.6' + brace-expansion@<5.0.7: '>=5.0.7' devalue@<5.6.4: '>=5.6.4' - dompurify@<3.4.11: '>=3.4.11' + dompurify@<3.4.12: '>=3.4.12' esbuild@<0.28.1: '>=0.28.1' fast-xml-builder@<1.1.7: '>=1.1.7' fast-xml-parser@<5.7.0: '>=5.7.0' diff --git a/src/frontend/src/middleware.ts b/src/frontend/src/middleware.ts index a9284dcaa..8883c4c8d 100644 --- a/src/frontend/src/middleware.ts +++ b/src/frontend/src/middleware.ts @@ -13,15 +13,24 @@ function redirect(location: string, status = 308): Response { } export const onRequest = defineMiddleware((context, next) => { - const { pathname, search } = new URL(context.request.url); + // These canonicalizing redirects are only meant for on-demand (SSR/dev) + // requests. Since Astro 7.1 the middleware also runs while the `.md`/`.json` + // API and schema endpoints are prerendered at build time; returning a + // redirect there bakes a trailing-slash redirect stub into `dist/` that + // shadows the real prerendered markdown/JSON body — which broke the + // `api-markdown-routes` and `schema-routes` E2E checks. Skip the redirects + // for prerendered routes so those endpoints emit their own content. + if (!context.isPrerendered) { + const { pathname, search } = new URL(context.request.url); - const canonicalApiPath = stripApiReferenceLocale(pathname); - if (canonicalApiPath) { - return redirect(`${canonicalApiPath}${search}`); - } + const canonicalApiPath = stripApiReferenceLocale(pathname); + if (canonicalApiPath) { + return redirect(`${canonicalApiPath}${search}`); + } - if (nestedApiMarkdownPattern.test(pathname) || cliConfigSchemaPattern.test(pathname)) { - return redirect(`${pathname}/${search}`); + if (nestedApiMarkdownPattern.test(pathname) || cliConfigSchemaPattern.test(pathname)) { + return redirect(`${pathname}/${search}`); + } } return next(); From 5a7181a400162f5756886e58231cf1a571757347 Mon Sep 17 00:00:00 2001 From: David Pine Date: Tue, 28 Jul 2026 17:53:43 -0500 Subject: [PATCH 03/22] Redact connection-string passwords in generated package docs (#1410) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Redact connection-string passwords in generated package docs PackageJsonGenerator copies package XML doc comments verbatim into the frontend data JSON. Several packages document example connection strings containing a literal placeholder password (e.g. SqlServer's GetConnectionString returns "Server=host,port;User ID=sa;Password=password;TrustServerCertificate=true"). These are not real secrets, but the literal Password= token trips 1ES / CredScan push protection (SEC101/037 SqlLegacyCredentials, VS403654) when the public repo is mirrored to the internal AzDO remote, blocking the deploy and deploy-vnext-release branch syncs. Add DocumentationSanitizer.RedactConnectionStringPasswords, applied to text, inline-code and code-block doc nodes, which rewrites connection-string Password=/Pwd= literals to . C# default parameter values (password = null) are left untouched because the match requires no whitespace around '='. Regenerate the four affected data files accordingly. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4125af76-bbc2-4532-adee-98add8fdb6b7 * Address PR review: markdown-safe placeholder, cover example nodes, nullable API - Use "{password}" instead of "". Angle brackets are dropped as raw HTML when doc nodes render to Markdown (csharp-api-markdown.ts concatenates text without escaping), which would hide the value in connection-string examples. "{password}" is also the existing placeholder convention already used across the generated data (e.g. mysql://{user}:{password}@{host}). - Sanitize the extraction paths in ExtractDocExample (plain-text code, description text nodes, and example code) so connection-string passwords there cannot re-trigger CredScan in future data refreshes. - Make DocumentationSanitizer.RedactConnectionStringPasswords nullable-aware (string? in/out) to match its behavior and drop the null-forgiving operator in tests. Exclude '{'/'}' from the value class to keep redaction idempotent. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4125af76-bbc2-4532-adee-98add8fdb6b7 * Use "Placeholder" redaction token per 1ES recommendation The connection-string password sanitizer redacted values to `{password}`. Switch the token to a bare `Placeholder`, which is the value 1ES recommends for scrubbed credential examples in generated content. Update the sanitizer unit-test expectations to match, and update the four affected package data files. The pre-existing `{password}` doc template tokens in those files (author-written placeholders, not sanitizer output) are intentionally left unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8c2fe46b-fcb4-48bf-8c62-5f9d3d7a470e * fix(PackageJsonGenerator): tighten redaction regex and close doc gaps Two hardening fixes to the connection-string password redaction added in this PR. F1 - the redaction regex over-consumed trailing delimiters. The value character class only excluded ';', quotes, comma, whitespace, backslash, and brace/angle markers. A value immediately followed by a markdown or URI delimiter ('`', ')', ']', '&', '|') swallowed that delimiter into the match, so an inline-code fence lost its closing backtick and a link label lost its closing paren, corrupting the rendered doc. The class now also stops at those delimiters. A trailing sentence period is preserved by trimming it off the captured value in the replacement callback rather than excluding '.' from the class, which would truncate legitimate dotted values. F4 - two documentation paths reached the generated JSON unsanitized. Enum member descriptions (Description = ExtractSummary(f)) and link labels were emitted verbatim, so a connection string in an enum member's or a link label bypassed redaction. Both now run through the sanitizer. This changes no committed data (no such values exist in the current package set); the fix is preventive. Also refreshes the sanitizer comment and XML docs to describe the Placeholder token and the widened exclusion set. Tests: added markdown/URI delimiter and trailing-period cases to the sanitizer unit tests, and an end-to-end test asserting an enum member whose summary contains a connection string is redacted in the generated JSON. All 31 tests pass. chore: sanitize placeholder connection strings in generated pkg JSON **BYPASS_SECRET_SCANNING** — false-positive SEC101/037 placeholder in generated pkgs/*.json, unblocking the internal mirror for historical commit 6058fcf. Forward fix regenerates the affected files. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8c2fe46b-fcb4-48bf-8c62-5f9d3d7a470e --------- Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: Ankit Jain Copilot-Session: 4125af76-bbc2-4532-adee-98add8fdb6b7 Copilot-Session: 8c2fe46b-fcb4-48bf-8c62-5f9d3d7a470e --- .../Aspire.Hosting.PostgreSQL.13.4.6.json | 2 +- .../pkgs/Aspire.Hosting.SqlServer.13.4.6.json | 2 +- ...tyToolkit.Aspire.Hosting.Minio.13.4.0.json | 2 +- ...olkit.Aspire.Hosting.SurrealDb.13.4.0.json | 2 +- .../Helpers/CanonicalModelBuilder.cs | 19 ++-- .../Helpers/DocumentationSanitizer.cs | 70 +++++++++++++++ .../DocumentationSanitizerTests.cs | 86 +++++++++++++++++++ .../PackageJsonGeneratorTests.cs | 42 +++++++++ 8 files changed, 213 insertions(+), 12 deletions(-) create mode 100644 src/tools/PackageJsonGenerator/Helpers/DocumentationSanitizer.cs create mode 100644 tests/PackageJsonGenerator.Tests/DocumentationSanitizerTests.cs diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.PostgreSQL.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.PostgreSQL.13.4.6.json index 96a15d9a6..b6f0d5147 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.PostgreSQL.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.PostgreSQL.13.4.6.json @@ -1861,7 +1861,7 @@ "returns": [ { "kind": "text", - "text": "A connection string for the PostgreSQL server in the form \"Host=host;Port=port;Username=postgres;Password=password\"." + "text": "A connection string for the PostgreSQL server in the form \"Host=host;Port=port;Username=postgres;Password=Placeholder\"." } ], "parameters": { diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.SqlServer.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.SqlServer.13.4.6.json index a329ee105..1dc3911ab 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.SqlServer.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.SqlServer.13.4.6.json @@ -1029,7 +1029,7 @@ "returns": [ { "kind": "text", - "text": "A connection string for the SQL Server in the form \"Server=host,port;User ID=sa;Password=password;TrustServerCertificate=true\"." + "text": "A connection string for the SQL Server in the form \"Server=host,port;User ID=sa;Password=Placeholder;TrustServerCertificate=true\"." } ], "parameters": { diff --git a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Minio.13.4.0.json b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Minio.13.4.0.json index 1ba93800b..587438bac 100644 --- a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Minio.13.4.0.json +++ b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Minio.13.4.0.json @@ -638,7 +638,7 @@ "returns": [ { "kind": "text", - "text": "A connection string for the MinIO server in the form \"Host=host;Port=port;Username=postgres;Password=password\"." + "text": "A connection string for the MinIO server in the form \"Host=host;Port=port;Username=postgres;Password=Placeholder\"." } ], "parameters": { diff --git a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.SurrealDb.13.4.0.json b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.SurrealDb.13.4.0.json index c1cc775a1..5e7a0741d 100644 --- a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.SurrealDb.13.4.0.json +++ b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.SurrealDb.13.4.0.json @@ -1450,7 +1450,7 @@ "returns": [ { "kind": "text", - "text": "A connection string for the SurrealDB instance in the form \"Server=scheme://host:port;User=username;Password=password\"." + "text": "A connection string for the SurrealDB instance in the form \"Server=scheme://host:port;User=username;Password=Placeholder\"." } ], "parameters": { diff --git a/src/tools/PackageJsonGenerator/Helpers/CanonicalModelBuilder.cs b/src/tools/PackageJsonGenerator/Helpers/CanonicalModelBuilder.cs index 7ebab60c1..adc69bfc6 100644 --- a/src/tools/PackageJsonGenerator/Helpers/CanonicalModelBuilder.cs +++ b/src/tools/PackageJsonGenerator/Helpers/CanonicalModelBuilder.cs @@ -81,7 +81,7 @@ private CanonicalType BuildType(INamedTypeSymbol symbol) { Name = f.Name, Value = Convert.ToInt64(f.ConstantValue), - Description = ExtractSummary(f), + Description = DocumentationSanitizer.RedactConnectionStringPasswords(ExtractSummary(f)), })]; } @@ -705,6 +705,7 @@ private static List CollectNodes(XElement element) // Normalize whitespace within text runs (newlines → spaces, collapse runs) text = text.Replace("\r\n", " ").Replace("\n", " ").Replace("\r", " "); while (text.Contains(" ")) text = text.Replace(" ", " "); + text = DocumentationSanitizer.RedactConnectionStringPasswords(text); if (!string.IsNullOrEmpty(text)) { nodes.Add(new DocNode { Kind = "text", Text = text }); @@ -737,7 +738,7 @@ private static List CollectNodes(XElement element) { Kind = "href", Value = href, - Text = child.Value.Trim() is { Length: > 0 } t ? t : null, + Text = child.Value.Trim() is { Length: > 0 } t ? DocumentationSanitizer.RedactConnectionStringPasswords(t) : null, }); } } @@ -766,7 +767,7 @@ private static List CollectNodes(XElement element) } case "c": - nodes.Add(new DocNode { Kind = "code", Text = child.Value }); + nodes.Add(new DocNode { Kind = "code", Text = DocumentationSanitizer.RedactConnectionStringPasswords(child.Value) }); break; case "code": @@ -779,7 +780,7 @@ private static List CollectNodes(XElement element) nodes.Add(new DocNode { Kind = "codeblock", - Text = child.Value, + Text = DocumentationSanitizer.RedactConnectionStringPasswords(child.Value), Language = lang, Value = region, // reuse value for region }); @@ -839,7 +840,7 @@ private static List CollectNodes(XElement element) { Kind = "href", Value = href, - Text = child.Value.Trim() is { Length: > 0 } t ? t : null, + Text = child.Value.Trim() is { Length: > 0 } t ? DocumentationSanitizer.RedactConnectionStringPasswords(t) : null, }); } break; @@ -898,7 +899,9 @@ private static DocListItem BuildDocListItem(XElement element) { // No code block — try to use the whole content as code var plainText = ExtractPlainText(exampleElement); - return plainText is not null ? new DocExample { Code = plainText } : null; + return plainText is not null + ? new DocExample { Code = DocumentationSanitizer.RedactConnectionStringPasswords(plainText)! } + : null; } var lang = NormalizeLanguage( @@ -920,7 +923,7 @@ private static DocListItem BuildDocListItem(XElement element) while (text.Contains(" ")) text = text.Replace(" ", " "); if (!string.IsNullOrWhiteSpace(text)) { - descNodes.Add(new DocNode { Kind = "text", Text = text.Trim() }); + descNodes.Add(new DocNode { Kind = "text", Text = DocumentationSanitizer.RedactConnectionStringPasswords(text.Trim()) }); } break; @@ -941,7 +944,7 @@ private static DocListItem BuildDocListItem(XElement element) return new DocExample { - Code = codeElement.Value, + Code = DocumentationSanitizer.RedactConnectionStringPasswords(codeElement.Value)!, Language = lang, Description = descNodes.Count > 0 ? descNodes : null, Region = region, diff --git a/src/tools/PackageJsonGenerator/Helpers/DocumentationSanitizer.cs b/src/tools/PackageJsonGenerator/Helpers/DocumentationSanitizer.cs new file mode 100644 index 000000000..dcda74d62 --- /dev/null +++ b/src/tools/PackageJsonGenerator/Helpers/DocumentationSanitizer.cs @@ -0,0 +1,70 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Text.RegularExpressions; + +namespace PackageJsonGenerator.Helpers; + +/// +/// Sanitizes documentation text copied verbatim from package XML docs before it +/// is emitted into the generated JSON data files. +/// +public static class DocumentationSanitizer +{ + private const string PasswordPlaceholder = "Placeholder"; + + // Matches connection-string style "key=value" credential pairs such as + // "User ID=sa;Password=password" or "Pwd=hunter2". The '=' is intentionally + // required with no surrounding whitespace so that C# default parameter + // values ("string? password = null") are never matched. The value (capture + // group 2) stops at connection-string / JSON delimiters (';', quotes, comma, + // backslash), at markdown / URI delimiters ('`', ')', ']', '&', '|') so a + // trailing token or inline-code fence is not swallowed, and at the '{'/'}' + // (and legacy '<'/'>') markers. A trailing '.' is trimmed off the value in + // the replacement callback (sentence terminators) rather than excluded from + // the class, which would truncate dotted values. Re-running over + // already-redacted text reproduces identical output, so replacement is + // idempotent. + private static readonly Regex ConnectionStringPasswordRegex = new( + "\\b(password|pwd)=([^;\"'{}<>\\s\\\\,`)\\]&|]+)", + RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Compiled); + + /// + /// Replaces literal password values inside connection-string style + /// "key=value" pairs with a Placeholder token. + /// + /// + /// Documentation is copied verbatim from package XML docs and often contains + /// example connection strings (for example the SqlServer + /// GetConnectionString returns text + /// "Server=host,port;User ID=sa;Password=password;TrustServerCertificate=true"). + /// Those literal credential tokens are not real secrets, but they trip + /// push-time secret scanners such as CredScan SqlLegacyCredentials + /// (SEC101/037) when the generated JSON is mirrored to a protected remote. + /// The Placeholder token contains no markup or brace characters, so the + /// example still renders correctly when doc nodes are emitted as Markdown; it + /// is the redaction value recommended by 1ES for scrubbed credential examples. + /// + /// The documentation text to sanitize. + /// The text with connection-string password values redacted. + public static string? RedactConnectionStringPasswords(string? text) + { + if (string.IsNullOrEmpty(text) || !text.Contains('=')) + { + return text; + } + + return ConnectionStringPasswordRegex.Replace( + text, + static match => + { + // Preserve a trailing sentence period that the value class + // intentionally consumes (dots are valid inside values, so they + // are trimmed here rather than excluded from the character class). + var value = match.Groups[2].Value; + var redacted = value.TrimEnd('.'); + var trailingDots = value[redacted.Length..]; + return $"{match.Groups[1].Value}={PasswordPlaceholder}{trailingDots}"; + }); + } +} diff --git a/tests/PackageJsonGenerator.Tests/DocumentationSanitizerTests.cs b/tests/PackageJsonGenerator.Tests/DocumentationSanitizerTests.cs new file mode 100644 index 000000000..b46744286 --- /dev/null +++ b/tests/PackageJsonGenerator.Tests/DocumentationSanitizerTests.cs @@ -0,0 +1,86 @@ +using PackageJsonGenerator.Helpers; + +namespace PackageJsonGenerator.Tests; + +public sealed class DocumentationSanitizerTests +{ + [Fact] + public void RedactConnectionStringPasswords_RedactsSqlServerConnectionString() + { + var input = "A connection string for the SQL Server in the form \"Server=host,port;User ID=sa;Password=password;TrustServerCertificate=true\"."; + + var result = DocumentationSanitizer.RedactConnectionStringPasswords(input); + + Assert.Equal( + "A connection string for the SQL Server in the form \"Server=host,port;User ID=sa;Password=Placeholder;TrustServerCertificate=true\".", + result); + } + + [Theory] + // Password at the end of the example (no trailing ';'). + [InlineData( + "Host=host;Port=port;Username=postgres;Password=password", + "Host=host;Port=port;Username=postgres;Password=Placeholder")] + // Keyword casing is preserved and the 'Pwd' alias is handled. + [InlineData("Server=s;Pwd=hunter2;Uid=admin", "Server=s;Pwd=Placeholder;Uid=admin")] + [InlineData("server=s;PASSWORD=S0meThing!;uid=a", "server=s;PASSWORD=Placeholder;uid=a")] + public void RedactConnectionStringPasswords_RedactsVariousFormats(string input, string expected) + { + Assert.Equal(expected, DocumentationSanitizer.RedactConnectionStringPasswords(input)); + } + + [Fact] + public void RedactConnectionStringPasswords_IsIdempotent() + { + var alreadyRedacted = "Server=host,port;User ID=sa;Password=Placeholder;TrustServerCertificate=true"; + + var result = DocumentationSanitizer.RedactConnectionStringPasswords(alreadyRedacted); + + Assert.Equal(alreadyRedacted, result); + } + + [Fact] + public void RedactConnectionStringPasswords_UsesMarkdownSafePlaceholder() + { + // The placeholder must not contain angle brackets, which would be + // dropped as raw HTML when doc nodes are rendered to Markdown. + var result = DocumentationSanitizer.RedactConnectionStringPasswords("Password=password"); + + Assert.Equal("Password=Placeholder", result); + Assert.DoesNotContain('<', result!); + Assert.DoesNotContain('>', result!); + } + + [Theory] + // C# default parameter values use spaces around '=' and must not be touched. + [InlineData("public static IResourceBuilder WithPassword(this IResourceBuilder b, string? password = null)")] + [InlineData("The password used to authenticate. Defaults to a generated value.")] + [InlineData("Gets the connection string for the resource.")] + public void RedactConnectionStringPasswords_LeavesNonConnectionStringTextUntouched(string input) + { + Assert.Equal(input, DocumentationSanitizer.RedactConnectionStringPasswords(input)); + } + + [Theory] + [InlineData("")] + [InlineData(null)] + public void RedactConnectionStringPasswords_HandlesEmptyAndNull(string? input) + { + Assert.Equal(input, DocumentationSanitizer.RedactConnectionStringPasswords(input)); + } + + [Theory] + // A following inline-code fence, link paren, table pipe, or bracket must not + // be swallowed into the redacted value; they delimit the value's end. + [InlineData("Use `Password=secret` in config.", "Use `Password=Placeholder` in config.")] + [InlineData("[docs](https://h/api?password=secret)", "[docs](https://h/api?password=Placeholder)")] + [InlineData("https://h/api?password=secret&uid=sa", "https://h/api?password=Placeholder&uid=sa")] + [InlineData("|Password=secret|Uid=sa|", "|Password=Placeholder|Uid=sa|")] + [InlineData("[Password=secret]", "[Password=Placeholder]")] + // A trailing sentence period is preserved, not consumed into the value. + [InlineData("The default is Password=secret.", "The default is Password=Placeholder.")] + public void RedactConnectionStringPasswords_StopsAtMarkdownAndUriDelimiters(string input, string expected) + { + Assert.Equal(expected, DocumentationSanitizer.RedactConnectionStringPasswords(input)); + } +} diff --git a/tests/PackageJsonGenerator.Tests/PackageJsonGeneratorTests.cs b/tests/PackageJsonGenerator.Tests/PackageJsonGeneratorTests.cs index 29d50b41b..56a9c2533 100644 --- a/tests/PackageJsonGenerator.Tests/PackageJsonGeneratorTests.cs +++ b/tests/PackageJsonGenerator.Tests/PackageJsonGeneratorTests.cs @@ -286,6 +286,48 @@ public sealed class Widget Assert.False(widget.TryGetProperty("nestedTypes", out _)); } + [Fact] + public void GeneratePackageJson_RedactsConnectionStringPasswordsInEnumMemberDescriptions() + { + using var assembly = TestAssembly.Create( + """ + namespace Sample.Library; + + public enum ConnectionMode + { + /// + /// Connects using Server=host,port;User ID=sa;Password=hunter2. + /// + Direct = 0, + } + """); + + var outputPath = Path.Combine(assembly.DirectoryPath, "Package.json"); + + PackageJsonGenerator.GeneratePackageJson( + assembly.AssemblyPath, + assembly.References, + outputPath, + versionOverride: "1.2.3", + packageNameOverride: "Sample.Package", + targetFrameworkOverride: "net8.0"); + + using var document = JsonDocument.Parse(File.ReadAllText(outputPath)); + var member = document.RootElement + .GetProperty("types") + .EnumerateArray() + .Single(t => t.GetProperty("name").GetString() == "ConnectionMode") + .GetProperty("enumMembers") + .EnumerateArray() + .Single(m => m.GetProperty("name").GetString() == "Direct"); + + var description = member.GetProperty("description").GetString(); + + Assert.NotNull(description); + Assert.DoesNotContain("hunter2", description); + Assert.Contains("Placeholder", description!); + } + private sealed class TestAssembly : IDisposable { private TestAssembly(string directoryPath, string assemblyPath, string[] references) From 68f615ad3692b7ae110e28abb1337eda5dda3acd Mon Sep 17 00:00:00 2001 From: David Pine Date: Wed, 29 Jul 2026 08:52:12 -0500 Subject: [PATCH 04/22] fix: Normalize terminology in sample updates (#1397) * fix: Normalize terminology in sample updates Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: febf329c-97d8-41aa-bd42-43273bc57fe7 * test: Preserve spacing in terminology updates Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: febf329c-97d8-41aa-bd42-43273bc57fe7 * fix: Handle Markdown wrappers and word boundaries in terminology normalizer Address review feedback on #1397: - Require .NET to sit at a non-word boundary so tokens like ASP.NET Aspire and Microsoft.NET Aspire are left intact instead of corrupted into ASPAspire / MicrosoftAspire. - Consume Markdown emphasis/link openers (**, [) between the article and the term so 'a **.NET Aspire**' and 'a [.NET Aspire](url)' correct the article to 'an'. - Add regression tests for bold/link article correction and word-boundary cases. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 020561bf-2df6-4f8b-a730-1c72d0f6cc5e * refactor: Make terminology normalizer data-driven Replace the hardcoded replace-chain with a small TerminologyRule table so a new deprecated term is a single entry (pattern/replacement/optional article). Article correction, Markdown-wrapper tolerance, and word-boundary guarding are now applied generically per rule. Also add the 'dotnet aspire' -> 'Aspire' rule that was present in .github/forbidden-words.json but missing from the normalizer, and cover it with tests. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 020561bf-2df6-4f8b-a730-1c72d0f6cc5e * fix: Bound terminology terms by alphanumeric edges and cover Markdown wrappers Replaces the per-rule mix of \\b\/\(? Copilot-Session: 020561bf-2df6-4f8b-a730-1c72d0f6cc5e * fix: Skip code regions and leave C# untouched in terminology normalizer The normalizer ran a plain pass over raw Markdown and appHostCode, which could rewrite runnable sample commands (e.g. 'dotnet aspire run' -> 'Aspire run') inside fenced/inline code and corrupt compilable C#. Now fenced blocks and inline code are copied through verbatim, appHostCode is left untouched (it renders as C#, not prose), and the entry point is null-safe. Adds code-skip, mixed prose+code, idempotence, and null tests, and replaces the deprecated-term scan with an idempotence-based invariant. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 020561bf-2df6-4f8b-a730-1c72d0f6cc5e --------- Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: febf329c-97d8-41aa-bd42-43273bc57fe7 Copilot-Session: 020561bf-2df6-4f8b-a730-1c72d0f6cc5e --- src/frontend/scripts/aspire-terminology.ts | 119 ++++++++++++++ src/frontend/scripts/update-integrations.ts | 6 +- src/frontend/scripts/update-samples.ts | 37 ++++- src/frontend/src/utils/samples.ts | 6 +- .../tests/unit/update-samples.vitest.test.ts | 145 ++++++++++++++++++ 5 files changed, 300 insertions(+), 13 deletions(-) create mode 100644 src/frontend/scripts/aspire-terminology.ts create mode 100644 src/frontend/tests/unit/update-samples.vitest.test.ts diff --git a/src/frontend/scripts/aspire-terminology.ts b/src/frontend/scripts/aspire-terminology.ts new file mode 100644 index 000000000..61764d095 --- /dev/null +++ b/src/frontend/scripts/aspire-terminology.ts @@ -0,0 +1,119 @@ +const horizontalWhitespace = String.raw`[ \t]+`; + +// A deprecated term only matches when it isn't fused to an adjacent alphanumeric +// character, so longer tokens like `ASP.NET Aspire` or `.NET AspireX` stay intact +// while punctuation and Markdown wrappers (`_`, `*`, `[`) still count as +// boundaries around a standalone term. +const termStart = String.raw`(? `an Aspire`). + */ + readonly article?: 'a' | 'an'; +} + +// Adding a rule here normalizes a new term everywhere generated sample and +// integration data is written. Keep this list in sync with the deprecated terms +// in `.github/forbidden-words.json`. +const terminologyRules: readonly TerminologyRule[] = [ + { + term: String.raw`\.NET${horizontalWhitespace}Aspire`, + replacement: 'Aspire', + article: 'an', + }, + { + term: String.raw`dotnet${horizontalWhitespace}aspire`, + replacement: 'Aspire', + article: 'an', + }, + { + term: String.raw`app${horizontalWhitespace}host`, + replacement: 'AppHost', + }, +]; + +export function normalizeAspireTerminology(text: string): string; +export function normalizeAspireTerminology( + text: string | null | undefined +): string | null | undefined; +export function normalizeAspireTerminology( + text: string | null | undefined +): string | null | undefined { + if (text == null) { + return text; + } + + return normalizeProse(text); +} + +// Apply every terminology rule to prose only, copying fenced and inline code +// regions through untouched so sample commands stay runnable. +function normalizeProse(text: string): string { + let result = ''; + let lastIndex = 0; + + for (const match of text.matchAll(codeRegion)) { + result += applyRules(text.slice(lastIndex, match.index)); + result += match[0]; + lastIndex = match.index + match[0].length; + } + + return result + applyRules(text.slice(lastIndex)); +} + +function applyRules(text: string): string { + return terminologyRules.reduce(applyRule, text); +} + +function applyRule(text: string, rule: TerminologyRule): string { + const corrected = rule.article ? correctArticle(text, rule, rule.article) : text; + return corrected.replace(new RegExp(boundedTerm(rule), 'gi'), rule.replacement); +} + +// Bound a term core with alphanumeric edges so it can't fuse into a longer token +// while still allowing Markdown wrappers (`_`, `*`, `[`) as boundaries. +function boundedTerm(rule: TerminologyRule): string { + return `${termStart}${rule.term}${termEnd}`; +} + +// Rewrite a preceding indefinite article when the replacement changes the +// leading sound, tolerating Markdown wrappers between the article and the term. +function correctArticle(text: string, rule: TerminologyRule, article: 'a' | 'an'): string { + const capitalized = article === 'a' ? 'A' : 'An'; + const withArticle = new RegExp( + String.raw`\b([Aa])${horizontalWhitespace}(${markdownOpeners})` + boundedTerm(rule), + 'gi' + ); + return text.replace( + withArticle, + (_match, matchedArticle: string, opener: string) => + `${matchedArticle === 'A' ? capitalized : article} ${opener}${rule.replacement}` + ); +} diff --git a/src/frontend/scripts/update-integrations.ts b/src/frontend/scripts/update-integrations.ts index 06787b78a..56fc3b533 100644 --- a/src/frontend/scripts/update-integrations.ts +++ b/src/frontend/scripts/update-integrations.ts @@ -8,6 +8,7 @@ import { isOfficialAspirePackage, resolveOfficialAspirePackageSource, } from './aspire-package-source'; +import { normalizeAspireTerminology } from './aspire-terminology'; const OFFICIAL_NUGET_ORG_QUERIES = ['owner:aspire', 'Aspire.Hosting.']; const OFFICIAL_RELEASE_FEED_QUERIES = ['Aspire.']; @@ -285,9 +286,8 @@ function filterAndTransform(pkgs: PackageRecord[]): IntegrationOutput[] { }) .map((pkg) => ({ title: pkg.id, - description: pkg.description - ?.replace(/\bA \.NET Aspire\b/gi, 'An Aspire') - .replace(/\.NET Aspire/gi, 'Aspire'), + description: + pkg.description === undefined ? undefined : normalizeAspireTerminology(pkg.description), icon: resolveIconUrl(pkg), href: `https://www.nuget.org/packages/${pkg.id}`, tags: pkg.tags?.map((tag) => tag.toLowerCase()) ?? [], diff --git a/src/frontend/scripts/update-samples.ts b/src/frontend/scripts/update-samples.ts index c0b24a2c0..b3018dac6 100644 --- a/src/frontend/scripts/update-samples.ts +++ b/src/frontend/scripts/update-samples.ts @@ -1,9 +1,12 @@ import fs from 'fs'; import path from 'path'; import { pipeline } from 'stream/promises'; +import { fileURLToPath } from 'url'; import fetch from 'node-fetch'; +import { normalizeAspireTerminology } from './aspire-terminology'; + const REPO = 'microsoft/aspire-samples'; const DEFAULT_BRANCH = 'main'; // `BRANCH` controls which ref of `microsoft/aspire-samples` is fetched (README, @@ -97,7 +100,7 @@ interface GitTreeResponse { truncated?: boolean; } -interface SampleResult { +export interface SampleResult { name: string; title: string; description: string | null; @@ -111,6 +114,20 @@ interface SampleResult { appHostCode: string | null; } +// `appHostCode` is intentionally excluded: it is rendered as C# (not prose), so +// rewriting terminology inside identifiers, string literals, or comments would +// risk corrupting compilable code without fixing any user-facing prose. +export function normalizeSampleTerminology(sample: SampleResult): SampleResult { + return { + ...sample, + title: normalizeAspireTerminology(sample.title), + description: + sample.description === null ? null : normalizeAspireTerminology(sample.description), + readme: normalizeAspireTerminology(sample.readme), + readmeRaw: normalizeAspireTerminology(sample.readmeRaw), + }; +} + type AppHostKind = 'typescript' | 'csproj' | 'file-based'; interface AppHostInfo { @@ -531,7 +548,7 @@ async function processSample( const thumbnail = extractThumbnail(name, readme); const href = `${TREE_BASE}/${SAMPLES_DIR}/${name}`; - return { + return normalizeSampleTerminology({ name, title, description, @@ -543,7 +560,7 @@ async function processSample( appHost: appHostInfo?.kind ?? null, appHostPath: appHostInfo?.entryPath ?? null, appHostCode, - }; + }); } async function main(): Promise { @@ -577,7 +594,13 @@ async function main(): Promise { console.log(`\n✅ Saved ${results.length} samples to ${OUTPUT_PATH}`); } -main().catch((error: unknown) => { - console.error('❌ Error:', getErrorMessage(error)); - process.exit(1); -}); +const isMainModule = process.argv[1] + ? path.resolve(process.argv[1]) === fileURLToPath(import.meta.url) + : false; + +if (isMainModule) { + void main().catch((error: unknown) => { + console.error('❌ Error:', getErrorMessage(error)); + process.exitCode = 1; + }); +} diff --git a/src/frontend/src/utils/samples.ts b/src/frontend/src/utils/samples.ts index f83f731f0..ff27849a7 100644 --- a/src/frontend/src/utils/samples.ts +++ b/src/frontend/src/utils/samples.ts @@ -188,9 +188,9 @@ interface BuildSampleMarkdownOptions { * page-actions plugin's "Copy Markdown" and "View Markdown" actions return a * portable, LLM-friendly document. * - * The base content is the original upstream README (readmeRaw); relative image - * paths are rewritten to absolute GitHub raw URLs so they resolve when the - * markdown is opened in a browser or pasted into another tool. + * The base content is the terminology-normalized upstream README (readmeRaw); + * relative image paths are rewritten to absolute GitHub raw URLs so they + * resolve when the markdown is opened in a browser or pasted into another tool. */ export function buildSampleMarkdown(sample: Sample, options: BuildSampleMarkdownOptions): string { const body = rewriteSampleImageUrls(sample.readmeRaw ?? sample.readme, sample.name); diff --git a/src/frontend/tests/unit/update-samples.vitest.test.ts b/src/frontend/tests/unit/update-samples.vitest.test.ts new file mode 100644 index 000000000..ecab6d314 --- /dev/null +++ b/src/frontend/tests/unit/update-samples.vitest.test.ts @@ -0,0 +1,145 @@ +import { describe, expect, test } from 'vitest'; + +import samples from '@data/samples.json'; + +import { normalizeAspireTerminology } from '../../scripts/aspire-terminology'; +import { type SampleResult, normalizeSampleTerminology } from '../../scripts/update-samples'; + +const legacyAspireName = ['.NET', 'Aspire'].join(' '); +const legacyDotnetAspireName = ['dotnet', 'aspire'].join(' '); +const legacyAppHostName = ['app', 'host'].join(' '); + +describe('Aspire terminology normalization', () => { + test.each([ + ['uppercase article', `A ${legacyAspireName} project`, 'An Aspire project'], + ['lowercase article', `Build a ${legacyAspireName} project`, 'Build an Aspire project'], + [ + 'extra horizontal whitespace', + `A ${['.NET', 'Aspire'].join('\t')} project`, + 'An Aspire project', + ], + ])('uses one space for the %s case', (_scenario, input, expected) => { + expect(normalizeAspireTerminology(input)).toBe(expected); + }); + + test.each([ + ['bold wrapper', `A **${legacyAspireName}** project`, 'An **Aspire** project'], + [ + 'inline link', + `This is a [${legacyAspireName}](https://aspire.dev/) sample`, + 'This is an [Aspire](https://aspire.dev/) sample', + ], + ['underscore emphasis', `A _${legacyAspireName}_ project`, 'An _Aspire_ project'], + ])('corrects the article across a %s', (_scenario, input, expected) => { + expect(normalizeAspireTerminology(input)).toBe(expected); + }); + + test.each([ + ['a prefixed framework token', `ASP${legacyAspireName} guidance`], + ['a dotted namespace', `Ship Microsoft${legacyAspireName} today`], + ['a suffixed token', `${legacyAspireName}Server guidance`], + ['a suffixed token after an article', `A ${legacyAspireName}Server sample`], + ])('leaves %s untouched', (_scenario, input) => { + expect(normalizeAspireTerminology(input)).toBe(input); + }); + + test.each([ + ['uppercase article', `A ${legacyDotnetAspireName} sample`, 'An Aspire sample'], + ['lowercase article', `Build a ${legacyDotnetAspireName} sample`, 'Build an Aspire sample'], + ['no article', `Deploy the ${legacyDotnetAspireName} app`, 'Deploy the Aspire app'], + ])('normalizes the "dotnet aspire" spelling (%s)', (_scenario, input, expected) => { + expect(normalizeAspireTerminology(input)).toBe(expected); + }); + + test.each([ + ['a fenced block', '```bash\n' + `${legacyDotnetAspireName} run` + '\n```'], + ['an inline code command', `Run \`${legacyDotnetAspireName} run\` to start.`], + ['a fenced legacy brand', '```\n' + legacyAspireName + '\n```'], + ])('preserves %s so sample commands stay runnable', (_scenario, input) => { + expect(normalizeAspireTerminology(input)).toBe(input); + }); + + test('normalizes prose while preserving adjacent code', () => { + const input = `Build a ${legacyAspireName} app, then run \`${legacyDotnetAspireName} run\`.`; + expect(normalizeAspireTerminology(input)).toBe( + 'Build an Aspire app, then run `dotnet aspire run`.' + ); + }); + + test.each([ + ['prose', `A ${legacyAspireName} ${legacyAppHostName} sample`], + ['mixed prose and code', `Run \`${legacyDotnetAspireName} run\` in a ${legacyAspireName} app`], + ])('is idempotent for %s', (_scenario, input) => { + const once = normalizeAspireTerminology(input); + expect(normalizeAspireTerminology(once)).toBe(once); + }); + + test('passes null and undefined through unchanged', () => { + expect(normalizeAspireTerminology(null)).toBeNull(); + expect(normalizeAspireTerminology(undefined)).toBeUndefined(); + }); +}); + +describe('sample terminology normalization', () => { + test('normalizes every generated text field', () => { + const sample: SampleResult = { + name: 'terminology-sample', + title: `${legacyAspireName} ${legacyAppHostName} sample`, + description: `A ${legacyAspireName} ${legacyAppHostName} project.`, + href: 'https://github.com/microsoft/aspire-samples/tree/main/samples/terminology-sample', + readme: `# ${legacyAspireName} sample\n\nRun the ${legacyAppHostName}.`, + readmeRaw: + `# ${legacyAspireName} sample\n\n` + + `Run the ${legacyAppHostName.toUpperCase()}.\n\n` + + '```bash\n' + + `${legacyDotnetAspireName} run\n` + + '```\n', + tags: ['csharp'], + thumbnail: null, + appHost: 'csproj', + appHostPath: 'Terminology.AppHost/AppHost.cs', + appHostCode: `// Keep the container running between ${legacyAppHostName} sessions.`, + }; + + expect(normalizeSampleTerminology(sample)).toEqual({ + ...sample, + title: 'Aspire AppHost sample', + description: 'An Aspire AppHost project.', + readme: '# Aspire sample\n\nRun the AppHost.', + readmeRaw: + '# Aspire sample\n\n' + 'Run the AppHost.\n\n' + '```bash\n' + 'dotnet aspire run\n' + '```\n', + }); + }); + + test('does not rewrite related words that are not deprecated terms', () => { + const sample: SampleResult = { + name: 'hosting-sample', + title: 'App hosting sample', + description: null, + href: 'https://github.com/microsoft/aspire-samples/tree/main/samples/hosting-sample', + readme: 'This sample demonstrates app hosting.', + readmeRaw: 'This sample demonstrates app hosting.', + tags: [], + thumbnail: null, + appHost: null, + appHostPath: null, + appHostCode: null, + }; + + expect(normalizeSampleTerminology(sample)).toEqual(sample); + }); + + test('keeps generated sample prose normalized', () => { + const proseFields = ['title', 'description', 'readme', 'readmeRaw'] as const; + const violations = samples.flatMap((sample) => + proseFields + .filter((field) => { + const value = sample[field]; + return value != null && normalizeAspireTerminology(value) !== value; + }) + .map((field) => `${sample.name}.${field}`) + ); + + expect(violations).toEqual([]); + }); +}); From 2de702c7004f45f6c916a1236e8e8dc9cb54ea7b Mon Sep 17 00:00:00 2001 From: David Pine Date: Thu, 30 Jul 2026 06:52:13 -0500 Subject: [PATCH 05/22] Switch cookie consent runtime to WCP API (#1403) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Switch cookie consent runtime to WCP API Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4182d84d-5dc1-4c74-be09-15995a872350 * Theme WCP consent UI, add scroll-lock, prune obsolete cookie tests Fully restyle the WCP cookie banner and preferences dialog to match the Aspire theme via the team-owned wcp-consent.css (our colors, spacing, WCAG AA contrast, and the brand icon). The dialog now re-themes live when the user toggles light/dark, and the underlying page is scroll-locked while the preferences dialog is open. Remove the last remnants of the old vanilla-cookieconsent integration: - delete config/cookie.config.ts and the old cookieconsent-custom.css - drop @jop-software/astro-cookieconsent + vanilla-cookieconsent deps - remove the 2 obsolete behavioral cookie e2e tests and their dead helpers; the WCP banner is geo-gated/CDN-loaded and can't be exercised in CI, so compliance is verified by the WCP scan instead - rework the integrations-gallery banner suppression to hide the WCP banner element instead of pre-seeding the removed cc_cookie shape Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4182d84d-5dc1-4c74-be09-15995a872350 * Hide "Manage cookies" buttons where consent isn't required WCP reports whether consent is required for the visitor's region. Where it is not (e.g. the US) there is nothing to manage, so hide the four "Manage cookies" buttons instead of leaving inert controls on the page. The WCP runtime sets a data-consent-not-required flag on once it knows the region; a CSS rule hides .cookie-consent-btn when the flag is present. The flag is primed from localStorage before paint so returning visitors in non-required regions don't see the buttons flash in. Defaulting to visible keeps this failsafe: if WCP is slow or blocked we never hide a control a required region needs. display:none also makes the site tour auto-skip its cookie-preferences step, so no tour changes are needed. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4182d84d-5dc1-4c74-be09-15995a872350 * Keep header-order e2e test deterministic when consent isn't required The compact-header-order regression asserts the full set of header controls, including the "Manage cookies" button. That button is now region-gated: WCP hides it where consent isn't required, which is how most CI runner IPs resolve, so the test could see a shorter header and fail. Block the WCP CDN for this test so it always exercises the failsafe default (every control present), keeping the expected order stable regardless of the runner's geo. The site-tour e2e test needs no change; it advances until "Finish" without counting steps, so it tolerates the cookie step being skipped. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4182d84d-5dc1-4c74-be09-15995a872350 * Address PR review: drop dead consent global, harden WCP init Two fixes for the Copilot review comments on #1403, both in the WCP initializer in Head.astro: - Remove the toLegacyCategories / syncConsentState path that only ever wrote window.__aspireConsentCategories, a global nothing in the frontend (or anywhere in the repo) reads. This also drops the astro:page-load handler and getConsent() calls that existed solely to feed that dead global, removing a runtime side effect with no consumer. - Resolve the WCP init theme through toWcpThemeName instead of dereferencing wcp.themes.dark/light directly. If a future WCP payload omits or renames themes, the direct access threw, the throw was swallowed by the surrounding try/catch, and initialization stopped permanently with no retry. toWcpThemeName already falls back to a plain string, and init now reschedules itself on exceptions within the existing bounded window. Validated locally against the WCP CDN: consent still initializes (US -> consent not required, manage-cookies buttons hidden), the removed global is now undefined, and there are no console errors. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4182d84d-5dc1-4c74-be09-15995a872350 * Address review 4790741647: wire analytics, fix banner overlap + a11y Implements every point from adamint's review on #1403. Critical: - Analytics never loaded under WCP. The three analytics scripts still ship inert (type="text/plain" data-category="analytics") from the previous cookie library, but WCP is a consent-collection API and does not manage script tags, so nothing re-activated them. Head.astro now bridges the gap: on init it reads siteConsent.getConsent().Analytics and, when granted (default where consent isn't required, e.g. the US), promotes each inert script to an executable clone. onConsentChanged reloads, so a later grant re-applies via the same path. Verified locally: all three scripts flip from text/plain to active on the US default-grant page. Accessibility: - The geo-gated banner is a fixed top strip that painted over the fixed Starlight header (z-index 10), hiding nav/search (WCAG 2.4.11). A new ResizeObserver (trackBannerHeight) publishes the banner's live height as --wcp-banner-height, and CSS translates .page (the body-level wrapper that contains every fixed control) down by that amount only while the banner is in the DOM. It is a no-op with no banner (0px), so the US is unaffected. Verified: injecting a 60px banner shifts the header to top:60 uncovered. - Reject / Manage-cookies ghost buttons used a 30% border that failed WCAG 1.4.11 non-text contrast (1.90:1 light / 2.70:1 dark). Bumped to 55% (3.73:1 / 5.82:1) on the banner and the dialog reset button. Cleanups: - Guard openManageConsent so preventDefault only fires when WCP's dialog actually opened, not on every click. - Replace the dead `theme-changed` CustomEvent (WCP has no such listener) with the real re-theme hook, siteConsent.applyTheme(themeObject), driven by the existing data-theme observer. - Register onConsentChanged once via init's callback argument; drop the redundant siteConsent.onConsentChanged(...) call that double-registered it (WCP stores callbacks in a list, so it fired two reloads per change). - Refresh the Cookie Consent + screenshot sections of astro.instructions.md to describe WCP (geo-gated top strip, Accept/Reject/More info, MSCC cookie) instead of the removed jop-software library. - Drop the dead E2E_TESTS env (read nowhere) from frontend-build.yml and the two playwright configs, plus the stale cookie.config.ts comment. Tests: - Restore the consent regression coverage adamint flagged as deleted. New tests/e2e/cookie-consent.spec.ts stubs window.WcpConsent (blocking the real CDN) so it can assert the behavior that only exists at runtime: analytics scripts are promoted from inert to executable when Analytics consent is granted, stay inert when it is withheld, and every server-rendered manage-cookies control routes a click to siteConsent.manageConsent(). Green across the desktop, tablet, and mobile projects. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4182d84d-5dc1-4c74-be09-15995a872350 * Fix WCP analytics ordering and applyTheme arg (review 4797687282) adamint's CHANGES_REQUESTED (with JamesNK's two inline notes) caught two real bugs the e2e stub had masked. Both verified against the live library and fixed. 1. Analytics was dead on the default (US) path. activateAnalyticsScripts() rebuilds each inert script with document.createElement('script') but never reset `async`. Dynamically-created scripts default to async=true and the copied `defer` is a no-op for them, so the two tiny same-origin scripts (1ds.js, track.js) won the race against the ~140 KB 1DS SDK and each bailed silently (1ds.js returns without `oneDS`; track.js returns without `window.analytics.__initialized`). Set `next.async = false` so they execute in insertion (document) order. Since consent isn't required in the US, Analytics is auto-granted there, so this was most traffic, not an edge case. 2. applyTheme always threw. WCP v2's public `siteConsent.applyTheme(name)` takes a string theme KEY and looks it up in its internal map; we were passing `wcp.themes.dark/.light` (an object), so `this.themes[object]` was undefined -> "Theme not found error", swallowed by withSiteConsent's try/catch. resolveWcpTheme now returns the 'dark'|'light' string for both applyTheme and init, so the WCP-internal re-theme actually runs on toggle. (init's 5th theme arg is ignored by the current CDN build; our CSS overrides theme the visible surfaces regardless.) Tests: strengthen the stub so it can no longer hide either bug and add the missing coverage adamint flagged. - applyTheme now validates its argument (string key in the themes map) and throws otherwise, exactly like the live library; a permissive stub could not catch a wrong-argument regression. - New assertion: every promoted analytics script has async===false. - New test: toggling data-theme drives applyTheme with the string key. - New test: WCP's onConsentChanged (init's 4th arg, now captured by the stub) reloads the page — restores the accept/reject-persistence coverage lost with the old ui-regressions tests. Verified the strengthened guards fail when either fix is reverted, and pass with both applied: cookie-consent.spec.ts is 15/15 across desktop/tablet/mobile. Also: - Revert an unintended pnpm-lock transitive drift (satteri 0.9.3 -> 0.9.4) so the lockfile diff is only the removed cookie-consent packages. - Fix a stale CSS comment: the banner's third action is "More info", not "Manage cookies". Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4182d84d-5dc1-4c74-be09-15995a872350 --------- Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4182d84d-5dc1-4c74-be09-15995a872350 --- .github/astro.instructions.md | 11 +- .github/workflows/frontend-build.yml | 6 - src/frontend/astro.config.mjs | 3 - src/frontend/config/cookie.config.ts | 671 ------------------ src/frontend/package.json | 4 +- .../playwright.api-markdown.config.mjs | 1 - src/frontend/playwright.config.mjs | 1 - src/frontend/pnpm-lock.yaml | 20 - .../src/components/FooterSocials.astro | 2 +- .../src/components/starlight/Head.astro | 291 +++++++- .../src/components/starlight/Header.astro | 4 +- .../components/starlight/SocialIcons.astro | 2 +- .../src/styles/cookieconsent-custom.css | 117 --- src/frontend/src/styles/site.css | 2 +- src/frontend/src/styles/wcp-consent.css | 265 +++++++ src/frontend/tests/e2e/cookie-consent.spec.ts | 338 +++++++++ src/frontend/tests/e2e/helpers.ts | 64 -- .../tests/e2e/integrations-gallery.spec.ts | 72 +- src/frontend/tests/e2e/ui-regressions.spec.ts | 35 +- 19 files changed, 912 insertions(+), 997 deletions(-) delete mode 100644 src/frontend/config/cookie.config.ts delete mode 100644 src/frontend/src/styles/cookieconsent-custom.css create mode 100644 src/frontend/src/styles/wcp-consent.css create mode 100644 src/frontend/tests/e2e/cookie-consent.spec.ts diff --git a/.github/astro.instructions.md b/.github/astro.instructions.md index 90aa05e77..2da9248b4 100644 --- a/.github/astro.instructions.md +++ b/.github/astro.instructions.md @@ -338,11 +338,11 @@ Sidebar topics are defined in `config/sidebar/` as separate modules and aggregat ## Cookie Consent -The site uses `@jop-software/astro-cookieconsent` with a box modal at bottom-right. The consent modal has three buttons: **"Accept all"**, **"Reject all"**, and **"Manage preferences"**. This is relevant when automating browser interactions — always dismiss the cookie modal first. +The site uses Microsoft's **WCP** consent runtime (`wcp-consent.js`, loaded live from `wcpstatic.microsoft.com`), wired up in `src/components/starlight/Head.astro` and fully restyled by `src/styles/wcp-consent.css`. The banner is **geo-gated**: the CDN decides per region whether it appears, so where consent is not required (e.g. the US) **no banner shows** and the "Manage cookies" buttons are hidden (`html[data-consent-not-required]`). When it does appear (e.g. the EU) it is a **fixed strip at the top of the viewport** — not a bottom-right box — with **"Accept"**, **"Reject"**, and **"More info"** actions; "More info" opens a preferences dialog with per-category toggles and "Save changes" / "Reset all". Consent is persisted in the `MSCC` cookie. Because it is geo-gated, you usually will not see it in local/US automation — if it does appear, dismiss it first. ## Screenshots and Visual Verification with playwright-cli -When making visual changes or preparing PR screenshots, use the `playwright-cli` skill to automate browser interaction. This site has a cookie consent modal that appears on first visit and **must be dismissed before taking screenshots**. +When making visual changes or preparing PR screenshots, use the `playwright-cli` skill to automate browser interaction. This site _may_ show a WCP cookie banner on first visit, but it is **geo-gated** and usually absent in local/US runs — when it does appear (a fixed strip at the top of the viewport) **dismiss it before taking screenshots**. ### Workflow for Taking Screenshots @@ -352,10 +352,11 @@ When making visual changes or preparing PR screenshots, use the `playwright-cli` playwright-cli open http://localhost:4321 playwright-cli goto http://localhost:4321/path/to/page/ ``` -3. **Dismiss the cookie consent modal first** — click the "Reject all" button: +3. **Dismiss the cookie banner if one appears** — click the "Reject" button (often a + no-op locally, since the banner is geo-gated and typically does not render): ```bash playwright-cli snapshot - # Find the ref for the "Reject all" button in the snapshot + # If a banner is present, find the "Reject" ref in the snapshot and click it playwright-cli click ``` 4. Take the screenshot: @@ -370,7 +371,7 @@ When making visual changes or preparing PR screenshots, use the `playwright-cli` playwright-cli screenshot --filename=mobile.png ``` -Always dismiss the cookie modal before any screenshot or visual verification. The "Reject all" button avoids setting unnecessary cookies during development. +If a banner is present, dismiss it before any screenshot or visual verification. The "Reject" button avoids setting unnecessary cookies during development; in local/US runs no banner appears, so this step is usually unnecessary. ## Accessibility and Inclusive Writing diff --git a/.github/workflows/frontend-build.yml b/.github/workflows/frontend-build.yml index 9897e24ef..fa26c56c0 100644 --- a/.github/workflows/frontend-build.yml +++ b/.github/workflows/frontend-build.yml @@ -88,12 +88,6 @@ jobs: env: MODE: production ASTRO_TELEMETRY_DISABLED: 1 - # The built artifact is consumed by `astro preview` during the - # e2e shards. `config/cookie.config.ts` reads `E2E_TESTS` at - # build time to disable the cookie-consent bot check; without - # this, the preview serves a production-configured modal that - # playwright is mistaken for a bot and never opens. - E2E_TESTS: 1 run: pnpm build:production # Upload before the dist sanity-check so the artifact is always diff --git a/src/frontend/astro.config.mjs b/src/frontend/astro.config.mjs index 21a61b541..c47d03ed5 100644 --- a/src/frontend/astro.config.mjs +++ b/src/frontend/astro.config.mjs @@ -4,7 +4,6 @@ import { unified } from '@astrojs/markdown-remark'; import { sidebarTopics } from './config/sidebar/sidebar.topics.ts'; import { redirects } from './config/redirects.mjs'; import { iconPacks } from './config/icon-packs.mjs'; -import { cookieConfig } from './config/cookie.config'; import { locales } from './config/locales.ts'; import { headAttrs } from './config/head.attrs.ts'; import { socialConfig } from './config/socials.config.ts'; @@ -20,7 +19,6 @@ import starlightLlmsTxt from 'starlight-llms-txt'; import starlightScrollToTop from 'starlight-scroll-to-top'; import starlightSidebarTopics from 'starlight-sidebar-topics'; import starlightPageActions from 'starlight-page-actions'; -import jopSoftwarecookieconsent from '@jop-software/astro-cookieconsent'; import buildTiming from './config/build-timing.mjs'; import UnoCSS from 'unocss/astro'; import Icons from 'starlight-plugin-icons'; @@ -229,7 +227,6 @@ export default defineConfig({ optimize: true, gfm: true, }), - jopSoftwarecookieconsent(cookieConfig), ...(isBuildTimingEnabled ? [buildTiming()] : []), ], build: { diff --git a/src/frontend/config/cookie.config.ts b/src/frontend/config/cookie.config.ts deleted file mode 100644 index 0255f6d13..000000000 --- a/src/frontend/config/cookie.config.ts +++ /dev/null @@ -1,671 +0,0 @@ -import type { CookieConsentConfig } from '@jop-software/astro-cookieconsent'; - -export const cookieConfig: CookieConsentConfig = { - hideFromBots: false, - guiOptions: { - consentModal: { - layout: 'box', - position: 'bottom right', - equalWeightButtons: false, - }, - preferencesModal: { - layout: 'bar wide', - position: 'right', - equalWeightButtons: false, - }, - }, - categories: { - necessary: { - enabled: true, - readOnly: true, - }, - analytics: { - enabled: true, - readOnly: false, - }, - advertising: { - enabled: true, - readOnly: false, - }, - }, - language: { - default: 'en', - autoDetect: 'document', - translations: { - en: { - consentModal: { - title: 'This site uses cookies', - description: - 'We use cookies to enhance your browsing experience, analyze site traffic, and improve our services. By clicking "Accept all," you consent to our use of cookies.', - acceptAllBtn: 'Accept all', - acceptNecessaryBtn: 'Reject all', - showPreferencesBtn: 'Manage preferences', - footer: 'Privacy & Cookies', - }, - preferencesModal: { - title: 'Cookie preferences', - acceptAllBtn: 'Accept all', - acceptNecessaryBtn: 'Reject all', - savePreferencesBtn: 'Save preferences', - closeIconLabel: 'Close', - sections: [ - { - title: 'Cookie usage', - description: - 'We use cookies to provide essential website functionality and improve your experience.', - }, - { - title: 'Strictly necessary Always Enabled', - description: - 'Required for the website to function properly. These cannot be disabled.', - //this field will generate a toggle linked to the 'necessary' category - linkedCategory: 'necessary', - }, - { - title: 'Analytics', - description: - 'Help us understand how visitors interact with our website. All data is anonymized.', - linkedCategory: 'analytics', - }, - { - title: 'More information', - description: - 'For questions about our cookie policy, please contact us.', - }, - ], - }, - }, - de: { - consentModal: { - title: 'Diese Website verwendet Cookies', - description: - 'Wir verwenden Cookies, um Ihr Browsing-Erlebnis zu verbessern, den Website-Traffic zu analysieren und unsere Dienste zu verbessern. Indem Sie auf "Alle akzeptieren" klicken, stimmen Sie unserer Verwendung von Cookies zu.', - acceptAllBtn: 'Alle akzeptieren', - acceptNecessaryBtn: 'Alle ablehnen', - showPreferencesBtn: 'Einstellungen verwalten', - footer: - 'Datenschutz & Cookies', - }, - preferencesModal: { - title: 'Cookie-Einstellungen', - acceptAllBtn: 'Alle akzeptieren', - acceptNecessaryBtn: 'Alle ablehnen', - savePreferencesBtn: 'Einstellungen speichern', - closeIconLabel: 'Schließen', - sections: [ - { - title: 'Cookie-Verwendung', - description: - 'Wir verwenden Cookies, um wesentliche Website-Funktionen bereitzustellen und Ihre Erfahrung zu verbessern.', - }, - { - title: 'Unbedingt erforderlich Immer aktiviert', - description: - 'Erforderlich, damit die Website ordnungsgemäß funktioniert. Diese können nicht deaktiviert werden.', - linkedCategory: 'necessary', - }, - { - title: 'Analyse', - description: - 'Helfen Sie uns zu verstehen, wie Besucher mit unserer Website interagieren. Alle Daten werden anonymisiert.', - linkedCategory: 'analytics', - }, - { - title: 'Weitere Informationen', - description: - 'Bei Fragen zu unserer Cookie-Richtlinie kontaktieren Sie uns bitte.', - }, - ], - }, - }, - es: { - consentModal: { - title: 'Este sitio utiliza cookies', - description: - 'Utilizamos cookies para mejorar su experiencia de navegación, analizar el tráfico del sitio y mejorar nuestros servicios. Al hacer clic en "Aceptar todo", acepta nuestro uso de cookies.', - acceptAllBtn: 'Aceptar todo', - acceptNecessaryBtn: 'Rechazar todo', - showPreferencesBtn: 'Administrar preferencias', - footer: - 'Privacidad y cookies', - }, - preferencesModal: { - title: 'Preferencias de cookies', - acceptAllBtn: 'Aceptar todo', - acceptNecessaryBtn: 'Rechazar todo', - savePreferencesBtn: 'Guardar preferencias', - closeIconLabel: 'Cerrar', - sections: [ - { - title: 'Uso de cookies', - description: - 'Utilizamos cookies para proporcionar funcionalidad esencial del sitio web y mejorar su experiencia.', - }, - { - title: 'Estrictamente necesarias Siempre habilitado', - description: - 'Necesarias para que el sitio web funcione correctamente. No se pueden desactivar.', - linkedCategory: 'necessary', - }, - { - title: 'Analíticas', - description: - 'Nos ayudan a entender cómo los visitantes interactúan con nuestro sitio web. Todos los datos son anónimos.', - linkedCategory: 'analytics', - }, - { - title: 'Más información', - description: - 'Para preguntas sobre nuestra política de cookies, por favor contáctenos.', - }, - ], - }, - }, - ja: { - consentModal: { - title: 'このサイトはクッキーを使用しています', - description: - 'ブラウジング体験を向上させ、サイトのトラフィックを分析し、サービスを改善するためにクッキーを使用しています。「すべて受け入れる」をクリックすると、クッキーの使用に同意したことになります。', - acceptAllBtn: 'すべて受け入れる', - acceptNecessaryBtn: 'すべて拒否', - showPreferencesBtn: '設定を管理', - footer: - 'プライバシーとクッキー', - }, - preferencesModal: { - title: 'クッキーの設定', - acceptAllBtn: 'すべて受け入れる', - acceptNecessaryBtn: 'すべて拒否', - savePreferencesBtn: '設定を保存', - closeIconLabel: '閉じる', - sections: [ - { - title: 'クッキーの使用', - description: - 'ウェブサイトの基本的な機能を提供し、ユーザー体験を向上させるためにクッキーを使用しています。', - }, - { - title: '必須 常に有効', - description: - 'ウェブサイトが正常に機能するために必要です。無効にすることはできません。', - linkedCategory: 'necessary', - }, - { - title: '分析', - description: - '訪問者がウェブサイトとどのようにやり取りしているかを理解するのに役立ちます。すべてのデータは匿名化されています。', - linkedCategory: 'analytics', - }, - { - title: '詳細情報', - description: - 'クッキーポリシーに関するご質問は、お問い合わせください。', - }, - ], - }, - }, - fr: { - consentModal: { - title: 'Ce site utilise des cookies', - description: - 'Nous utilisons des cookies pour améliorer votre expérience de navigation, analyser le trafic du site et améliorer nos services. En cliquant sur "Tout accepter", vous consentez à notre utilisation de cookies.', - acceptAllBtn: 'Tout accepter', - acceptNecessaryBtn: 'Tout rejeter', - showPreferencesBtn: 'Gérer les préférences', - footer: - 'Confidentialité et cookies', - }, - preferencesModal: { - title: 'Préférences des cookies', - acceptAllBtn: 'Tout accepter', - acceptNecessaryBtn: 'Tout rejeter', - savePreferencesBtn: 'Enregistrer les préférences', - closeIconLabel: 'Fermer', - sections: [ - { - title: 'Utilisation des cookies', - description: - 'Nous utilisons des cookies pour fournir des fonctionnalités essentielles du site web et améliorer votre expérience.', - }, - { - title: 'Strictement nécessaires Toujours activé', - description: - 'Nécessaires au bon fonctionnement du site web. Ils ne peuvent pas être désactivés.', - linkedCategory: 'necessary', - }, - { - title: 'Analytiques', - description: - 'Nous aident à comprendre comment les visiteurs interagissent avec notre site web. Toutes les données sont anonymisées.', - linkedCategory: 'analytics', - }, - { - title: "Plus d'informations", - description: - 'Pour toute question concernant notre politique en matière de cookies, veuillez nous contacter.', - }, - ], - }, - }, - it: { - consentModal: { - title: 'Questo sito utilizza i cookie', - description: - 'Utilizziamo i cookie per migliorare la tua esperienza di navigazione, analizzare il traffico del sito e migliorare i nostri servizi. Cliccando su "Accetta tutto", acconsenti al nostro utilizzo dei cookie.', - acceptAllBtn: 'Accetta tutto', - acceptNecessaryBtn: 'Rifiuta tutto', - showPreferencesBtn: 'Gestisci preferenze', - footer: 'Privacy e cookie', - }, - preferencesModal: { - title: 'Preferenze dei cookie', - acceptAllBtn: 'Accetta tutto', - acceptNecessaryBtn: 'Rifiuta tutto', - savePreferencesBtn: 'Salva preferenze', - closeIconLabel: 'Chiudi', - sections: [ - { - title: 'Utilizzo dei cookie', - description: - 'Utilizziamo i cookie per fornire funzionalità essenziali del sito web e migliorare la tua esperienza.', - }, - { - title: 'Strettamente necessari Sempre abilitato', - description: - 'Necessari per il corretto funzionamento del sito web. Non possono essere disabilitati.', - linkedCategory: 'necessary', - }, - { - title: 'Analitici', - description: - 'Ci aiutano a capire come i visitatori interagiscono con il nostro sito web. Tutti i dati sono anonimizzati.', - linkedCategory: 'analytics', - }, - { - title: 'Ulteriori informazioni', - description: - 'Per domande sulla nostra politica sui cookie, contattaci.', - }, - ], - }, - }, - id: { - consentModal: { - title: 'Situs ini menggunakan cookie', - description: - 'Kami menggunakan cookie untuk meningkatkan pengalaman browsing Anda, menganalisis lalu lintas situs, dan meningkatkan layanan kami. Dengan mengklik "Terima semua", Anda menyetujui penggunaan cookie kami.', - acceptAllBtn: 'Terima semua', - acceptNecessaryBtn: 'Tolak semua', - showPreferencesBtn: 'Kelola preferensi', - footer: 'Privasi & Cookie', - }, - preferencesModal: { - title: 'Preferensi cookie', - acceptAllBtn: 'Terima semua', - acceptNecessaryBtn: 'Tolak semua', - savePreferencesBtn: 'Simpan preferensi', - closeIconLabel: 'Tutup', - sections: [ - { - title: 'Penggunaan cookie', - description: - 'Kami menggunakan cookie untuk menyediakan fungsi penting situs web dan meningkatkan pengalaman Anda.', - }, - { - title: 'Sangat diperlukan Selalu Diaktifkan', - description: - 'Diperlukan agar situs web berfungsi dengan baik. Ini tidak dapat dinonaktifkan.', - linkedCategory: 'necessary', - }, - { - title: 'Analitik', - description: - 'Membantu kami memahami bagaimana pengunjung berinteraksi dengan situs web kami. Semua data dianonimkan.', - linkedCategory: 'analytics', - }, - { - title: 'Informasi lebih lanjut', - description: - 'Untuk pertanyaan tentang kebijakan cookie kami, silakan hubungi kami.', - }, - ], - }, - }, - 'zh-cn': { - consentModal: { - title: '本网站使用Cookie', - description: - '我们使用Cookie来改善您的浏览体验,分析网站流量并改进我们的服务。点击"全部接受"即表示您同意我们使用Cookie。', - acceptAllBtn: '全部接受', - acceptNecessaryBtn: '全部拒绝', - showPreferencesBtn: '管理偏好设置', - footer: '隐私和Cookie', - }, - preferencesModal: { - title: 'Cookie偏好设置', - acceptAllBtn: '全部接受', - acceptNecessaryBtn: '全部拒绝', - savePreferencesBtn: '保存偏好设置', - closeIconLabel: '关闭', - sections: [ - { - title: 'Cookie使用', - description: '我们使用Cookie来提供基本的网站功能并改善您的体验。', - }, - { - title: '严格必要 始终启用', - description: '网站正常运行所必需的。这些无法禁用。', - linkedCategory: 'necessary', - }, - { - title: '分析', - description: '帮助我们了解访问者如何与我们的网站互动。所有数据都已匿名化。', - linkedCategory: 'analytics', - }, - { - title: '更多信息', - description: - '有关我们Cookie政策的问题,请联系我们。', - }, - ], - }, - }, - 'pt-br': { - consentModal: { - title: 'Este site usa cookies', - description: - 'Usamos cookies para melhorar sua experiência de navegação, analisar o tráfego do site e melhorar nossos serviços. Ao clicar em "Aceitar tudo", você consente com nosso uso de cookies.', - acceptAllBtn: 'Aceitar tudo', - acceptNecessaryBtn: 'Rejeitar tudo', - showPreferencesBtn: 'Gerenciar preferências', - footer: - 'Privacidade e Cookies', - }, - preferencesModal: { - title: 'Preferências de cookies', - acceptAllBtn: 'Aceitar tudo', - acceptNecessaryBtn: 'Rejeitar tudo', - savePreferencesBtn: 'Salvar preferências', - closeIconLabel: 'Fechar', - sections: [ - { - title: 'Uso de cookies', - description: - 'Usamos cookies para fornecer funcionalidade essencial do site e melhorar sua experiência.', - }, - { - title: 'Estritamente necessários Sempre ativado', - description: - 'Necessários para que o site funcione corretamente. Estes não podem ser desativados.', - linkedCategory: 'necessary', - }, - { - title: 'Análise', - description: - 'Nos ajudam a entender como os visitantes interagem com nosso site. Todos os dados são anonimizados.', - linkedCategory: 'analytics', - }, - { - title: 'Mais informações', - description: - 'Para dúvidas sobre nossa política de cookies, por favor entre em contato.', - }, - ], - }, - }, - - ko: { - consentModal: { - title: '이 사이트는 쿠키를 사용합니다', - description: - '브라우징 경험을 향상시키고 사이트 트래픽을 분석하며 서비스를 개선하기 위해 쿠키를 사용합니다. "모두 수락"을 클릭하면 쿠키 사용에 동의하는 것입니다.', - acceptAllBtn: '모두 수락', - acceptNecessaryBtn: '모두 거부', - showPreferencesBtn: '기본 설정 관리', - footer: '개인정보 및 쿠키', - }, - preferencesModal: { - title: '쿠키 기본 설정', - acceptAllBtn: '모두 수락', - acceptNecessaryBtn: '모두 거부', - savePreferencesBtn: '기본 설정 저장', - closeIconLabel: '닫기', - sections: [ - { - title: '쿠키 사용', - description: - '필수 웹사이트 기능을 제공하고 사용자 경험을 개선하기 위해 쿠키를 사용합니다.', - }, - { - title: '필수 항상 활성화됨', - description: '웹사이트가 제대로 작동하는 데 필요합니다. 비활성화할 수 없습니다.', - linkedCategory: 'necessary', - }, - { - title: '분석', - description: - '방문자가 웹사이트와 상호 작용하는 방식을 이해하는 데 도움이 됩니다. 모든 데이터는 익명화됩니다.', - linkedCategory: 'analytics', - }, - { - title: '추가 정보', - description: - '쿠키 정책에 대한 질문은 문의하십시오.', - }, - ], - }, - }, - tr: { - consentModal: { - title: 'Bu site çerez kullanıyor', - description: - 'Gezinme deneyiminizi geliştirmek, site trafiğini analiz etmek ve hizmetlerimizi iyileştirmek için çerezler kullanıyoruz. "Tümünü kabul et"i tıklayarak çerez kullanımımızı onaylamış olursunuz.', - acceptAllBtn: 'Tümünü kabul et', - acceptNecessaryBtn: 'Tümünü reddet', - showPreferencesBtn: 'Tercihleri yönet', - footer: - 'Gizlilik ve Tanımlama Bilgileri', - }, - preferencesModal: { - title: 'Çerez tercihleri', - acceptAllBtn: 'Tümünü kabul et', - acceptNecessaryBtn: 'Tümünü reddet', - savePreferencesBtn: 'Tercihleri kaydet', - closeIconLabel: 'Kapat', - sections: [ - { - title: 'Çerez kullanımı', - description: - 'Temel web sitesi işlevselliği sağlamak ve deneyiminizi geliştirmek için çerezler kullanıyoruz.', - }, - { - title: 'Kesinlikle gerekli Her Zaman Etkin', - description: - 'Web sitesinin düzgün çalışması için gereklidir. Bunlar devre dışı bırakılamaz.', - linkedCategory: 'necessary', - }, - { - title: 'Analitik', - description: - 'Ziyaretçilerin web sitemizle nasıl etkileşime girdiğini anlamamıza yardımcı olur. Tüm veriler anonimleştirilir.', - linkedCategory: 'analytics', - }, - { - title: 'Daha fazla bilgi', - description: - 'Çerez politikamız hakkında sorularınız için lütfen bizimle iletişime geçin.', - }, - ], - }, - }, - ru: { - consentModal: { - title: 'Этот сайт использует файлы cookie', - description: - 'Мы используем файлы cookie для улучшения вашего опыта просмотра, анализа трафика сайта и улучшения наших услуг. Нажимая "Принять все", вы соглашаетесь на использование нами файлов cookie.', - acceptAllBtn: 'Принять все', - acceptNecessaryBtn: 'Отклонить все', - showPreferencesBtn: 'Управление настройками', - footer: - 'Конфиденциальность и файлы cookie', - }, - preferencesModal: { - title: 'Настройки файлов cookie', - acceptAllBtn: 'Принять все', - acceptNecessaryBtn: 'Отклонить все', - savePreferencesBtn: 'Сохранить настройки', - closeIconLabel: 'Закрыть', - sections: [ - { - title: 'Использование файлов cookie', - description: - 'Мы используем файлы cookie для обеспечения основных функций веб-сайта и улучшения вашего опыта.', - }, - { - title: 'Строго необходимые Всегда включено', - description: 'Необходимы для правильной работы веб-сайта. Их нельзя отключить.', - linkedCategory: 'necessary', - }, - { - title: 'Аналитика', - description: - 'Помогают нам понять, как посетители взаимодействуют с нашим веб-сайтом. Все данные анонимизированы.', - linkedCategory: 'analytics', - }, - { - title: 'Дополнительная информация', - description: - 'По вопросам о нашей политике в отношении файлов cookie, пожалуйста, свяжитесь с нами.', - }, - ], - }, - }, - hi: { - consentModal: { - title: 'यह साइट कुकीज़ का उपयोग करती है', - description: - 'हम आपके ब्राउज़िंग अनुभव को बेहतर बनाने, साइट ट्रैफ़िक का विश्लेषण करने और अपनी सेवाओं को बेहतर बनाने के लिए कुकीज़ का उपयोग करते हैं। "सभी स्वीकार करें" पर क्लिक करके, आप हमारे कुकीज़ के उपयोग के लिए सहमति देते हैं।', - acceptAllBtn: 'सभी स्वीकार करें', - acceptNecessaryBtn: 'सभी अस्वीकार करें', - showPreferencesBtn: 'प्राथमिकताएँ प्रबंधित करें', - footer: 'गोपनीयता और कुकीज़', - }, - preferencesModal: { - title: 'कुकी प्राथमिकताएँ', - acceptAllBtn: 'सभी स्वीकार करें', - acceptNecessaryBtn: 'सभी अस्वीकार करें', - savePreferencesBtn: 'प्राथमिकताएँ सहेजें', - closeIconLabel: 'बंद करें', - sections: [ - { - title: 'कुकी उपयोग', - description: - 'हम आवश्यक वेबसाइट कार्यक्षमता प्रदान करने और आपके अनुभव को बेहतर बनाने के लिए कुकीज़ का उपयोग करते हैं।', - }, - { - title: 'सख्ती से आवश्यक हमेशा सक्षम', - description: - 'वेबसाइट के ठीक से काम करने के लिए आवश्यक। इन्हें अक्षम नहीं किया जा सकता।', - linkedCategory: 'necessary', - }, - { - title: 'विश्लेषण', - description: - 'आगंतुकों के हमारी वेबसाइट के साथ कैसे इंटरैक्ट करते हैं, यह समझने में हमारी मदद करें। सभी डेटा गुमनाम है।', - linkedCategory: 'analytics', - }, - { - title: 'अधिक जानकारी', - description: - 'हमारी कुकी नीति के बारे में प्रश्नों के लिए, कृपया हमसे संपर्क करें।', - }, - ], - }, - }, - da: { - consentModal: { - title: 'Dette site bruger cookies', - description: - 'Vi bruger cookies til at forbedre din browseroplevelse, analysere webstedstrafik og forbedre vores tjenester. Ved at klikke på "Acceptér alle" giver du samtykke til vores brug af cookies.', - acceptAllBtn: 'Acceptér alle', - acceptNecessaryBtn: 'Afvis alle', - showPreferencesBtn: 'Administrer præferencer', - footer: - 'Beskyttelse af personlige oplysninger og cookies', - }, - preferencesModal: { - title: 'Cookie-præferencer', - acceptAllBtn: 'Acceptér alle', - acceptNecessaryBtn: 'Afvis alle', - savePreferencesBtn: 'Gem præferencer', - closeIconLabel: 'Luk', - sections: [ - { - title: 'Cookie-brug', - description: - 'Vi bruger cookies til at levere essentiel webstedsfunktionalitet og forbedre din oplevelse.', - }, - { - title: 'Strengt nødvendige Altid aktiveret', - description: 'Krævet for at webstedet fungerer korrekt. Disse kan ikke deaktiveres.', - linkedCategory: 'necessary', - }, - { - title: 'Analyse', - description: - 'Hjælper os med at forstå, hvordan besøgende interagerer med vores websted. Alle data er anonymiserede.', - linkedCategory: 'analytics', - }, - { - title: 'Mere information', - description: - 'For spørgsmål om vores cookie-politik, bedes du kontakte os.', - }, - ], - }, - }, - uk: { - consentModal: { - title: 'Цей сайт використовує файли cookie', - description: - 'Ми використовуємо файли cookie для покращення вашого досвіду перегляду, аналізу трафіку сайту та покращення наших послуг. Натискаючи "Прийняти все", ви погоджуєтесь на використання нами файлів cookie.', - acceptAllBtn: 'Прийняти все', - acceptNecessaryBtn: 'Відхилити все', - showPreferencesBtn: 'Керувати налаштуваннями', - footer: - 'Конфіденційність і файли cookie', - }, - preferencesModal: { - title: 'Налаштування файлів cookie', - acceptAllBtn: 'Прийняти все', - acceptNecessaryBtn: 'Відхилити все', - savePreferencesBtn: 'Зберегти налаштування', - closeIconLabel: 'Закрити', - sections: [ - { - title: 'Використання файлів cookie', - description: - 'Ми використовуємо файли cookie для забезпечення основних функцій веб-сайту та покращення вашого досвіду.', - }, - { - title: 'Суворо необхідні Завжди ввімкнено', - description: 'Необхідні для правильної роботи веб-сайту. Їх не можна вимкнути.', - linkedCategory: 'necessary', - }, - { - title: 'Аналітика', - description: - 'Допомагають нам зрозуміти, як відвідувачі взаємодіють з нашим веб-сайтом. Усі дані анонімізовані.', - linkedCategory: 'analytics', - }, - { - title: 'Додаткова інформація', - description: - 'З питань про нашу політику щодо файлів cookie, будь ласка, зв\'яжіться з нами.', - }, - ], - }, - }, - }, - }, -}; diff --git a/src/frontend/package.json b/src/frontend/package.json index cf49a837e..be704a0a2 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -70,7 +70,6 @@ "@fontsource-variable/outfit": "^5.3.0", "@fontsource-variable/rubik": "^5.3.0", "@fontsource/poppins": "^5.3.0", - "@jop-software/astro-cookieconsent": "^3.0.1", "@lunariajs/core": "^0.1.1", "@lunariajs/starlight": "^0.1.1", "asciinema-player": "^3.17.0", @@ -94,8 +93,7 @@ "starlight-page-actions": "^0.7.0", "starlight-plugin-icons": "^1.1.6", "starlight-scroll-to-top": "^1.0.1", - "starlight-sidebar-topics": "^0.8.0", - "vanilla-cookieconsent": "^3.1.0" + "starlight-sidebar-topics": "^0.8.0" }, "devDependencies": { "@axe-core/playwright": "^4.12.1", diff --git a/src/frontend/playwright.api-markdown.config.mjs b/src/frontend/playwright.api-markdown.config.mjs index ebedc7077..427a8006b 100644 --- a/src/frontend/playwright.api-markdown.config.mjs +++ b/src/frontend/playwright.api-markdown.config.mjs @@ -14,7 +14,6 @@ export default defineConfig({ env: { ...process.env, ASTRO_TELEMETRY_DISABLED: '1', - E2E_TESTS: '1', }, url: 'http://127.0.0.1:4322', reuseExistingServer: false, diff --git a/src/frontend/playwright.config.mjs b/src/frontend/playwright.config.mjs index b467dc967..f0d57d03f 100644 --- a/src/frontend/playwright.config.mjs +++ b/src/frontend/playwright.config.mjs @@ -74,7 +74,6 @@ export default defineConfig({ env: { ...process.env, ASTRO_TELEMETRY_DISABLED: '1', - E2E_TESTS: '1', }, url: e2eBaseUrl, reuseExistingServer: false, diff --git a/src/frontend/pnpm-lock.yaml b/src/frontend/pnpm-lock.yaml index 8cd23dd0d..07d9de895 100644 --- a/src/frontend/pnpm-lock.yaml +++ b/src/frontend/pnpm-lock.yaml @@ -72,9 +72,6 @@ importers: '@fontsource/poppins': specifier: ^5.3.0 version: 5.3.0 - '@jop-software/astro-cookieconsent': - specifier: ^3.0.1 - version: 3.0.1(vanilla-cookieconsent@3.1.0) '@lunariajs/core': specifier: ^0.1.1 version: 0.1.1 @@ -147,9 +144,6 @@ importers: starlight-sidebar-topics: specifier: ^0.8.0 version: 0.8.0(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(typescript@6.0.3)) - vanilla-cookieconsent: - specifier: ^3.1.0 - version: 3.1.0 devDependencies: '@axe-core/playwright': specifier: ^4.12.1 @@ -989,11 +983,6 @@ packages: resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==} engines: {node: '>=18'} - '@jop-software/astro-cookieconsent@3.0.1': - resolution: {integrity: sha512-UXo6aMR9/kEEmUIZoRTRJXDf/ADju9qQ0qNRWM1twdf0vRCh2s/ucHqaYOcs57Q2PcKmcq+Sc+0Tq0gSUgVDzA==} - peerDependencies: - vanilla-cookieconsent: ^3.0.0 - '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -4043,9 +4032,6 @@ packages: typescript: optional: true - vanilla-cookieconsent@3.1.0: - resolution: {integrity: sha512-/McNRtm/3IXzb9dhqMIcbquoU45SzbN2VB+To4jxEPqMmp7uVniP6BhGLjU8MC7ZCDsNQVOp27fhQTM/ruIXAA==} - vfile-location@5.0.3: resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} @@ -4933,10 +4919,6 @@ snapshots: '@isaacs/cliui@9.0.0': {} - '@jop-software/astro-cookieconsent@3.0.1(vanilla-cookieconsent@3.1.0)': - dependencies: - vanilla-cookieconsent: 3.1.0 - '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -8748,8 +8730,6 @@ snapshots: optionalDependencies: typescript: 6.0.3 - vanilla-cookieconsent@3.1.0: {} - vfile-location@5.0.3: dependencies: '@types/unist': 3.0.3 diff --git a/src/frontend/src/components/FooterSocials.astro b/src/frontend/src/components/FooterSocials.astro index f44417df5..81a47eab4 100644 --- a/src/frontend/src/components/FooterSocials.astro +++ b/src/frontend/src/components/FooterSocials.astro @@ -9,7 +9,7 @@ import CookiesSvg from '@assets/icons/cookies.svg'; + + + + + + + diff --git a/src/frontend/src/components/DashboardCarousel.astro b/src/frontend/src/components/DashboardCarousel.astro index f8d45fc77..9d7be700c 100644 --- a/src/frontend/src/components/DashboardCarousel.astro +++ b/src/frontend/src/components/DashboardCarousel.astro @@ -3,6 +3,9 @@ import { Icon } from '@astrojs/starlight/components'; import ThemeImage from '@components/ThemeImage.astro'; import type { ImageMetadata } from 'astro'; +import PauseIcon from '@assets/icons/pause.svg'; +import PlayIcon from '@assets/icons/play.svg'; + import resourcesGraphLight from '@assets/dashboard/landing/resources-graph-light.png'; import resourcesGraphDark from '@assets/dashboard/landing/resources-graph-dark.png'; import resourcesTableLight from '@assets/dashboard/landing/resources-table-light.png'; @@ -26,6 +29,13 @@ interface Slide { dark: ImageMetadata; } +interface Props { + autoplay?: boolean; + presentation?: 'coverflow' | 'stage'; +} + +const { autoplay = true, presentation = 'coverflow' } = Astro.props as Props; + const slides: Slide[] = [ { id: 'resources-graph', @@ -93,6 +103,8 @@ const carouselLabel = tt('landing.dashboardCarousel.label', 'Aspire dashboard vi const chooseViewLabel = tt('landing.dashboardCarousel.chooseView', 'Choose a dashboard view'); const previousLabel = tt('landing.dashboardCarousel.previous', 'Previous view'); const nextLabel = tt('landing.dashboardCarousel.next', 'Next view'); +const playLabel = tt('landing.dashboardCarousel.play', 'Play dashboard tour'); +const pauseLabel = tt('landing.dashboardCarousel.pause', 'Pause dashboard tour'); const formatSlideLabel = (index: number, count: number, label: string) => tt('landing.dashboardCarousel.slideLabel', '{{index}} of {{count}}: {{label}}', { index, @@ -107,6 +119,8 @@ const formatSlideLabel = (index: number, count: number, label: string) => role="group" aria-roledescription="carousel" aria-label={carouselLabel} + data-autoplay={autoplay ? 'true' : 'false'} + data-presentation={presentation} >
{ @@ -132,8 +146,24 @@ const formatSlideLabel = (index: number, count: number, label: string) => }
+ +