From 2368fcc0050ed06c88d71f5fef4528feb260e780 Mon Sep 17 00:00:00 2001 From: HelixCopex Date: Fri, 25 Sep 2026 01:45:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20Mermaid=20=E6=B8=B2?= =?UTF-8?q?=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + README.md | 20 +- astro.config.mjs | 44 +- package-lock.json | 2481 +++++++++++------ package.json | 27 +- public/downloads/rmic-2026-original-draft.md | 2 - public/simba/header.webp | Bin 188622 -> 0 bytes public/simba/logo-light.svg | 54 + scripts/check-build.mjs | 75 + scripts/generate-fonts.mjs | 299 ++ scripts/mermaid.test.mjs | 36 + src/components/Head.astro | 46 + src/content.config.ts | 5 +- src/content/docs/zh-cn/competition/index.mdx | 3 +- src/content/docs/zh-cn/competition/matches.md | 1 - .../docs/zh-cn/competition/preparation.mdx | 2 +- .../docs/zh-cn/competition/referee-system.md | 2 +- .../docs/zh-cn/guides/contributing.mdx | 19 +- src/content/i18n/en.json | 3 + src/content/i18n/zh-CN.json | 8 + src/pages/404.astro | 20 + src/plugins/rehype-mermaid.mjs | 119 + src/plugins/remark-mermaid.mjs | 8 +- src/scripts/mermaid.ts | 144 +- src/styles/custom.css | 62 +- 25 files changed, 2468 insertions(+), 1014 deletions(-) delete mode 100644 public/simba/header.webp create mode 100644 public/simba/logo-light.svg create mode 100644 scripts/check-build.mjs create mode 100644 scripts/generate-fonts.mjs create mode 100644 scripts/mermaid.test.mjs create mode 100644 src/content/i18n/en.json create mode 100644 src/content/i18n/zh-CN.json create mode 100644 src/pages/404.astro create mode 100644 src/plugins/rehype-mermaid.mjs diff --git a/.gitignore b/.gitignore index 6240da8..0b540e3 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ dist/ # generated types .astro/ +# generated font stacks and KaTeX @font-face rules (scripts/generate-fonts.mjs) +src/styles/fonts.generated.css # dependencies node_modules/ diff --git a/README.md b/README.md index ae5526c..19a4e3d 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ ```sh npm install +npm run setup:mermaid npm run dev -- --background npm run astro -- dev status npm run astro -- dev logs @@ -14,8 +15,16 @@ npm run astro -- dev stop 中文首页:`http://localhost:4321/zh-cn/`,英文首页:`/en/`。根路径跳转到中文首页。 +Mermaid 在构建时通过 Playwright Chromium 渲染,首次安装及 Playwright 升级后需执行 `npm run setup:mermaid`。Linux CI 使用 `npx playwright install --with-deps chromium`,并安装中文无衬线字体(如 Debian/Ubuntu 的 `fonts-noto-cjk`)。构建环境须安装开发依赖;发布时只需上传 `dist/`,无需 Chromium 或 Node.js 服务。 + `npm run build` 生成 `dist/`,`npm run preview` 验证生产版本和 Pagefind 搜索。正式部署时,在 `astro.config.mjs` 设置实际 `site` 域名,以生成 sitemap。 +构建会自动生成字体 CSS,并执行 `check:fonts` 和 `check:site`:检查字体引用、站内导航链接与锚点、页面直接引用的资源和公式错误,不检查外站可达性或 canonical/hreflang 等 SEO 元数据。`check:site` 中的站点域名应与 `astro.config.mjs` 保持一致。生成文件不提交;`scripts/` 中的脚本需要随项目一起提交。 + +`check:site` 同时检查 Mermaid 深浅两套静态 SVG 和页面 ID 冲突。修改图表处理逻辑后,运行 `npm run check:mermaid`,验证多图、重复时序图的箭头引用和语法错误定位。 + +当前仅精确过滤 Astro 7.3 生成的 `use astro:head-inject` 指令警告,其他构建警告保留。Mermaid 渲染器仅用于构建,不再进入浏览器端资源包。 + ## 编写与维护 文档支持 `.md` 与 `.mdx`:普通文章可以直接使用 Markdown;需要组件时使用 MDX,在 frontmatter 后导入 Starlight 或项目内的 Astro 组件。可按内容使用卡片、步骤、标签页等任意组件,使用其他前端框架的组件前需安装对应的 Astro 集成。提示信息也可直接使用 `:::note` / `:::tip` / `:::caution` / `:::danger` 语法。 @@ -34,17 +43,20 @@ npm run astro -- dev stop ## 公式与 Mermaid -- 行内公式使用 `$…$`,独立公式使用 `$$…$$`(分行包裹)。`remark-math` 和 `rehype-katex` 在构建时渲染,KaTeX 的样式和字体随站点打包。 +- 行内公式使用 `$…$`,独立公式使用 `$$…$$`(分行包裹)。`remark-math` 和 `rehype-katex` 在构建时渲染;字体脚本生成本地样式,字体文件按安装的 KaTeX 版本从 cdnjs 加载,不打包到站点。CDN 不可达时,本地回退字体不能保证复杂公式排版一致。 - 以上公式写法和 Mermaid 均支持 `.md` 与 `.mdx`,不需要逐页导入组件。 -- 图表使用标准的 Mermaid 围栏代码块。`src/plugins/remark-mermaid.mjs` 保留源码,`src/scripts/mermaid.ts` 在有图表的页面按需加载 Mermaid 并渲染 SVG,随深浅主题切换重新绘制。宽图默认适应宽度,点击“放大查看”后可滚动阅读,无 JavaScript 或图表错误时仍可阅读源码。 +- 图表使用标准的 Mermaid 围栏代码块。`src/plugins/remark-mermaid.mjs` 在代码高亮前识别图表,`src/plugins/rehype-mermaid.mjs` 调用 `rehype-mermaid` 的 `inline-svg` 策略,在构建时生成深浅两套 SVG 并嵌入 HTML。CSS 跟随 Starlight 的 `data-theme` 切换,打印使用浅色版,无需重新渲染;没有 JavaScript 也能看到图表。`src/scripts/mermaid.ts` 仅提供放大和滚动查看功能。图表语法错误会导致构建失败,并报告源文件位置。 +- 图表沿用插件依赖的 Mermaid 版本(当前为 11.x),不再单独安装浏览器端 Mermaid 12。渲染使用本地无衬线字体,构建与阅读设备的字体差异仍可能影响字形;复杂中文图表应在 CI 构建后检查。内联 SVG 保留文本与矢量清晰度,但深浅两份会增加对应页面的 HTML 体积。 +- 主题配置作为插件选项传入,修改配色会自动使 Astro 内容缓存失效。若修改渲染插件逻辑或升级渲染依赖后仍看到旧图,运行 `npm run astro -- sync --force` 后重新构建。 +- MDX 集成保留静态优化,但将 `style` 排除,避免 SVG 内部样式被输出为无效的 `set:html` 属性。该集成需排在 Starlight 之后,以保留代码高亮的处理顺序。 - 除数学公式外,正文、导航、代码块、表单和图表文字均为无衬线字体。KaTeX 保留数学字体。 -- `Head.astro` 仅增加图表渲染脚本,文档框架沿用 Starlight 默认实现。页眉 Logo 通过 Starlight 配置加载;搜索、导航、主题和语言切换保留原有行为。 +- `Head.astro` 增加图表放大脚本和可选的远程正文字体,文档框架沿用 Starlight 默认实现。页眉 Logo 通过 Starlight 配置随主题切换:浅色使用 `public/simba/logo-light.svg`(深灰主体),深色使用原版 `public/simba/logo.svg`(白色主体),两版保留红色标记;搜索、导航、主题和语言切换保留原有行为。 写法和预览见 `src/content/docs/zh-cn/guides/contributing.mdx`。 ## 校内赛规则 -手册按概览、赛前考核、开源审查、对抗赛、制作规范、裁判系统、待确认事项拆为七章。比赛流程使用原始附件的 Mermaid 源码,不另写 Astro 流程组件;数学表达使用原有美元符号公式语法。 +手册分为概览、赛前准备(含开源审查)、对抗赛、制作规范、裁判系统五章。比赛流程使用 Mermaid 源码;数学表达使用美元符号公式语法。 - [Simba 主站](https://simba-robotics.com) - [文档仓库](https://git.simba-robotics.com/PRAM/simba_docs) diff --git a/astro.config.mjs b/astro.config.mjs index ce40c6c..aec37ac 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,21 +1,42 @@ // @ts-check import { defineConfig } from 'astro/config'; import starlight from '@astrojs/starlight'; +import mdx from '@astrojs/mdx'; import { unified } from '@astrojs/markdown-remark'; import remarkMath from 'remark-math'; import rehypeKatex from 'rehype-katex'; import remarkMermaid from './src/plugins/remark-mermaid.mjs'; +import rehypeStaticMermaid, { mermaidThemes } from './src/plugins/rehype-mermaid.mjs'; export default defineConfig({ + site: 'https://docs.simba-robotics.com', redirects: { '/': '/zh-cn/' }, markdown: { processor: unified({ remarkPlugins: [remarkMath, remarkMermaid], - rehypePlugins: [rehypeKatex], + rehypePlugins: [rehypeKatex, [rehypeStaticMermaid, { themes: mermaidThemes }]], }), }, + vite: { + build: { + rolldownOptions: { + onwarn(warning, warn) { + // Astro 7.3 identifies propagated CSS by the virtual module's query. + // Rolldown does not understand Astro's generated directive; keep the + // module and its assets intact and ignore only this specific warning. + if ( + warning.code === 'MODULE_LEVEL_DIRECTIVE' && + warning.message.includes('"use astro:head-inject"') && + warning.message.includes('.mdx?astroPropagatedAssets') + ) return; + warn(warning); + }, + }, + }, + }, integrations: [starlight({ title: 'ΣDOCS', + disable404Route: true, description: 'Simba Robotics / 黑龙江大学 602 创新实验室的工程知识库与校内赛手册。', defaultLocale: 'zh-cn', locales: { @@ -23,8 +44,19 @@ export default defineConfig({ en: { label: 'English', lang: 'en' }, }, favicon: '/simba/logo.svg', - logo: { src: './public/simba/logo.svg', alt: 'Simba Robotics' }, - customCss: ['katex/dist/katex.min.css', './src/styles/custom.css'], + logo: { + light: './public/simba/logo-light.svg', + dark: './public/simba/logo.svg', + alt: 'Simba Robotics', + }, + /* + * `fonts.generated.css` carries the font stacks and the KaTeX faces. It is + * produced by `scripts/generate-fonts.mjs` at predev/prebuild, and it must + * stay last so its stack wins over Starlight's defaults. Note that KaTeX is + * no longer imported from node_modules: doing so would make the bundler copy + * the ~1 MB `KaTeX_*.woff2` set into `dist/_astro`. + */ + customCss: ['./src/styles/custom.css', './src/styles/fonts.generated.css'], components: { Head: './src/components/Head.astro' }, expressiveCode: { styleOverrides: { @@ -46,5 +78,9 @@ export default defineConfig({ { label: '视觉算法 · VSAG', translations: { en: 'Vision & Algorithms' }, items: [{ autogenerate: { directory: 'vsag' } }] }, { label: '宣传筹划 · PRAM', translations: { en: 'Operations & Media' }, items: [{ autogenerate: { directory: 'pram' } }] }, ], - })], + }), + // Keep SVG styles executable as style elements, instead of serializing + // Astro's set:html directive into inert attributes during MDX optimization. + mdx({ optimize: { ignoreElementNames: ['style'] } }), + ], }); diff --git a/package-lock.json b/package-lock.json index b8f6851..f7801db 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,40 +8,75 @@ "name": "simba-docs", "version": "0.0.1", "dependencies": { - "@astrojs/markdown-remark": "7.2.0", - "@astrojs/starlight": "^0.41.1", - "astro": "^7.0.2", + "@astrojs/markdown-remark": "^7.3.1", + "@astrojs/mdx": "^8.0.2", + "@astrojs/starlight": "^0.42.3", + "astro": "^7.3.5", "katex": "^0.16.47", - "mermaid": "^12.0.0", "rehype-katex": "^7.0.1", "remark-math": "^6.0.0", "sharp": "^0.34.5" + }, + "devDependencies": { + "playwright": "^1.63.0", + "rehype-mermaid": "^3.0.0" + } + }, + "node_modules/@antfu/install-pkg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-2.1.0.tgz", + "integrity": "sha512-sdg9NxU3zR4Mnawfbc/x6GB5Wf17WYud5qOuEuxXjaKpYpMkISSJEjItGebXJ2bQ4DIcly4NYH23mtkGJjvKUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "package-manager-detector": "^1.8.0", + "tinyexec": "^1.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, "node_modules/@astrojs/compiler-binding": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding/-/compiler-binding-0.2.3.tgz", - "integrity": "sha512-Xz3iBNse+hXXD25IXxsuXEt2ai8klAWE15CRm/EQBc9+aE3jXaF07DZx+iakk3HC6NHvWlEPzLPyxsLgPzOJsw==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding/-/compiler-binding-0.5.0.tgz", + "integrity": "sha512-PxFTx3WoxQnbgUvvwmF6LRQwhHO77a4pewOtJvzxlrYtQ90tLgomLKvks/akrd2iix2ngGlOhxQonKNd8YoBHg==", "license": "MIT", "engines": { "node": "^20.19.0 || >=22.12.0" }, "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", - "@astrojs/compiler-binding-win32-arm64-msvc": "0.2.3", - "@astrojs/compiler-binding-win32-x64-msvc": "0.2.3" + "@astrojs/compiler-binding-android-arm64": "0.5.0", + "@astrojs/compiler-binding-darwin-arm64": "0.5.0", + "@astrojs/compiler-binding-darwin-x64": "0.5.0", + "@astrojs/compiler-binding-linux-arm64-gnu": "0.5.0", + "@astrojs/compiler-binding-linux-arm64-musl": "0.5.0", + "@astrojs/compiler-binding-linux-x64-gnu": "0.5.0", + "@astrojs/compiler-binding-linux-x64-musl": "0.5.0", + "@astrojs/compiler-binding-wasm32-wasi": "0.5.0", + "@astrojs/compiler-binding-win32-arm64-msvc": "0.5.0", + "@astrojs/compiler-binding-win32-x64-msvc": "0.5.0" + } + }, + "node_modules/@astrojs/compiler-binding-android-arm64": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-android-arm64/-/compiler-binding-android-arm64-0.5.0.tgz", + "integrity": "sha512-wVviC/1KaBqGVF0DbTZ8UtAE3c8TN84CCe7w4ju3SGzo/ByWKn8HCqSU/+1wdltGCCSa30pjVk3H8DQUgnfhRQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@astrojs/compiler-binding-darwin-arm64": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-darwin-arm64/-/compiler-binding-darwin-arm64-0.2.3.tgz", - "integrity": "sha512-sJIHeL1ONXEBLob8ZaXfmX6iCftUno08G/cMXj2FJnL0xNbHuELcEq1mjxHVFHNgUYu4P7xJNm2mpc0zUEPoKw==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-darwin-arm64/-/compiler-binding-darwin-arm64-0.5.0.tgz", + "integrity": "sha512-5NNIkaGeiztD9QQfhOy+nNrBCZVeHqVZPlfJVjTKq4yJiiSsxAhuBzmVlmK3BDhbSgUT8dai4JV5m6t4/BIQaw==", "cpu": [ "arm64" ], @@ -55,9 +90,9 @@ } }, "node_modules/@astrojs/compiler-binding-darwin-x64": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-darwin-x64/-/compiler-binding-darwin-x64-0.2.3.tgz", - "integrity": "sha512-P0NYu6aaIeLCqFfszxxBHL0a5WRaYigNVbDoO654Gi5Q2au5duDb5xZBv5EqUg4qnQVC173FXNvGZu1M7nk+/w==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-darwin-x64/-/compiler-binding-darwin-x64-0.5.0.tgz", + "integrity": "sha512-HU/waaccOQDXpvjoWA/9xzadNZIcWKblJoaw19lCxfVs6AHQYdZZOzZUQjY8HaLYGerTXjdADbra2XU+kXk9Og==", "cpu": [ "x64" ], @@ -71,12 +106,15 @@ } }, "node_modules/@astrojs/compiler-binding-linux-arm64-gnu": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-arm64-gnu/-/compiler-binding-linux-arm64-gnu-0.2.3.tgz", - "integrity": "sha512-PqVN5AqhuDqfx3ejaerwrC8codpV9jnyKV+IOel027qsJ1anFUJLdjUlY8VVys0xgd8lmqveX11OkcaQj/otTg==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-arm64-gnu/-/compiler-binding-linux-arm64-gnu-0.5.0.tgz", + "integrity": "sha512-a21petBJRi0mNBf+gkRZFoWdGH+VOo0zRQSzM4Nuez5RL5rFFkmbondMejkaRZzvE3LVYU2NVD5MGRgAs4V+nQ==", "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -87,12 +125,15 @@ } }, "node_modules/@astrojs/compiler-binding-linux-arm64-musl": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-arm64-musl/-/compiler-binding-linux-arm64-musl-0.2.3.tgz", - "integrity": "sha512-O3e2CbN4yTsRguWYNnRd0p5YQ0H3fb7KpcR0W4R319q/gq5B1pJ7eqNbiO3b8g2AuiEcRTiUz5jeGT9j69cxOQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-arm64-musl/-/compiler-binding-linux-arm64-musl-0.5.0.tgz", + "integrity": "sha512-t5rmu23b/6e6v0bhPibCtwPdABXMRL+bUaJXdkJwTpkINp4zCgH6fNa5Z6+RgkgFSCpmg9uf1MtRIqx1gdmBaA==", "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -103,12 +144,15 @@ } }, "node_modules/@astrojs/compiler-binding-linux-x64-gnu": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-x64-gnu/-/compiler-binding-linux-x64-gnu-0.2.3.tgz", - "integrity": "sha512-hbLBjXVp+96psMe7/7uqyrquGiULXANrq6REVxxPK/I5VzebZ7LHmSfykmByUbLyR1u+K6CTBKgvdQsK2L+2Xw==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-x64-gnu/-/compiler-binding-linux-x64-gnu-0.5.0.tgz", + "integrity": "sha512-JWtouuxSiDb2OKKFsxOwfqlpJuZHo1ExirlBGfDgoJVG5zeJWwcd2tU2w4UaJA4suT/tAFSLk/vFhM5fLjWV4A==", "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -119,12 +163,15 @@ } }, "node_modules/@astrojs/compiler-binding-linux-x64-musl": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-x64-musl/-/compiler-binding-linux-x64-musl-0.2.3.tgz", - "integrity": "sha512-vIiEvOwrJfHZMaTmqUCrFTIwMYL0+PD3Rvy7kFDQgERyx3zhaw8CPa01MCCqa+/sj344BGrXKZ6ti37SgNLMhw==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-x64-musl/-/compiler-binding-linux-x64-musl-0.5.0.tgz", + "integrity": "sha512-LlaSO5v3UC6IxuTKXDViWV/fFHYhLKSO9Of118lNBXv/sjIWwziU+jjENxPgxfq/4oUeOu+613y6H93LBPNTOA==", "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -135,25 +182,27 @@ } }, "node_modules/@astrojs/compiler-binding-wasm32-wasi": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-wasm32-wasi/-/compiler-binding-wasm32-wasi-0.2.3.tgz", - "integrity": "sha512-p9S2X8z/mUR2SMzAVJRFMCt8YaalKR+pjl2DgpdjzCQc6ww4bo8kiy54tgKqxZeNF5c+/2tCDTQIxVSm9V1FsA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-wasm32-wasi/-/compiler-binding-wasm32-wasi-0.5.0.tgz", + "integrity": "sha512-IP+Cp0m9yKg/AUT47077vHEaAOh/oT/iUZx1PDnV2GJzUxLSEotdQy5Hhv+ycvEadO/DbETSJfAWeV7kte4etQ==", "cpu": [ "wasm32" ], "license": "MIT", "optional": true, "dependencies": { - "@napi-rs/wasm-runtime": "^1.1.6" + "@emnapi/core": "1.11.3", + "@emnapi/runtime": "1.11.3", + "@napi-rs/wasm-runtime": "^1.2.4" }, "engines": { - "node": ">=14.0.0" + "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@astrojs/compiler-binding-win32-arm64-msvc": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-win32-arm64-msvc/-/compiler-binding-win32-arm64-msvc-0.2.3.tgz", - "integrity": "sha512-vcCG6JttIb5vbSmcxO2O398hpVj7lQ349iS7cjgYP6ZuLVEnw+9qPAr2MM2kJkU5wEGZqJ2gyi/M7UJoPwH1iQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-win32-arm64-msvc/-/compiler-binding-win32-arm64-msvc-0.5.0.tgz", + "integrity": "sha512-v6plwy5GQBGvfv4QgiGhy/qkkQvYKW7Zh2vBArOnsGEDNHyUS43CWYwIQdw4ZdVVmLsFyhwTiueDZEP6zejddQ==", "cpu": [ "arm64" ], @@ -167,9 +216,9 @@ } }, "node_modules/@astrojs/compiler-binding-win32-x64-msvc": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-win32-x64-msvc/-/compiler-binding-win32-x64-msvc-0.2.3.tgz", - "integrity": "sha512-hKssjNvC36e00Inb1GW1JsVyCFSCGnIjKem4S8q0VIW6cpWAUpvYB4qQU2HIDGD6SDX0ork4F5sWkNWkp2hrGQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-win32-x64-msvc/-/compiler-binding-win32-x64-msvc-0.5.0.tgz", + "integrity": "sha512-SgM158cSCJ248UIXaCCW2WqSTjOoFlDv93ed/ATguJqYpZNNVMlOdcPlgNH7WYj/OYeD0rIQr7XyRAYhB7+G1A==", "cpu": [ "x64" ], @@ -183,105 +232,21 @@ } }, "node_modules/@astrojs/compiler-rs": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-rs/-/compiler-rs-0.2.3.tgz", - "integrity": "sha512-JRAtRcPxS4JeAZEIQFQ6GecBs/Wyp4m6/E8vBNxSgVfo1AtRVLUqRCl5oCGOZ0X/BSBB3Vef/7IlzyiGKi2ORA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-rs/-/compiler-rs-0.5.0.tgz", + "integrity": "sha512-2xIypn5R33FRWCXXXv0sfbDj8xcOvc2VmIbteytxMjOzP9LiGfvqaAFJjhdAjzhs6+ZKzYzbSE79rrPObYW5mg==", "license": "MIT", "dependencies": { - "@astrojs/compiler-binding": "0.2.3" - } - }, - "node_modules/@astrojs/internal-helpers": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.10.0.tgz", - "integrity": "sha512-Ry2R3VPeIN4uPCSA4xQc+e+vsJXkalKpEbDc07hV+a/o5Bs2N/s/uDcPJH/05L19DKh9tAy7e6JM3YZ6Cxfezw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.4", - "@types/mdast": "^4.0.4", - "js-yaml": "^4.1.1", - "picomatch": "^4.0.4", - "retext-smartypants": "^6.2.0", - "shiki": "^4.0.2", - "smol-toml": "^1.6.0", - "unified": "^11.0.5" - } - }, - "node_modules/@astrojs/markdown-remark": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-7.2.0.tgz", - "integrity": "sha512-+YxmVQu1Bd+MFfSzjq1rOJvD9+nIOJzz5YIIhdIH01RrxRkKbyKoEgyIqP3yv51MhzMDgd79QaPv+kCVPT8vHw==", - "license": "MIT", - "dependencies": { - "@astrojs/internal-helpers": "0.10.0", - "@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" - } - }, - "node_modules/@astrojs/markdown-satteri": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-satteri/-/markdown-satteri-0.3.2.tgz", - "integrity": "sha512-feXuUPy41gVfeM7EHT1ciUim8ozGr+YHXab9uUBc1Hk8y60DQosO8ldL+AoPXnCAoGj1OChwHfvXmmJ6XVnY9A==", - "license": "MIT", - "dependencies": { - "@astrojs/internal-helpers": "0.10.0", - "@astrojs/prism": "4.0.2", - "github-slugger": "^2.0.0", - "satteri": "^0.9.1" - } - }, - "node_modules/@astrojs/mdx": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-7.0.8.tgz", - "integrity": "sha512-RNuwq2ccTSi7NX9YqlR0noaWoVdOrZuJvdfWXotAzdhMVB0b0zEMLnNU+xar7le0GwTMlTObD/QAu8jeHA/3nA==", - "license": "MIT", - "dependencies": { - "@astrojs/internal-helpers": "0.10.4", - "@astrojs/markdown-remark": "7.2.4", - "@mdx-js/mdx": "^3.1.1", - "acorn": "^8.16.0", - "es-module-lexer": "^2.0.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" + "@astrojs/compiler-binding": "0.5.0" }, "engines": { "node": ">=22.12.0" - }, - "peerDependencies": { - "@astrojs/markdown-satteri": "^0.3.1", - "astro": "^7.0.0" - }, - "peerDependenciesMeta": { - "@astrojs/markdown-satteri": { - "optional": true - } } }, - "node_modules/@astrojs/mdx/node_modules/@astrojs/internal-helpers": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.10.4.tgz", - "integrity": "sha512-nozZSy/mKYLqe4YrqbKtdOszedAfXYCtw3wZ0d+CAjz4GqQ4L9rl1ltIL5BlgwmYVinJg/RZ0MgGuWOdlyRZlA==", + "node_modules/@astrojs/internal-helpers": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.11.0.tgz", + "integrity": "sha512-3rzxJ+xbo0+8YyqOzLziIN32wmsHdCjEVz2sGOpRxJ+Ben/KiLph4ItxBy1abEL+E8fkRzqjg0rfXmaHJGw9JA==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.4", @@ -294,16 +259,20 @@ "unified": "^11.0.5" } }, - "node_modules/@astrojs/mdx/node_modules/@astrojs/markdown-remark": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-7.2.4.tgz", - "integrity": "sha512-MvspGMynWKAjTe4/lTUdmBPHIFKNVLTCF6UlyWGogTGzNrTvjD+D4n48k7h8swxsEPKHK2TwxkZO7uoaCv1Pow==", + "node_modules/@astrojs/markdown-remark": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-7.3.1.tgz", + "integrity": "sha512-QCjsjZQl0+Cgb91+T3Ip9hyUe1r5aLm4udi584rML9YO3syupbAYE+jWpAxYg+z4lFLNUugPrylFxZ+8qFTClg==", "license": "MIT", "dependencies": { - "@astrojs/internal-helpers": "0.10.4", + "@astrojs/internal-helpers": "0.11.0", "@astrojs/prism": "4.0.2", + "@mdx-js/mdx": "^3.1.1", + "acorn": "^8.16.0", + "estree-util-visit": "^2.0.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", + "hast-util-to-html": "^9.0.5", "hast-util-to-text": "^4.0.2", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", @@ -312,6 +281,7 @@ "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", + "source-map": "^0.7.6", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.1.0", @@ -319,6 +289,42 @@ "vfile": "^6.0.3" } }, + "node_modules/@astrojs/markdown-satteri": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-satteri/-/markdown-satteri-0.4.2.tgz", + "integrity": "sha512-g4QehXnB/MzxQWnSf17NciFInMqEJy9948p8cc7zGg/r7995m0Ln5PMr3Xlnj24iey1LchaoZ3SzTOa3D4P/3w==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.11.0", + "@astrojs/prism": "4.0.2", + "github-slugger": "^2.0.0", + "satteri": "^0.10.3" + } + }, + "node_modules/@astrojs/mdx": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-8.0.2.tgz", + "integrity": "sha512-WedIVP2Bu8fXSzxb3ZYZ8xDrWWjf2SRKCneh52Llhoa+O3lcpHPhoZVP3FerlivUaH/0LJz2yVaCNvMdg0u8Bw==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.11.0", + "@astrojs/markdown-satteri": "0.4.2", + "es-module-lexer": "^2.0.0" + }, + "engines": { + "node": ">=22.12.0" + }, + "peerDependencies": { + "@astrojs/markdown-remark": "^7.3.0", + "@astrojs/markdown-satteri": "^0.4.0", + "astro": "^7.2.10" + }, + "peerDependenciesMeta": { + "@astrojs/markdown-remark": { + "optional": true + } + } + }, "node_modules/@astrojs/prism": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-4.0.2.tgz", @@ -343,44 +349,43 @@ } }, "node_modules/@astrojs/starlight": { - "version": "0.41.1", - "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.41.1.tgz", - "integrity": "sha512-avf2OmrVg6GdVU18juebjjIIuLa+uS3syHuJ/3yDaEFP/8it+YvcxRrYDSf7K6rC4v770UxIddba2hAqQyTeYA==", + "version": "0.42.3", + "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.42.3.tgz", + "integrity": "sha512-eX0KI2jeNWkI42pJNA2YpStfdNZ/NRBp6H9/Ui/zmu7qJ66yHV4qdgW8SfsCNt2QMUMgvm8auUNOsE4aD68RUQ==", "license": "MIT", "dependencies": { - "@astrojs/markdown-satteri": "^0.3.2", - "@astrojs/mdx": "^7.0.0", - "@astrojs/sitemap": "^3.7.2", + "@astrojs/markdown-satteri": "^0.4.0", + "@astrojs/mdx": "^8.0.0", + "@astrojs/sitemap": "^3.7.3", "@pagefind/default-ui": "^1.3.0", - "@types/hast": "^3.0.4", + "@types/hast": "^3.0.5", "@types/js-yaml": "^4.0.9", "@types/mdast": "^4.0.4", "astro-expressive-code": "^0.44.0", "bcp-47": "^2.1.0", - "hast-util-from-html": "^2.0.3", + "hast-util-format": "^1.1.0", "hast-util-select": "^6.0.4", + "hast-util-to-html": "^9.0.5", "hast-util-to-string": "^3.0.1", "hastscript": "^9.0.1", "i18next": "^26.0.7", "js-yaml": "^4.1.1", "klona": "^2.0.6", - "magic-string": "^0.30.21", + "magic-string": "^1.2.3", "mdast-util-directive": "^3.1.0", "mdast-util-to-markdown": "^2.1.2", "mdast-util-to-string": "^4.0.0", "pagefind": "^1.5.2", - "rehype": "^13.0.2", - "rehype-format": "^5.0.1", "remark-directive": "^4.0.0", - "satteri": "^0.9.1", + "satteri": "^0.10.3", "ultrahtml": "^1.6.0", "unified": "^11.0.5", "unist-util-visit": "^5.1.0", "vfile": "^6.0.3" }, "peerDependencies": { - "@astrojs/markdown-remark": "^7.2.0", - "astro": "^7.0.2" + "@astrojs/markdown-remark": "^7.3.0", + "astro": "^7.2.10" }, "peerDependenciesMeta": { "@astrojs/markdown-remark": { @@ -389,16 +394,15 @@ } }, "node_modules/@astrojs/telemetry": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.2.tgz", - "integrity": "sha512-j8DNruA8ors99Al39RYZPJK4DC1bKkoNm93mAMuBhY9TCNC4R8n1q7ovFnJ5qhGh5Lsh7pa1gpQVpYpsJPeTHQ==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.3.tgz", + "integrity": "sha512-C1TLn5sPJr0x4vk56piHWKbnqlEB8BKyte5Y45V02U+D7BGO5eMqZDH5aPjnkXQWJggvmsTXxH03QMZ9NgWLzQ==", "license": "MIT", "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.6.0" }, "engines": { "node": "18.20.8 || ^20.3.0 || >=22.0.0" @@ -423,12 +427,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", - "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "version": "7.29.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.9.tgz", + "integrity": "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==", "license": "MIT", "dependencies": { - "@babel/types": "^7.29.7" + "@babel/types": "^7.29.8" }, "bin": { "parser": "bin/babel-parser.js" @@ -438,9 +442,9 @@ } }, "node_modules/@babel/types": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", - "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.29.7", @@ -454,116 +458,169 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.2.tgz", "integrity": "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==", + "dev": true, "license": "MIT" }, "node_modules/@bruits/satteri-darwin-arm64": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-arm64/-/satteri-darwin-arm64-0.9.2.tgz", - "integrity": "sha512-tRpKRsiWxyh+Q5cjLwqj+baqI9htIcKqpDcftygA08bB/4nocZsneq+CVLmqT1/njG2Gq+ET12JHECz52ybiPQ==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-arm64/-/satteri-darwin-arm64-0.10.5.tgz", + "integrity": "sha512-27KTVl4TJkVahMy/ohyA7qd4938G5UNneFUz/PsScYfpIhj0IVAS23mpcJXdPF44sa6nva198lmV/cKIb2YPyA==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@bruits/satteri-darwin-x64": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-x64/-/satteri-darwin-x64-0.9.2.tgz", - "integrity": "sha512-oLSI0+Upq3Nd1brOdRSl044TMKgy7S6cF4sM7a9/Ms6/IADvuey+9yG3GBXxLGAzSYzR0/hh7PPSP1QBfsBKwA==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-x64/-/satteri-darwin-x64-0.10.5.tgz", + "integrity": "sha512-IjnLe3nKspq6qaeqGgjT7MT8VrTV74yWRlaag7ZdNsI8TDAYZ0iPxMCo+9KQZHUk5EyVB+reBI/PFWL5KuFw9Q==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@bruits/satteri-linux-arm64-gnu": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-gnu/-/satteri-linux-arm64-gnu-0.9.2.tgz", - "integrity": "sha512-G+G6uYscRc4VUTNgZgS6SSfTHh04q/d5WiH66Jg39eftMzTAsT5cLSEHDTvDpleUT6BMNHdunx927WbddDgw7A==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-gnu/-/satteri-linux-arm64-gnu-0.10.5.tgz", + "integrity": "sha512-glkYXZCJywjP13v67eAyAMSJdF+ncvEbYvgi/wOtffL9tQ27lr/zsyzUfgs+ovjJ9d8JNQKiXeiArJcX8PJL9w==", "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@bruits/satteri-linux-arm64-musl": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-musl/-/satteri-linux-arm64-musl-0.9.2.tgz", - "integrity": "sha512-wRaKSHCRXwzAZwlieCiv3u8pWEE2t9FmhZ0X59YZvHCGin56YUBOTyEQqSOrRfXs6fhUb8ylprisGYJC6J8mFQ==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-musl/-/satteri-linux-arm64-musl-0.10.5.tgz", + "integrity": "sha512-yWdgG1g17Nh2QyGVlFUxGRa3FEFwiMcpZEyMNWkbM3deC94cmVc+/i9OuyFpdKuWo3GkgoCtYVOoxk1uCnCZIA==", "cpu": [ "arm64" ], + "libc": [ + "musl" + ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@bruits/satteri-linux-x64-gnu": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-gnu/-/satteri-linux-x64-gnu-0.9.2.tgz", - "integrity": "sha512-hxEq3g/kS3tm3GKc2aRYnLMFI5IjxYzcd2sCwEH2C0V+m9TTAf+7Snt/+AZZklpxDOBrI+zthJHip9xnk9uM3g==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-gnu/-/satteri-linux-x64-gnu-0.10.5.tgz", + "integrity": "sha512-FVaLoPT1fBgGl0J+AYebyyXJYBachGl8Oyyrf1lye4RTqCB4S0Gwkj1uM9RJyThUOvx5VUmAT1CnNh1SFHA+kw==", "cpu": [ "x64" ], + "libc": [ + "glibc" + ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@bruits/satteri-linux-x64-musl": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-musl/-/satteri-linux-x64-musl-0.9.2.tgz", - "integrity": "sha512-ZSu+a07Efn8sOeA1k9ZM9CO9J3sAeG37Sf2YYxi/unFGgkFe+Y8MHDQlUNtngpC8pkYIjkojkLFT6v1yiHNxOg==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-musl/-/satteri-linux-x64-musl-0.10.5.tgz", + "integrity": "sha512-EHpVAx2bqW3GINHTKkljtxVfQmVDGWIuwOYOP5YghTj+0PkBa2o8oKPRtQ9Kbsr1Fye8jtUcDjhwj2jMNugZKg==", "cpu": [ "x64" ], + "libc": [ + "musl" + ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@bruits/satteri-wasm32-wasi": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@bruits/satteri-wasm32-wasi/-/satteri-wasm32-wasi-0.9.2.tgz", - "integrity": "sha512-Q/d7OIwXb5UGaiKUuPp2E6Bm41xD3sW8ts5L6l2m0Wi9uu9WKsv7CDc1ge6AVd6OC6g4nlSKWECFfPa7MkJchg==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-wasm32-wasi/-/satteri-wasm32-wasi-0.10.5.tgz", + "integrity": "sha512-ypz8c/Zmipxp4IoeDa228Gstv6TLzVmNs3yC6wKCoNSOjx1iwpgzu87Y3hTkXFdwChVGU85qeUDuOIarGUZQLw==", "cpu": [ "wasm32" ], + "license": "MIT", "optional": true, "dependencies": { "@emnapi/core": "1.11.1", "@emnapi/runtime": "1.11.1", - "@napi-rs/wasm-runtime": "^1.1.5" + "@napi-rs/wasm-runtime": "^1.2.3" }, "engines": { "node": ">=14.0.0" } }, + "node_modules/@bruits/satteri-wasm32-wasi/node_modules/@emnapi/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", + "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@bruits/satteri-wasm32-wasi/node_modules/@emnapi/runtime": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", + "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@bruits/satteri-wasm32-wasi/node_modules/@emnapi/wasi-threads": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", + "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@bruits/satteri-win32-arm64-msvc": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-arm64-msvc/-/satteri-win32-arm64-msvc-0.9.2.tgz", - "integrity": "sha512-QeaVjw+2IZeDRU7dU0KFlECTAwbL4fRUIXxZYQc4a16ejPzwizChEsKzoUBduyOJSDjyzvZxAmcdUYsSOUmR9A==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-arm64-msvc/-/satteri-win32-arm64-msvc-0.10.5.tgz", + "integrity": "sha512-siTV88nb0LRqNpkL2gXboqCwVdq95sLtzMHS1/3eONV2gLbB3NAK46wmSMvCO/yquBvI2lvaFIfd8P12ecsxBw==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@bruits/satteri-win32-x64-msvc": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-x64-msvc/-/satteri-win32-x64-msvc-0.9.2.tgz", - "integrity": "sha512-+hVrOLFtGgXakKO38F6afcc9/uuWvRGghPmiA6/ez5XGnWaM9VjQxqvogam5aOa7Nvl4V65P8Vpj5RsLzYeO8g==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-x64-msvc/-/satteri-win32-x64-msvc-0.10.5.tgz", + "integrity": "sha512-C3IfPvfvMXmlzBxaMPKFS1XiuV9pu2mC7YqkPk7PSvTgPZ8gbdASIpHpztDLvTTQjqZ0z1Ol8tK5X+V6XXC0wQ==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -581,49 +638,17 @@ "node": ">=18" } }, - "node_modules/@chevrotain/cst-dts-gen": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.1.2.tgz", - "integrity": "sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q==", - "license": "Apache-2.0", - "dependencies": { - "@chevrotain/gast": "11.1.2", - "@chevrotain/types": "11.1.2", - "lodash-es": "4.17.23" - } - }, - "node_modules/@chevrotain/gast": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.1.2.tgz", - "integrity": "sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g==", - "license": "Apache-2.0", - "dependencies": { - "@chevrotain/types": "11.1.2", - "lodash-es": "4.17.23" - } - }, - "node_modules/@chevrotain/regexp-to-ast": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.1.2.tgz", - "integrity": "sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw==", - "license": "Apache-2.0" - }, "node_modules/@chevrotain/types": { "version": "11.1.2", "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.2.tgz", "integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==", - "license": "Apache-2.0" - }, - "node_modules/@chevrotain/utils": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.1.2.tgz", - "integrity": "sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA==", + "dev": true, "license": "Apache-2.0" }, "node_modules/@clack/core": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@clack/core/-/core-1.4.2.tgz", - "integrity": "sha512-0Ty/1Gfm+Kb07sXcuESjyKfwEhSy4Ns1AgeEisHb/bDY5fWme0tTeTkU14T1Gmcs17YIjB/teiDe4uaCghbYqQ==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-1.5.1.tgz", + "integrity": "sha512-iHTrHA8MtVuLl2TfZySmcKv1qO2PoyC9Z7pfSDozEuV5vtY3/wcOPKJXlqJ5Oq2Cx5DDGQGAMVx6HZfRRoVEbQ==", "license": "MIT", "dependencies": { "fast-wrap-ansi": "^0.2.0", @@ -634,12 +659,12 @@ } }, "node_modules/@clack/prompts": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-1.6.0.tgz", - "integrity": "sha512-EYlRokl8szrP9Z25qT5aepMdBjzBvHF9ZEhzIiUBc9guz/T31EqRgvD0QSgZcpE93xiwrr+OkB4nz0BZyF6fSA==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-1.8.1.tgz", + "integrity": "sha512-dlT1m5e/0yUL0kRNcQn7yGLVThkgbB0Ga/1AmfDDC/8ik6AIiSf2QLQO2zPYvefsHP0aFgxO93cVLCCfDp7kzQ==", "license": "MIT", "dependencies": { - "@clack/core": "1.4.2", + "@clack/core": "1.5.1", "fast-string-width": "^3.0.2", "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" @@ -658,20 +683,20 @@ } }, "node_modules/@emnapi/core": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", - "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.3.tgz", + "integrity": "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==", "license": "MIT", "optional": true, "dependencies": { - "@emnapi/wasi-threads": "1.2.2", + "@emnapi/wasi-threads": "1.2.3", "tslib": "^2.4.0" } }, "node_modules/@emnapi/runtime": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", - "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", + "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", "license": "MIT", "optional": true, "dependencies": { @@ -679,9 +704,9 @@ } }, "node_modules/@emnapi/wasi-threads": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", - "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz", + "integrity": "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==", "license": "MIT", "optional": true, "dependencies": { @@ -689,9 +714,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", - "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz", + "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==", "cpu": [ "ppc64" ], @@ -705,9 +730,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", - "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz", + "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==", "cpu": [ "arm" ], @@ -721,9 +746,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", - "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz", + "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==", "cpu": [ "arm64" ], @@ -737,9 +762,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", - "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz", + "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==", "cpu": [ "x64" ], @@ -753,9 +778,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", - "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz", + "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==", "cpu": [ "arm64" ], @@ -769,9 +794,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", - "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz", + "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==", "cpu": [ "x64" ], @@ -785,9 +810,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", - "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz", + "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==", "cpu": [ "arm64" ], @@ -801,9 +826,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", - "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz", + "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==", "cpu": [ "x64" ], @@ -817,9 +842,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", - "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz", + "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==", "cpu": [ "arm" ], @@ -833,9 +858,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", - "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz", + "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==", "cpu": [ "arm64" ], @@ -849,9 +874,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", - "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz", + "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==", "cpu": [ "ia32" ], @@ -865,9 +890,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", - "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz", + "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==", "cpu": [ "loong64" ], @@ -881,9 +906,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", - "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz", + "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==", "cpu": [ "mips64el" ], @@ -897,9 +922,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", - "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz", + "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==", "cpu": [ "ppc64" ], @@ -913,9 +938,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", - "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz", + "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==", "cpu": [ "riscv64" ], @@ -929,9 +954,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", - "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz", + "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==", "cpu": [ "s390x" ], @@ -945,9 +970,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", - "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz", + "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==", "cpu": [ "x64" ], @@ -961,9 +986,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", - "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz", + "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==", "cpu": [ "arm64" ], @@ -977,9 +1002,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", - "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz", + "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==", "cpu": [ "x64" ], @@ -993,9 +1018,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", - "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz", + "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==", "cpu": [ "arm64" ], @@ -1009,9 +1034,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", - "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz", + "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==", "cpu": [ "x64" ], @@ -1025,9 +1050,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", - "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz", + "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==", "cpu": [ "arm64" ], @@ -1041,9 +1066,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", - "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz", + "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==", "cpu": [ "x64" ], @@ -1057,9 +1082,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", - "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz", + "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==", "cpu": [ "arm64" ], @@ -1073,9 +1098,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", - "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz", + "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==", "cpu": [ "ia32" ], @@ -1089,9 +1114,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", - "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz", + "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==", "cpu": [ "x64" ], @@ -1149,12 +1174,35 @@ "@expressive-code/core": "^0.44.2" } }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz", + "integrity": "sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==", + "dev": true, + "license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)", + "engines": { + "node": ">=6" + } + }, "node_modules/@iconify/types": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "dev": true, "license": "MIT" }, + "node_modules/@iconify/utils": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.7.tgz", + "integrity": "sha512-JZHlwdID+dy+lTgbYC8NEC4zeugqeYsc6jewvzb4c58kHauJn+X7rNwQjxz5p2qSjqaEeQoLkCIQ9v/H4PK0/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^2.0.1", + "@iconify/types": "^2.0.0", + "import-meta-resolve": "^4.2.0" + } + }, "node_modules/@img/colour": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", @@ -1208,6 +1256,41 @@ "@img/sharp-libvips-darwin-x64": "1.2.4" } }, + "node_modules/@img/sharp-freebsd-wasm32": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.4.tgz", + "integrity": "sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==", + "license": "Apache-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "dependencies": { + "@img/sharp-wasm32": "0.35.4" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-freebsd-wasm32/node_modules/@img/sharp-wasm32": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.4.tgz", + "integrity": "sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==", + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.11.3" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, "node_modules/@img/sharp-libvips-darwin-arm64": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", @@ -1563,6 +1646,41 @@ "url": "https://opencollective.com/libvips" } }, + "node_modules/@img/sharp-webcontainers-wasm32": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.4.tgz", + "integrity": "sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/sharp-wasm32": "0.35.4" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-webcontainers-wasm32/node_modules/@img/sharp-wasm32": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.4.tgz", + "integrity": "sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==", + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.11.3" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, "node_modules/@img/sharp-win32-arm64": { "version": "0.34.5", "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", @@ -1621,9 +1739,9 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", + "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==", "license": "MIT" }, "node_modules/@mdx-js/mdx": { @@ -1663,34 +1781,25 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/@mermaid-js/parser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-2.0.0.tgz", - "integrity": "sha512-K8BeapFUfrfxbRAUQAG5oBOCwo1+bNWzaVnPxTCutkfrTBn6T/j91FIhqxWJ32SUeQ9T3iy1zcmPZ5ROZEvDrg==", - "license": "MIT", - "dependencies": { - "@chevrotain/types": "~11.1.2" - }, - "engines": { - "node": ">=22.12.0" - } - }, "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", - "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.4.tgz", + "integrity": "sha512-AJxoUD2/15ESHbvpcyjU274nsAPLuOtPHCk0vKJM5pj//Fg/B1FXNWjPnXTT9PymCYYiHo4zPj0ZomXBKhoy7g==", "license": "MIT", "optional": true, "dependencies": { "@tybys/wasm-util": "^0.10.3" }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=23.5.0" + }, "funding": { "type": "github", "url": "https://github.com/sponsors/Brooooooklyn" }, "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" + "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", + "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" } }, "node_modules/@oslojs/encoding": { @@ -1700,12 +1809,12 @@ "license": "MIT" }, "node_modules/@oxc-project/types": { - "version": "0.137.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.137.0.tgz", - "integrity": "sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==", + "version": "0.151.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.151.0.tgz", + "integrity": "sha512-J1yXrIlNDZVzE3ada310xeAw7nH8yCAyLPuUIsjKatFPmfn5bS1oW+cM+QsGOtVWd5nhSpbwZWx/rue+r5Z+PA==", "license": "MIT", "funding": { - "url": "https://github.com/sponsors/Boshen" + "url": "https://github.com/sponsors/oxc-project" } }, "node_modules/@pagefind/darwin-arm64": { @@ -1805,10 +1914,26 @@ "win32" ] }, + "node_modules/@rolldown/binding-android-arm-eabi": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.10.tgz", + "integrity": "sha512-bp9svZb+QurZeh+8H4BhrZkifEB0YBNvTVzNSJnJQkj4NrRwmQoDUCGP0vSN7PbvLeM7l1tK6GXL8mrTiH2myg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.3.tgz", - "integrity": "sha512-DT6Z3PhvioeHMvxo+xHc3KtqggrI7CCTXCmC2h/5zUlp5jVitv7XEy+9q5/7v8IolhlioawpMo8Kg0EEBy7J0g==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.10.tgz", + "integrity": "sha512-wm6Dld3RXUAZ/gRWKyUy+4W1B5CB5UeFaOzsSWJWEdxZXHH8rCYiZ5dGe6oJmhsunAPWzL7FZV+VtvmN5Ye2eA==", "cpu": [ "arm64" ], @@ -1822,9 +1947,9 @@ } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.3.tgz", - "integrity": "sha512-0NwgwsjM7LrsuVnXMK3koTpagBNOhloc/BNjKqZjv4V5zI5r13qx69uVhRx+o5Z0yy4Hzq+lpy7TAgUG/ocvrw==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.10.tgz", + "integrity": "sha512-UbEfXq/AqGNgRTV3ik+X/iR6mUxu2QdYAadwRxJWquUGnW6gDqdP1FtLtFXRow7RJx0ssRwi80XAPr4r+4DtsA==", "cpu": [ "arm64" ], @@ -1838,9 +1963,9 @@ } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.3.tgz", - "integrity": "sha512-YtiBp4disu6V560loT6PjMdiRaWmVvDNrUunAalbiFx2ggeJwxdAsgZMcoGP17uyAsTwAj5V1niksxlHnVQ1Sw==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.10.tgz", + "integrity": "sha512-7f5h17q5KZVx/ji1vb8OTq31ch1O2I7K8NPIr44GkyWTApXMIsmhWqZfgpOH10xeauqghDAvGlZktasCkcF6Eg==", "cpu": [ "x64" ], @@ -1854,9 +1979,9 @@ } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.3.tgz", - "integrity": "sha512-yD3EkEdXk2LypPxnf/kSZHirarsI8gcPzc62SukhR9VJTyvV+F9Q/GxWNuCojc7sXyuVC4DxRGhdDK4X8VSsbw==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.10.tgz", + "integrity": "sha512-ynOk/eEYhC6ZB2xCGvKrEOwE58oBy9LnrAqtkrDF9Fz1VTaNdGZTsV0VarJdhPwb+sOJTGjCLwcuyRJZ1dnMcQ==", "cpu": [ "x64" ], @@ -1870,9 +1995,9 @@ } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.3.tgz", - "integrity": "sha512-c+8vieQbsD7HNAHKIA34w0GJ9FedFFuJGD+7E6vz7Q3uqAIugL5p45fhlsj4UaAsHpcmlqugBWMhA0/j7o0sIg==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.10.tgz", + "integrity": "sha512-ERrAs185meZZhGan7a4l3RiiJK1ArSDlHdST++uvSxe+FDbR4TwUPahT/cbZJvaG6fIpDpF78surN+tX708Y4Q==", "cpu": [ "arm" ], @@ -1886,12 +2011,15 @@ } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.3.tgz", - "integrity": "sha512-50jD0uUwLvur7Zz9LHz17kaAdTPjn5wN93hEgjvmYFRZwiR7ZJYovTd5ipyWJDAnXKvZ+wgc+/Ika6dwSF5OcA==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.10.tgz", + "integrity": "sha512-KN7OHKD0J3jy1UzBwZWPxpwhODf9IARUIJcrH+yLYKOcmegZ8luEUM38lDP1bDVj40yP6PsSzCqOJF76vljFnQ==", "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1902,12 +2030,15 @@ } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.3.tgz", - "integrity": "sha512-BO9+oPL8K9poZJBfYPsXNtYjPE5uM3qeehT3aFcW4LITOl+iSqhp0abzjR2nWBUNjIZeKXjAEWBZ64WjNoHd6w==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.10.tgz", + "integrity": "sha512-8l9wP8O+wa8zD6iw6egSfzVtu7oZVfH3hlUsMM4MwbLMhxleqeoXbZzjddyK3YyNlwLhqznq3tF7PkNJ8T/V2w==", "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -1918,12 +2049,15 @@ } }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.3.tgz", - "integrity": "sha512-f3VpLB1vQ0Eo6ecr/6cekLnvYMFF4YBFoVGkfkvPLq1bAkbAwHYQPZKoAmG6OJyTcxxoC+AvezGx/S1obNC0Mw==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.10.tgz", + "integrity": "sha512-SeXNKeQzA5kLhz/J0CH6ZP0/HJ3v1xm/0YbiYpE0kK7emfRC2OIGGIaE14xzkISEGv2aYuUSpiLiU5Gbq+OI0A==", "cpu": [ "ppc64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1934,12 +2068,15 @@ } }, "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.3.tgz", - "integrity": "sha512-AmurZ26Pqx/RI9N1gzEOCklkKXl927yjfXWUUS0O7Puh8ARM/Ob8qfrD3qnWksScdw6cSrW5PSHE9DyLu7+PtA==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.10.tgz", + "integrity": "sha512-mtht0nR+y8/hart4175Ll15w7lY8dg7CtQ+j2FDNTsDRspOWTK/2V3l0aj9sIj7XmvqxT8Yli/wq22e7feTTWg==", "cpu": [ "s390x" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1950,12 +2087,15 @@ } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.3.tgz", - "integrity": "sha512-JJpqs8bRGITDOdbkNKnlojzBabbOHrqjSvDr0IVsZObE1lBcPjxItUEY9eWIDbxaJ3cGrXPWGfGkIxFijg/URg==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.10.tgz", + "integrity": "sha512-FSM94nGd55NYo48usCyM/nHfUKRnqc9+b0vJNuKV0oCCpIp/OGims7rO1Nv/DkFkt0S/s2rxsJ2kkS8J3HcpeA==", "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1966,12 +2106,15 @@ } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.3.tgz", - "integrity": "sha512-rSJcdjPxzA/by/6/rYs+v+bXU7UjvnbUWz8MJb6kh6+knqB1dCrtHg0uu7C/4haqJvqdkYHQ5IGn+tCH9GLW/g==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.10.tgz", + "integrity": "sha512-C3YxNB16myRLs7o+B+6PnQ6jBsdIS4+AE4Ah8glVGhDpEv9AOvxhZ/1duAb4B0UGczEK/lBbccksd8VI+p6zfw==", "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -1982,9 +2125,9 @@ } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.3.tgz", - "integrity": "sha512-hQ3/PYkDJICgevvyNcVrihVeqq7k1Pp3VZ9lY+dauAYUJKO+auqApvANhvR1An9BhmqYKvW2Mu1F9u4DXSMLxQ==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.10.tgz", + "integrity": "sha512-571TlE/F1eeTjjdjYAMMMPs1Mfv3MtX6s3+ZKVU6HiUjZ5Njc6c/qzNy/8K3zALTZnaw3JQVYrHxvNfjm43KAg==", "cpu": [ "arm64" ], @@ -1997,28 +2140,10 @@ "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.3.tgz", - "integrity": "sha512-Elcv/BtML9lXrV6JuKITc/grN2kYV9gjsQpW8Jfw4ioK0TOkjBjye0nnyqQNy9STNaI20lXNaQBRrD5gSgR0Yg==", - "cpu": [ - "wasm32" - ], - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "1.11.1", - "@emnapi/runtime": "1.11.1", - "@napi-rs/wasm-runtime": "^1.1.6" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.3.tgz", - "integrity": "sha512-2DrEfhluH9yhiaFApmsjsjwrSYbNcY1oFTzYSP1a535jDbV98zCFanA/96TBUd0iDFcxGmw9QRExwGCXz3U+/g==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.10.tgz", + "integrity": "sha512-QXW+ZWaiqs2c7Fi++D/SsW07LTPcUrncxcskJGfGNBoaLik1IU6fJymz4HsqwEO0u5Iq11yTO0B/mc4cPk7jrQ==", "cpu": [ "arm64" ], @@ -2032,9 +2157,9 @@ } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.3.tgz", - "integrity": "sha512-OL4OMk7UPXOeVGGd3qo5zJyPIljf4AFgk5QAkPPS+OoLuOOozhuaQGC18MxVTnw/06q93gShAJzlwnSCY9YtqA==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.10.tgz", + "integrity": "sha512-5FQFGgah17YeMtG1Yd5a+rMxQpTksyNXxRtKz06FVTaQw3RKYUJQbUoKk0/5jrXBpDo+7makNP7UHA2LQyH64A==", "cpu": [ "x64" ], @@ -2053,44 +2178,16 @@ "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", "license": "MIT" }, - "node_modules/@rollup/pluginutils": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.4.0.tgz", - "integrity": "sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils/node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "license": "MIT" - }, "node_modules/@shikijs/core": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.3.0.tgz", - "integrity": "sha512-EooU3i9F6IAE8kEu+AnGf9DFZWkQBZ+hJn3tLVbsH+61mtQiva5biai66fAA6nvFPXkLgvrh7BrR7YcJU83xQQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.4.3.tgz", + "integrity": "sha512-QCR4q2ZO/ILJEuwiBMel4wdcTDb1JGwfjKTxPDF6x8ixOaluPrVqIn06C99AcRPhmYlBR56d/Fb+GN58GzExpg==", "license": "MIT", "dependencies": { - "@shikijs/primitive": "4.3.0", - "@shikijs/types": "4.3.0", + "@shikijs/primitive": "4.4.3", + "@shikijs/types": "4.4.3", "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4", + "@types/hast": "^3.0.5", "hast-util-to-html": "^9.0.5" }, "engines": { @@ -2098,12 +2195,12 @@ } }, "node_modules/@shikijs/engine-javascript": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.3.0.tgz", - "integrity": "sha512-hTv/KiFf2tpiqlACPiztGGurEARWIutB8YUhcrA1pUC7VzzwKO+g5crUocrLztrZ5ro5Z4hbXg7bYclETn3gSQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.4.3.tgz", + "integrity": "sha512-FbOjFJp9VLdo1Wevs10BBtVxiTWwNLqZh5Gkhjgda/ioL15YOgeSl9n+6XMa3qRlPQzfhFNe641SrynFHYG0nQ==", "license": "MIT", "dependencies": { - "@shikijs/types": "4.3.0", + "@shikijs/types": "4.4.3", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.6" }, @@ -2112,12 +2209,12 @@ } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.3.0.tgz", - "integrity": "sha512-1vMdN3gHfnKfLYwecUI2ITJI4RhHt96xEaJumVn7Heb0IlJ8WQMIH0Voak+2j22BpSNKdnOfB/pCTPnPm2gq7A==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.4.3.tgz", + "integrity": "sha512-EcOQkxdxGQrc1Row/cC2c96/v1dbZqGnEVu1qTuT/MJmp6+cXCvQussowVmCv5Tqr3KuY3c7IbM6HTW3LJ1k9w==", "license": "MIT", "dependencies": { - "@shikijs/types": "4.3.0", + "@shikijs/types": "4.4.3", "@shikijs/vscode-textmate": "^10.0.2" }, "engines": { @@ -2125,51 +2222,51 @@ } }, "node_modules/@shikijs/langs": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.3.0.tgz", - "integrity": "sha512-rnlqFbBRSys9bT4gl/5rw9RnS0W/I84ZldXPkO7cvlEMoV85TyF/aU01N7/NbSR776RNLjrJKjfFUXJR6wN1Cg==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.4.3.tgz", + "integrity": "sha512-ePic0yfAJGOF83D5wBHK/00EjK65oahBYxFk5epgq33WRv7X9UuxLEV8PtR0szC0z8dl7INIpIodB99JRFlR+A==", "license": "MIT", "dependencies": { - "@shikijs/types": "4.3.0" + "@shikijs/types": "4.4.3" }, "engines": { "node": ">=20" } }, "node_modules/@shikijs/primitive": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.3.0.tgz", - "integrity": "sha512-CPkz64PTa5diRW1ggzMZH9VM/du4RNChYgVtgqrFcgruvIybmCvySv8GkiHSczUHXYuuR8TdKEwFx+UnZMpgdg==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.4.3.tgz", + "integrity": "sha512-m0wBeLDQDeIxRdUmrCPdQqfuUamDwRL5isCfYbguKD6NiaKpVbsv+3J81DyIKgNW5h4WAIIr8T4EkgQrBBxvaQ==", "license": "MIT", "dependencies": { - "@shikijs/types": "4.3.0", + "@shikijs/types": "4.4.3", "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" + "@types/hast": "^3.0.5" }, "engines": { "node": ">=20" } }, "node_modules/@shikijs/themes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.3.0.tgz", - "integrity": "sha512-Avgt05YiT+Y3prjIc9lmQxhJzHBcCfR6cjiFW4OyaMBbt2A6trX5rfjUzx+Vj/mE9qpArYjatnqo9XPjQNW/AQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.4.3.tgz", + "integrity": "sha512-w8UHjeUnIR965KMWJHUPXOc2mNJUnK3vpVLYLvw5IYU2mnTTJ89E24OrJDBNiJDQ0qzb0tc4l7mrIXx5cFeIyw==", "license": "MIT", "dependencies": { - "@shikijs/types": "4.3.0" + "@shikijs/types": "4.4.3" }, "engines": { "node": ">=20" } }, "node_modules/@shikijs/types": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.3.0.tgz", - "integrity": "sha512-oc8b9U2SYvofKZk8e/737nIX0qwf6eV2vHFATeObAu7r+mUVpLs8Re0BmVkIjAWAYgkmG/CzLNo7rzuBzRu/wQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.4.3.tgz", + "integrity": "sha512-UEJxmRR++MAGR6hugn0vgVS2W/6lWAts84FFSrnlH9sP0LNol7E5+NQ792pH8liWUhyMyjhTgSUH3k7iD7tc5g==", "license": "MIT", "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" + "@types/hast": "^3.0.5" }, "engines": { "node": ">=20" @@ -2182,9 +2279,9 @@ "license": "MIT" }, "node_modules/@tybys/wasm-util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", - "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.4.tgz", + "integrity": "sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==", "license": "MIT", "optional": true, "dependencies": { @@ -2195,6 +2292,7 @@ "version": "7.4.3", "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "dev": true, "license": "MIT", "dependencies": { "@types/d3-array": "*", @@ -2233,12 +2331,14 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-axis": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "dev": true, "license": "MIT", "dependencies": { "@types/d3-selection": "*" @@ -2248,6 +2348,7 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "dev": true, "license": "MIT", "dependencies": { "@types/d3-selection": "*" @@ -2257,18 +2358,21 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-color": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-contour": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "dev": true, "license": "MIT", "dependencies": { "@types/d3-array": "*", @@ -2279,18 +2383,21 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-dispatch": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-drag": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/d3-selection": "*" @@ -2300,18 +2407,21 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-ease": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-fetch": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "dev": true, "license": "MIT", "dependencies": { "@types/d3-dsv": "*" @@ -2321,18 +2431,21 @@ "version": "3.0.10", "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-format": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-geo": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/geojson": "*" @@ -2342,12 +2455,14 @@ "version": "3.1.7", "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-interpolate": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dev": true, "license": "MIT", "dependencies": { "@types/d3-color": "*" @@ -2357,30 +2472,35 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-polygon": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-quadtree": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-random": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-scale": { "version": "4.0.9", "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "dev": true, "license": "MIT", "dependencies": { "@types/d3-time": "*" @@ -2390,18 +2510,21 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-selection": { "version": "3.0.11", "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-shape": { "version": "3.1.8", "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", + "dev": true, "license": "MIT", "dependencies": { "@types/d3-path": "*" @@ -2411,24 +2534,28 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-time-format": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-timer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-transition": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "dev": true, "license": "MIT", "dependencies": { "@types/d3-selection": "*" @@ -2438,6 +2565,7 @@ "version": "3.0.8", "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "dev": true, "license": "MIT", "dependencies": { "@types/d3-interpolate": "*", @@ -2472,12 +2600,13 @@ "version": "7946.0.16", "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "dev": true, "license": "MIT" }, "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz", + "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==", "license": "MIT", "dependencies": { "@types/unist": "*" @@ -2547,6 +2676,7 @@ "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "dev": true, "license": "MIT", "optional": true }, @@ -2566,6 +2696,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@upsetjs/venn.js/-/venn.js-2.0.0.tgz", "integrity": "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==", + "dev": true, "license": "MIT", "optionalDependencies": { "d3-selection": "^3.0.0", @@ -2671,67 +2802,64 @@ } }, "node_modules/astro": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/astro/-/astro-7.0.2.tgz", - "integrity": "sha512-Rj31HS85pVSfiQTxKTwH6vTmF8y57iRfkgb1uiCTtdLIh3jlUKPAPXtEmHXRKp/PdTS00D4EXYlWXypY+AVVCA==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/astro/-/astro-7.3.5.tgz", + "integrity": "sha512-1p/ernaq/RuESbM5NMjWzbO6SiebMGrGcYlGjMfBhzzgM+n/X7AUmVyw8BqW2QYCdivpsHwJBcD1fqmlTZjZHg==", "license": "MIT", "dependencies": { - "@astrojs/compiler-rs": "^0.2.2", - "@astrojs/internal-helpers": "0.10.0", - "@astrojs/markdown-satteri": "0.3.2", - "@astrojs/telemetry": "3.3.2", + "@astrojs/compiler-rs": "^0.5.0", + "@astrojs/internal-helpers": "0.11.0", + "@astrojs/markdown-satteri": "0.4.2", + "@astrojs/telemetry": "3.3.3", "@capsizecss/unpack": "^4.0.0", "@clack/prompts": "^1.1.0", "@oslojs/encoding": "^1.1.0", - "@rollup/pluginutils": "^5.3.0", "am-i-vibing": "^0.4.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "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.3", + "diff": "^9.0.0", "dset": "^3.1.4", "es-module-lexer": "^2.0.0", "esbuild": "^0.28.0", + "find-proc": "0.2.0", "flattie": "^1.1.1", "fontace": "~0.4.1", "get-tsconfig": "5.0.0-beta.4", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.2.0", - "js-yaml": "^4.1.1", + "js-yaml": "^4.3.2", "jsonc-parser": "^3.3.1", - "magic-string": "^0.30.21", + "magic-string": "^1.0.0", "magicast": "^0.5.2", "mrmime": "^2.0.1", - "neotraverse": "^0.6.18", - "obug": "^2.1.1", + "neotraverse": "^1.0.1", + "obug": "^3.0.0", "p-limit": "^7.3.0", "p-queue": "^9.1.0", "package-manager-detector": "^1.6.0", "piccolore": "^0.1.3", "picomatch": "^4.0.4", - "rehype": "^13.0.2", - "semver": "^7.7.4", "shiki": "^4.0.2", - "smol-toml": "^1.6.0", - "svgo": "^4.0.1", - "tinyclip": "^0.1.12", + "smol-toml": "^1.8.0", + "svgo": "^4.1.0", + "tinyclip": "^1.0.1", "tinyexec": "^1.0.4", "tinyglobby": "^0.2.15", "ultrahtml": "^1.6.0", - "unifont": "~0.7.4", - "unist-util-visit": "^5.1.0", + "unifont": "~0.7.5", "unstorage": "^1.17.5", - "vfile": "^6.0.3", + "verkit": "^0.4.0", "vite": "^8.0.13", "vitefu": "^1.1.2", "xxhash-wasm": "^1.1.0", "yargs-parser": "^22.0.0", - "zod": "^4.3.6" + "zod": "^4.5.4" }, "bin": { "astro": "bin/astro.mjs" @@ -2746,10 +2874,10 @@ "url": "https://opencollective.com/astrodotbuild" }, "optionalDependencies": { - "sharp": "^0.34.0" + "sharp": "^0.35.4" }, "peerDependencies": { - "@astrojs/markdown-remark": "7.2.0" + "@astrojs/markdown-remark": "^7.3.0" }, "peerDependenciesMeta": { "@astrojs/markdown-remark": { @@ -2770,6 +2898,541 @@ "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta || ^7.0.0" } }, + "node_modules/astro/node_modules/@img/sharp-darwin-arm64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.4.tgz", + "integrity": "sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.3.3" + } + }, + "node_modules/astro/node_modules/@img/sharp-darwin-x64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.4.tgz", + "integrity": "sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.3.3" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.3.tgz", + "integrity": "sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.3.tgz", + "integrity": "sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.3.tgz", + "integrity": "sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.3.tgz", + "integrity": "sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.3.tgz", + "integrity": "sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.3.tgz", + "integrity": "sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.3.tgz", + "integrity": "sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.3.tgz", + "integrity": "sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.3.tgz", + "integrity": "sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.3.tgz", + "integrity": "sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-linux-arm": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.4.tgz", + "integrity": "sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.3.3" + } + }, + "node_modules/astro/node_modules/@img/sharp-linux-arm64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.4.tgz", + "integrity": "sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.3.3" + } + }, + "node_modules/astro/node_modules/@img/sharp-linux-ppc64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.4.tgz", + "integrity": "sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.3.3" + } + }, + "node_modules/astro/node_modules/@img/sharp-linux-riscv64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.4.tgz", + "integrity": "sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.3.3" + } + }, + "node_modules/astro/node_modules/@img/sharp-linux-s390x": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.4.tgz", + "integrity": "sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.3.3" + } + }, + "node_modules/astro/node_modules/@img/sharp-linux-x64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.4.tgz", + "integrity": "sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.3.3" + } + }, + "node_modules/astro/node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.4.tgz", + "integrity": "sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.3.3" + } + }, + "node_modules/astro/node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.4.tgz", + "integrity": "sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.3.3" + } + }, + "node_modules/astro/node_modules/@img/sharp-win32-arm64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.4.tgz", + "integrity": "sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-win32-ia32": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.4.tgz", + "integrity": "sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-win32-x64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.4.tgz", + "integrity": "sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/sharp": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.4.tgz", + "integrity": "sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/colour": "^1.1.0", + "detect-libc": "^2.1.2", + "semver": "^7.8.5" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.35.4", + "@img/sharp-darwin-x64": "0.35.4", + "@img/sharp-freebsd-wasm32": "0.35.4", + "@img/sharp-libvips-darwin-arm64": "1.3.3", + "@img/sharp-libvips-darwin-x64": "1.3.3", + "@img/sharp-libvips-linux-arm": "1.3.3", + "@img/sharp-libvips-linux-arm64": "1.3.3", + "@img/sharp-libvips-linux-ppc64": "1.3.3", + "@img/sharp-libvips-linux-riscv64": "1.3.3", + "@img/sharp-libvips-linux-s390x": "1.3.3", + "@img/sharp-libvips-linux-x64": "1.3.3", + "@img/sharp-libvips-linuxmusl-arm64": "1.3.3", + "@img/sharp-libvips-linuxmusl-x64": "1.3.3", + "@img/sharp-linux-arm": "0.35.4", + "@img/sharp-linux-arm64": "0.35.4", + "@img/sharp-linux-ppc64": "0.35.4", + "@img/sharp-linux-riscv64": "0.35.4", + "@img/sharp-linux-s390x": "0.35.4", + "@img/sharp-linux-x64": "0.35.4", + "@img/sharp-linuxmusl-arm64": "0.35.4", + "@img/sharp-linuxmusl-x64": "0.35.4", + "@img/sharp-webcontainers-wasm32": "0.35.4", + "@img/sharp-win32-arm64": "0.35.4", + "@img/sharp-win32-ia32": "0.35.4", + "@img/sharp-win32-x64": "0.35.4" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "node_modules/axobject-query": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", @@ -2870,20 +3533,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/chevrotain": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.1.2.tgz", - "integrity": "sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg==", - "license": "Apache-2.0", - "dependencies": { - "@chevrotain/cst-dts-gen": "11.1.2", - "@chevrotain/gast": "11.1.2", - "@chevrotain/regexp-to-ast": "11.1.2", - "@chevrotain/types": "11.1.2", - "@chevrotain/utils": "11.1.2", - "lodash-es": "4.17.23" - } - }, "node_modules/chokidar": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", @@ -2962,12 +3611,12 @@ } }, "node_modules/cookie": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", - "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-2.0.1.tgz", + "integrity": "sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w==", "license": "MIT", "engines": { - "node": ">=18" + "node": ">=22" }, "funding": { "type": "opencollective", @@ -2984,6 +3633,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "dev": true, "license": "MIT", "dependencies": { "layout-base": "^1.0.0" @@ -2999,16 +3649,16 @@ } }, "node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-6.0.0.tgz", + "integrity": "sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==", "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" + "css-what": "^7.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "nth-check": "^2.1.1" }, "funding": { "url": "https://github.com/sponsors/fb55" @@ -3044,9 +3694,9 @@ } }, "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-7.0.0.tgz", + "integrity": "sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==", "license": "BSD-2-Clause", "engines": { "node": ">= 6" @@ -3104,6 +3754,7 @@ "version": "3.34.3", "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.34.3.tgz", "integrity": "sha512-yfYGhRcGAntq6YBD583j4n0Eg3jIxvWmZtz/5uz9UYkeIStSlMxuUja+ec5j3iBD8nv1rwaOAYMW09tBdkSeaQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10" @@ -3113,6 +3764,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "dev": true, "license": "MIT", "dependencies": { "cose-base": "^1.0.0" @@ -3125,6 +3777,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "dev": true, "license": "MIT", "dependencies": { "cose-base": "^2.2.0" @@ -3137,6 +3790,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "dev": true, "license": "MIT", "dependencies": { "layout-base": "^2.0.0" @@ -3146,12 +3800,14 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", + "dev": true, "license": "MIT" }, "node_modules/d3": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "dev": true, "license": "ISC", "dependencies": { "d3-array": "3", @@ -3193,6 +3849,7 @@ "version": "3.2.4", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dev": true, "license": "ISC", "dependencies": { "internmap": "1 - 2" @@ -3205,6 +3862,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -3214,6 +3872,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dev": true, "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", @@ -3230,6 +3889,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dev": true, "license": "ISC", "dependencies": { "d3-path": "1 - 3" @@ -3242,6 +3902,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -3251,6 +3912,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dev": true, "license": "ISC", "dependencies": { "d3-array": "^3.2.0" @@ -3263,6 +3925,7 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dev": true, "license": "ISC", "dependencies": { "delaunator": "5" @@ -3275,6 +3938,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -3284,6 +3948,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dev": true, "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", @@ -3297,6 +3962,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dev": true, "license": "ISC", "dependencies": { "commander": "7", @@ -3322,6 +3988,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 10" @@ -3331,6 +3998,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=12" @@ -3340,6 +4008,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dev": true, "license": "ISC", "dependencies": { "d3-dsv": "1 - 3" @@ -3352,6 +4021,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dev": true, "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", @@ -3366,6 +4036,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -3375,6 +4046,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "dev": true, "license": "ISC", "dependencies": { "d3-array": "2.5.0 - 3" @@ -3387,6 +4059,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -3396,6 +4069,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dev": true, "license": "ISC", "dependencies": { "d3-color": "1 - 3" @@ -3408,6 +4082,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -3417,6 +4092,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -3426,6 +4102,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -3435,6 +4112,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -3444,6 +4122,7 @@ "version": "0.12.3", "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "d3-array": "1 - 2", @@ -3454,6 +4133,7 @@ "version": "2.12.1", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "internmap": "^1.0.0" @@ -3463,12 +4143,14 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "dev": true, "license": "BSD-3-Clause" }, "node_modules/d3-sankey/node_modules/d3-shape": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "d3-path": "1" @@ -3478,12 +4160,14 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "dev": true, "license": "ISC" }, "node_modules/d3-scale": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dev": true, "license": "ISC", "dependencies": { "d3-array": "2.10.0 - 3", @@ -3500,6 +4184,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "dev": true, "license": "ISC", "dependencies": { "d3-color": "1 - 3", @@ -3513,6 +4198,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -3522,6 +4208,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dev": true, "license": "ISC", "dependencies": { "d3-path": "^3.1.0" @@ -3534,6 +4221,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dev": true, "license": "ISC", "dependencies": { "d3-array": "2 - 3" @@ -3546,6 +4234,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dev": true, "license": "ISC", "dependencies": { "d3-time": "1 - 3" @@ -3558,6 +4247,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -3567,6 +4257,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dev": true, "license": "ISC", "dependencies": { "d3-color": "1 - 3", @@ -3586,6 +4277,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dev": true, "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", @@ -3602,6 +4294,7 @@ "version": "7.0.14", "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.14.tgz", "integrity": "sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==", + "dev": true, "license": "MIT", "dependencies": { "d3": "^7.9.0", @@ -3612,6 +4305,7 @@ "version": "1.11.23", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.23.tgz", "integrity": "sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==", + "dev": true, "license": "MIT" }, "node_modules/debug": { @@ -3654,6 +4348,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.1.0.tgz", "integrity": "sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==", + "dev": true, "license": "ISC", "dependencies": { "robust-predicates": "^3.0.2" @@ -3684,9 +4379,9 @@ } }, "node_modules/devalue": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.8.1.tgz", - "integrity": "sha512-4CXDYRBGqN+57wVJkuXBYmpAVUSg3L6JAQa/DFqm238G73E1wuyc/JhGQJzN7vUf/CMphYau2zXbfWzDR5aTEw==", + "version": "5.9.4", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.9.4.tgz", + "integrity": "sha512-sPAT4pztbu6586/hrhOnMKS17IJrvg12mXiSPSS3W5qDeN2RGgvZ0diZCm31dBbnevfVmujNO3IM2wrS4Y2Rhg==", "license": "MIT" }, "node_modules/devlop": { @@ -3703,9 +4398,9 @@ } }, "node_modules/diff": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", - "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz", + "integrity": "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==", "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" @@ -3781,6 +4476,7 @@ "version": "3.4.15", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.15.tgz", "integrity": "sha512-EUBjM+B+lkDE41iE82DDSCfkoPGfXx8IxFxPMjNzm/Uk4xDet77rTN9wqlxlVg71kK7XGuUMv6wUxJUwwv+Xyw==", + "dev": true, "license": "(MPL-2.0 OR Apache-2.0)", "optionalDependencies": { "@types/trusted-types": "^2.0.7" @@ -3809,12 +4505,6 @@ "node": ">=4" } }, - "node_modules/elkjs": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.3.tgz", - "integrity": "sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==", - "license": "EPL-2.0" - }, "node_modules/entities": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", @@ -3828,15 +4518,16 @@ } }, "node_modules/es-module-lexer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", - "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.2.tgz", + "integrity": "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==", "license": "MIT" }, "node_modules/es-toolkit": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.52.0.tgz", "integrity": "sha512-XTNEJQh1tY1ZJVcf6ayP/2n4ZPyaHlW2FWs7xvw5ddPuhUVjLD3olQVQS7kf58JbAB48iL0uL/jerTrjtV3lDA==", + "dev": true, "license": "MIT", "workspaces": [ "docs", @@ -3878,9 +4569,9 @@ } }, "node_modules/esbuild": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", - "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz", + "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==", "hasInstallScript": true, "license": "MIT", "bin": { @@ -3890,32 +4581,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.28.1", - "@esbuild/android-arm": "0.28.1", - "@esbuild/android-arm64": "0.28.1", - "@esbuild/android-x64": "0.28.1", - "@esbuild/darwin-arm64": "0.28.1", - "@esbuild/darwin-x64": "0.28.1", - "@esbuild/freebsd-arm64": "0.28.1", - "@esbuild/freebsd-x64": "0.28.1", - "@esbuild/linux-arm": "0.28.1", - "@esbuild/linux-arm64": "0.28.1", - "@esbuild/linux-ia32": "0.28.1", - "@esbuild/linux-loong64": "0.28.1", - "@esbuild/linux-mips64el": "0.28.1", - "@esbuild/linux-ppc64": "0.28.1", - "@esbuild/linux-riscv64": "0.28.1", - "@esbuild/linux-s390x": "0.28.1", - "@esbuild/linux-x64": "0.28.1", - "@esbuild/netbsd-arm64": "0.28.1", - "@esbuild/netbsd-x64": "0.28.1", - "@esbuild/openbsd-arm64": "0.28.1", - "@esbuild/openbsd-x64": "0.28.1", - "@esbuild/openharmony-arm64": "0.28.1", - "@esbuild/sunos-x64": "0.28.1", - "@esbuild/win32-arm64": "0.28.1", - "@esbuild/win32-ia32": "0.28.1", - "@esbuild/win32-x64": "0.28.1" + "@esbuild/aix-ppc64": "0.28.2", + "@esbuild/android-arm": "0.28.2", + "@esbuild/android-arm64": "0.28.2", + "@esbuild/android-x64": "0.28.2", + "@esbuild/darwin-arm64": "0.28.2", + "@esbuild/darwin-x64": "0.28.2", + "@esbuild/freebsd-arm64": "0.28.2", + "@esbuild/freebsd-x64": "0.28.2", + "@esbuild/linux-arm": "0.28.2", + "@esbuild/linux-arm64": "0.28.2", + "@esbuild/linux-ia32": "0.28.2", + "@esbuild/linux-loong64": "0.28.2", + "@esbuild/linux-mips64el": "0.28.2", + "@esbuild/linux-ppc64": "0.28.2", + "@esbuild/linux-riscv64": "0.28.2", + "@esbuild/linux-s390x": "0.28.2", + "@esbuild/linux-x64": "0.28.2", + "@esbuild/netbsd-arm64": "0.28.2", + "@esbuild/netbsd-x64": "0.28.2", + "@esbuild/openbsd-arm64": "0.28.2", + "@esbuild/openbsd-x64": "0.28.2", + "@esbuild/openharmony-arm64": "0.28.2", + "@esbuild/sunos-x64": "0.28.2", + "@esbuild/win32-arm64": "0.28.2", + "@esbuild/win32-ia32": "0.28.2", + "@esbuild/win32-x64": "0.28.2" } }, "node_modules/escape-string-regexp": { @@ -4069,6 +4760,16 @@ "fast-string-width": "^3.0.2" } }, + "node_modules/fastdom": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastdom/-/fastdom-1.0.12.tgz", + "integrity": "sha512-LB+xjSTEbjHE1cWsxu+tN2Xqr1kpi+V9aADI7sVM5ZMaXyYGPHULQMzpJMYqOTULK/73pUkWVzzObFRBkPr+hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "strictdom": "^1.0.1" + } + }, "node_modules/fdir": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", @@ -4086,6 +4787,15 @@ } } }, + "node_modules/find-proc": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/find-proc/-/find-proc-0.2.0.tgz", + "integrity": "sha512-a6h2nTrgB3g5Wrn4au9Ux4kMk7IJtyF6oA8uGn+mk3weLZssUtc1cp6meHIzzuW2o1srrBAxzkmXLbqjRkgB6w==", + "license": "MIT", + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, "node_modules/flattie": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", @@ -4172,6 +4882,7 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", + "dev": true, "license": "MIT" }, "node_modules/hast-util-embedded": { @@ -4634,6 +5345,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -4646,6 +5358,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -4662,6 +5375,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -4735,39 +5449,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "license": "MIT", - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-inside-container/node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", @@ -4780,21 +5461,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-wsl": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", - "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", - "license": "MIT", - "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/js-yaml": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", @@ -4851,7 +5517,8 @@ "node_modules/khroma": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", - "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==", + "dev": true }, "node_modules/klona": { "version": "2.0.6", @@ -4866,12 +5533,13 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "dev": true, "license": "MIT" }, "node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", "license": "MPL-2.0", "dependencies": { "detect-libc": "^2.0.3" @@ -4884,23 +5552,23 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" } }, "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", "cpu": [ "arm64" ], @@ -4918,9 +5586,9 @@ } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", "cpu": [ "arm64" ], @@ -4938,9 +5606,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", "cpu": [ "x64" ], @@ -4958,9 +5626,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", "cpu": [ "x64" ], @@ -4978,9 +5646,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", "cpu": [ "arm" ], @@ -4998,12 +5666,15 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -5018,12 +5689,15 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -5038,12 +5712,15 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -5058,12 +5735,15 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -5078,9 +5758,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", "cpu": [ "arm64" ], @@ -5098,9 +5778,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", "cpu": [ "x64" ], @@ -5121,6 +5801,7 @@ "version": "4.17.23", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "dev": true, "license": "MIT" }, "node_modules/longest-streak": { @@ -5134,31 +5815,31 @@ } }, "node_modules/lru-cache": { - "version": "11.5.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", - "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==", + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", + "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } }, "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.4.2.tgz", + "integrity": "sha512-vG+rjFRj1PqdIBozIxAGMjPlOhaVe+GXpbttY/iSK7rGcJRMlwNJO7dcUwmUqkymsFLJiNGI06t4D7Fr7yRC9g==", "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" + "@jridgewell/sourcemap-codec": "^1.6.0" } }, "node_modules/magicast": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.3.tgz", - "integrity": "sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.5.tgz", + "integrity": "sha512-UicdXN8zQ3JHlxVq+28afMXPr1z7WNY6+7EJnzTdQWkTAlMLF5fNCCKxJHBQwGaNGR11581EiQmQzx73+MvszA==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.3", - "@babel/types": "^7.29.0", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", "source-map-js": "^1.2.1" } }, @@ -5188,6 +5869,7 @@ "version": "16.4.2", "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz", "integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==", + "dev": true, "license": "MIT", "bin": { "marked": "bin/marked.js" @@ -5544,18 +6226,51 @@ "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", "license": "CC0-1.0" }, - "node_modules/mermaid": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-12.0.0.tgz", - "integrity": "sha512-/wQXC9iBxoGV8p3erbvaXs9h77VyLDBH6GdayVjj3hEcSQhFU4N1WUhUppotCEqlIxI2pRMwjwBSwTB1MfZBgQ==", + "node_modules/mermaid-isomorphic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mermaid-isomorphic/-/mermaid-isomorphic-3.1.0.tgz", + "integrity": "sha512-mzrvfEVjnJIkJlEqxp3eMuR1wS0TeLCH1VK5E/T5yzWaBwI3JqjJuw70yUIThSCDJ5bRs6O3rgfp00oBAbvSeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-free": "^6.0.0", + "katex": "^0.16.0", + "mermaid": "^11.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + }, + "peerDependencies": { + "playwright": "1" + }, + "peerDependenciesMeta": { + "playwright": { + "optional": true + } + } + }, + "node_modules/mermaid-isomorphic/node_modules/@mermaid-js/parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.2.1.tgz", + "integrity": "sha512-n12NohV3mrUyUL2o93IgG/ifeW9FTyeJn3zDxkhwa8MJ9Fxg3HQMlA3RiGmD/3UnJvheztkjjQAjA2T4LmUcpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@chevrotain/types": "~11.1.2" + } + }, + "node_modules/mermaid-isomorphic/node_modules/mermaid": { + "version": "11.17.2", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.17.2.tgz", + "integrity": "sha512-V6K3C8EBdEsPFZXSKMJe6ppQOENxuHARr9GvHX4hh47lAbhMRD9qf4oEK7LoaRQxULMa80/qt5gHO73aCleBBg==", + "dev": true, "license": "MIT", "dependencies": { "@braintree/sanitize-url": "^7.1.2", "@iconify/utils": "^3.0.2", - "@mermaid-js/parser": "^2.0.0", + "@mermaid-js/parser": "^1.2.1", "@types/d3": "^7.4.3", "@upsetjs/venn.js": "^2.0.0", - "chevrotain": "~11.1.2", "cytoscape": "^3.34.0", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.2.0", @@ -5563,9 +6278,9 @@ "d3-sankey": "^0.12.3", "dagre-d3-es": "7.0.14", "dayjs": "^1.11.21", - "dompurify": "^3.4.12", - "elkjs": "^0.9.3", + "dompurify": "^3.3.3", "es-toolkit": "^1.45.1", + "fastdom": "1.0.12", "katex": "^0.16.47", "khroma": "^2.1.0", "marked": "^16.3.0", @@ -5573,33 +6288,6 @@ "stylis": "^4.3.6", "ts-dedent": "^2.2.0", "uuid": "^11.1.0 || ^12 || ^13 || ^14.0.0" - }, - "engines": { - "node": ">=22.12.0" - } - }, - "node_modules/mermaid/node_modules/@antfu/install-pkg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-2.1.0.tgz", - "integrity": "sha512-sdg9NxU3zR4Mnawfbc/x6GB5Wf17WYud5qOuEuxXjaKpYpMkISSJEjItGebXJ2bQ4DIcly4NYH23mtkGJjvKUw==", - "license": "MIT", - "dependencies": { - "package-manager-detector": "^1.8.0", - "tinyexec": "^1.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/mermaid/node_modules/@iconify/utils": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.7.tgz", - "integrity": "sha512-JZHlwdID+dy+lTgbYC8NEC4zeugqeYsc6jewvzb4c58kHauJn+X7rNwQjxz5p2qSjqaEeQoLkCIQ9v/H4PK0/w==", - "license": "MIT", - "dependencies": { - "@antfu/install-pkg": "^2.0.1", - "@iconify/types": "^2.0.0", - "import-meta-resolve": "^4.2.0" } }, "node_modules/micromark": { @@ -6357,6 +7045,16 @@ ], "license": "MIT" }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "dev": true, + "license": "MIT", + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, "node_modules/mrmime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", @@ -6373,9 +7071,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.15", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz", - "integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==", + "version": "3.3.19", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.19.tgz", + "integrity": "sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==", "funding": [ { "type": "github", @@ -6391,9 +7089,9 @@ } }, "node_modules/neotraverse": { - "version": "0.6.18", - "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", - "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-1.0.1.tgz", + "integrity": "sha512-WmmLty1YWwJl9yZi77v2dVIV6X2kuYV8YYBI/G3LWGKdGHmHUvL1z7FW0iDvEvGAwNEoc5x1tOOOyDnf5jJw/w==", "license": "MIT", "engines": { "node": ">= 10" @@ -6419,9 +7117,9 @@ "license": "MIT" }, "node_modules/node-mock-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.4.tgz", - "integrity": "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.5.tgz", + "integrity": "sha512-KQyt/wLjG3TAc7DOUhpqWzgd4ERxR80JOlTK5VE5R1S12IaPVN5qkj4klBce9HPG1Njuup4Sb5bljaT34lIyjw==", "license": "MIT" }, "node_modules/normalize-path": { @@ -6446,9 +7144,9 @@ } }, "node_modules/obug": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.3.tgz", - "integrity": "sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/obug/-/obug-3.0.0.tgz", + "integrity": "sha512-5vvB5+W7ePv+p3uqxi+RcW1XAzLW0/hxt3/4X4Lc4qHudzOhmBiBwOY6DRob4WnanAEGvNcLjF+KNOufrUoEQw==", "funding": [ "https://github.com/sponsors/sxzz", "https://opencollective.com/debug" @@ -6470,9 +7168,9 @@ } }, "node_modules/ohash": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", - "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.12.tgz", + "integrity": "sha512-65S/5gk9YSsaRjcyf7Nfa6h/d3E8/1gslpXfI4W7Dxn/oap8IKRuNT5VXkLQ1YFKIEg4apRY4Pj6aiwFzrDdmw==", "license": "MIT" }, "node_modules/oniguruma-parser": { @@ -6493,9 +7191,9 @@ } }, "node_modules/p-limit": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-7.3.0.tgz", - "integrity": "sha512-7cIXg/Z0M5WZRblrsOla88S4wAK+zOQQWeBYfV3qJuJXMr+LnbYjaadrFaS0JILfEDPVqHyKnZ1Z/1d6J9VVUw==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-7.3.3.tgz", + "integrity": "sha512-SKgVvDU5TNIxQ4r30U75BNLC6a+6GOEjngrk/ysM5+Zu3oJuk1SC5ApzIzY/7PjCEjoVPMWJ0zho/4QUiEB7TQ==", "license": "MIT", "dependencies": { "yocto-queue": "^1.2.1" @@ -6508,9 +7206,9 @@ } }, "node_modules/p-queue": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-9.3.0.tgz", - "integrity": "sha512-7NED7xhQ74Ngp4JP/2e0VZHp7vSWfJfqeiR92jPgxsz6m0Se4P03YoTKa9dDXyZ3r6P616gUXttrB6nnHYKang==", + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-9.3.3.tgz", + "integrity": "sha512-NXAOdnEe5FsZJfT4oK84lE1Y5cFFdWlRuOo5tww8DyNMxyRXwn39fIkUtNLKppcPC+UYU/bXujNCUGDv01y7CA==", "license": "MIT", "dependencies": { "eventemitter3": "^5.0.4", @@ -6524,9 +7222,9 @@ } }, "node_modules/p-timeout": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-7.0.1.tgz", - "integrity": "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-7.0.2.tgz", + "integrity": "sha512-prbX4Z3YszrFNgH+MW5Zoeq3baXrMtP/MQnFeET90UB/GtGcGDQ5Usg9OCy6ETjTTntOw1SL2z9fMPUppN3Guw==", "license": "MIT", "engines": { "node": ">=20" @@ -6618,6 +7316,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", + "dev": true, "license": "MIT" }, "node_modules/piccolore": { @@ -6633,9 +7332,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", "license": "MIT", "engines": { "node": ">=12" @@ -6644,16 +7343,47 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/playwright": { + "version": "1.63.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.63.0.tgz", + "integrity": "sha512-+7ziBLidS4NaNCdt57SUDT+wYmmd5fmiQejUic/kb+YsYSCPyOOE9sebzMjNmQrsnNpDJqd4WHvV/8lfKfUDUg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.63.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/playwright-core": { + "version": "1.63.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.63.0.tgz", + "integrity": "sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/points-on-curve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "dev": true, "license": "MIT" }, "node_modules/points-on-path": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", + "dev": true, "license": "MIT", "dependencies": { "path-data-parser": "0.1.0", @@ -6661,9 +7391,9 @@ } }, "node_modules/postcss": { - "version": "8.5.15", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", - "integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==", + "version": "8.5.28", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz", + "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==", "funding": [ { "type": "opencollective", @@ -6680,7 +7410,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.12", + "nanoid": "^3.3.18", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -6761,9 +7491,9 @@ "license": "MIT" }, "node_modules/readdirp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", - "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz", + "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==", "license": "MIT", "engines": { "node": ">= 20.19.0" @@ -6864,22 +7594,6 @@ "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", "license": "MIT" }, - "node_modules/rehype": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz", - "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "rehype-parse": "^9.0.0", - "rehype-stringify": "^10.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/rehype-expressive-code": { "version": "0.44.2", "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.44.2.tgz", @@ -6889,20 +7603,6 @@ "expressive-code": "^0.44.2" } }, - "node_modules/rehype-format": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/rehype-format/-/rehype-format-5.0.1.tgz", - "integrity": "sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-format": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/rehype-katex": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-7.0.1.tgz", @@ -6922,19 +7622,33 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/rehype-parse": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", - "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", + "node_modules/rehype-mermaid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rehype-mermaid/-/rehype-mermaid-3.0.0.tgz", + "integrity": "sha512-fxrD5E4Fa1WXUjmjNDvLOMT4XB1WaxcfycFIWiYU0yEMQhcTDElc9aDFnbDFRLxG1Cfo1I3mfD5kg4sjlWaB+Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", - "hast-util-from-html": "^2.0.0", - "unified": "^11.0.0" + "hast-util-from-html-isomorphic": "^2.0.0", + "hast-util-to-text": "^4.0.0", + "mermaid-isomorphic": "^3.0.0", + "mini-svg-data-uri": "^1.0.0", + "space-separated-tokens": "^2.0.0", + "unified": "^11.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile": "^6.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/remcohaszing" + }, + "peerDependencies": { + "playwright": "1" + }, + "peerDependenciesMeta": { + "playwright": { + "optional": true + } } }, "node_modules/rehype-raw": { @@ -7183,15 +7897,16 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", "integrity": "sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==", + "dev": true, "license": "Unlicense" }, "node_modules/rolldown": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.3.tgz", - "integrity": "sha512-1F1eEtUBtFvcGm1HQ9TiUIUHPQG7mSAODrhIzjxoUEFuo8OcbrGLiVLkevNgj84TE4lnHvnumwFjhJO5Eu135g==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.10.tgz", + "integrity": "sha512-OxkA08pSryMK7B3XiFA09B4OJ1xJMPgIYCBMY2xchzpqgBGsV1o0DetPAE+Sl3N3L4oCPiEzmHVSOj7iR04Zog==", "license": "MIT", "dependencies": { - "@oxc-project/types": "=0.137.0", + "@oxc-project/types": "=0.151.0", "@rolldown/pluginutils": "^1.0.0" }, "bin": { @@ -7201,27 +7916,28 @@ "node": "^20.19.0 || >=22.12.0" }, "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-arm-eabi": "1.2.10", + "@rolldown/binding-android-arm64": "1.2.10", + "@rolldown/binding-darwin-arm64": "1.2.10", + "@rolldown/binding-darwin-x64": "1.2.10", + "@rolldown/binding-freebsd-x64": "1.2.10", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.10", + "@rolldown/binding-linux-arm64-gnu": "1.2.10", + "@rolldown/binding-linux-arm64-musl": "1.2.10", + "@rolldown/binding-linux-ppc64-gnu": "1.2.10", + "@rolldown/binding-linux-s390x-gnu": "1.2.10", + "@rolldown/binding-linux-x64-gnu": "1.2.10", + "@rolldown/binding-linux-x64-musl": "1.2.10", + "@rolldown/binding-openharmony-arm64": "1.2.10", + "@rolldown/binding-win32-arm64-msvc": "1.2.10", + "@rolldown/binding-win32-x64-msvc": "1.2.10" } }, "node_modules/roughjs": { "version": "4.6.6", "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "dev": true, "license": "MIT", "dependencies": { "hachure-fill": "^0.5.2", @@ -7234,40 +7950,43 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "dev": true, "license": "BSD-3-Clause" }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, "license": "MIT" }, "node_modules/satteri": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/satteri/-/satteri-0.9.2.tgz", - "integrity": "sha512-IDJTE5SzEg9PqtdZEToQ3bjlfQ/zM+/HNaBFrwPdZbtk9IL1RWVFvzR8EMIrC0JYybJNKZS8FL45GNSAMX/6Xg==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/satteri/-/satteri-0.10.5.tgz", + "integrity": "sha512-Ao1LKpAEa9Wdg0otgbVKViZHEq9ebdXe4DMrp3s9vQAU0HNIuHnFEuMuOcm0ZIXyV0Yzxj91NvhLpvXZJO/5ZQ==", + "license": "MIT", "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.2", - "@bruits/satteri-darwin-x64": "0.9.2", - "@bruits/satteri-linux-arm64-gnu": "0.9.2", - "@bruits/satteri-linux-arm64-musl": "0.9.2", - "@bruits/satteri-linux-x64-gnu": "0.9.2", - "@bruits/satteri-linux-x64-musl": "0.9.2", - "@bruits/satteri-wasm32-wasi": "0.9.2", - "@bruits/satteri-win32-arm64-msvc": "0.9.2", - "@bruits/satteri-win32-x64-msvc": "0.9.2" + "@bruits/satteri-darwin-arm64": "0.10.5", + "@bruits/satteri-darwin-x64": "0.10.5", + "@bruits/satteri-linux-arm64-gnu": "0.10.5", + "@bruits/satteri-linux-arm64-musl": "0.10.5", + "@bruits/satteri-linux-x64-gnu": "0.10.5", + "@bruits/satteri-linux-x64-musl": "0.10.5", + "@bruits/satteri-wasm32-wasi": "0.10.5", + "@bruits/satteri-win32-arm64-msvc": "0.10.5", + "@bruits/satteri-win32-x64-msvc": "0.10.5" } }, "node_modules/sax": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", - "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz", + "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==", "license": "BlueOak-1.0.0", "engines": { "node": ">=11.0.0" @@ -7330,19 +8049,19 @@ } }, "node_modules/shiki": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.3.0.tgz", - "integrity": "sha512-NKKjWzR6LIGL3sXBrWDw9sDS9cxx42/DkysaNqJEeOWE8Kix5gpak0bc00OfDVEO4oyXSyz8+aRaqKoBD1yo7A==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.4.3.tgz", + "integrity": "sha512-Mb/GvXPHBAXdgGIcnfU5L3ldpn1XcxrGkPHwqgRx17/I2XRfqlFKk2vGkHWINn1kdXvzJZeuO3is6I9KLPFm0g==", "license": "MIT", "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.4.3", + "@shikijs/engine-javascript": "4.4.3", + "@shikijs/engine-oniguruma": "4.4.3", + "@shikijs/langs": "4.4.3", + "@shikijs/themes": "4.4.3", + "@shikijs/types": "4.4.3", "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" + "@types/hast": "^3.0.5" }, "engines": { "node": ">=20" @@ -7374,9 +8093,9 @@ } }, "node_modules/smol-toml": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.7.0.tgz", - "integrity": "sha512-aqVvWoyO21L23mb+drl4RmMXbf6N7FdHjAhTRA9ZBL7apWBgfWC16KjrASI+1p9GAroljyMHj6fK67i0UiTNvQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.9.0.tgz", + "integrity": "sha512-hpd+HLON7HdZXqYchMM/+LaTTbdK0AU3NngIJ4KVyWbY9bfQqdL9cD+4yf6dUoU2Ap4VsU0JkQi6FxAI1B2mXQ==", "license": "BSD-3-Clause", "engines": { "node": ">= 18" @@ -7419,6 +8138,13 @@ "integrity": "sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==", "license": "MIT" }, + "node_modules/strictdom": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strictdom/-/strictdom-1.0.1.tgz", + "integrity": "sha512-cEmp9QeXXRmjj/rVp9oyiqcvyocWab/HaoN4+bwFeZ7QzykJD6L3yD4v12K1x0tHpqRqVpJevN3gW7kyM39Bqg==", + "dev": true, + "license": "MIT" + }, "node_modules/stringify-entities": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", @@ -7455,21 +8181,22 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.4.0.tgz", "integrity": "sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA==", + "dev": true, "license": "MIT" }, "node_modules/svgo": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.1.tgz", - "integrity": "sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.1.0.tgz", + "integrity": "sha512-bkxnTg1kSU0guhIBmibA6UUhrQmPVA1XsQLN+ylCd+UWzbnLkySOcXpyk1mrl05f+pcaCx2eHb+sp6BgMZWX+Q==", "license": "MIT", "dependencies": { "commander": "^11.1.0", - "css-select": "^5.1.0", + "css-select": "^6.0.0", "css-tree": "^3.0.1", - "css-what": "^6.1.0", + "css-what": "^7.0.0", "csso": "^5.0.5", "picocolors": "^1.1.1", - "sax": "^1.5.0" + "sax": "1.6.1" }, "bin": { "svgo": "bin/svgo.js" @@ -7489,9 +8216,9 @@ "license": "MIT" }, "node_modules/tinyclip": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/tinyclip/-/tinyclip-0.1.15.tgz", - "integrity": "sha512-uo33abH+Ays0xYaDysoBt494Hb3hsEczMpcC0MwFl773pazORx4fmvKhclhR1wonUbB6vvpRsvVMwnhfqeMc+A==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tinyclip/-/tinyclip-1.0.3.tgz", + "integrity": "sha512-nTv2raKFMzGG6JJp0lpNDsRPdfFE6UHlu2rVEjXo8vkx1ZS3LW2CVXqIaLu8xZlu+6tbFs9V58Qc/Jmk/Ii7wA==", "license": "MIT", "engines": { "node": "^16.14.0 || >= 17.3.0" @@ -7546,6 +8273,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.3.0.tgz", "integrity": "sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.10" @@ -7565,9 +8293,9 @@ "license": "MIT" }, "node_modules/ultrahtml": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.6.0.tgz", - "integrity": "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.7.0.tgz", + "integrity": "sha512-2xRd0VHoAQE4M+vF/DvFFB7pUV0ZxTW1TLi7lHQWnF/Sb5TPeEUV/l+hxcNnGO00ZXGnR0voCMmYRKQf+rvJ2g==", "license": "MIT" }, "node_modules/uncrypto": { @@ -7576,6 +8304,15 @@ "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", "license": "MIT" }, + "node_modules/undici": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-8.11.2.tgz", + "integrity": "sha512-u4UB2/IrKdU6lFxumHmmo1a3fCQO5tzQllRorfoRS63txhrB7xTpSn1PftwC4qEHkOaqP95fCWW4lJzwErwzhQ==", + "license": "MIT", + "engines": { + "node": ">=22.19.0" + } + }, "node_modules/undici-types": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", @@ -7602,14 +8339,14 @@ } }, "node_modules/unifont": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.7.4.tgz", - "integrity": "sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg==", + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.7.5.tgz", + "integrity": "sha512-ULe/Cs+ZIsq+dcFofNkhqielCrUJnb5mr+Yc4EBM2VlL+6OZR6+cjtI2mT1bJvRBrVncqHAbLURxmPLcCXzWMg==", "license": "MIT", "dependencies": { "css-tree": "^3.1.0", - "ofetch": "^1.5.1", - "ohash": "^2.0.11" + "ohash": "^2.0.11", + "undici": "^8.0.0" } }, "node_modules/unist-util-find-after": { @@ -7866,6 +8603,7 @@ "version": "14.0.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.2.tgz", "integrity": "sha512-xZe/16rV4aa+HGSOCiY2YeLT1OybRLrrkL/Rqaq7p7GMVXjFh+6wN4oMYgjFmnSnhY8t6Xpdl2l9qmnHYuMHwQ==", + "dev": true, "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -7875,6 +8613,18 @@ "uuid": "dist-node/bin/uuid" } }, + "node_modules/verkit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/verkit/-/verkit-0.4.1.tgz", + "integrity": "sha512-mMVzj0TXExtVdlDEq+Mzp0eyOuyznNpFobNM3uAqe3HVm/Ps2c+u17BligMkZjZCA6EiXpoon8iRTer3iu40SQ==", + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, "node_modules/vfile": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", @@ -7918,15 +8668,15 @@ } }, "node_modules/vite": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.0.tgz", - "integrity": "sha512-BuJcQK/56NQTWDGn4ABea3q4SSBdNPWwNZKTkkUpcMPnLoquSYH8llRtSUIgoL1KSCpHt5eghLShn50mH36y7Q==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.1.tgz", + "integrity": "sha512-/bvH9E9tmCXRGp2uXY3WbOldqpTwFkbha/8ANaEQ6VkxhH60KyqLwgZq6lG2y+4uT55x9+9eUHMpQ7uGnOCKjA==", "license": "MIT", "dependencies": { - "lightningcss": "^1.32.0", - "picomatch": "^4.0.4", - "postcss": "^8.5.15", - "rolldown": "~1.1.2", + "lightningcss": "^1.33.0", + "picomatch": "^4.0.7", + "postcss": "^8.5.28", + "rolldown": "~1.2.9", "tinyglobby": "^0.2.17" }, "bin": { @@ -7943,7 +8693,7 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.3.0", + "@vitejs/devtools": "^0.7.1", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", @@ -8023,15 +8773,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/which-pm-runs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", - "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/xxhash-wasm": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz", @@ -8060,9 +8801,9 @@ } }, "node_modules/zod": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", - "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.5.tgz", + "integrity": "sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/package.json b/package.json index 32bc0a4..a534792 100644 --- a/package.json +++ b/package.json @@ -3,20 +3,37 @@ "type": "module", "version": "0.0.1", "scripts": { + "fonts": "node scripts/generate-fonts.mjs", + "check:fonts": "node scripts/generate-fonts.mjs --check", + "check:site": "node scripts/check-build.mjs", + "check:mermaid": "node --test scripts/mermaid.test.mjs", + "setup:mermaid": "playwright install chromium", + "predev": "npm run fonts", "dev": "astro dev", + "prestart": "npm run fonts", "start": "astro dev", - "build": "astro build", + "prebuild": "npm run fonts", + "build": "astro build && npm run check:fonts && npm run check:site", "preview": "astro preview", "astro": "astro" }, "dependencies": { - "@astrojs/markdown-remark": "7.2.0", - "@astrojs/starlight": "^0.41.1", - "astro": "^7.0.2", + "@astrojs/markdown-remark": "^7.3.1", + "@astrojs/mdx": "^8.0.2", + "@astrojs/starlight": "^0.42.3", + "astro": "^7.3.5", "katex": "^0.16.47", - "mermaid": "^12.0.0", "rehype-katex": "^7.0.1", "remark-math": "^6.0.0", "sharp": "^0.34.5" + }, + "devDependencies": { + "playwright": "^1.63.0", + "rehype-mermaid": "^3.0.0" + }, + "allowScripts": { + "sharp@0.35.4": true, + "sharp@0.34.5": true, + "esbuild@0.28.2": true } } diff --git a/public/downloads/rmic-2026-original-draft.md b/public/downloads/rmic-2026-original-draft.md index 347ad45..f5302be 100644 --- a/public/downloads/rmic-2026-original-draft.md +++ b/public/downloads/rmic-2026-original-draft.md @@ -13,7 +13,6 @@ - 所有选手应为黑龙江大学本科生 - 以团队形式参赛,每队人数严格限制为 3 人 - 每人限参加一支队伍 -- 每队 50 元报名费 鼓励各位同学跨学院、跨专业组队,以实现技术互补。 @@ -248,7 +247,6 @@ flowchart TD #### 奖励 1. 冠、亚、季军奖杯 -2. 一/二/三等奖对应档奖金 2. 校级竞赛一/二/三等奖证书(加盖黑大公章),可申请学分/综测加分 3. 八强队伍获得 Simba 战队直通面试机会 / 明信片套装 / 3D 打印 NFC 钥匙扣 diff --git a/public/simba/header.webp b/public/simba/header.webp deleted file mode 100644 index 059b26508633ba169d14bdeac54f5673b32e073a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188622 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≻afYQ4aryC22~@f?0)`S#Z^f`5>ox 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 OC0C*g;Vvlv0000tQ^k=0 diff --git a/public/simba/logo-light.svg b/public/simba/logo-light.svg new file mode 100644 index 0000000..d74cd39 --- /dev/null +++ b/public/simba/logo-light.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + diff --git a/scripts/check-build.mjs b/scripts/check-build.mjs new file mode 100644 index 0000000..f560dfd --- /dev/null +++ b/scripts/check-build.mjs @@ -0,0 +1,75 @@ +// Check generated HTML, so Markdown links and MDX components are both covered. +import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs'; +import { join, relative, sep } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const root = fileURLToPath(new URL('../dist/', import.meta.url)); +if (!existsSync(root)) throw new Error('Missing dist/. Run npm run build first.'); +const origin = 'https://docs.simba-robotics.com'; +const files = []; +function walk(dir) { + for (const entry of readdirSync(dir, { withFileTypes: true })) { + const path = join(dir, entry.name); + if (entry.isDirectory()) walk(path); + else files.push(path); + } +} +walk(root); +const pages = new Map(files.filter((path) => path.endsWith('.html')) + .map((path) => [path, readFileSync(path, 'utf8')])); +const errors = []; +let checked = 0; +let diagrams = 0; + +for (const [path, html] of pages) { + const page = relative(root, path).split(sep).join('/'); + const base = new URL(page.replace(/index\.html$/, ''), origin); + if (html.includes('class="katex-error"')) errors.push(`${page}: invalid math`); + if (/]*\sset:html=/.test(html)) errors.push(`${page}: MDX emitted inert SVG styles`); + const diagramCount = [...html.matchAll(/class="mermaid-diagram"/g)].length; + if (diagramCount) { + diagrams += diagramCount; + const staticCount = [...html.matchAll(/data-rendered="static"/g)].length; + const lightCount = [...html.matchAll(/class="mermaid-variant mermaid-light"/g)].length; + const darkCount = [...html.matchAll(/class="mermaid-variant mermaid-dark"/g)].length; + const svgCount = [...html.matchAll(/]*\bid="mermaid-[^"]+"/g)].length; + if ([staticCount, lightCount, darkCount].some((count) => count !== diagramCount) || svgCount !== diagramCount * 2) { + errors.push(`${page}: Mermaid must contain both pre-rendered SVG themes`); + } + const ids = [...html.matchAll(/\sid="([^"]+)"/g)].map((match) => match[1]); + if (ids.length !== new Set(ids).size) errors.push(`${page}: duplicate IDs may break inline SVG references`); + } + // Astro emits quoted, escaped attributes. Code examples escape '<', so they + // are not mistaken for real links here. External URLs are not fetched. + for (const tag of html.matchAll(/<(?:a|link|script|img)\b[^>]*>/g)) { + // Canonical/hreflang are SEO metadata, not navigation or loaded assets. + if (/^` in `Head.astro`, followed by a long local + * fallback chain so the page is fully readable even when Google is + * unreachable. + * + * 2. KaTeX — a math font cannot be faked with a UI font: KaTeX positions every + * glyph against `KaTeX_Main`/`KaTeX_Math` metrics and needs the `KaTeX_Size*` + * faces for large delimiters. So the faces come from a CDN (cdnjs, which is + * reachable from mainland China, unlike jsDelivr) and KaTeX's own + * `@font-face` blocks — the ~1 MB of `fonts/KaTeX_*.woff2` this repo used to + * copy into `dist/` — are replaced by CDN-pinned ones. Every element-level + * `font-family: KaTeX_*` declaration keeps its matching KaTeX face first, + * followed by local fallbacks. If the CDN is blocked, the local faces keep + * text visible but cannot guarantee KaTeX's glyph metrics or delimiters. + * + * The generator proves its own contract: every `url()` it emits must be an + * absolute HTTPS CDN URL, and no relative font reference may survive, so the + * bundler can never pick up a font file by accident. + * + * Output is deterministic, so it is generated at predev/prebuild instead of + * being committed. `--check` verifies without writing. + */ +import { createHash } from 'node:crypto'; +import { readFile, writeFile } from 'node:fs/promises'; +import { fileURLToPath } from 'node:url'; + +const KATEX_DIR = new URL('../node_modules/katex/', import.meta.url); +const KATEX_PKG = fileURLToPath(new URL('package.json', KATEX_DIR)); +const KATEX_CSS = fileURLToPath(new URL('dist/katex.css', KATEX_DIR)); +const OUT_FILE = fileURLToPath(new URL('../src/styles/fonts.generated.css', import.meta.url)); + +/** cdnjs mirror. Swap for another host if this one is not reachable for you. */ +const KATEX_CDN = 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX'; + +/** Site webfont family requested from the Google Fonts CN API in `Head.astro`. */ +export const SANS_FAMILY = 'Noto Sans SC'; + +/** + * Heading webfont for the site title in the top-left corner. The title contains + * a Greek `Σ`, so the face must cover Greek as well as Latin: Manrope is a + * variable font (200..800) with a greek subset, and Archivo Black (weight 400) + * is requested as a separate heavy fallback. + */ +export const DISPLAY_FAMILY = 'Manrope'; + +const SYSTEM_SANS = [ + 'system-ui', + '-apple-system', + 'BlinkMacSystemFont', + 'Segoe UI', + 'Roboto', + 'Helvetica Neue', + 'Arial', +]; + +const CJK_SANS = [ + 'PingFang SC', + 'Hiragino Sans GB', + 'Microsoft YaHei', + 'Noto Sans CJK SC', + 'Source Han Sans SC', + 'WenQuanYi Micro Hei', +]; + +/** Quote only the families that need it, so the output stays readable. */ +const fontStack = (families) => + families.map((family) => (/[\s"]/.test(family) ? `"${family}"` : family)).join(', '); + +/** Site stack: the webfont first, then every plausible local fallback. */ +const SANS_STACK = fontStack([SANS_FAMILY, ...SYSTEM_SANS, ...CJK_SANS, 'sans-serif']); + +/** + * Display stack for the site title. Only Latin + Greek are covered by the + * webfonts, so the site's CJK fallbacks follow for any Chinese in the title. + * `Archivo Black` covers Greek and is a genuine display cut, so it is a real + * fallback rather than a placeholder. + */ +const DISPLAY_STACK = fontStack([ + DISPLAY_FAMILY, + 'Archivo Black', + ...SYSTEM_SANS, + ...CJK_SANS, + 'sans-serif', +]); + +/** + * Math stack. Locally installed TeX faces come first, then the platform UI + * faces for Latin/Greek symbols, then CJK faces for any Chinese inside math. + */ +const MATH_STACK = fontStack([ + 'STIX Two Math', + 'Latin Modern Math', + 'Cambria Math', + ...SYSTEM_SANS, + ...CJK_SANS, + 'sans-serif', +]); + +const EXPECTED_FAMILIES = [ + 'KaTeX_AMS', + 'KaTeX_Caligraphic', + 'KaTeX_Fraktur', + 'KaTeX_Main', + 'KaTeX_Math', + 'KaTeX_SansSerif', + 'KaTeX_Script', + 'KaTeX_Size1', + 'KaTeX_Size2', + 'KaTeX_Size3', + 'KaTeX_Size4', + 'KaTeX_Typewriter', +]; + +/** Read a single `prop: value` declaration out of a rule body. */ +function readProp(body, prop) { + const match = new RegExp(`(?:^|;)\\s*${prop}\\s*:\\s*([^;}]+)`, 'i').exec(body); + return match ? match[1].trim() : null; +} + +/** Collect every `@font-face` as `{ family, style, weight, src }`. */ +function findFontFaces(css) { + const faces = []; + let cursor = 0; + + for (;;) { + const start = css.indexOf('@font-face', cursor); + if (start === -1) break; + + const open = css.indexOf('{', start); + const close = css.indexOf('}', open); + if (open === -1 || close === -1) break; + + const body = css.slice(open + 1, close); + const family = readProp(body, 'font-family')?.replace(/^['"]|['"]$/g, ''); + if (family) { + faces.push({ + family, + style: readProp(body, 'font-style') ?? 'normal', + weight: readProp(body, 'font-weight') ?? 'normal', + src: readProp(body, 'src') ?? '', + }); + } + + cursor = close + 1; + } + + return faces; +} + +/** + * Turn a face's `src` into absolute CDN URLs, keeping only the formats asked + * for. Upstream ships woff2 + woff + ttf; woff2 is universally supported for + * the browsers this site targets, so shipping one format is enough. + */ +function cdnSources(face, version, formats = ['woff2']) { + const files = [...face.src.matchAll(/url\(\s*([^)\s"']+)\s*\)/gi)] + .map((match) => match[1]) + .filter((file) => formats.some((format) => file.endsWith(`.${format}`))); + + if (!files.length) { + throw new Error(`No ${formats.join('/')} source found for ${face.family} (${face.style} ${face.weight})`); + } + + return files + .map((file) => { + const name = file.replace(/^.*\//, ''); + const format = name.slice(name.lastIndexOf('.') + 1); + const remote = `${KATEX_CDN}/${version}/fonts/${name}`; + return `url(${remote}) format("${format}")`; + }) + .join(',\n '); +} + +const version = JSON.parse(await readFile(KATEX_PKG, 'utf8')).version; +const source = await readFile(KATEX_CSS, 'utf8'); +const faces = findFontFaces(source); +const families = [...new Set(faces.map((face) => face.family))]; + +const added = families.filter((family) => !EXPECTED_FAMILIES.includes(family)); +const dropped = EXPECTED_FAMILIES.filter((family) => !families.includes(family)); +if (added.length || dropped.length) { + throw new Error( + `KaTeX ${version} declares unexpected families (added: ${added.join(', ') || 'none'}; ` + + `missing: ${dropped.join(', ') || 'none'}). Update EXPECTED_FAMILIES in ` + + 'scripts/generate-fonts.mjs and re-check the fallback chain.', + ); +} + +const fontFaces = EXPECTED_FAMILIES.flatMap((family) => + faces + .filter((face) => face.family === family) + .map( + (face) => `@font-face { + font-family: ${family}; + src: + ${cdnSources(face, version)}; + font-style: ${face.style}; + font-weight: ${face.weight}; + font-display: swap; +}`, + ), +).join('\n\n'); + +/** + * Append local fallbacks while preserving the exact KaTeX family, handling both + * `font-family: KaTeX_Main, Times New Roman, serif` and the `font:` shorthand + * (`.katex { font: normal 1.21em KaTeX_Main, ... }`), which is easy to miss + * because it has no `font-family` token. + */ +function addMathFallbacks(rule) { + return rule + .replace(/(^|[\s;{])(font-family\s*:\s*)([^;}]+)/gm, (match, lead, prop, value) => + value.includes('KaTeX_') ? `${lead}${prop}${value.match(/KaTeX_[A-Za-z0-9]+/)[0]}, ${MATH_STACK}` : match, + ) + .replace(/(^|[\s;{])(font\s*:\s*)([^;}]+)/gm, (match, lead, prop, value) => { + if (!value.includes('KaTeX_')) return match; + // Keep the position of the family list: `font: normal 1em `. + const [head, ...rest] = value.split(/\s+(?=KaTeX_)/); + const family = value.match(/KaTeX_[A-Za-z0-9]+/)[0]; + return rest.length ? `${lead}${prop}${head} ${family}, ${MATH_STACK}` : match; + }); +} + +// KaTeX's layout/sizing rules are version-locked to its HTML output, so they are +// kept verbatim. Dropping the `@font-face` blocks leaves whitespace behind, and +// only fallback font lists change inside the rules themselves. +const layout = addMathFallbacks(source.replace(/@font-face\s*\{[^}]*\}/g, '')) + .replace(/\n{3,}/g, '\n\n') + .trim(); + +// Declaring @font-face is not sufficient: layout rules must actually use it. +for (const family of EXPECTED_FAMILIES) { + if (!layout.includes(family + ',')) { + throw new Error(`KaTeX layout lost its ${family} font reference.`); + } +} + +const css = `/* + * GENERATED FILE - do not edit. Run \`node scripts/generate-fonts.mjs\`. + * KaTeX fonts are pinned to cdnjs ${version}; no font file is bundled. + */ + +:root { + /* Latin first, then Simplified Chinese, then the hosting platform's UI and + CJK faces. The webfonts are optional: every entry after them is local. */ + --sl-font: ${SANS_STACK}; + --sl-font-mono: ${SANS_STACK}; + --sl-font-system-mono: ${SANS_STACK}; + + /* Heading face for the site title; see .site-title in custom.css. */ + --sl-font-display: ${DISPLAY_STACK}; +} + +/* + * KaTeX math faces, loaded from the CDN and never bundled. \`font-display: swap\` + * means a blocked CDN shows the local stack immediately instead of blank math. + * Local fallback metrics differ, so complex formulas require the remote faces. + */ +${fontFaces} + +/* --- katex/dist/katex.css layout, preserving KaTeX faces with local fallbacks --- */ + +${layout} +`; + +// Contract: no relative font reference may survive, so the bundler has nothing +// to copy into dist/_astro and no page can request a font from its own origin. +const urls = [...css.matchAll(/url\(\s*([^)]*?)\s*\)/g)].map((match) => match[1]); +const relative = urls.filter((url) => !url.startsWith('https://')); +if (relative.length) { + throw new Error(`Generated CSS must only reference absolute CDN fonts, found: ${relative.join(', ')}`); +} +if (!urls.length) { + throw new Error('Generated CSS references no KaTeX fonts; check the cdnSources mapping.'); +} + +const digest = createHash('sha256').update(css).digest('hex').slice(0, 16); +const output = `/* sha256:${digest} */\n${css}`; +const summary = `KaTeX ${version} pinned to cdnjs, ${urls.length} remote faces, 0 bundled files`; + +const current = await readFile(OUT_FILE, 'utf8').catch(() => null); + +if (process.argv.includes('--check')) { + if (current !== output) { + console.error(`fonts.generated.css is stale (${summary}). Run: node scripts/generate-fonts.mjs`); + process.exit(1); + } + console.log(`fonts.generated.css is up to date (${summary}).`); +} else if (current === output) { + console.log(`fonts.generated.css unchanged (${summary}).`); +} else { + await writeFile(OUT_FILE, output, 'utf8'); + console.log(`Wrote src/styles/fonts.generated.css (${summary}).`); +} diff --git a/scripts/mermaid.test.mjs b/scripts/mermaid.test.mjs new file mode 100644 index 0000000..d3d1830 --- /dev/null +++ b/scripts/mermaid.test.mjs @@ -0,0 +1,36 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; +import { createMarkdownProcessor } from '@astrojs/markdown-remark'; +import remarkMermaid from '../src/plugins/remark-mermaid.mjs'; +import rehypeStaticMermaid from '../src/plugins/rehype-mermaid.mjs'; + +const renderer = await createMarkdownProcessor({ + remarkPlugins: [remarkMermaid], + rehypePlugins: [rehypeStaticMermaid], +}); +const fence = (diagram) => `\`\`\`mermaid\n${diagram}\n\`\`\``; + +test('multiple diagrams and both themes have distinct IDs and working arrow references', async () => { + const sequence = fence('sequenceDiagram\nAlice->>Bob: Hello'); + const source = [fence('flowchart LR\nA[中文标签] --> B[完成]'), sequence, sequence].join('\n\n'); + const { code } = await renderer.render(source); + assert.equal([...code.matchAll(/data-rendered="static"/g)].length, 3); + assert.equal([...code.matchAll(/ match[1]); + assert.equal(ids.length, new Set(ids).size); + const markers = [...code.matchAll(/marker-(?:start|end)="url\(#([^)]*)\)"/g)]; + assert(markers.length > 0); + for (const match of markers) assert(ids.includes(match[1]), `Missing arrow marker: ${match[1]}`); +}); + +test('invalid diagram rejects compilation with source position', async (t) => { + // Astro logs the expected parse failure before throwing it. + t.mock.method(console, 'error', () => {}); + await assert.rejects( + renderer.render(fence('flowchart LR\nA[Unclosed'), { + fileURL: new URL('./invalid-mermaid.md', import.meta.url), + }), + (error) => error.fatal === true && error.ruleId === 'rehype-mermaid' + && error.line === 1 && error.file.endsWith('invalid-mermaid.md'), + ); +}); diff --git a/src/components/Head.astro b/src/components/Head.astro index 3724434..ec37634 100644 --- a/src/components/Head.astro +++ b/src/components/Head.astro @@ -1,8 +1,54 @@ --- import DefaultHead from '@astrojs/starlight/components/Head.astro'; + +// A 404 is not a translated document. Starlight would otherwise advertise +// nonexistent /zh-cn/404/ and /en/404/ alternates for this custom page. +if (Astro.locals.starlightRoute.id === '404' || Astro.response.status === 404) { + Astro.locals.starlightRoute.head = Astro.locals.starlightRoute.head.filter( + ({ tag, attrs }) => tag !== 'link' || !['canonical', 'alternate'].includes(String(attrs?.rel)), + ); +} + +/** + * Google Fonts CN API, loaded without blocking first paint. + * + * `font-display=optional` is deliberate: if a webfont is not cached the page + * renders immediately with the local fallback stacks in `fonts.generated.css` + * and never swaps, so there is no reflow. A slow or blocked fonts.googleapis.cn + * therefore costs nothing but the webfont itself. + * + * `Manrope` is the heading face behind `--sl-font-display` for the site title in + * the top-left corner. A variable font, so one request spans 600..800. + * `Archivo Black` is the heavy fallback; the title's Greek `Σ` needs a face with + * a greek subset, which is why these two were chosen. + */ +const WEBFONT_CSS = + 'https://fonts.googleapis.cn/css2?family=Archivo+Black&family=Manrope:wght@600..800&family=Noto+Sans+SC:wght@400..700&display=optional'; --- + + + + + + + + diff --git a/src/content.config.ts b/src/content.config.ts index d9ee8c9..6abb160 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -1,7 +1,8 @@ import { defineCollection } from 'astro:content'; -import { docsLoader } from '@astrojs/starlight/loaders'; -import { docsSchema } from '@astrojs/starlight/schema'; +import { docsLoader, i18nLoader } from '@astrojs/starlight/loaders'; +import { docsSchema, i18nSchema } from '@astrojs/starlight/schema'; export const collections = { docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), + i18n: defineCollection({ loader: i18nLoader(), schema: i18nSchema() }), }; diff --git a/src/content/docs/zh-cn/competition/index.mdx b/src/content/docs/zh-cn/competition/index.mdx index bff4c38..5856388 100644 --- a/src/content/docs/zh-cn/competition/index.mdx +++ b/src/content/docs/zh-cn/competition/index.mdx @@ -15,7 +15,7 @@ import { CardGrid, LinkCard, Steps } from '@astrojs/starlight/components'; 正式规则调整以组委会后续发布为准。 ::: -当前版本号:`Rev_0.0.2` +当前版本号:`Rev_0.0.3` ![头图](../../../../assets/images/rmic-26/title.png) @@ -32,7 +32,6 @@ import { CardGrid, LinkCard, Steps } from '@astrojs/starlight/components'; | 参赛对象 | 黑龙江大学本科生 | | 组队人数 | **严格限定 3 人** | | 队伍限制 | 每人仅可参加一支队伍 | -| 报名费 | **50 元 / 队** | | 赛事周期 | **2026 年 9 月 23 日—11 月 1 日** | :::tip[鼓励跨学院、跨专业组队] diff --git a/src/content/docs/zh-cn/competition/matches.md b/src/content/docs/zh-cn/competition/matches.md index ec95fc8..4124845 100644 --- a/src/content/docs/zh-cn/competition/matches.md +++ b/src/content/docs/zh-cn/competition/matches.md @@ -145,6 +145,5 @@ A 类作品最高获得一等奖,B 类最高获得二等奖,C 类最高获 ## 奖励 1. 冠、亚、季军奖杯。 -2. 一、二、三等奖对应档奖金。 3. 校级竞赛一、二、三等奖证书(加盖黑大公章),可申请学分或综测加分。 4. 八强队伍获得 **Simba 战队直通面试机会、明信片套装、3D 打印 NFC 钥匙扣**。 diff --git a/src/content/docs/zh-cn/competition/preparation.mdx b/src/content/docs/zh-cn/competition/preparation.mdx index 0e25609..772e06c 100644 --- a/src/content/docs/zh-cn/competition/preparation.mdx +++ b/src/content/docs/zh-cn/competition/preparation.mdx @@ -9,7 +9,7 @@ import { Tabs, TabItem } from '@astrojs/starlight/components'; ## 报名 -报名时间为 **2026 年 9 月 23 日至 10 月 9 日**。每队 3 人,每人仅可参加一队,报名费为 50 元 / 队。 +报名时间为 **2026 年 9 月 23 日至 10 月 9 日**。每队 3 人,每人仅可参加一队。 1. **联系队友并确认资格。** 所有选手均须为黑龙江大学本科生。 2. **加入赛事官方 QQ 群。** 后续通知将第一时间在群内发布。 diff --git a/src/content/docs/zh-cn/competition/referee-system.md b/src/content/docs/zh-cn/competition/referee-system.md index 217b0a4..615cc96 100644 --- a/src/content/docs/zh-cn/competition/referee-system.md +++ b/src/content/docs/zh-cn/competition/referee-system.md @@ -39,7 +39,7 @@ sidebar: | 供电 | 通过杜邦线提供 **5 V ± 1 V** | | 通信 | 一路 **UART**,可向主控发送键盘、鼠标控制指令 | -装甲板安装时的角度、高度和刚性要求见[装甲模块安装规范](/zh-cn/competition/robot-spec/#装甲模块)。 +装甲板安装时的角度、高度和刚性要求见[装甲模块安装规范](/zh-cn/competition/robot-spec/#装甲模块安装)。 ## 图传模块 diff --git a/src/content/docs/zh-cn/guides/contributing.mdx b/src/content/docs/zh-cn/guides/contributing.mdx index 106b160..e3ec652 100644 --- a/src/content/docs/zh-cn/guides/contributing.mdx +++ b/src/content/docs/zh-cn/guides/contributing.mdx @@ -104,7 +104,7 @@ $$ v = \frac{\Delta x}{\Delta t} $$ -正文、导航、代码与图表标签统一采用无衬线字体,数学公式保留 KaTeX 数学字体。 +正文、导航、代码与图表标签统一使用无衬线字体栈,数学公式使用 KaTeX 自身的数学字体。 ## Mermaid 流程图 @@ -126,7 +126,7 @@ flowchart LR B --> C[核对结果] ``` -流程图随 Starlight 深浅主题切换。宽图默认适应正文宽度,可点击“放大查看”后滚动阅读细节;没有 JavaScript 时保留可读源码。[比赛赛程](/zh-cn/competition/matches/#晋级流程)直接使用原始附件中的 Mermaid 定义。 +流程图在构建时生成静态 SVG,随 Starlight 深浅主题切换,无需浏览器重新渲染。宽图默认适应正文宽度,可点击“放大查看”后滚动阅读细节;没有 JavaScript 时仍能看到图表。图表语法错误会在构建时提示,请修正后再发布。[比赛赛程](/zh-cn/competition/matches/#晋级流程)直接使用原始附件中的 Mermaid 定义。 ## 提示栏 @@ -154,6 +154,21 @@ flowchart LR 用于已确认的禁止事项。例如校内赛图传模块严禁使用 5 V 输入。 ::: +## 字体与静态资源 + +本站不分发字体文件,也不让字体请求阻塞首屏: + +- **正文**使用思源黑体 `Noto Sans SC`,通过 Google Fonts 中国镜像 `fonts.googleapis.cn` 异步加载,并以 `font-display=optional` 声明。加载失败、被拦截或超时都不会留白,浏览器直接使用本地回退链(`system-ui` → `PingFang SC` / `Microsoft YaHei` → `sans-serif`)。 +- **左上角标题**(`ΣDOCS`)使用粗标题字体 `Manrope` 800,回退到 `Archivo Black`。标题含希腊字母 `Σ`,因此只选用带 greek 子集的字体族;字体族由 `--sl-font-display` 提供,样式在 `custom.css` 的 `.site-title` 中。 +- **数学公式**使用 KaTeX 的数学字体,按安装版本固定引用 cdnjs。每条公式样式优先使用对应的 `KaTeX_Main` / `KaTeX_Math` / `KaTeX_Size*` 字体,之后才是本地回退字体。CDN 不可达时仍会显示文字,但替代字体的字形度量不同,复杂公式和大括号可能错位;离线环境不能保证数学排版一致。 +- `src/styles/fonts.generated.css` 由 `scripts/generate-fonts.mjs` 在 `npm run dev` / `npm run build` 前自动生成,**不要手工修改**。脚本会校验生成结果中不含任何相对字体路径,因此打包产物不会包含字体文件。 + +修改字体策略时,请同时调整 `scripts/generate-fonts.mjs` 中的字体栈与 `src/components/Head.astro` 中的加载地址,并运行 `npm run check:fonts` 确认生成结果一致。`public/` 与仓库中不得新增 `.woff2` / `.woff` / `.ttf` 等字体资源。 + +### 站点标志与标题尺寸 + +顶栏是固定高度的,内部元素超高会被直接裁掉,因此标志尺寸受 `--sl-nav-height - 2 * --sl-nav-pad-y` 约束。`custom.css` 把该高度上调 0.25rem 并给出 `--sl-logo-size`(手机 2.25rem / 桌面 2.625rem)。如果需要更大的标志,必须同时上调 `--sl-nav-height`,否则会被裁切;该变量也会影响固定侧栏与正文的偏移。 + ## 发布前检查 1. **核实内容。** 区分正式规则、经验建议、示例与待确认项。 diff --git a/src/content/i18n/en.json b/src/content/i18n/en.json new file mode 100644 index 0000000..b55eca4 --- /dev/null +++ b/src/content/i18n/en.json @@ -0,0 +1,3 @@ +{ + "search.label": "Search" +} diff --git a/src/content/i18n/zh-CN.json b/src/content/i18n/zh-CN.json new file mode 100644 index 0000000..910397c --- /dev/null +++ b/src/content/i18n/zh-CN.json @@ -0,0 +1,8 @@ +{ + "search.label": "搜索", + "expressiveCode.copyButtonTooltip": "复制代码", + "expressiveCode.copyButtonCopied": "已复制!", + "pagefind.clear_search": "清除", + "pagefind.load_more": "加载更多结果", + "pagefind.search_label": "搜索文档" +} diff --git a/src/pages/404.astro b/src/pages/404.astro new file mode 100644 index 0000000..6c4ca48 --- /dev/null +++ b/src/pages/404.astro @@ -0,0 +1,20 @@ +--- +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; +--- + + +

文档可能已移动,或链接地址有误。请使用顶部搜索查找内容,也可以返回中文首页。

+

The page may have moved, or the link may be incorrect. Use the search bar or return to the English home page.

+
diff --git a/src/plugins/rehype-mermaid.mjs b/src/plugins/rehype-mermaid.mjs new file mode 100644 index 0000000..1b6e5a9 --- /dev/null +++ b/src/plugins/rehype-mermaid.mjs @@ -0,0 +1,119 @@ +import { createHash } from 'node:crypto'; +import rehypeMermaid from 'rehype-mermaid'; + +// Use installed sans-serif fonts when measuring labels. Linux CI needs a CJK +// font (e.g. fonts-noto-cjk); rendering must not depend on a remote font CDN. +const fontFamily = 'Arial, "Noto Sans CJK SC", "Microsoft YaHei", "PingFang SC", sans-serif'; +function theme(dark) { + return { + startOnLoad: false, + securityLevel: 'strict', + theme: 'base', + fontFamily, + htmlLabels: false, + flowchart: { htmlLabels: false, useMaxWidth: false }, + themeVariables: { + fontFamily, + darkMode: dark, + background: dark ? '#1a1a1a' : '#ffffff', + primaryColor: dark ? '#401820' : '#ffeaed', + primaryTextColor: dark ? '#eeeeee' : '#292929', + primaryBorderColor: dark ? '#d65a70' : '#c21932', + lineColor: dark ? '#c4c4c4' : '#5c5c5c', + secondaryColor: dark ? '#303030' : '#f4f4f4', + tertiaryColor: dark ? '#242424' : '#fafafa', + clusterBkg: dark ? '#242424' : '#fafafa', + clusterBorder: dark ? '#5c5c5c' : '#b8b8b8', + edgeLabelBackground: dark ? '#242424' : '#ffffff', + }, + }; +} + +function element(tagName, properties, children) { + return { type: 'element', tagName, properties, children }; +} + +// Expose config as plugin options so Astro's content cache sees theme changes. +export const mermaidThemes = { light: theme(false), dark: theme(true) }; + +// Some diagram types use fixed IDs (e.g. sequence arrows). Mermaid's root +// prefix alone does not namespace these, so rewrite their local references too. +function namespaceSvg(svg) { + const ids = new Map(); + const walk = (node, fn) => { + fn(node); + node.children?.forEach((child) => walk(child, fn)); + }; + walk(svg, (node) => { + if (node !== svg && node.properties?.id) { + const id = String(node.properties.id); + ids.set(id, `${svg.properties.id}--${id}`); + } + }); + const rewriteUrls = (value) => value.replace(/url\(\s*(['"]?)#([^\s)'"<>]+)\1\s*\)/g, + (match, quote, id) => ids.has(id) ? `url(#${ids.get(id)})` : match); + walk(svg, (node) => { + if (node.type !== 'element') return; + for (const [key, value] of Object.entries(node.properties)) { + if (key === 'id') node.properties[key] = ids.get(String(value)) ?? value; + else if ((key === 'href' || key === 'xLinkHref') && String(value).startsWith('#')) { + node.properties[key] = ids.has(String(value).slice(1)) ? `#${ids.get(String(value).slice(1))}` : value; + } else if (key === 'ariaLabelledBy' || key === 'ariaDescribedBy') { + const tokens = Array.isArray(value) ? value : String(value).split(/\s+/); + node.properties[key] = tokens.map((id) => ids.get(id) ?? id); + } else if (typeof value === 'string') node.properties[key] = rewriteUrls(value); + } + if (node.tagName === 'style') { + for (const child of node.children) { + if (child.type === 'text') child.value = rewriteUrls(child.value) + .replace(/#([\w-]+)/g, (match, id) => ids.has(id) ? `#${ids.get(id)}` : match); + } + } + }); +} + +/** Compile both themes to inline SVG; CSS follows Starlight's manual theme. */ +export default function rehypeStaticMermaid({ themes = mermaidThemes } = {}) { + return async (tree, file) => { + const diagrams = []; + function visit(node) { + if (node.type === 'element' && node.properties?.className?.includes('mermaid-diagram')) { + diagrams.push(node); + return; + } + node.children?.forEach(visit); + } + visit(tree); + if (!diagrams.length) return; + + // Prefix SVG IDs to prevent collisions across themes and documents. + const prefix = createHash('sha256').update(String(file.path ?? '') + JSON.stringify(diagrams)).digest('hex').slice(0, 12); + const rendered = await Promise.all(['light', 'dark'].map(async (mode) => { + const root = { type: 'root', children: diagrams.map((node) => structuredClone(node.children[0])) }; + await rehypeMermaid({ + strategy: 'inline-svg', + prefix: `mermaid-${prefix}-${mode}`, + mermaidConfig: themes[mode], + })(root, file); + return root.children; + })); + + diagrams.forEach((diagram, index) => { + const variants = ['light', 'dark'].map((mode, modeIndex) => { + const svg = rendered[modeIndex][index]; + namespaceSvg(svg); + // Keep the measured font instead of swapping to an optional webfont. + const viewBox = String(svg.properties.viewBox).trim().split(/[\s,]+/).map(Number); + return element('div', { + className: ['mermaid-variant', `mermaid-${mode}`], + style: `--mermaid-width: ${viewBox[2]}px`, + }, [svg]); + }); + diagram.properties['data-rendered'] = 'static'; + diagram.children = [element('div', { + className: ['mermaid-canvas'], + tabIndex: 0, + }, variants)]; + }); + }; +} diff --git a/src/plugins/remark-mermaid.mjs b/src/plugins/remark-mermaid.mjs index b330642..b486216 100644 --- a/src/plugins/remark-mermaid.mjs +++ b/src/plugins/remark-mermaid.mjs @@ -1,4 +1,4 @@ -/** Render standard fenced Mermaid blocks without requiring MDX components. */ +/** Reserve Mermaid fences before code highlighting, in both Markdown and MDX. */ export default function remarkMermaid() { return (tree) => { const visit = (parent) => { @@ -6,9 +6,10 @@ export default function remarkMermaid() { parent.children = parent.children.map((node) => { if (node.type === 'code' && node.lang === 'mermaid') { // HAST data works in both Markdown and MDX, without injecting raw HTML. - // Text nodes safely preserve the source as the no-JavaScript fallback. + // rehype-mermaid renders this source during compilation. return { type: 'paragraph', + position: node.position, children: [], data: { hName: 'div', @@ -16,7 +17,8 @@ export default function remarkMermaid() { hChildren: [{ type: 'element', tagName: 'pre', - properties: { className: ['mermaid-source'] }, + properties: { className: ['mermaid'] }, + position: node.position, children: [{ type: 'text', value: node.value }], }], }, diff --git a/src/scripts/mermaid.ts b/src/scripts/mermaid.ts index d60e413..a0da7de 100644 --- a/src/scripts/mermaid.ts +++ b/src/scripts/mermaid.ts @@ -1,113 +1,39 @@ -// Only diagram pages load Mermaid. Authors use ordinary fenced code blocks. -const sources = new WeakMap(); -let running = false; -let pending = false; -let sequence = 0; - -async function renderDiagrams() { - if (running) { - pending = true; - return; - } - const diagrams = [...document.querySelectorAll('.mermaid-diagram')]; - if (!diagrams.length) return; - running = true; - try { - const { default: mermaid } = await import('mermaid'); - const dark = document.documentElement.dataset.theme === 'dark'; - mermaid.initialize({ - startOnLoad: false, - securityLevel: 'strict', - theme: 'base', - themeVariables: { - darkMode: dark, - background: dark ? '#1a1a1a' : '#ffffff', - primaryColor: dark ? '#401820' : '#ffeaed', - primaryTextColor: dark ? '#eeeeee' : '#292929', - primaryBorderColor: dark ? '#d65a70' : '#c21932', - lineColor: dark ? '#c4c4c4' : '#5c5c5c', - secondaryColor: dark ? '#303030' : '#f4f4f4', - tertiaryColor: dark ? '#242424' : '#fafafa', - clusterBkg: dark ? '#242424' : '#fafafa', - clusterBorder: dark ? '#5c5c5c' : '#b8b8b8', - edgeLabelBackground: dark ? '#242424' : '#ffffff', - }, - fontFamily: getComputedStyle(document.documentElement).getPropertyValue('--sl-font').trim(), - flowchart: { htmlLabels: false, useMaxWidth: false }, - suppressErrorRendering: true, - }); - for (const diagram of diagrams) { - if (!diagram.isConnected) continue; - const source = sources.get(diagram) ?? diagram.querySelector('.mermaid-source')?.textContent; - if (!source) continue; - sources.set(diagram, source); - try { - const { svg } = await mermaid.render(`mermaid-diagram-${++sequence}`, source); - if (!diagram.isConnected) continue; - const previousCanvas = diagram.querySelector('.mermaid-canvas'); - const position = { left: previousCanvas?.scrollLeft ?? 0, top: previousCanvas?.scrollTop ?? 0 }; - const chinese = document.documentElement.lang.startsWith('zh'); - const canvas = document.createElement('div'); - canvas.className = 'mermaid-canvas'; - canvas.innerHTML = svg; - canvas.setAttribute('role', 'region'); - canvas.setAttribute('aria-label', chinese ? 'Mermaid 流程图,可滚动查看' : 'Mermaid diagram, scroll to explore'); - canvas.tabIndex = 0; - const width = canvas.querySelector('svg')?.viewBox.baseVal.width; - if (width) canvas.style.setProperty('--mermaid-width', `${width}px`); - - const zoom = document.createElement('button'); - zoom.type = 'button'; - zoom.className = 'mermaid-zoom'; - const updateButton = () => { - const expanded = diagram.dataset.zoomed === 'true'; - zoom.textContent = chinese ? (expanded ? '适应宽度' : '放大查看') : (expanded ? 'Fit to width' : 'Enlarge diagram'); - zoom.setAttribute('aria-pressed', String(expanded)); - }; - updateButton(); - zoom.addEventListener('click', () => { - diagram.dataset.zoomed = String(diagram.dataset.zoomed !== 'true'); - updateButton(); - canvas.scrollTop = 0; - canvas.scrollLeft = 0; - if (diagram.dataset.zoomed === 'true') { - // Start at the topmost node, even when a wide bracket is asymmetric. - const firstNode = [...canvas.querySelectorAll('.node')] - .map((node) => node.getBoundingClientRect()) - .sort((a, b) => a.top - b.top || a.left - b.left)[0]; - canvas.scrollLeft = firstNode - ? firstNode.left + firstNode.width / 2 - canvas.getBoundingClientRect().left - canvas.clientWidth / 2 - : (canvas.scrollWidth - canvas.clientWidth) / 2; - } - }); - diagram.replaceChildren(zoom, canvas); - canvas.scrollLeft = position.left; - canvas.scrollTop = position.top; - diagram.dataset.rendered = 'true'; - } catch (error) { - // Preserve the original text if a contributor's diagram cannot be parsed. - const fallback = document.createElement('pre'); - fallback.className = 'mermaid-source'; - fallback.textContent = source; - diagram.replaceChildren(fallback); - diagram.dataset.rendered = 'error'; - console.error('Unable to render Mermaid diagram:', error); +// Diagrams are already rendered by rehype-mermaid. Only the zoom button needs JS. +function setupDiagramZoom() { + const chinese = document.documentElement.lang.startsWith('zh'); + for (const diagram of document.querySelectorAll('.mermaid-diagram')) { + if (diagram.querySelector('.mermaid-zoom')) continue; + const canvas = diagram.querySelector('.mermaid-canvas'); + if (!canvas) continue; + canvas.setAttribute('role', 'region'); + canvas.setAttribute('aria-label', chinese ? 'Mermaid 图表,可滚动查看' : 'Mermaid diagram, scroll to explore'); + const zoom = document.createElement('button'); + zoom.type = 'button'; + zoom.className = 'mermaid-zoom'; + const updateButton = () => { + const expanded = diagram.dataset.zoomed === 'true'; + zoom.textContent = chinese ? (expanded ? '适应宽度' : '放大查看') : (expanded ? 'Fit to width' : 'Enlarge diagram'); + zoom.setAttribute('aria-pressed', String(expanded)); + }; + updateButton(); + zoom.addEventListener('click', () => { + diagram.dataset.zoomed = String(diagram.dataset.zoomed !== 'true'); + updateButton(); + canvas.scrollTop = 0; + canvas.scrollLeft = 0; + if (diagram.dataset.zoomed === 'true') { + const mode = document.documentElement.dataset.theme === 'dark' ? 'dark' : 'light'; + const firstNode = [...canvas.querySelectorAll(`.mermaid-${mode} .node`)] + .map((node) => node.getBoundingClientRect()) + .sort((a, b) => a.top - b.top || a.left - b.left)[0]; + canvas.scrollLeft = firstNode + ? firstNode.left + firstNode.width / 2 - canvas.getBoundingClientRect().left - canvas.clientWidth / 2 + : (canvas.scrollWidth - canvas.clientWidth) / 2; } - } - } catch (error) { - console.error('Unable to load Mermaid:', error); - } finally { - running = false; - if (pending) { - pending = false; - void renderDiagrams(); - } + }); + diagram.prepend(zoom); } } -void renderDiagrams(); -document.addEventListener('astro:page-load', renderDiagrams); -new MutationObserver(() => void renderDiagrams()).observe(document.documentElement, { - attributes: true, - attributeFilter: ['data-theme'], -}); +setupDiagramZoom(); +document.addEventListener('astro:page-load', setupDiagramZoom); diff --git a/src/styles/custom.css b/src/styles/custom.css index 126e859..06e2cc2 100644 --- a/src/styles/custom.css +++ b/src/styles/custom.css @@ -1,7 +1,9 @@ :root { - --sl-font: 'Segoe UI', 'Microsoft YaHei', 'Noto Sans', Arial, sans-serif; - --sl-font-mono: var(--sl-font); - --sl-font-system-mono: var(--sl-font); + /* + * `--sl-font`, `--sl-font-mono` and every KaTeX font family are set in + * `fonts.generated.css`, which is generated by `scripts/generate-fonts.mjs` + * and loaded after this file. Nothing here may point at a font binary. + */ --sl-color-accent-low: #401820; --sl-color-accent: #d91c3a; --sl-color-accent-high: #ffb3bd; @@ -27,14 +29,52 @@ --sl-color-accent-high: #891328; } -/* Includes navigation, form controls, code, and diagram labels. KaTeX keeps its math fonts. */ +/* + * Body text and code inherit the same stack. Mermaid uses its build-time sans + * stack so optional webfonts cannot change label widths. Math keeps its own + * families from `fonts.generated.css`, which are resolved against local TeX + * faces when the CDN is unavailable. + */ body, button, input, select, textarea, code, pre, kbd, samp { font-family: var(--sl-font); } + +/* + * Site title ("ΣDOCS"): a heavy display face instead of the inherited body + * stack. `--sl-font-display` starts with Google's Manrope at weight 800 and + * falls back to Archivo Black, then locally installed faces, so a blocked + * webfont still renders a bold title. + */ +.site-title { + font-family: var(--sl-font-display); + font-weight: 800; + letter-spacing: -0.01em; +} + +/* + * Logo. The upstream rule sizes the image to exactly the nav's content box + * (`nav-height - 2 * nav-pad-y`), so the square mark is capped at 2rem on phones + * and 2.5rem on desktop, and grows only when the nav grows. Bumping the nav by + * 0.25rem takes it to 36px (+13%) on phones and 42px (+5%) on desktop. + * + * The extra nav height also shifts the fixed sidebar and the content offset, + * which is the visible cost of the larger mark. + */ +:root { + --sl-nav-height: 3.75rem; + --sl-logo-size: 2.25rem; +} +@media (min-width: 50em) { + :root { + --sl-nav-height: 4.25rem; + --sl-logo-size: 2.625rem; + } +} + .site-title img { - padding: .25rem; + height: var(--sl-logo-size); + flex: none; border-radius: .25rem; - background: #222222; } :root[data-theme='dark'] .sidebar-pane a[aria-current='page'] { color: #ffffff; @@ -50,14 +90,20 @@ body, button, input, select, textarea, code, pre, kbd, samp { } .mermaid-canvas { max-height: 75vh; overflow: auto; margin-top: .75rem; } .mermaid-diagram svg { display: block; width: 100%; height: auto; margin-inline: auto; } +/* HTML labels, if enabled per diagram, must not inherit article spacing. */ +.mermaid-diagram svg p { margin: 0; } +.mermaid-variant { margin: 0; } +.mermaid-dark { display: none; } +:root[data-theme='dark'] .mermaid-light { display: none; } +:root[data-theme='dark'] .mermaid-dark { display: block; } .mermaid-diagram[data-zoomed='true'] svg { width: var(--mermaid-width); max-width: none; } .mermaid-zoom { padding: .35rem .75rem; border: 1px solid var(--sl-color-gray-5); border-radius: .25rem; color: var(--sl-color-text); background: var(--sl-color-bg); cursor: pointer; } .mermaid-zoom:hover { border-color: var(--sl-color-text-accent); } -.mermaid-diagram svg :is(text, tspan, foreignObject, span, p) { font-family: var(--sl-font) !important; } -.mermaid-source { white-space: pre; } @media print { .mermaid-diagram { overflow: visible; padding: 0; border: 0; } .mermaid-zoom { display: none; } .mermaid-canvas { max-height: none; overflow: visible; } + :root[data-theme] .mermaid-light { display: block; } + :root[data-theme] .mermaid-dark { display: none; } .mermaid-diagram svg, .mermaid-diagram[data-zoomed='true'] svg { width: 100%; height: auto; } }