From 61f9ab26c13e2f696e2c370fb85618908be8b11e Mon Sep 17 00:00:00 2001 From: Guide Date: Tue, 3 Mar 2026 13:41:57 +0800 Subject: [PATCH 1/4] =?UTF-8?q?docs:=E6=B5=8B=E5=BC=80=E9=9D=A2=E8=AF=95?= =?UTF-8?q?=E9=A2=98=E6=B7=BB=E5=8A=A0=E9=85=8D=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/other/test-development.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/other/test-development.md b/docs/other/test-development.md index 05439ab..756660f 100644 --- a/docs/other/test-development.md +++ b/docs/other/test-development.md @@ -81,6 +81,8 @@ head: ### 软件测试的流程是怎样的? +![软件测试的流程](https://oss.javaguide.cn/github/javaguide/interview-preparation/test-development-testing-process.png) + 一个相对完整的软件测试流程,我理解大致包含这几个阶段: - **需求分析:** 首先是深入理解需求文档,分析需求的可测性,有时候还需要参与需求评审,尽早发现需求层面的问题。 @@ -305,6 +307,8 @@ Web 应用的自动化测试,简单说就是**用代码(脚本)来控制 实际项目中,一般遵循“测试金字塔”:单元测试自动化率最高(>90%),其上依次是集成测试(60–80%)和少量关键系统/UI 自动化(20–40%),回归尽量依赖自动化,而验收测试则以人工探索和真实业务场景为主。 +![测试金字塔](https://oss.javaguide.cn/github/javaguide/test-development/test-development-testing-pyramid.png) + ### 单元测试、集成测试、系统测试、回归测试、验收测试最重要的是那一步? 严格来说,这几个阶段**都重要、互相补充**,但如果面试官逼问“最重要是哪一步”,可以这样回答(重点是**理由**): From 24a189940ab9ab750b8cb7f5d37c254384bf0fb6 Mon Sep 17 00:00:00 2001 From: Guide Date: Thu, 12 Mar 2026 17:23:55 +0800 Subject: [PATCH 2/4] =?UTF-8?q?docs:=20=E6=96=B0=E5=A2=9E=E5=88=86?= =?UTF-8?q?=E5=B8=83=E5=BC=8F=E9=9D=A2=E8=AF=95=E9=A2=98=E6=80=BB=E7=BB=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude/settings.local.json | 8 + .gitignore | 1 + README.md | 6 +- docs/.vuepress/client.ts | 7 + docs/.vuepress/components/LayoutToggle.vue | 142 +++ docs/.vuepress/sidebar/index.ts | 7 + docs/.vuepress/styles/index.scss | 137 +++ docs/.vuepress/theme.ts | 1 + docs/README.md | 54 +- docs/cs-basics/network.md | 18 +- docs/cs-basics/operating-system.md | 16 - docs/database/mysql.md | 18 +- docs/database/redis.md | 18 +- docs/distributed-system/distributed-system.md | 918 +++++++++++++++++ docs/home.md | 4 + docs/java/java-basis.md | 18 +- docs/java/java-collection.md | 16 - docs/java/java-concurrent.md | 16 - docs/java/java-jvm.md | 16 - docs/other/test-development.drawio | 203 ++++ docs/other/test-development.md | 16 +- docs/snippets/article-header.snippet.md | 2 + docs/snippets/small-advertisement.snippet.md | 11 + docs/snippets/yuanma.snippet.md | 25 - docs/system-design/design-pattern.md | 16 - docs/system-design/spring.md | 18 +- package.json | 1 + pnpm-lock.yaml | 929 +++++++++++++++++- 28 files changed, 2424 insertions(+), 218 deletions(-) create mode 100644 .claude/settings.local.json create mode 100644 docs/.vuepress/client.ts create mode 100644 docs/.vuepress/components/LayoutToggle.vue create mode 100644 docs/distributed-system/distributed-system.md create mode 100644 docs/other/test-development.drawio create mode 100644 docs/snippets/article-header.snippet.md delete mode 100644 docs/snippets/yuanma.snippet.md diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..350712b --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,8 @@ +{ + "permissions": { + "allow": [ + "Bash(pnpm install:*)", + "WebSearch" + ] + } +} diff --git a/.gitignore b/.gitignore index b27dc4e..f737a78 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ /node_modules /.vscode /dist +*.bkp diff --git a/README.md b/README.md index 49b500e..85a51c3 100755 --- a/README.md +++ b/README.md @@ -25,9 +25,13 @@ ## 系统设计 -- [Spring和Spring Boot常见面试题总结](./docs/system-design/spring.md) +- [Spring和Spring Boot常见面试题总结](./docs/system-design/spring.md) - [设计模式常见面试题总结](./docs/system-design/design-pattern.md) +## 分布式系统 + +- [分布式系统常见面试题总结](./docs/distributed-system/distributed-system.md) + ## 测试开发 - [测试开发常见面试题总结](./docs/other/test-development.md) diff --git a/docs/.vuepress/client.ts b/docs/.vuepress/client.ts new file mode 100644 index 0000000..c5ebd97 --- /dev/null +++ b/docs/.vuepress/client.ts @@ -0,0 +1,7 @@ +import { defineClientConfig } from "vuepress/client"; +import { h } from "vue"; +import LayoutToggle from "./components/LayoutToggle.vue"; + +export default defineClientConfig({ + rootComponents: [() => h(LayoutToggle)], +}); diff --git a/docs/.vuepress/components/LayoutToggle.vue b/docs/.vuepress/components/LayoutToggle.vue new file mode 100644 index 0000000..e18e7f9 --- /dev/null +++ b/docs/.vuepress/components/LayoutToggle.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/docs/.vuepress/sidebar/index.ts b/docs/.vuepress/sidebar/index.ts index f43b224..1707125 100644 --- a/docs/.vuepress/sidebar/index.ts +++ b/docs/.vuepress/sidebar/index.ts @@ -57,6 +57,13 @@ export default sidebar({ prefix: "system-design/", children: ["spring", "design-pattern"], }, + { + text: "分布式系统", + icon: "network", + collapsible: false, + prefix: "distributed-system/", + children: ["distributed-system"], + }, { text: "测开", icon: "framework", diff --git a/docs/.vuepress/styles/index.scss b/docs/.vuepress/styles/index.scss index a895ab8..865c5f9 100644 --- a/docs/.vuepress/styles/index.scss +++ b/docs/.vuepress/styles/index.scss @@ -3,3 +3,140 @@ body { font-size: 16px; } } + +// ============================================ +// 沉浸式阅读模式 - 隐藏导航栏、侧边栏和目录 +// ============================================ + +// 过渡动画 +.vp-navbar, +.vp-sidebar, +.vp-page, +.theme-container .vp-page { + transition: + transform 0.3s ease, + opacity 0.3s ease, + margin 0.3s ease, + padding 0.3s ease, + width 0.3s ease; +} + +// 隐藏布局模式 +html.layout-hidden { + // 隐藏顶部导航栏 + .vp-navbar { + transform: translateY(-100%) !important; + opacity: 0 !important; + pointer-events: none !important; + } + + // 隐藏左侧边栏 + .vp-sidebar { + transform: translateX(-100%) !important; + opacity: 0 !important; + pointer-events: none !important; + width: 0 !important; + } + + // 隐藏侧边栏切换按钮(小屏幕下的展开按钮) + .toggle-sidebar-wrapper { + display: none !important; + opacity: 0 !important; + pointer-events: none !important; + } + + // 隐藏侧边栏遮罩层 + .vp-sidebar-mask { + display: none !important; + } + + // 侧边栏包装器 + .vp-sidebar-wrapper, + .sidebar-wrapper { + width: 0 !important; + min-width: 0 !important; + padding: 0 !important; + margin: 0 !important; + } + + // 隐藏右侧目录 (TOC) + .vp-toc-placeholder, + .toc-wrapper, + .vp-toc, + aside.vp-toc, + .toc { + display: none !important; + width: 0 !important; + } + + // 主容器调整 - 移除左侧 padding/margin + .theme-container { + padding-left: 0 !important; + padding-right: 0 !important; + + .vp-page { + padding-left: 2rem !important; + padding-right: 2rem !important; + padding-top: 1rem !important; + margin-left: 0 !important; + max-width: 100% !important; + width: 100% !important; + } + } + + // 主题内容区域调整 - 让内容更宽 + .theme-hope-content, + .vp-page-content, + .vp-content { + max-width: 100% !important; + width: 100% !important; + margin: 0 !important; + padding: 1rem 2rem !important; + } + + // 页面容器调整 + .vp-page-container { + padding-top: 1rem !important; + padding-left: 0 !important; + padding-right: 0 !important; + max-width: 100% !important; + } + + // 确保内容区域居中且宽度适中 + .theme-container > main { + margin-left: 0 !important; + padding-left: 0 !important; + max-width: 100% !important; + } + + // 响应式调整 + @media (min-width: 960px) { + .theme-container .vp-page { + margin-left: 0 !important; + padding-left: 3rem !important; + padding-right: 3rem !important; + } + + .theme-hope-content, + .vp-page-content, + .vp-content { + max-width: 100% !important; + padding: 1rem 2rem !important; + } + } + + @media (min-width: 1440px) { + .theme-container .vp-page { + margin-left: 0 !important; + padding-left: 4rem !important; + padding-right: 4rem !important; + } + + .theme-hope-content, + .vp-page-content, + .vp-content { + max-width: 100% !important; + padding: 1rem 3rem !important; + } + } +} diff --git a/docs/.vuepress/theme.ts b/docs/.vuepress/theme.ts index be5dd74..1e257f8 100644 --- a/docs/.vuepress/theme.ts +++ b/docs/.vuepress/theme.ts @@ -32,6 +32,7 @@ export default hopeTheme({ markdown: { align: true, codeTabs: true, + mermaid: true, gfm: true, include: { resolvePath: (file, cwd) => { diff --git a/docs/README.md b/docs/README.md index 8151335..cea5102 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,10 +1,23 @@ --- home: true icon: home -title: Java 面试指南 +title: 后端面试突击指南 heroImage: /logo.svg heroText: JavaGuide 面试突击版 -tagline: Java 学习&面试指南(Go、Python 后端面试通用,计算机基础面试总结) +head: + - - meta + - name: keywords + content: JavaGuide,JavaGuide 面试突击版,Java面试,Java面试指南,Java八股文,后端面试,后端开发,数据库面试,MySQL面试,Redis面试,分布式,高并发,高性能,高可用,系统设计,消息队列,缓存,计算机网络,Linux + - - meta + - property: og:type + content: website + - - meta + - property: og:url + content: https://interview.javaguide.cn/ + - - meta + - property: og:image + content: https://interview.javaguide.cn/logo.png +tagline: Java 面试 & 后端通用面试突击指南,覆盖计算机基础、数据库、分布式、高并发与系统设计 actions: - text: 开始阅读 link: /home.md @@ -16,27 +29,36 @@ footer: |- 鄂ICP备2020015769号-1 | 主题: VuePress Theme Hope --- -## 关于网站 +## 🔥必看 -JavaGuide 已经持续维护 6 年多了,累计提交了接近 **6000** commit ,共有 **570+** 多位贡献者共同参与维护和完善。真心希望能够把这个项目做好,真正能够帮助到有需要的朋友! +- **面试资料补充**: + - [《Java 面试指北》](https://javaguide.cn/zhuanlan/java-mian-shi-zhi-bei.html):四年打磨,和 JavaGuide 开源版的内容互补,带你从零开始系统准备后端面试! + - [《后端面试高频系统设计&场景题》](https://javaguide.cn/zhuanlan/back-end-interview-high-frequency-system-design-and-scenario-questions.html):30+ 道高频系统设计和场景面试,助你应对当下中大厂面试趋势。 +- **大模型实战项目**: [⭐AI 智能面试辅助平台 + RAG 知识库](https://javaguide.cn/zhuanlan/interview-guide.html)(基于 Spring Boot 4.0 + Java 21 + Spring AI 2.0 ,非常适合作为学习和简历项目,学习门槛低)。 -如果觉得 JavaGuide 的内容对你有帮助的话,还请点个免费的 Star(绝不强制点 Star,觉得内容不错有收获再点赞就好),这是对我最大的鼓励,感谢各位一路同行,共勉!传送门:[GitHub](https://github.com/Snailclimb/JavaGuide) | [Gitee](https://gitee.com/SnailClimb/JavaGuide)。 +## 🌟文章推荐 + +- **面试准备**: [Java 后端面试通关计划(涵盖后端通用体系)](https://javaguide.cn/interview-preparation/backend-interview-plan.html)(如果你想要系统准备 Java 后端面试但又不知道如何开始的,一定要看这篇) +- **高频考点**: + - [Java并发常见面试题总结](https://interview.javaguide.cn/java/java-concurrent.html) + - [MySQL常见面试题总结](https://interview.javaguide.cn/database/mysql.html) + - [Redis常见面试题总结](https://interview.javaguide.cn/database/redis.html) + - [计算机网络常见面试题总结](https://interview.javaguide.cn/cs-basics/network.html) -这是 [JavaGuide](https://javaguide.cn/) 面试突击版本,适合突击面试的小伙伴。并且,提供了 PDF 下载,方便大家离线阅读/打印,阅读体验非常高。 -如果你准备面试的时间比较充足的话,建议阅读完整版,针对重要的知识点有更详细的讲解。地址:**[javaguide.cn](https://javaguide.cn/)**。 +## 🚀 PDF 版本 & 面试交流群 -专属面试小册/一对一交流/简历修改/专属求职指南,欢迎加入 **[JavaGuide 知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)**(点击链接即可查看星球的详细介绍,一定确定自己真的需要再加入)。 +- 如果你更喜欢 **PDF**(比如通勤/离线阅读/打印学习),扫描下方二维码,后台回复“**PDF**”即可获取最新版(持续更新,详细介绍见:**[2026 最新后端面试 PDF 资料](./interview-preparation/pdf-interview-javaguide.md)**)。 +- 如果你需要加入后端面试交流群,扫描下方二维码,后台回复“**微信**”即可加群。 -## 关于作者 +JavaGuide 公众号 -- [我曾经也是网瘾少年](https://javaguide.cn/about-the-author/internet-addiction-teenager.html) -- [害,毕业三年了!](https://javaguide.cn/about-the-author/my-college-life.html) -- [我的知识星球 4 岁了!](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html) -- [坚持写技术博客六年了](https://javaguide.cn/about-the-author/writing-technology-blog-six-years.html) +## 🌐 关于网站 -## 公众号 +JavaGuide 已经持续维护 6 年多了,累计提交了 **6000+** commit ,共有 **620+** 多位贡献者共同参与维护和完善。真心希望能够把这个项目做好,真正能够帮助到有需要的朋友! -最新更新会第一时间同步在公众号,推荐关注!另外,公众号上有很多干货不会同步在线阅读网站。 +如果觉得 JavaGuide 的内容对你有帮助的话,还请点个免费的 Star(绝不强制点 Star,觉得内容不错有收获再点赞就好),这是对我最大的鼓励,感谢各位一路同行,共勉!传送门:[GitHub](https://github.com/Snailclimb/JavaGuide) | [Gitee](https://gitee.com/SnailClimb/JavaGuide)。 -JavaGuide 公众号 +- [项目介绍](https://javaguide.cn/javaguide/intro.html)(JavaGuide 的诞生) +- [贡献指南](https://javaguide.cn/javaguide/contribution-guideline.html)(期待你的贡献,奖励丰富) +- [常见问题](https://javaguide.cn/javaguide/faq.html)(统一回复大家的一些疑问) \ No newline at end of file diff --git a/docs/cs-basics/network.md b/docs/cs-basics/network.md index d9f3ac4..cf15df3 100755 --- a/docs/cs-basics/network.md +++ b/docs/cs-basics/network.md @@ -10,23 +10,7 @@ head: content: 计算机网络面试题,OSI七层模型,TCP/IP四层模型,HTTP,HTTPS,HTTP/2,HTTP/3,QUIC,GET POST区别,WebSocket,DNS解析,三次握手,四次挥手,TCP UDP区别,Session Cookie --- - - -## 前言 - -由于很多读者都有突击面试的需求,所以我在几年前就弄了 **JavaGuide 面试突击版本**(JavaGuide 内容精简版,只保留重点),并持续完善跟进。对于喜欢纸质阅读的朋友来说,也可以打印出来,整体阅读体验非常高! - -除了只保留最常问的面试题之外,我还进一步对重点中的重点进行了⭐️标注。并且,有亮色(白天)和暗色(夜间)两个主题选择,需要打印出来的朋友记得选择亮色版本。 - -对于时间比较充裕的朋友,我个人还是更推荐 [JavaGuide](https://javaguide.cn/) 网站系统学习,内容更全面,更深入。 - -JavaGuide 已经持续维护 6 年多了,累计提交了接近 **6000** commit ,共有 **570+** 多位贡献者共同参与维护和完善。用心做原创优质内容,如果觉得有帮助的话,欢迎点赞分享!传送门:[GitHub](https://github.com/Snailclimb/JavaGuide) | [Gitee](https://gitee.com/SnailClimb/JavaGuide)。 - -对于需要更进一步面试辅导服务的读者,欢迎加入 **[JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)**(技术专栏/一对一提问/简历修改/求职指南/面试打卡),绝对物超所值! - -面试突击最新版本可以在我的公众号回复“**PDF**”获取([JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)会提前同步最新版,针对球友的一个小福利)。 - -![JavaGuide 官方公众号](https://oss.javaguide.cn/github/javaguide/gongzhonghaoxuanchuan.png) + 这部分内容摘自 [JavaGuide](https://javaguide.cn/) 下面几篇文章中的重点: diff --git a/docs/cs-basics/operating-system.md b/docs/cs-basics/operating-system.md index 9f50395..5472006 100644 --- a/docs/cs-basics/operating-system.md +++ b/docs/cs-basics/operating-system.md @@ -10,22 +10,6 @@ head: content: 操作系统面试题,用户态内核态,系统调用,进程线程区别,多线程同步,死锁预防,虚拟内存,分页分段,TLB快表,页面置换算法,LRU,硬链接软链接,磁盘调度算法 --- -## 前言 - -由于很多读者都有突击面试的需求,所以我在几年前就弄了 **JavaGuide 面试突击版本**(JavaGuide 内容精简版,只保留重点),并持续完善跟进。对于喜欢纸质阅读的朋友来说,也可以打印出来,整体阅读体验非常高! - -除了只保留最常问的面试题之外,我还进一步对重点中的重点进行了⭐️标注。并且,有亮色(白天)和暗色(夜间)两个主题选择,需要打印出来的朋友记得选择亮色版本。 - -对于时间比较充裕的朋友,我个人还是更推荐 [JavaGuide](https://javaguide.cn/) 网站系统学习,内容更全面,更深入。 - -JavaGuide 已经持续维护 6 年多了,累计提交了接近 **6000** commit ,共有 **570+** 多位贡献者共同参与维护和完善。用心做原创优质内容,如果觉得有帮助的话,欢迎点赞分享!传送门:[GitHub](https://github.com/Snailclimb/JavaGuide) | [Gitee](https://gitee.com/SnailClimb/JavaGuide)。 - -对于需要更进一步面试辅导服务的读者,欢迎加入 **[JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)**(技术专栏/一对一提问/简历修改/求职指南/面试打卡),绝对物超所值! - -面试突击最新版本可以在我的公众号回复“**PDF**”获取([JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)会提前同步最新版,针对球友的一个小福利)。 - -![JavaGuide 官方公众号](https://oss.javaguide.cn/github/javaguide/gongzhonghaoxuanchuan.png) - 这部分内容摘自 [JavaGuide](https://javaguide.cn/) 下面几篇文章中的重点: - [操作系统常见面试题总结(上)](https://javaguide.cn/cs-basics/operating-system/operating-system-basic-questions-01.html)(操作系统基础、进程和线程、死锁) diff --git a/docs/database/mysql.md b/docs/database/mysql.md index 27c9ed3..8090274 100755 --- a/docs/database/mysql.md +++ b/docs/database/mysql.md @@ -11,23 +11,7 @@ head: content: MySQL面试题,MySQL基础架构,InnoDB存储引擎,MySQL索引,B+树索引,事务隔离级别,redo log,undo log,binlog,MVCC,行级锁,表锁,慢查询优化,SQL优化 --- - - -## 前言 - -由于很多读者都有突击面试的需求,所以我在几年前就弄了 **JavaGuide 面试突击版本**(JavaGuide 内容精简版,只保留重点),并持续完善跟进。对于喜欢纸质阅读的朋友来说,也可以打印出来,整体阅读体验非常高! - -除了只保留最常问的面试题之外,我还进一步对重点中的重点进行了⭐️标注。并且,有亮色(白天)和暗色(夜间)两个主题选择,需要打印出来的朋友记得选择亮色版本。 - -对于时间比较充裕的朋友,我个人还是更推荐 [JavaGuide](https://javaguide.cn/) 网站系统学习,内容更全面,更深入。 - -JavaGuide 已经持续维护 6 年多了,累计提交了接近 **6000** commit ,共有 **570+** 多位贡献者共同参与维护和完善。用心做原创优质内容,如果觉得有帮助的话,欢迎点赞分享!传送门:[GitHub](https://github.com/Snailclimb/JavaGuide) | [Gitee](https://gitee.com/SnailClimb/JavaGuide)。 - -对于需要更进一步面试辅导服务的读者,欢迎加入 **[JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)**(技术专栏/一对一提问/简历修改/求职指南/面试打卡),绝对物超所值! - -面试突击最新版本可以在我的公众号回复“**PDF**”获取([JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)会提前同步最新版,针对球友的一个小福利)。 - -![JavaGuide 官方公众号](https://oss.javaguide.cn/github/javaguide/gongzhonghaoxuanchuan.png) + 这部分内容摘自 [JavaGuide](https://javaguide.cn/) 下面几篇文章中的重点: diff --git a/docs/database/redis.md b/docs/database/redis.md index 843c711..71881c8 100644 --- a/docs/database/redis.md +++ b/docs/database/redis.md @@ -10,23 +10,7 @@ head: content: Redis面试题,Redis数据类型,Redis持久化,RDB,AOF,Redis事务,Redis性能优化,缓存穿透,缓存击穿,缓存雪崩,Redis bigkey,Redis hotkey,Redis Sentinel,Redis Cluster,分布式锁 --- - - -## 前言 - -由于很多读者都有突击面试的需求,所以我在几年前就弄了 **JavaGuide 面试突击版本**(JavaGuide 内容精简版,只保留重点),并持续完善跟进。对于喜欢纸质阅读的朋友来说,也可以打印出来,整体阅读体验非常高! - -除了只保留最常问的面试题之外,我还进一步对重点中的重点进行了⭐️标注。并且,有亮色(白天)和暗色(夜间)两个主题选择,需要打印出来的朋友记得选择亮色版本。 - -对于时间比较充裕的朋友,我个人还是更推荐 [JavaGuide](https://javaguide.cn/) 网站系统学习,内容更全面,更深入。 - -JavaGuide 已经持续维护 6 年多了,累计提交了接近 **6000** commit ,共有 **570+** 多位贡献者共同参与维护和完善。用心做原创优质内容,如果觉得有帮助的话,欢迎点赞分享!传送门:[GitHub](https://github.com/Snailclimb/JavaGuide) | [Gitee](https://gitee.com/SnailClimb/JavaGuide)。 - -对于需要更进一步面试辅导服务的读者,欢迎加入 **[JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)**(技术专栏/一对一提问/简历修改/求职指南/面试打卡),绝对物超所值! - -面试突击最新版本可以在我的公众号回复“**PDF**”获取([JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)会提前同步最新版,针对球友的一个小福利)。 - -![JavaGuide 官方公众号](https://oss.javaguide.cn/github/javaguide/gongzhonghaoxuanchuan.png) + 这部分内容摘自 [JavaGuide](https://javaguide.cn/) 下面几篇文章中的重点: diff --git a/docs/distributed-system/distributed-system.md b/docs/distributed-system/distributed-system.md new file mode 100644 index 0000000..6c6237b --- /dev/null +++ b/docs/distributed-system/distributed-system.md @@ -0,0 +1,918 @@ +--- +title: 分布式系统常见面试题总结 +category: 分布式 +description: 分布式系统常见面试题总结:涵盖CAP/BASE理论、分布式锁、分布式ID、分布式事务、配置中心、API网关、RPC框架、ZooKeeper、分布式算法(Paxos/Raft/ZAB/Gossip)等核心知识点。 +tag: + - 分布式 +head: + - - meta + - name: keywords + content: 分布式系统,CAP定理,BASE理论,分布式锁,分布式ID,分布式事务,配置中心,API网关,RPC,Dubbo,ZooKeeper,Paxos,Raft,ZAB,Gossip,分布式面试题 + +--- + + + +这部分内容摘自 [JavaGuide](https://javaguide.cn/) 下面几篇文章的重点: + +分布式理论&算法&协议: + +- [CAP 理论和 BASE 理论解读](https://javaguide.cn/distributed-system/protocol/cap-and-base-theorem.html) +- [Paxos 算法解读](https://javaguide.cn/distributed-system/protocol/paxos-algorithm.html) +- [Raft 算法解读](https://javaguide.cn/distributed-system/protocol/raft-algorithm.html) +- [ZAB 协议详解](https://javaguide.cn/distributed-system/protocol/zab.html) +- [Gossip 协议详解](https://javaguide.cn/distributed-system/protocol/gossip-protocol.html) +- [一致性哈希算法详解](https://javaguide.cn/distributed-system/protocol/consistent-hashing.html) + +RPC: + +- [RPC 基础常见面试题总结](https://javaguide.cn/distributed-system/rpc/rpc-intro.html) +- [Dubbo 常见面试题总结](https://javaguide.cn/distributed-system/rpc/dubbo.html) + +分布式 ID: + +- [分布式ID介绍&实现方案总结](https://javaguide.cn/distributed-system/distributed-id.html) +- [分布式 ID 设计指南](https://javaguide.cn/distributed-system/distributed-id-design.html) + +API网关: + +- [API 网关基础知识总结](https://javaguide.cn/distributed-system/api-gateway.html) +- [Spring Cloud Gateway 常见问题总结](https://javaguide.cn/distributed-system/spring-cloud-gateway-questions.html) + +分布式锁: + +- [分布式锁介绍](https://javaguide.cn/distributed-system/distributed-lock.html) +- [分布式锁常见实现方案总结](https://javaguide.cn/distributed-system/distributed-lock-implementations.html) + +## 分布式基础理论 + +### ⭐️什么是 CAP 定理? + +CAP 定理讨论 Consistency(一致性)、Availability(可用性)和 Partition Tolerance(分区容错)。 + +> **重要说明**:下文使用「偏 CP / 偏 AP」仅作直觉描述。严格按 CAP 定义(C=Linearizability,A=每个非故障节点都必须响应)时,许多系统并不能被干净归类——同一系统内不同操作的一致性/可用性特征不同,很多系统既不满足 CAP-C 也不满足 CAP-A。 + +![](https://oss.javaguide.cn/2020-11/cap.png) + +CAP 理论的提出者布鲁尔在提出 CAP 猜想的时候,并没有对 **Consistency**、**Availability**、**Partition Tolerance** 给出严格定义。 + +因此,对于 CAP 的民间解读有很多,比较常见、也更推荐的一种解读如下。 + +在理论计算机科学中,CAP 定理(CAP theorem)指出对于一个分布式系统来说,当设计读写操作时,只能同时满足以下三点中的两个: + +- **一致性(Consistency)**:在 Gilbert/Lynch(2002)的证明语境里,CAP 的一致性 C 指的是 **Atomic Consistency**,通常等同于 **Linearizability(线性一致性)**。即所有操作按实时顺序线性化,即写操作一旦完成,后续所有读操作都必须返回该写入的值(或更新的值)。**注意:** 这里的 Consistency 与数据库 ACID 中的 Consistency(一致性约束)含义不同,后者指事务执行前后数据库状态满足完整性约束。 +- **可用性(Availability)**:非故障的节点必须对每个请求返回响应(不讨论响应快慢)。**注意**:这是 CAP 理论中的严格定义,不包含工程中的延迟/SLA 指标(如「1s 内返回」)。 +- **分区容错性(Partition Tolerance)**:CAP 里的 P 本质上是在假设异步网络(可能延迟/丢包/分区),不是一个你「选择要不要」的功能。真正的权衡是:当分区发生时,你必须在**线性一致(CAP 的 Consistency=Linearizability)**与**CAP-Availability(任何非故障节点都要对请求给非错误响应)**之间做选择。 + +**什么是网络分区?** + +分布式系统中,多个节点之间的网络本来是连通的,但是因为某些故障(比如部分节点网络出了问题)某些节点之间不连通了,整个网络就分成了几块区域,这就叫 **网络分区**。 + +![partition-tolerance](https://oss.javaguide.cn/2020-11/partition-tolerance.png) + +### CAP 是 3 选 2 吗? + +这是一个常见的误区。实际上: + +1. **P 是必选的**:分布式系统中网络分区是必然发生的,无法避免 +2. **真正的选择是 CA**:当分区发生时,在一致性和可用性之间权衡 +3. **同一系统内不同操作可以有不同的选择**:如 Nacos 支持在 CP 和 AP 之间切换 + +对于分布式系统来说,P 是必须要有的,因为网络既然会存在分区问题(网络延迟、丢包、中断等),分区容错性也就成为了必然的选择。如果是单机系统,就没有分区的问题,也就没有 P 这回事了,这时候可以同时满足 CA。 + +### PACELC 理论是什么? + +PACELC 是 CAP 的扩展,更贴近实际系统设计: + +- **如果存在分区(P)**:必须在可用性(A)和一致性(C)之间选择 +- **否则(E)**:必须在延迟(L)和一致性(C)之间选择 + +**实际意义**:即使没有网络分区,系统仍需在低延迟和强一致性之间权衡。例如,同步复制可以保证强一致性但会增加延迟,异步复制可以降低延迟但会牺牲一致性。 + +### ⭐️什么是 BASE 理论? + +BASE 理论是对 CAP 中 AP 方案的延伸,是对 ACID 强一致性的替代方案。 + +**BASE 含义:** + +- **Basically Available(基本可用)**:系统出现故障时,允许损失部分可用性(如响应时间增加、功能降级)。比如在双十一秒杀活动中,为了保证系统的稳定性,部分用户可能会被引导到降级页面。 +- **Soft-state(软状态)**:允许系统存在中间状态,该状态不影响整体可用性。这里的中间状态是指数据在复制过程中可能存在短暂的不一致。 +- **Eventually Consistent(最终一致性)**:系统保证在一段时间内达到数据一致,而非实时一致。实际上,ACID 和 BASE 并非完全对立,ACID 是强一致性,而 BASE 是最终一致性,两者都是保证数据一致性的策略。 + +**BASE vs ACID:** + +| 特性 | ACID | BASE | +| -------- | ---------- | ---------- | +| 一致性 | 强一致 | 最终一致 | +| 可用性 | 较低 | 较高 | +| 性能 | 较低 | 较高 | +| 适用场景 | 传统数据库 | 分布式系统 | + +### 最终一致性的修复方式有哪些? + +**业界比较推崇最终一致性级别,但是某些对数据一致要求十分严格的场景比如银行转账还是要保证强一致性。** + +那实现最终一致性的具体方式是什么呢? + +- **读时修复(Read Repair)**:在读取数据时,检测数据的不一致,进行修复。适合读多写少场景。 +- **写时修复(Hinted Handoff)**:在写入数据时,如果目标节点不可用,将数据缓存下来,待节点恢复后重传。**写时修复** 优化了写入延迟,但增加了读取时的不一致风险(数据可能还在缓存队列中未落盘到目标节点)。 +- **异步修复(Anti-Entropy/反熵)**:通过后台比对副本数据差异并修复。工程实现中关键挑战是**高效检测数据差异**——暴力逐条比对(O(n))在大规模数据集下不可行,生产系统采用**默克尔树(Merkle Tree)**实现低开销差异定位。 + +### 为什么很多人把 BASE 当作 CAP 的补充? + +这是一个**部分正确但表述不够精确**的说法。更准确的理解是: + +1. **BASE 首先是 ACID 的替代品**:从论文标题[《Base: An ACID Alternative》](https://spawn-queue.acm.org/doi/10.1145/1394127.1394128)可以看出,BASE 理论的初衷是解决分布式事务场景下 ACID 过于严格的问题。 + +2. **BASE 与 CAP 的 AP 架构存在内在联系**: + + - 选择 AP 架构意味着放弃强一致性(C) + - 放弃强一致性后,系统如何达到收敛?答案是**最终一致性** + - 因此,BASE 理论(特别是最终一致性)是 AP 架构在工程实践中**必须采用**的指导原则 + +3. **误解产生的根源**:很多人把"BASE 与 AP 相关"误解为"BASE 是 CAP 的补充"。实际上: + - **BASE 不是对 CAP 理论的补充或修正** + - **BASE 是 AP 架构选择的工程实践指南**——当你选择了 AP,BASE 告诉你如何在工程实践中让系统最终达到一致 + +**正确的理解**: + +```mermaid +flowchart TB + %% 核心语义配色 + classDef cap fill:#E99151,color:#FFFFFF,stroke:none,rx:10,ry:10 + classDef base fill:#27AE60,color:#FFFFFF,stroke:none,rx:10,ry:10 + classDef acid fill:#3498DB,color:#FFFFFF,stroke:none,rx:10,ry:10 + classDef relation fill:#9B59B6,color:#FFFFFF,stroke:none,rx:10,ry:10 + + CAP[CAP 理论
分布式存储系统设计约束]:::cap + ACID[ACID 理论
数据库事务完整性]:::acid + BASE[BASE 理论
ACID 的分布式替代品]:::base + + CAP -->|AP 架构放弃强一致性| BASE + ACID -->|分布式场景放宽| BASE + + CAP -->|约束:不能同时满足 C+A| R1[实践意义]:::relation + BASE -->|实现:如何达到最终一致| R1 + + R1 --> Result[CAP 告诉我们限制
BASE 告诉我们做法]:::relation + + linkStyle default stroke-width:2px,stroke:#333333,opacity:0.8 +``` + +| 维度 | CAP 理论 | BASE 理论 | +| ---------- | ------------------------ | ------------------------------------------------ | +| 关注领域 | 分布式存储系统(带副本) | 所有分布式系统 | +| 一致性含义 | 数据一致性(副本同步) | 状态一致性(事务终态) | +| 可用性含义 | 节点故障时系统可用 | 部分节点故障时部分功能可用 | +| 核心关系 | - | ① ACID 的分布式替代品
② AP 架构的工程实践指南 | + +> **实践意义**:CAP 告诉我们在 AP 架构下无法保证强一致性,BASE 告诉我们在 AP 架构下如何通过最终一致性让系统达到收敛——两者是**约束与实现**的关系,而非补充关系。 + +如果说 CAP 是分布式存储系统的设计约束(告诉我们不能做什么),那么 BASE 就是分布式系统(尤其是业务系统)的实践指导(告诉我们如何做)——它告诉我们:**绝大多数应用场景不需要强一致性,通过接受中间态并最终达到一致性,是更务实的选择。** + +## 分布式算法 + +### ⭐️什么是共识算法? + +共识算法的核心目标,就是**让一群机器看起来像一台机器**。只要集群里超过半数的机器还活着,整个系统就能正常接客。 + +这通常是通过**复制状态机**来实现的:给每个节点发一本一模一样的账本(日志)。只要大家按照同样的顺序去执行账本上的命令,最后得到的结果自然完全一样。所以,共识算法本质上干的就是一件事——**保证所有节点的账本绝对一致**。共识是可容错系统中的一个基本问题:即使面对故障,服务器也可以在共享状态上达成一致。 + +![共识算法架构](https://oss.javaguide.cn/github/javaguide/paxos-rsm-architecture.png) + +### Basic Paxos 算法中存在哪些角色? + +Paxos 是最早被广泛认可的分布式共识算法(1990 年 Lamport 提出)。 + +Basic Paxos 中存在 3 个重要的角色: + +1. **提议者(Proposer)**:也可以叫做协调者(coordinator),负责接受客户端请求并发起提案。提案信息通常包括提案编号(proposal ID)和提议的值(value)。 +2. **接受者(Acceptor)**:也可以叫做投票员(voter),负责对提案进行投票,同时需要记住自己的投票历史。 +3. **学习者(Learner)**:负责学习(learn)已被选定的值。在复制状态机(RSM)实现中,该值通常对应一条待执行的命令,由状态机按序 apply 后再由对外服务层返回结果。 + +![Basic Paxos中的角色](https://oss.javaguide.cn/github/javaguide/distributed-system/protocol/up-890fa3212e8bf72886a595a34654918486c.png) + +**角色交互关系图**: + +```mermaid +flowchart LR + subgraph Roles["Paxos 三个核心角色"] + direction LR + Prop[Proposer
提议者
发起提案] + Acc[Acceptor
接受者
投票表决] + Lear[Learner
学习者
获取结果] + end + + Prop -->|Prepare| Acc + Acc -->|Promise| Prop + Prop -->|Accept| Acc + Acc -->|Accepted| Prop + Prop -->|通知选定| Lear + + style Roles fill:#F5F7FA,color:#333,stroke:#005D7B,stroke-width:2px + classDef role fill:#E99151,color:#FFFFFF,stroke:none,rx:10,ry:10 + + class Prop,Acc,Lear role +``` + +为了减少实现该算法所需的节点数,一个节点可以身兼多个角色。并且,一个提案被选定需要被半数以上的 Acceptor 接受。这样的话,Basic Paxos 算法还具备容错性,在少于一半的节点出现故障时,集群仍能正常工作。 + +**适用场景**:非拜占庭环境(无恶意节点) + +### Basic Paxos 的两阶段流程? + +**Phase 1: Prepare/Promise(准备阶段)** + +1. Proposer 选择提案编号 n,向多数 Acceptor 发送 Prepare(n) +2. Acceptor 收到 Prepare(n) 后,承诺不再接受编号小于 n 的提案,并返回已接受的编号最大的提案(如有) + +**Phase 2: Accept/Accepted(接受阶段)** + +1. Proposer 收到多数 Promise 后,发送 Accept(n, v),v 是收到的最大编号提案的值,或自己提议的值 +2. Acceptor 收到 Accept(n, v) 后,接受提案(除非已承诺更大的编号) + +**关键点**:必须获得**多数(Quorum)** 的 Accept 才算提案被选定。 + +### Multi-Paxos 的 Basic Paxos 有什么区别? + +Basic Paxos 算法仅能就单个值达成共识,为了能够对一系列的值达成共识,我们需要用到 Multi-Paxos 思想。 + +Multi-Paxos 的核心优化思想是**复用 Leader**:通过 Basic Paxos 选出一个稳定的 Proposer 作为 Leader,后续提案直接由该 Leader 发起,跳过 Phase 1 的 Prepare/Promise 阶段。 + +### ⭐️Raft 算法与 Paxos 的关系? + +- Raft 不是 Paxos 的变体,但借鉴了 Multi-Paxos 思想 +- Raft 设计目标是**易于理解** +- 将共识问题拆解为三个子问题:**Leader 选举**、**日志复制**、**安全性** + +### Raft 的三种节点状态? + +一个 Raft 集群包括若干服务器,以典型的 5 服务器集群举例。在任意的时间,每个服务器一定会处于以下三个状态中的一个: + +- **Leader(领导者)**:大当家。全权负责接待客户端、写账本、并把账本同步给小弟。为了防止别人篡位,他必须不断地向全员发送心跳,宣告“我还活着”。 +- **Follower(跟随者)**:安分守己的小弟。平时绝对不主动发起请求,只被动接收老大的心跳和账本同步。 +- **Candidate(候选人)**:临时状态。如果小弟迟迟等不到老大的心跳,就会觉得自己行了,变身候选人开始拉票。 + +在正常的情况下,只有一个服务器是 Leader,剩下的服务器是 Follower。Follower 是被动的,它们不会发送任何请求,只是响应来自 Leader 和 Candidate 的请求。 + +![Raft 服务器状态转换示意图](https://oss.javaguide.cn/github/javaguide/paxos-server-state.png) + +### ⭐️Raft 的 Leader 选举流程? + +1. Follower 在选举超时(election timeout)内未收到心跳,变为 Candidate +2. Candidate 自增 term,向所有节点发起 RequestVote +3. 收到多数选票则成为 Leader +4. 使用**随机选举超时**避免同时竞选(Split Vote) + +![Raft Leader 选举流程](https://oss.javaguide.cn/github/javaguide/distributed-system/protocol/raft-election.png) + +**随机选举超时**:每个节点的选举超时时间是随机的(如 150-300ms),这样可以减少多个节点同时发起选举的概率。 + +### ZAB 协议的两种广播模式? + +**ZAB(ZooKeeper Atomic Broadcast)** **正确的理解**是 ZooKeeper 专用的原子广播协议。 + +**两种模式**: + +- **消息广播模式**:正常处理写请求,类似简化版 2PC。Leader 将请求转化为事务提案,发送给所有 Follower,收到半数以上 ACK 后提交。 +- **崩溃恢复模式**:Leader 选举 + 数据同步。当 Leader 宕机或重启时,集群进入恢复模式。 + +![ZAB 消息广播模式](https://oss.javaguide.cn/github/javaguide/distributed-system/protocol/zab-message-broadcast-flow.png) + +![zab-crash-recovery-flow](https://oss.javaguide.cn/github/javaguide/distributed-system/protocol/zab-crash-recovery-flow.png) + +### ZAB 的 ZXID 结构? + +为了保证分布式环境下消息的绝对顺序性,ZAB 协议引入了一个全局单调递增的事务 ID——**ZXID**。 + +ZXID 是一个 64 位的长整型(long): + +- **高 32 位(Epoch 纪元):** 代表当前 Leader 的任期年代。当选出一个新的 Leader 时,Epoch 就会在前一个的基础上加 1。这相当于朝代更替。 +- **低 32 位(事务 ID):** 一个简单的递增计数器。针对客户端的每一个写请求,计数器都会加 1。新 Leader 上位时,这个低 32 位会被清零重置。 + +![ZXID 结构](https://oss.javaguide.cn/github/javaguide/distributed-system/protocol/zab-zxid-structure.png) + +### ⭐️ZAB 的 Leader 选举规则? + +按顺序比较:**Epoch > ZXID > myid** + +1. 首先比较 Epoch,Epoch 大的胜出 +2. Epoch 相同,比较 ZXID,ZXID 大的胜出(数据更新) +3. 都相同,比较 myid(服务器 ID),myid 大的胜出 + +获得过半选票的节点成为 Leader。 + +### Gossip 协议是什么? + +**Gossip(闲话协议)**也称 **Epidemic 协议**(流行病协议),是一种**去中心化**的信息传播协议: + +- 每个节点周期性随机选择若干节点交换信息 +- 像病毒传播一样扩散至整个网络 +- 在非拜占庭且不存在永久网络分区的前提下,达到**最终一致性** + +**关键特性**: + +- **去中心化**:无中心节点,所有节点地位平等 +- **容错性强**:容忍节点宕机、网络分区、动态增删节点 +- **概率收敛**:传播轮次期望为 O(log N) +- **消息冗余**:同一消息可能被多次接收,需去重机制 + +**典型应用**:Redis Cluster 节点通信、Cassandra 数据同步 + +### Gossip 的两种传播模式? + +| 要点 | 反熵(Anti-Entropy) | 谣言传播(Rumor-Mongering) | +| -------- | ----------------------- | --------------------------- | +| 传播内容 | 完整数据(或摘要) | 仅新增数据(Delta) | +| 适用场景 | 节点数量适中 | 节点数量较多/动态变化 | +| 消息开销 | 较大 | 较小 | +| 实现方式 | Push / Pull / Push-Pull | 节点收到更新后周期性传播 | + +![反熵机制:Push-Pull 交互时序图 (Anti-Entropy)](https://oss.javaguide.cn/github/javaguide/distributed-system/protocol/gossip-anti-entropy-pushpull.png) + +![Gossip 传播示意图](https://oss.javaguide.cn/github/javaguide/distributed-system/protocol/gossip-rumor-mongering.gif) + +> **生产级优化**:在大规模分布式存储(如 Cassandra、DynamoDB)中,使用 **Merkle Tree(默克尔树)** 进行增量差异比对,仅传输增量数据。 + +### ⭐️一致性哈希算法解决什么问题? + +解决传统哈希取模在节点增减时导致**大量数据迁移**的问题。 + +**普通哈希**:`hash(key) % N`,节点数 N 变化时,平均有 (N-1)/N 比例的数据需要迁移,这个比例**趋近于 100%**。 + +**一致性哈希**:节点变化时,只影响相邻节点的数据,影响范围非常小。 + +![哈希取模](https://oss.javaguide.cn/github/javaguide/distributed-system/protocol/consistent-hashing/hashqumo.png) + +### 一致性哈希的原理? + +1. 将哈希空间组织成**环形结构**(0 ~ 2^32-1) +2. 数据和节点都映射到环上:`hash(key) % 2^32`、`hash(服务器IP) % 2^32` +3. 数据顺时针找到的第一个节点就是其所属节点 + +![哈希环](https://oss.javaguide.cn/github/javaguide/distributed-system/protocol/consistent-hashing/consistent-hashing-circle.png) + +### 一致性哈希的数据倾斜问题如何解决? + +引入**虚拟节点**: + +- 每个物理节点对应多个虚拟节点(100-200 个,如 Nginx 选择 160 个) +- 虚拟节点均匀分布在环上,使数据分布更均衡 +- 节点宕机时,流量会**均匀分散**到多个物理节点,而不是集中到一个邻居节点 + +**引入虚拟节点的好处**: + +1. **数据均衡**:从根本上解决了数据倾斜问题 +2. **容错性增强**:当一个物理节点宕机,其多个虚拟节点同时下线,数据和流量会均匀分散到其他多个物理节点 + +![虚拟节点](https://oss.javaguide.cn/github/javaguide/distributed-system/protocol/consistent-hashing/consistent-hashing-circle-virtual-node.png) + +## 分布式锁 + +### ⭐️为什么需要分布式锁? + +**本地锁的局限性**: + +在多线程环境中,如果多个线程同时访问共享资源(例如商品库存、外卖订单),会发生数据竞争,可能会导致出现脏数据或者系统问题,威胁到程序的正常运行。 + +![共享资源未互斥访问导致出现问题](https://oss.javaguide.cn/github/javaguide/distributed-system/distributed-lock/oversold-without-locking.png) + +对于单机多线程来说,在 Java 中,我们通常使用 `ReentrantLock` 类、`synchronized` 关键字这类 JDK 自带的 **本地锁** 来控制一个 JVM 进程内的多个线程对本地共享资源的访问。 + +![本地锁](https://oss.javaguide.cn/github/javaguide/distributed-system/distributed-lock/jvm-local-lock.png) + +**分布式场景下的问题**: + +分布式系统下,不同的服务/客户端通常运行在独立的 JVM 进程上。如果多个 JVM 进程共享同一份资源的话,使用本地锁就没办法实现资源的互斥访问了。 + +举个例子:系统的订单服务一共部署了 3 份,都对外提供服务。用户下订单之前需要检查库存,为了防止超卖,这里需要加锁以实现对检查库存操作的同步访问。由于订单服务位于不同的 JVM 进程中,本地锁在这种情况下就没办法正常工作了。我们需要用到分布式锁,这样的话,即使多个线程不在同一个 JVM 进程中也能获取到同一把锁,进而实现共享资源的互斥访问。 + +![分布式锁](https://oss.javaguide.cn/github/javaguide/distributed-system/distributed-lock/distributed-lock.png) + +**典型应用场景**: + +- 秒杀活动防止超卖 +- 库存扣减保证原子性 +- 订单处理防止重复 + +### 分布式锁应具备哪些条件? + +一个最基本的分布式锁需要满足: + +- **互斥**:任意一个时刻,锁只能被一个线程持有。 +- **高可用**:锁服务是高可用的,当一个锁服务出现问题,能够自动切换到另外一个锁服务。并且,即使客户端的释放锁的代码逻辑出现问题,锁最终一定还是会被释放,不会影响其他线程对共享资源的访问。这一般是通过超时机制实现的。 +- **可重入**:一个节点获取了锁之后,还可以再次获取锁。 + +除了上面这三个基本条件之外,一个好的分布式锁还需要满足下面这些条件: + +- **高性能**:获取和释放锁的操作应该快速完成,并且不应该对整个系统的性能造成过大影响。 +- **非阻塞**:如果获取不到锁,不能无限期等待,避免对系统正常运行造成影响。 + +### 分布式锁的常见实现方式有哪些? + +常见分布式锁实现方案如下: + +- 基于关系型数据库比如 MySQL 实现分布式锁。 +- 基于分布式协调服务 ZooKeeper 实现分布式锁。 +- 基于分布式键值存储系统比如 Redis 、Etcd 实现分布式锁。 + +关系型数据库的方式一般是通过唯一索引或者排他锁实现。不过,一般不会使用这种方式,问题太多比如性能太差、不具备锁失效机制。 + +基于 ZooKeeper 或者 Redis 实现分布式锁这两种实现方式要用的更多一些。 + +### ⭐️如何基于 Redis 实现分布式锁? + +**最简实现(SETNX)**: + +```bash +# 加锁 +SET lockKey uniqueValue NX EX 30 +# NX: key不存在才设置 EX: 设置过期时间30秒 + +# 释放锁(使用Lua脚本保证原子性) +if redis.call("get", KEYS[1]) == ARGV[1] then + return redis.call("del", KEYS[1]) +else + return 0 +end +``` + +**为什么需要 Lua 脚本释放锁?** + +释放锁需要先判断 value 是否一致再删除,这两步操作需要保证原子性,否则可能出现误删其他客户端锁的情况。 + +**具体流程**: + +1. 加锁时使用 `SET key value NX PX expireTime` 命令,保证原子性 +2. value 必须是唯一标识(如 UUID),用于识别锁的持有者 +3. 释放锁时先判断 value 是否一致,再执行删除,使用 Lua 脚本保证原子性 + +![Redis 实现简易分布式锁](https://oss.javaguide.cn/github/javaguide/distributed-system/distributed-lock/distributed-lock-setnx.png) + +**为什么要给锁设置一个过期时间?** + +为了避免锁无法被释放,我们可以想到的一个解决办法就是:**给这个 key(也就是锁) 设置一个过期时间** 。 + +```bash +127.0.0.1:6379> SET lockKey uniqueValue EX 3 NX +OK +``` + +- **lockKey**:加锁的锁名; +- **uniqueValue**:能够唯一标识锁的随机字符串; +- **NX**:只有当 lockKey 对应的 key 值不存在的时候才能 SET 成功; +- **EX**:过期时间设置(秒为单位)EX 3 标示这个锁有一个 3 秒的自动过期时间。与 EX 对应的是 PX(毫秒为单位),这两个都是过期时间设置。 + +**一定要保证设置指定 key 的值和过期时间是一个原子操作!!!** 不然的话,依然可能会出现锁无法被释放的问题。 + +这样确实可以解决问题,不过,这种解决办法同样存在漏洞:**如果操作共享资源的时间大于过期时间,就会出现锁提前过期的问题,进而导致分布式锁直接失效。如果锁的超时时间设置过长,又会影响到性能。** + +你或许在想:**如果操作共享资源的操作还未完成,锁过期时间能够自己续期就好了!** + +对于 Java 开发的小伙伴来说,已经有了现成的解决方案:**[Redisson](https://github.com/redisson/redisson)** 。其他语言的解决方案,可以在 Redis 官方文档中找到,地址: 。 + +![Distributed locks with Redis](https://oss.javaguide.cn/github/javaguide/redis-distributed-lock.png) + +Redisson 是一个开源的 Java 语言 Redis 客户端,提供了很多开箱即用的功能,不仅仅包括多种分布式锁的实现。并且,Redisson 还支持 Redis 单机、Redis Sentinel、Redis Cluster 等多种部署架构。 + +Redisson 中的分布式锁自带自动续期机制,使用起来非常简单,原理也比较简单,其提供了一个专门用来监控和续期锁的 **Watch Dog( 看门狗)**,如果操作共享资源的线程还未执行完成的话,Watch Dog 会不断地延长锁的过期时间,进而保证锁不会因为超时而被释放。 + +![Redisson 看门狗自动续期](https://oss.javaguide.cn/github/javaguide/distributed-system/distributed-lock/distributed-lock-redisson-renew-expiration.png) + +看门狗名字的由来于 `getLockWatchdogTimeout()` 方法,这个方法返回的是看门狗给锁续期的过期时间,默认为 30 秒([redisson-3.17.6](https://github.com/redisson/redisson/releases/tag/redisson-3.17.6))。 + +```java +//默认 30秒,支持修改 +private long lockWatchdogTimeout = 30 * 1000; + +public Config setLockWatchdogTimeout(long lockWatchdogTimeout) { + this.lockWatchdogTimeout = lockWatchdogTimeout; + return this; +} +public long getLockWatchdogTimeout() { + return lockWatchdogTimeout; +} +``` + +`renewExpiration()` 方法包含了看门狗的主要逻辑: + +```java +private void renewExpiration() { + //...... + Timeout task = commandExecutor.getConnectionManager().newTimeout(new TimerTask() { + @Override + public void run(Timeout timeout) throws Exception { + //...... + // 异步续期,基于 Lua 脚本 + CompletionStage future = renewExpirationAsync(threadId); + future.whenComplete((res, e) -> { + if (e != null) { + // 无法续期 + log.error("Can't update lock " + getRawName() + " expiration", e); + EXPIRATION_RENEWAL_MAP.remove(getEntryName()); + return; + } + + if (res) { + // 递归调用实现续期 + renewExpiration(); + } else { + // 取消续期 + cancelExpirationRenewal(null); + } + }); + } + // 延迟 internalLockLeaseTime/3(默认 10s,也就是 30/3) 再调用 + }, internalLockLeaseTime / 3, TimeUnit.MILLISECONDS); + + ee.setTimeout(task); + } +``` + +默认情况下,每过 10 秒,看门狗就会执行续期操作,将锁的超时时间设置为 30 秒。看门狗续期前也会先判断是否需要执行续期操作,需要才会执行续期,否则取消续期操作。 + +Watch Dog 通过调用 `renewExpirationAsync()` 方法实现锁的异步续期: + +```java +protected CompletionStage renewExpirationAsync(long threadId) { + return evalWriteAsync(getRawName(), LongCodec.INSTANCE, RedisCommands.EVAL_BOOLEAN, + // 判断是否为持锁线程,如果是就执行续期操作,就锁的过期时间设置为 30s(默认) + "if (redis.call('hexists', KEYS[1], ARGV[2]) == 1) then " + + "redis.call('pexpire', KEYS[1], ARGV[1]); " + + "return 1; " + + "end; " + + "return 0;", + Collections.singletonList(getRawName()), + internalLockLeaseTime, getLockName(threadId)); +} +``` + +可以看出, `renewExpirationAsync` 方法其实是调用 Lua 脚本实现的续期,这样做主要是为了保证续期操作的原子性。 + +我这里以 Redisson 的分布式可重入锁 `RLock` 为例来说明如何使用 Redisson 实现分布式锁: + +```java +// 1.获取指定的分布式锁对象 +RLock lock = redisson.getLock("lock"); +// 2.拿锁且不设置锁超时时间,具备 Watch Dog 自动续期机制 +lock.lock(); +// 3.执行业务 +... +// 4.释放锁 +lock.unlock(); +``` + +只有未指定锁超时时间,才会使用到 Watch Dog 自动续期机制。 + +```java +// 手动给锁设置过期时间,不具备 Watch Dog 自动续期机制 +lock.lock(10, TimeUnit.SECONDS); +``` + +如果使用 Redis 来实现分布式锁的话,还是比较推荐直接基于 Redisson 来做的。 + +### ⭐️如何实现可重入锁? + +所谓可重入锁指的是在一个线程中可以多次获取同一把锁,比如一个线程在执行一个带锁的方法,该方法中又调用了另一个需要相同锁的方法,则该线程可以直接执行调用的方法即可重入 ,而无需重新获得锁。像 Java 中的 `synchronized` 和 `ReentrantLock` 都属于可重入锁。 + +**不可重入的分布式锁基本可以满足绝大部分业务场景了,一些特殊的场景可能会需要使用可重入的分布式锁。** + +可重入分布式锁的实现核心思路是线程在获取锁的时候判断是否为自己的锁,如果是的话,就不用再重新获取了。为此,我们可以为每个锁关联一个可重入计数器和一个占有它的线程。当可重入计数器大于 0 时,则锁被占有,需要判断占有该锁的线程和请求获取锁的线程是否为同一个。 + +实际项目中,我们不需要自己手动实现,推荐使用我们上面提到的 **Redisson** ,其内置了多种类型的锁比如可重入锁(Reentrant Lock)、自旋锁(Spin Lock)、公平锁(Fair Lock)、多重锁(MultiLock)、 红锁(RedLock)、 读写锁(ReadWriteLock)。 + +![](https://oss.javaguide.cn/github/javaguide/distributed-system/distributed-lock/redisson-readme-locks.png) + +### Redis 如何解决集群情况下分布式锁的可靠性? + +为了避免单点故障,生产环境下的 Redis 服务通常是集群化部署的。 + +Redis 集群下,上面介绍到的分布式锁的实现会存在一些问题。由于 Redis 集群数据同步到各个节点时是异步的,如果在 Redis 主节点获取到锁后,在没有同步到其他节点时,Redis 主节点宕机了,此时新的 Redis 主节点依然可以获取锁,所以多个应用服务就可以同时获取到锁。 + +![](https://oss.javaguide.cn/github/javaguide/distributed-system/distributed-lock/redis-master-slave-distributed-lock.png) + +针对这个问题,Redis 之父 antirez 设计了 [Redlock 算法](https://redis.io/topics/distlock) 来解决。 + +![](https://oss.javaguide.cn/github/javaguide/distributed-system/distributed-lock/distributed-lock-redis.io-realock.png) + +Redlock 算法的思想是让客户端向 Redis 集群中的多个独立的 Redis 实例依次请求申请加锁,如果客户端能够和半数以上的实例成功地完成加锁操作,那么我们就认为,客户端成功地获得分布式锁,否则加锁失败。 + +即使部分 Redis 节点出现问题,只要保证 Redis 集群中有半数以上的 Redis 节点可用,分布式锁服务就是正常的。 + +Redlock 是直接操作 Redis 节点的,并不是通过 Redis 集群操作的,这样才可以避免 Redis 集群主从切换导致的锁丢失问题。 + +Redlock 实现比较复杂,性能比较差,发生时钟变迁的情况下还存在安全性隐患。《数据密集型应用系统设计》一书的作者 Martin Kleppmann 曾经专门发文([How to do distributed locking - Martin Kleppmann - 2016](https://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.html))怼过 Redlock,他认为这是一个很差的分布式锁实现。感兴趣的朋友可以看看[Redis 锁从面试连环炮聊到神仙打架](https://mp.weixin.qq.com/s?__biz=Mzg3NjU3NTkwMQ==&mid=2247505097&idx=1&sn=5c03cb769c4458350f4d4a321ad51f5a&source=41#wechat_redirect)这篇文章,有详细介绍到 antirez 和 Martin Kleppmann 关于 Redlock 的激烈辩论。 + +实际项目中不建议使用 Redlock 算法,成本和收益不成正比,可以考虑基于 Redis 主从复制+哨兵模式实现分布式锁。 + +### ⭐️基于 ZooKeeper 实现分布式锁的原理? + +**实现方式**:基于**临时顺序节点**和 **Watcher 机制** + +**流程**: + +1. 客户端在锁节点下创建临时顺序节点 +2. 判断自己是否是最小序号节点,是则获取锁成功 +3. 否则监听前一个节点的删除事件 +4. 前一个节点删除后,收到通知再次检查是否为最小节点 + +**为什么使用临时顺序节点?** + +- **临时节点**:会话消失则节点消失,避免客户端宕机导致死锁 +- **顺序节点**:只需监听前一个节点,避免羊群效应(所有节点监听同一节点),提升性能 + +**羊群效应说明**:如果所有客户端都监听同一个节点,当该节点被删除时,所有客户端都会被唤醒去竞争锁,这对 ZooKeeper 服务器造成很大压力。使用顺序节点后,每个客户端只需要监听自己前一个节点,大大减少了通知的次数。 + +### Redis 和 ZooKeeper 分布式锁如何选择? + +| 对比项 | Redis | ZooKeeper | +| ---------- | ------------------------------ | ------------------------ | +| 性能 | 高 | 较低 | +| 可靠性 | 依赖主从复制,极端情况可能丢锁 | 临时节点机制,更可靠 | +| 实现复杂度 | 中等(需要处理续期、Lua脚本) | 较低(Curator 封装完善) | +| 部署 | 简单 | 较复杂 | + +**选择建议**: + +- 追求性能:选择 Redis + Redisson +- 追求可靠性:选择 ZooKeeper + Curator +- 不建议仅为分布式锁引入 ZooKeeper + +## 分布式ID + +### ⭐️什么是分布式ID?需要满足哪些要求? + +分布式 ID 是分布式系统下的 ID。分布式 ID 不存在与现实生活中,属于计算机系统中的一个概念。 + +我简单举一个分库分表的例子。 + +我司的一个项目,使用的是单机 MySQL 。但是,没想到的是,项目上线一个月之后,随着使用人数越来越多,整个系统的数据量将越来越大。单机 MySQL 已经没办法支撑了,需要进行分库分表(推荐 Sharding-JDBC)。 + +在分库之后, 数据遍布在不同服务器上的数据库,数据库的自增主键已经没办法满足生成的主键唯一了。**我们如何为不同的数据节点生成全局唯一主键呢?** + +这个时候就需要生成**分布式 ID**了。 + +![](https://oss.javaguide.cn/github/javaguide/system-design/distributed-system/id-after-the-sub-table-not-conflict.png) + +分布式 ID 作为分布式系统中必不可少的一环,很多地方都要用到分布式 ID。 + +一个最基本的分布式 ID 需要满足下面这些要求: + +- **全局唯一**:ID 的全局唯一性肯定是首先要满足的! +- **高性能**:分布式 ID 的生成速度要快,对本地资源消耗要小。 +- **高可用**:生成分布式 ID 的服务要保证可用性无限接近于 100%。 +- **方便易用**:拿来即用,使用方便,快速接入! + +除了这些之外,一个比较好的分布式 ID 还应保证: + +- **安全**:ID 中不包含敏感信息。 +- **有序递增**:如果要把 ID 存放在数据库的话,ID 的有序性可以提升数据库写入速度。并且,很多时候 ,我们还很有可能会直接通过 ID 来进行排序。 +- **有具体的业务含义**:生成的 ID 如果能有具体的业务含义,可以让定位问题以及开发更透明化(通过 ID 就能确定是哪个业务)。 +- **独立部署**:也就是分布式系统单独有一个发号器服务,专门用来生成分布式 ID。这样就生成 ID 的服务可以和业务相关的服务解耦。不过,这样同样带来了网络调用消耗增加的问题。总的来说,如果需要用到分布式 ID 的场景比较多的话,独立部署的发号器服务还是很有必要的。 + +### ⭐️常见分布式ID生成方案对比? + +| **方案** | **性能** | **有序性** | **运维成本** | **适用场景** | +| -------------- | -------- | ---------- | ------------ | --------------------------------------- | +| **数据库自增** | 低 | 严格递增 | 低 | 业务量小、单机架构、后台系统 | +| **号段模式** | 高 | 趋势递增 | 中 | 高并发、追求极致吞吐量的互联网业务 | +| **Redis 方案** | 很高 | 严格递增 | 中 | 已有 Redis 集群,能容忍极小概率 ID 回退 | +| **Snowflake** | 高 | 趋势递增 | 低/中 | 大中型分布式系统、Java 生态(最主流) | +| **UUID v7** | 高 | 趋势递增 | 极低 | 云原生、无中心化集群、追求开箱即用 | + +### ⭐️Snowflake 雪花算法的组成结构? + +Snowflake 是 Twitter 开源的分布式 ID 生成算法。Snowflake 由 64 bit 的二进制数字组成,这 64bit 的二进制被分成了几部分,每一部分存储的数据都有特定的含义: + +``` +0 - 41位时间戳 - 10位机器ID - 12位序列号 +``` + +**结构详解**: + +| 部分 | 位数 | 说明 | +| ------ | ------- | -------------------------------------------------- | +| 符号位 | 1 bit | 始终为 0,代表生成的 ID 为正数 | +| 时间戳 | 41 bits | 相对时间戳(距自定义基点的毫秒数),可支撑约 69 年 | +| 机器ID | 10 bits | 5 位机房 ID + 5 位机器 ID(支持 1024 台机器) | +| 序列号 | 12 bits | 单机每毫秒最多生成 4096 个 ID | + +**理论峰值**:单机每毫秒 4096 个 ID,即单机每秒约 400 万 ID。 + +> **⚠️ 高并发警示**:如果某一毫秒内的并发请求超过 4096 个,算法会**阻塞等待直到下一毫秒**。这可能导致在高并发瞬间(如秒杀、大促)出现响应延迟毛刺。 + +### Snowflake 有什么问题?如何解决? + +**1. 时钟回拨问题** + +原因:NTP 同步、人工调整时间、硬件时钟漂移可能导致时间倒退 + +解决方案对比: + +| 方案 | 优点 | 缺点 | 适用场景 | +| -------------- | -------------- | ------------------------ | ---------------------- | +| 拒绝服务 | 实现简单 | 时钟回拨期间完全不可用 | 对可用性要求不高的场景 | +| 等待追回 | 保证 ID 唯一性 | 可能长时间阻塞 | 时钟稳定的内网环境 | +| 备用 Worker ID | 高可用 | 实现复杂,需考虑 ZK 脑裂 | 生产环境推荐 | + +**2. Worker ID 分配问题** + +原因:容器化部署(Kubernetes)环境下,Pod 的 IP 和名称是动态的,无法像物理机一样预先配置固定的 Worker ID + +解决方案: + +- ZooKeeper 注册:服务启动时在 ZK 创建临时节点,节点序号作为 Worker ID +- Redis SETNX 分配:使用 `SETNX` + 过期时间实现 Worker ID 申领 +- 数据库分配:启动时从数据库分配并持久化到本地文件 + +**推荐**:使用美团 Leaf 或滴滴 Tinyid,已内置这些问题处理。 + +## ⭐️分布式事务 + +分布式相关的问题非常重要,建议阅读这篇文章:[分布式事务常见解决方案总结](https://javaguide.cn/distributed-system/distributed-transaction.html)。 + +## 分布式配置中心 + +### ⭐️为什么需要配置中心? + +**传统配置文件的问题**: + +微服务架构下,业务发展通常会导致服务数量增加,进而导致程序配置(服务地址、数据库参数、功能开关等)增多。传统配置文件方式存在以下问题: + +- **无法动态更新**:配置放在代码库中,每次修改都需要重新发布新版本才能生效。 +- **安全性不足**:敏感配置(数据库密码、API Key)直接写在代码库中容易泄露。 +- **时效性差**:即使能修改配置文件,通常也需要重启服务才能生效。 +- **缺乏权限控制**:无法对配置的查看、修改、发布等操作进行细粒度权限管控。 +- **配置分散难管理**:多环境(开发/测试/生产)、多集群的配置分散在各处,难以统一维护。 + +**配置中心的优势**: + +- **版本管理**:记录每次配置变更的修改人、修改时间、修改内容,支持一键回滚。 +- **灰度发布**:先将配置推送给部分实例验证,降低变更风险(Apollo、Nacos 1.1.0+ 支持)。 +- **权限控制**:配置的查看、修改、发布需分级授权。 + +![Applo 配置中心](https://oss.javaguide.cn/github/javaguide/config-center/view-release-history.png) + +### 常见配置中心有哪些?如何选择 + +| 功能 | Apollo | Nacos | Spring Cloud Config | +| ------------ | ---------------- | ------------------ | ------------------- | +| 配置界面 | 支持(功能完善) | 支持 | 无(通过 Git 操作) | +| 配置实时生效 | 长轮询(1s内) | gRPC长连接(1s内) | 需触发 refresh | +| 灰度发布 | 完善 | 基础支持 | 不支持 | +| 权限管理 | 细粒度 | 支持 | 依赖 Git 平台 | +| 版本管理 | 原生支持 | 原生支持 | 依赖 Git | +| 部署复杂度 | 较高 | 简单 | 最简单 | + +**选型建议**: + +- 只需配置中心 → **Apollo**(功能最完善)或 **Nacos**(上手更简单) +- 需要配置中心 + 服务发现 → **Nacos** +- Spring Cloud 体系且追求简单 → **Spring Cloud Config** +- Kubernetes 环境 → **K8s ConfigMap 挂载 + 应用层文件监听**(由于 Kubelet 同步 Volume 存在 1~2 分钟延迟,需引入 inotify 或 Spring Cloud Kubernetes 实现热重载) + +### 配置推送的三种模式? + +| 模式 | 实时性 | 服务端压力 | 说明 | +| ------ | --------------- | ---------------- | -------------- | +| 推模式 | 高(毫秒级) | 高(需维护连接) | 服务端主动推送 | +| 拉模式 | 低(秒~分钟级) | 高(无效轮询) | 客户端定时拉取 | +| 长轮询 | 中高(1~30s) | 中等 | 主流方案 | + +**长轮询原理**: + +- **Apollo**:采用 HTTP 长轮询。客户端发起请求,服务端若有变更立即返回;无变更则挂起请求(默认 30s),期间一旦有变更立即响应。 +- **Nacos 2.x**:采用 gRPC 长连接双向流。相比 1.x 的 HTTP 长轮询,gRPC 连接更轻量,配置变更可毫秒级主动 Push 至客户端。 + +> **注意**:长轮询虽然比短轮询节省 CPU 和网络开销,但当客户端规模达到十万级时,服务端需维持海量挂起的 HTTP 请求,对内存和连接数上限仍有较大压力。 + +## API网关 + +### ⭐️什么是 API 网关?为什么需要网关? + +API 网关(API Gateway)是位于客户端与后端服务之间的**统一入口**,所有客户端请求先经过网关,再由网关路由到具体的目标服务。 + +在微服务架构下,一个系统被拆分为多个服务。像**安全认证、流量控制、日志、监控**等功能是每个服务都需要的。如果没有网关,我们需要在每个服务中单独实现这些功能,导致: + +- **代码重复**:相同逻辑在多个服务中冗余实现 +- **管理分散**:缺乏统一的配置和监控视图 +- **维护成本高**:功能变更需要修改所有服务 + +![网关示意图](https://oss.javaguide.cn/github/javaguide/system-design/distributed-system/api-gateway-overview.png) + +### 网关的核心职责? + +网关的功能虽然繁多,但核心可以概括为两件事: + +| 职责 | 说明 | 典型功能 | +| ------------ | ----------------------------------- | -------------------------------------- | +| **请求转发** | 将客户端请求路由到正确的目标服务 | 动态路由、负载均衡、协议转换 | +| **请求过滤** | 在请求到达后端服务前/后进行拦截处理 | 身份认证、权限校验、限流熔断、日志记录 | + +网关可以提供请求转发、安全认证(身份/权限认证)、流量控制、负载均衡、降级熔断、日志、监控、参数校验、协议转换等功能。 + +**网关在微服务架构中的位置**:所有客户端请求先到达网关,网关负责统一的认证鉴权、流量控制、路由分发,后端服务专注于业务逻辑处理。 + +### 常见网关系统对比?如何选择? + +| 特性 | Zuul 1.x | Zuul 2.x | Spring Cloud Gateway | Kong | APISIX | Shenyu | +| -------------- | -------- | -------------- | ------------------------- | ----------------------------- | ---------------- | --------------- | +| **IO 模型** | 同步阻塞 | 异步非阻塞 | 异步非阻塞 | 异步非阻塞 | 异步非阻塞 | 异步非阻塞 | +| **底层技术** | Servlet | Netty | WebFlux + Netty | OpenResty (Nginx + Lua) | OpenResty + etcd | WebFlux + Netty | +| **性能** | 低 | 高 | 高 | 很高 | 很高 | 高 | +| **动态配置** | 需重启 | 支持 | 支持 | 支持 | 支持(热更新) | 支持 | +| **配置存储** | 内存 | 内存 | 内存 | 数据库 / YAML / K8s CRD | etcd(分布式) | 内存/数据库 | +| **限流熔断** | 需集成 | 需集成 | 内置(集成 Resilience4j) | 插件 | 插件 | 插件 | +| **生态系统** | Netflix | Netflix | Spring Cloud | CNCF / Kong | Apache | Apache | +| **运维复杂度** | 低 | 中 | 低 | 中(DB-less) / 高(DB Mode) | 中 | 中 | +| **学习曲线** | 平缓 | 平缓 | 平缓 | 陡峭(Lua) | 陡峭(Lua) | 平缓(Java) | +| **适用场景** | 遗留系统 | Netflix 技术栈 | Spring Cloud 生态 | 云原生、多语言 | 云原生、高性能 | Java 生态 | + +选择 API 网关需要综合考虑技术栈、性能要求、团队能力和运维成本。 + +| 场景 | 推荐方案 | 理由 | +| --------------------- | ---------------------------------------------------------- | ------------------------------------------------------------ | +| **Spring Cloud 生态** | Spring Cloud Gateway | 与 Spring Boot/Spring Cloud 无缝集成,配置简单 | +| **高性能 / 云原生** | APISIX | 基于 etcd 的热更新、性能优异、云原生架构 | +| **多语言生态** | Kong | 插件丰富、支持多语言开发、社区成熟 | +| **Netflix 技术栈** | Zuul 2.x | 与 Eureka、Ribbon、Hystrix 等组件无缝配合 | +| **双层架构(推荐)** | Kong/APISIX(流量网关) + Spring Cloud Gateway(业务网关) | 流量网关处理 SSL、WAF、全局限流;业务网关处理微服务鉴权、参数聚合 | + +## RPC框架 + +### ⭐️什么是 RPC? + +**RPC(Remote Procedure Call)远程过程调用**:调用远程方法像调用本地方法一样简单。 + +**为什么要 RPC?** 因为,两个不同的服务器上的服务提供的方法不在一个内存空间,所以,需要通过网络编程才能传递方法调用所需要的参数。并且,方法调用的结果也需要通过网络编程来接收。 + +**RPC 能帮助我们做什么呢?** 简单来说,通过 RPC 可以帮助我们调用远程计算机上某个服务的方法,这个过程就像调用本地方法一样简单。并且!我们不需要了解底层网络编程的具体细节。 + +一言蔽之:**RPC 的出现就是为了让你调用远程方法像调用本地方法一样简单。** + +### RPC 的核心原理? + +为了能够帮助小伙伴们理解 RPC 原理,我们可以将整个 RPC 的 核心功能看作是下面 5 个部分实现的: + +1. **客户端(服务消费端)**:调用远程方法的一端。 +2. **客户端 Stub(桩)**:这其实就是一代理类。代理类主要做的事情很简单,就是把你调用方法、类、方法参数等信息传递到服务端。 +3. **网络传输**:网络传输就是你要把你调用的方法的信息比如说参数啊这些东西传输到服务端,然后服务端执行完之后再把返回结果通过网络传输给你传输回来。网络传输的实现方式有很多种比如最基本的 Socket 或者性能以及封装更加优秀的 Netty(推荐)。 +4. **服务端 Stub(桩)**:这里的服务端 Stub 实际指的就是接收到客户端执行方法的请求后,去执行对应的方法然后返回结果给客户端的类。 +5. **服务端(服务提供端)**:提供远程方法的一端。 + +**调用流程**: + +1. 服务消费端(client)以本地调用的方式调用远程服务; +2. 客户端 Stub(client stub) 接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体(序列化):`RpcRequest`; +3. 客户端 Stub(client stub) 找到远程服务的地址,并将消息发送到服务提供端; +4. 服务端 Stub(桩)收到消息将消息反序列化为 Java 对象: `RpcRequest`; +5. 服务端 Stub(桩)根据`RpcRequest`中的类、方法、方法参数等信息调用本地的方法; +6. 服务端 Stub(桩)得到方法执行结果并将组装成能够进行网络传输的消息体:`RpcResponse`(序列化)发送至消费方; +7. 客户端 Stub(client stub)接收到消息并将消息反序列化为 Java 对象:`RpcResponse` ,这样也就得到了最终结果。 + +### ⭐️HTTP 和 RPC 有什么区别? + +| 对比项 | HTTP | RPC | +| -------- | ----------------------- | -------------------------- | +| 本质 | 应用层协议 | 调用方式(可基于任意协议) | +| 传输内容 | JSON/XML,冗余多 | Protobuf,更紧凑 | +| 连接复用 | HTTP1.1 支持 keep-alive | 通常有连接池 | +| 服务发现 | 依赖 DNS | 使用注册中心 | +| 性能 | 较低 | 较高 | + +**注意**:gRPC 就基于 HTTP/2 实现,说明 RPC 和 HTTP 不是对立关系。 + +### Dubbo 的核心架构角色? + +- **Container**:服务运行容器 +- **Provider**:服务提供方,向注册中心注册服务 +- **Consumer**:服务消费方,向注册中心订阅服务 +- **Registry**:注册中心(Nacos、ZooKeeper) +- **Monitor**:监控中心 + +### Dubbo 的负载均衡策略? + +| 策略 | 说明 | +| ------------------------- | ---------------------------------- | +| RandomLoadBalance | 加权随机(默认) | +| RoundRobinLoadBalance | 加权轮询 | +| LeastActiveLoadBalance | 最小活跃数(性能好者优先) | +| ConsistentHashLoadBalance | 一致性哈希(相同参数到同一提供者) | + +### 常见 RPC 框架对比? + +| 框架 | 特点 | 适用场景 | +| ---------- | ----------------------------- | ------------------- | +| **Dubbo** | 功能完善、生态丰富、社区活跃 | Java 后端技术栈首选 | +| **gRPC** | 跨语言、基于 HTTP/2、Protobuf | 多语言场景 | +| **Thrift** | 跨语言、Facebook 开源 | 多语言场景 | +| **Motan** | 微博开源、精简版 Dubbo | 不推荐使用 | + +## ZooKeeper + +ZooKeeper 目前面试考察不多,如果你的项目用到了再准备,否则的话,可以考虑跳过: + +- [ZooKeeper相关概念总结(入门)](https://javaguide.cn/distributed-system/distributed-process-coordination/zookeeper/zookeeper-intro.html) +- [ZooKeeper相关概念总结(进阶)](https://javaguide.cn/distributed-system/distributed-process-coordination/zookeeper/zookeeper-plus.html) + + diff --git a/docs/home.md b/docs/home.md index 7d2918f..ce356b7 100644 --- a/docs/home.md +++ b/docs/home.md @@ -38,6 +38,10 @@ head: - [Spring和Spring Boot常见面试题总结](./system-design/spring.md) - [设计模式常见面试题总结](./system-design/design-pattern.md) +## 分布式 + +- [分布式系统常见面试题总结](./distributed-system/distributed-system.md) + ## 测试开发 - [测试开发常见面试题总结](./other/test-development.md) diff --git a/docs/java/java-basis.md b/docs/java/java-basis.md index 875ee94..51686a5 100755 --- a/docs/java/java-basis.md +++ b/docs/java/java-basis.md @@ -10,23 +10,7 @@ head: content: Java基础面试题,Java特点,JVM,JDK,JRE,字节码,AOT编译,JIT编译,GraalVM,Oracle JDK,OpenJDK,基本数据类型,自动装箱,包装类型缓存,BigDecimal,静态变量,方法重载,方法重写,String不可变,常量池,异常处理,泛型,反射,SPI,序列化 --- - - -## 前言 - -由于很多读者都有突击面试的需求,所以我在几年前就弄了 **JavaGuide 面试突击版本**(JavaGuide 内容精简版,只保留重点),并持续完善跟进。对于喜欢纸质阅读的朋友来说,也可以打印出来,整体阅读体验非常高! - -除了只保留最常问的面试题之外,我还进一步对重点中的重点进行了⭐️标注。并且,有亮色(白天)和暗色(夜间)两个主题选择,需要打印出来的朋友记得选择亮色版本。 - -对于时间比较充裕的朋友,我个人还是更推荐 [JavaGuide](https://javaguide.cn/) 网站系统学习,内容更全面,更深入。 - -JavaGuide 已经持续维护 6 年多了,累计提交了接近 **6000** commit ,共有 **570+** 多位贡献者共同参与维护和完善。用心做原创优质内容,如果觉得有帮助的话,欢迎点赞分享!传送门:[GitHub](https://github.com/Snailclimb/JavaGuide) | [Gitee](https://gitee.com/SnailClimb/JavaGuide)。 - -对于需要更进一步面试辅导服务的读者,欢迎加入 **[JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)**(技术专栏/一对一提问/简历修改/求职指南/面试打卡),绝对物超所值! - -面试突击最新版本可以在我的公众号回复“**PDF**”获取([JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)会提前同步最新版,针对球友的一个小福利)。 - -![JavaGuide 官方公众号](https://oss.javaguide.cn/github/javaguide/gongzhonghaoxuanchuan.png) + 这部分内容摘自 [JavaGuide](https://javaguide.cn/) 下面几篇文章中的重点: diff --git a/docs/java/java-collection.md b/docs/java/java-collection.md index 815094d..7623a87 100755 --- a/docs/java/java-collection.md +++ b/docs/java/java-collection.md @@ -12,22 +12,6 @@ head: -## 前言 - -由于很多读者都有突击面试的需求,所以我在几年前就弄了 **JavaGuide 面试突击版本**(JavaGuide 内容精简版,只保留重点),并持续完善跟进。对于喜欢纸质阅读的朋友来说,也可以打印出来,整体阅读体验非常高! - -除了只保留最常问的面试题之外,我还进一步对重点中的重点进行了⭐️标注。并且,有亮色(白天)和暗色(夜间)两个主题选择,需要打印出来的朋友记得选择亮色版本。 - -对于时间比较充裕的朋友,我个人还是更推荐 [JavaGuide](https://javaguide.cn/) 网站系统学习,内容更全面,更深入。 - -JavaGuide 已经持续维护 6 年多了,累计提交了接近 **6000** commit ,共有 **570+** 多位贡献者共同参与维护和完善。用心做原创优质内容,如果觉得有帮助的话,欢迎点赞分享!传送门:[GitHub](https://github.com/Snailclimb/JavaGuide) | [Gitee](https://gitee.com/SnailClimb/JavaGuide)。 - -对于需要更进一步面试辅导服务的读者,欢迎加入 **[JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)**(技术专栏/一对一提问/简历修改/求职指南/面试打卡),绝对物超所值! - -面试突击最新版本可以在我的公众号回复“**PDF**”获取([JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)会提前同步最新版,针对球友的一个小福利)。 - -![JavaGuide 官方公众号](https://oss.javaguide.cn/github/javaguide/gongzhonghaoxuanchuan.png) - 这部分内容摘自 [JavaGuide](https://javaguide.cn/) 下面几篇文章中的重点: - [Java 集合常见面试题总结(上)](https://javaguide.cn/java/collection/java-collection-questions-01.html)(Java 集合基础、`ArrayList`、`LinkedList`、`HashSet`、`ArrayDeque`、`PriorityQueue`、`BlockingQueue` 等) diff --git a/docs/java/java-concurrent.md b/docs/java/java-concurrent.md index be54431..44c3f92 100755 --- a/docs/java/java-concurrent.md +++ b/docs/java/java-concurrent.md @@ -12,22 +12,6 @@ head: -## 前言 - -由于很多读者都有突击面试的需求,所以我在几年前就弄了 **JavaGuide 面试突击版本**(JavaGuide 内容精简版,只保留重点),并持续完善跟进。对于喜欢纸质阅读的朋友来说,也可以打印出来,整体阅读体验非常高! - -除了只保留最常问的面试题之外,我还进一步对重点中的重点进行了⭐️标注。并且,有亮色(白天)和暗色(夜间)两个主题选择,需要打印出来的朋友记得选择亮色版本。 - -对于时间比较充裕的朋友,我个人还是更推荐 [JavaGuide](https://javaguide.cn/) 网站系统学习,内容更全面,更深入。 - -JavaGuide 已经持续维护 6 年多了,累计提交了接近 **6000** commit ,共有 **570+** 多位贡献者共同参与维护和完善。用心做原创优质内容,如果觉得有帮助的话,欢迎点赞分享!传送门:[GitHub](https://github.com/Snailclimb/JavaGuide) | [Gitee](https://gitee.com/SnailClimb/JavaGuide)。 - -对于需要更进一步面试辅导服务的读者,欢迎加入 **[JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)**(技术专栏/一对一提问/简历修改/求职指南/面试打卡),绝对物超所值! - -面试突击最新版本可以在我的公众号回复“**PDF**”获取([JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)会提前同步最新版,针对球友的一个小福利)。 - -![JavaGuide 官方公众号](https://oss.javaguide.cn/github/javaguide/gongzhonghaoxuanchuan.png) - 这部分内容摘自 [JavaGuide](https://javaguide.cn/) 下面几篇文章中的重点: - [Java并发常见面试题总结(上)](https://javaguide.cn/java/concurrent/java-concurrent-questions-01.html)(多线程基础知识,例如线程和进程的概念、死锁) diff --git a/docs/java/java-jvm.md b/docs/java/java-jvm.md index 067117a..720e48a 100755 --- a/docs/java/java-jvm.md +++ b/docs/java/java-jvm.md @@ -12,22 +12,6 @@ head: -## 前言 - -由于很多读者都有突击面试的需求,所以我在几年前就弄了 **JavaGuide 面试突击版本**(JavaGuide 内容精简版,只保留重点),并持续完善跟进。对于喜欢纸质阅读的朋友来说,也可以打印出来,整体阅读体验非常高! - -除了只保留最常问的面试题之外,我还进一步对重点中的重点进行了⭐️标注。并且,有亮色(白天)和暗色(夜间)两个主题选择,需要打印出来的朋友记得选择亮色版本。 - -对于时间比较充裕的朋友,我个人还是更推荐 [JavaGuide](https://javaguide.cn/) 网站系统学习,内容更全面,更深入。 - -JavaGuide 已经持续维护 6 年多了,累计提交了接近 **6000** commit ,共有 **570+** 多位贡献者共同参与维护和完善。用心做原创优质内容,如果觉得有帮助的话,欢迎点赞分享!传送门:[GitHub](https://github.com/Snailclimb/JavaGuide) | [Gitee](https://gitee.com/SnailClimb/JavaGuide)。 - -对于需要更进一步面试辅导服务的读者,欢迎加入 **[JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)**(技术专栏/一对一提问/简历修改/求职指南/面试打卡),绝对物超所值! - -面试突击最新版本可以在我的公众号回复“**PDF**”获取([JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)会提前同步最新版,针对球友的一个小福利)。 - -![JavaGuide 官方公众号](https://oss.javaguide.cn/github/javaguide/gongzhonghaoxuanchuan.png) - 这部分内容摘自 [JavaGuide](https://javaguide.cn/) 下面几篇文章中的重点: 1. [Java 内存区域详解](https://javaguide.cn/java/jvm/memory-area.html) diff --git a/docs/other/test-development.drawio b/docs/other/test-development.drawio new file mode 100644 index 0000000..9bd24f2 --- /dev/null +++ b/docs/other/test-development.drawio @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/other/test-development.md b/docs/other/test-development.md index 756660f..d2a5a31 100644 --- a/docs/other/test-development.md +++ b/docs/other/test-development.md @@ -13,9 +13,11 @@ head: -很多读者选择了测开方向来冲一波中大厂。在国内当前的测开面试中,面试官不仅会考察测试领域的基础知识和实践能力,往往也会考察候选人的后端开发功底。这是因为优秀的测开工程师需要深入理解系统架构,能够编写高质量的自动化测试代码,进行性能测试分析,甚至参与到测试工具和平台的开发中。所以,像多线程、Redis、MySQL 等后端开发的核心知识点,在测开面试中被问到是常态。 +很多读者选择了测开方向来冲一波中大厂。在国内当前的测开面试中,面试官不仅会考察测试领域的基础知识和实践能力,往往也会考察候选人的后端开发功底。 -我这里整理并总结了一些在测开面试中偏测试方向的高频问题,并附上详细的参考答案(如答案过长,还会提供简化版回答): +这是因为优秀的测开工程师需要深入理解系统架构,能够编写高质量的自动化测试代码,进行性能测试分析,甚至参与到测试工具和平台的开发中。所以,像多线程、Redis、MySQL 等后端开发的核心知识点,在测开面试中被问到是常态。 + +Guide 这里整理并总结了一些在测开面试中偏测试方向的高频问题,并附上详细的参考答案(如答案过长,还会提供简化版回答): 1. **测试开发基础** - 为什么想做测开?/ 为什么从开发转测开? @@ -120,7 +122,7 @@ head: ### 什么是“测试左移”(Shift-Left Testing)?你在项目中是如何实践的? -**测试左移**的本质是:**将质量保障活动尽量前移到软件生命周期的早期阶段**,通过“早发现、早修复”来降低缺陷修复成本(有研究表明,需求阶段发现缺陷的成本大约只有生产环境的 1/100)。 +**测试左移**的本质是:**将质量保障活动尽量前移到软件生命周期的早期阶段**,通过"早发现、早修复"来降低缺陷修复成本。行业经验表明(参考《代码大全》等经典著作),缺陷在不同阶段发现和修复的成本呈指数级增长:需求阶段修复成本约为 1,开发阶段约为 5-10,测试阶段约为 15-50,生产环境可达 100+。 也就是说,不再把测试只放在“开发完之后”,而是在**需求、设计、开发阶段就开始介入质量活动**,让缺陷在最早的环节被发现和预防。 @@ -242,7 +244,7 @@ head: - **随时运行:** 你可以安排这些测试频繁运行,甚至在夜间或周末,无需人员在场就能提供更快的反馈。 - **一致性是关键:** 机器每次都精确地按照指令执行,消除了人为错误,比如忘记步骤或误解结果。 -不过,维护自动化测试需要花费大量时间和精力。当你发现自动化测试用例的维护成本高于其节省的测试成本时,自动化测试就失去了价值与意义,你也就需要在是否使用自动化测试上权衡取舍了。 +自动化测试的价值需要权衡:ROI = (节省的手工测试时间 × 执行频率) - (脚本开发时间 + 维护成本)。实践中,适用于自动化测试的场景包括:重复执行频率高(如回归测试)、步骤确定性高(UI 元素稳定)、执行耗时长(如性能测试);不适用场景包括:一次性功能、UI 频繁变动、探索性测试。 ### 什么是 Web 应用的自动化测试?怎么做? @@ -252,7 +254,7 @@ Web 应用的自动化测试,简单说就是**用代码(脚本)来控制 实践中,Web 应用自动化测试通常这样做: -1. **选择合适的工具/框架**:市面上有很多选择,比如老牌的 **Selenium**(支持多语言、多浏览器)、现代化的 **Cypress** 或 **Playwright**(通常更快、更稳定,调试友好)。选择时主要考虑项目技术栈、团队熟悉程度和测试需求。 +1. **选择合适的工具/框架**:选择时需考虑工具特点与项目匹配度。Selenium(成熟稳定、支持多语言、社区大、但执行相对较慢)、Cypress(开发者友好、调试方便、JS-only、不支持多浏览器并行)、Playwright(现代化、速度快、支持多语言、API 测试能力强)。推荐优先级:团队技术栈(JS/Java/Python)、测试类型(UI/API/混合)、CI/CD 集成需求。 2. **编写测试脚本**:针对应用的核心功能和关键业务流程编写自动化脚本。 - **重点是功能和回归测试**:确保核心流程(如登录、购物、关键操作)能正常工作,并且在新代码提交后这些功能没有被意外破坏。 - **适当进行 UI 验证**:可以检查关键元素是否存在、是否可见,但过于精细的像素级 UI 对比通常投入产出比较低,容易失败。 @@ -266,7 +268,7 @@ Web 应用的自动化测试,简单说就是**用代码(脚本)来控制 压测的步骤大致如下: 1. **确定压测目标:** 你想通过压测了解什么?是想看系统能否支撑 1000 用户在线?还是想知道下单接口的最大 TPS 是多少?响应时间要求低于 500ms?先把这些具体的、可量化的性能指标定下来。同时确定压测的范围,是测试整个系统,还是某个核心模块或接口? -2. **准备测试环境:** 准备一套尽可能接近生产环境的测试环境(硬件配置、网络、数据量等),结果才更有参考价值。最好是隔离的环境,避免影响线上用户。 +2. **准备测试环境:** 准备接近生产环境的测试环境。建议:硬件配置为生产环境的 50-80%(如核心 CPU/内存)、数据量为生产环境的 20-50%(可使用脱敏数据)、网络带宽模拟生产环境延迟、关键依赖(数据库、缓存、消息队列)使用同版本、关闭不必要的调试日志。压测环境应与日常测试环境隔离,避免干扰。 3. **选择合适的压测工具:** JMeter 是最常用、免费开源的选择,功能强大。其他流行的还有 k6 (现代化的,用 JavaScript 写脚本)、LoadRunner (商业,功能全面)、Gatling (用 Scala 写脚本,性能较好)。根据团队技术栈和需求选择。 4. **编写/录制测试脚本:** 使用选定的工具,根据设计的测试场景,编写或录制模拟用户操作的请求脚本。 5. **配置压测工具并执行测试:** 设置并发用户数、请求频率等参数。配置完成后,执行测试。 @@ -305,7 +307,7 @@ Web 应用的自动化测试,简单说就是**用代码(脚本)来控制 - 目标:由客户 / 业务方 / 产品代表确认系统是否满足业务需求、合同约定,是否可以交付上线。 - 特点:贴近真实业务场景和生产环境,更关注“是否满足业务和用户预期”。 -实际项目中,一般遵循“测试金字塔”:单元测试自动化率最高(>90%),其上依次是集成测试(60–80%)和少量关键系统/UI 自动化(20–40%),回归尽量依赖自动化,而验收测试则以人工探索和真实业务场景为主。 +实际项目中,一般遵循"测试金字塔":单元测试自动化率最高(>90%),其上依次是集成测试(60–80%)和少量关键系统/UI 自动化(20–40%),回归尽量依赖自动化,而验收测试则以人工探索和真实业务场景为主。 ![测试金字塔](https://oss.javaguide.cn/github/javaguide/test-development/test-development-testing-pyramid.png) diff --git a/docs/snippets/article-header.snippet.md b/docs/snippets/article-header.snippet.md new file mode 100644 index 0000000..055be76 --- /dev/null +++ b/docs/snippets/article-header.snippet.md @@ -0,0 +1,2 @@ +[![《SpringAI 智能面试平台+RAG 知识库》](https://oss.javaguide.cn/xingqiu/interview-guide-banner.png)](https://javaguide.cn/zhuanlan/interview-guide.html) + diff --git a/docs/snippets/small-advertisement.snippet.md b/docs/snippets/small-advertisement.snippet.md index 9b44168..09f3dc4 100644 --- a/docs/snippets/small-advertisement.snippet.md +++ b/docs/snippets/small-advertisement.snippet.md @@ -1,2 +1,13 @@ [![JavaGuide官方知识星球](https://oss.javaguide.cn/xingqiu/xingqiu.png)](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html) +## 前言 + +这是 **JavaGuide 面试突击版本**,只保留最常问的面试题,并对重点内容进行了 ⭐️ 标注。提供亮色和暗色两个主题,需要打印的朋友请选择亮色版本。 + +时间充裕的朋友,推荐使用 [JavaGuide](https://javaguide.cn/) 网站系统学习,内容更全面深入。 + +如果你想要付费支持/面试辅导(比如简历优化、一对一提问、高频考点突击资料等)的话,欢迎了解我的[知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)。已经坚持维护六年,内容持续更新,虽白菜价(0.4元/天)但质量很高,主打一个良心! + +面试突击最新版可在公众号回复「**PDF**」获取(知识星球会提前同步最新版)。 + +![JavaGuide 公众号](https://oss.javaguide.cn/github/javaguide/gongzhonghao-javaguide.png) diff --git a/docs/snippets/yuanma.snippet.md b/docs/snippets/yuanma.snippet.md deleted file mode 100644 index 643e3ed..0000000 --- a/docs/snippets/yuanma.snippet.md +++ /dev/null @@ -1,25 +0,0 @@ -[《Java 必读源码系列》](../zhuanlan/source-code-reading.md)(点击链接即可查看详细介绍)的部分内容展示如下。 - -![《Java 必读源码系列》](https://oss.javaguide.cn/xingqiu/image-20220621091832348.png) - -为了帮助更多同学准备 Java 面试以及学习 Java ,我创建了一个纯粹的[Java 面试知识星球](../about-the-author/zhishixingqiu-two-years.md)。虽然收费只有培训班/训练营的百分之一,但是知识星球里的内容质量更高,提供的服务也更全面,非常适合准备 Java 面试和学习 Java 的同学。 - -**欢迎准备 Java 面试以及学习 Java 的同学加入我的 [知识星球](../about-the-author/zhishixingqiu-two-years.md),干货非常多,学习氛围也很不错!收费虽然是白菜价,但星球里的内容或许比你参加上万的培训班质量还要高。** - -下面是星球提供的部分服务(点击下方图片即可获取知识星球的详细介绍): - -[![星球服务](https://oss.javaguide.cn/xingqiu/xingqiufuwu.png)](../about-the-author/zhishixingqiu-two-years.md) - -**我有自己的原则,不割韭菜,用心做内容,真心希望帮助到你!** - -如果你感兴趣的话,不妨花 3 分钟左右看看星球的详细介绍:[JavaGuide 知识星球详细介绍](../about-the-author/zhishixingqiu-two-years.md) 。 - -这里再送一个 **30** 元的星球专属优惠券,数量有限(价格即将上调。老用户续费半价 ,微信扫码即可续费)! - -![知识星球30元优惠卷](https://oss.javaguide.cn/xingqiu/xingqiuyouhuijuan-30.jpg) - -进入星球之后,记得查看 **[星球使用指南](https://t.zsxq.com/0d18KSarv)** (一定要看!!!) 和 **[星球优质主题汇总](https://t.zsxq.com/12uSKgTIm)** 。 - -**无任何套路,无任何潜在收费项。用心做内容,不割韭菜!** - -不过, **一定要确定需要再进** 。并且, **三天之内觉得内容不满意可以全额退款** 。 diff --git a/docs/system-design/design-pattern.md b/docs/system-design/design-pattern.md index 141b98d..b63b3d8 100644 --- a/docs/system-design/design-pattern.md +++ b/docs/system-design/design-pattern.md @@ -12,22 +12,6 @@ head: -## 前言 - -由于很多读者都有突击面试的需求,所以我在几年前就弄了 **JavaGuide 面试突击版本**(JavaGuide 内容精简版,只保留重点),并持续完善跟进。对于喜欢纸质阅读的朋友来说,也可以打印出来,整体阅读体验非常高! - -除了只保留最常问的面试题之外,我还进一步对重点中的重点进行了**⭐️**标注。并且,有亮色(白天)和暗色(夜间)两个主题选择,需要打印出来的朋友记得选择亮色版本。 - -对于时间比较充裕的朋友,我个人还是更推荐 [JavaGuide](https://javaguide.cn/) 网站系统学习,内容更全面,更深入。 - -JavaGuide 已经持续维护 6 年多了,累计提交了接近 **6000** commit ,共有 **570+** 多位贡献者共同参与维护和完善。用心做原创优质内容,如果觉得有帮助的话,欢迎点赞分享!传送门:[GitHub](https://github.com/Snailclimb/JavaGuide) | [Gitee](https://gitee.com/SnailClimb/JavaGuide)。 - -对于需要更进一步面试辅导服务的读者,欢迎加入 **[JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)**(技术专栏/一对一提问/简历修改/求职指南/面试打卡),绝对物超所值! - -面试突击最新版本可以在我的公众号回复“**PDF**”获取([JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)会提前同步最新版,针对球友的一个小福利)。 - -![JavaGuide 官方公众号](https://oss.javaguide.cn/github/javaguide/gongzhonghaoxuanchuan.png) - ## 软件设计原则有哪些? 在软件开发中,我们遵循一系列面向对象设计原则来提升代码的可维护性、可复用性和可扩展性,从而构建出更加健壮和灵活的系统。这些原则中最核心、最著名的就是 **SOLID** 原则,同时还有几个非常重要的补充原则。 diff --git a/docs/system-design/spring.md b/docs/system-design/spring.md index 2759d00..3fb05a5 100644 --- a/docs/system-design/spring.md +++ b/docs/system-design/spring.md @@ -10,23 +10,7 @@ head: content: Spring面试题,Spring Boot面试题,Spring IoC,依赖注入,Spring AOP,Spring MVC,Spring事务,事务传播行为,Spring循环依赖,三级缓存,Bean生命周期,Spring Security,自动配置 --- - - -## 前言 - -由于很多读者都有突击面试的需求,所以我在几年前就弄了 **JavaGuide 面试突击版本**(JavaGuide 内容精简版,只保留重点),并持续完善跟进。对于喜欢纸质阅读的朋友来说,也可以打印出来,整体阅读体验非常高! - -除了只保留最常问的面试题之外,我还进一步对重点中的重点进行了⭐️标注。并且,有亮色(白天)和暗色(夜间)两个主题选择,需要打印出来的朋友记得选择亮色版本。 - -对于时间比较充裕的朋友,我个人还是更推荐 [JavaGuide](https://javaguide.cn/) 网站系统学习,内容更全面,更深入。 - -JavaGuide 已经持续维护 6 年多了,累计提交了接近 **6000** commit ,共有 **570+** 多位贡献者共同参与维护和完善。用心做原创优质内容,如果觉得有帮助的话,欢迎点赞分享!传送门:[GitHub](https://github.com/Snailclimb/JavaGuide) | [Gitee](https://gitee.com/SnailClimb/JavaGuide)。 - -对于需要更进一步面试辅导服务的读者,欢迎加入 **[JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)**(技术专栏/一对一提问/简历修改/求职指南/面试打卡),绝对物超所值! - -面试突击最新版本可以在我的公众号回复“**PDF**”获取([JavaGuide 官方知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)会提前同步最新版,针对球友的一个小福利)。 - -![JavaGuide 官方公众号](https://oss.javaguide.cn/github/javaguide/gongzhonghaoxuanchuan.png) + 这部分内容摘自 [JavaGuide](https://javaguide.cn/) 下面几篇文章中的重点: diff --git a/package.json b/package.json index 740aebb..c0d4807 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ ".md": "markdownlint-cli2" }, "dependencies": { + "mermaid": "^11.12.2", "@vuepress/bundler-vite": "2.0.0-rc.24", "@vuepress/plugin-feed": "2.0.0-rc.112", "@vuepress/plugin-search": "2.0.0-rc.112", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7df2365..146c34e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,6 +26,9 @@ importers: mathjax-full: specifier: 3.2.2 version: 3.2.2 + mermaid: + specifier: ^11.12.2 + version: 11.13.0 nano-staged: specifier: 0.8.0 version: 0.8.0 @@ -43,10 +46,13 @@ importers: version: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) vuepress-theme-hope: specifier: 2.0.0-rc.94 - version: 2.0.0-rc.94(@vuepress/plugin-feed@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)))(@vuepress/plugin-search@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)))(katex@0.16.25)(markdown-it@14.1.0)(mathjax-full@3.2.2)(sass-embedded@1.89.2)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) + version: 2.0.0-rc.94(@vuepress/plugin-feed@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)))(@vuepress/plugin-search@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)))(katex@0.16.25)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@11.13.0)(sass-embedded@1.89.2)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) packages: + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -64,9 +70,27 @@ packages: resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} + '@braintree/sanitize-url@7.1.2': + resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} + '@bufbuild/protobuf@2.10.1': resolution: {integrity: sha512-ckS3+vyJb5qGpEYv/s1OebUHDi/xSNtfgw1wqKZo7MR9F2z+qXr0q5XagafAG/9O0QPVIUfST0smluYSTpYFkg==} + '@chevrotain/cst-dts-gen@11.1.2': + resolution: {integrity: sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q==} + + '@chevrotain/gast@11.1.2': + resolution: {integrity: sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g==} + + '@chevrotain/regexp-to-ast@11.1.2': + resolution: {integrity: sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw==} + + '@chevrotain/types@11.1.2': + resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} + + '@chevrotain/utils@11.1.2': + resolution: {integrity: sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA==} + '@esbuild/aix-ppc64@0.25.12': resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} @@ -223,6 +247,12 @@ packages: cpu: [x64] os: [win32] + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@3.1.0': + resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} + '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} @@ -478,6 +508,9 @@ packages: markdown-it: optional: true + '@mermaid-js/parser@1.0.1': + resolution: {integrity: sha512-opmV19kN1JsK0T6HhhokHpcVkqKpF+x2pPDKKM2ThHtZAB5F4PROopk0amuVYK5qMrIA4erzpNm8gmPNJgMDxQ==} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -649,6 +682,99 @@ packages: '@stackblitz/sdk@1.11.0': resolution: {integrity: sha512-DFQGANNkEZRzFk1/rDP6TcFdM82ycHE+zfl9C/M/jXlH68jiqHWHFMQURLELoD8koxvu/eW5uhg94NSAZlYrUQ==} + '@types/d3-array@3.2.2': + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} + + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} + + '@types/d3-brush@3.0.6': + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} + + '@types/d3-chord@3.0.6': + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-contour@3.0.6': + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} + + '@types/d3-delaunay@6.0.4': + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + + '@types/d3-dispatch@3.0.7': + resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} + + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} + + '@types/d3-force@3.0.10': + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} + + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + + '@types/d3-geo@3.1.0': + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-polygon@3.0.2': + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} + + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + + '@types/d3-random@3.0.3': + resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} + + '@types/d3-scale-chromatic@3.1.0': + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-selection@3.0.11': + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} + + '@types/d3-shape@3.1.8': + resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==} + + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} + + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + + '@types/d3@7.4.3': + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} + '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -658,6 +784,9 @@ packages: '@types/fs-extra@11.0.4': resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + '@types/hash-sum@1.0.2': resolution: {integrity: sha512-UP28RddqY8xcU0SCEp9YKutQICXpaAq9N8U2klqF5hegGha7KzTOL8EdhIIV3bOSGBzjEpN9bU/d+nNZBdJYVw==} @@ -712,6 +841,9 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@upsetjs/venn.js@2.0.0': + resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} + '@vitejs/plugin-vue@6.0.1': resolution: {integrity: sha512-+MaE752hU0wfPFJEUAIxqw18+20euHHdxVtMvbFcOEpjEyfqXH/5DCoTHiVJ0J29EhTJdoTkjEv5YBKU9dnoTw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1030,6 +1162,11 @@ packages: resolution: {integrity: sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==} engines: {node: '>=14.6'} + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} + hasBin: true + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -1135,6 +1272,14 @@ packages: resolution: {integrity: sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==} engines: {node: '>=20.18.1'} + chevrotain-allstar@0.3.1: + resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==} + peerDependencies: + chevrotain: ^11.0.0 + + chevrotain@11.1.2: + resolution: {integrity: sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg==} + chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -1175,10 +1320,17 @@ packages: resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} engines: {node: '>=20'} + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + connect-history-api-fallback@2.0.0: resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} engines: {node: '>=0.8'} @@ -1187,6 +1339,12 @@ packages: resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} engines: {node: '>=18'} + cose-base@1.0.3: + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} + + cose-base@2.2.0: + resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} + create-codepen@2.0.0: resolution: {integrity: sha512-ehJ0Zw5RSV2G4+/azUb7vEZWRSA/K9cW7HDock1Y9ViDexkgSJUZJRcObdw/YAWeXKjreEQV9l/igNSsJ1yw5A==} engines: {node: '>=18'} @@ -1201,6 +1359,165 @@ packages: csstype@3.2.2: resolution: {integrity: sha512-D80T+tiqkd/8B0xNlbstWDG4x6aqVfO52+OlSUNIdkTvmNw0uQpJLeos2J/2XvpyidAFuTPmpad+tUxLndwj6g==} + cytoscape-cose-bilkent@4.1.0: + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape-fcose@2.2.0: + resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape@3.33.1: + resolution: {integrity: sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==} + engines: {node: '>=0.10'} + + d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + + d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} + + d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} + + d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} + + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + + d3-format@3.1.2: + resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==} + engines: {node: '>=12'} + + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} + + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + + d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} + + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + + d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} + engines: {node: '>=12'} + + dagre-d3-es@7.0.14: + resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==} + + dayjs@1.11.19: + resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} + debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -1217,6 +1534,9 @@ packages: decode-named-character-reference@1.2.0: resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + delaunator@5.0.1: + resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -1237,6 +1557,9 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} + dompurify@3.3.3: + resolution: {integrity: sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==} + domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} @@ -1362,6 +1685,9 @@ packages: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} engines: {node: '>=6.0'} + hachure-fill@0.5.2: + resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -1419,6 +1745,13 @@ packages: immutable@5.1.4: resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==} + internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} @@ -1497,10 +1830,23 @@ packages: resolution: {integrity: sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q==} hasBin: true + khroma@2.1.0: + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} + kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} + langium@4.2.1: + resolution: {integrity: sha512-zu9QWmjpzJcomzdJQAHgDVhLGq5bLosVak1KVa40NzQHXfqr4eAHupvnPOVXEoLkg6Ocefvf/93d//SB7du4YQ==} + engines: {node: '>=20.10.0', npm: '>=10.2.3'} + + layout-base@1.0.2: + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} + + layout-base@2.0.1: + resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} + lilconfig@3.1.3: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} @@ -1521,6 +1867,9 @@ packages: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} + lodash-es@4.17.23: + resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} + log-symbols@6.0.0: resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} engines: {node: '>=18'} @@ -1555,6 +1904,11 @@ packages: resolution: {integrity: sha512-eoQqH0291YCCjd+Pe1PUQ9AmWthlVmS0XWgcionkZ8q34ceZyRI+pYvsWksXJJL8OBkWCPwp1h/pnXxrPFC4oA==} engines: {node: '>=18'} + marked@16.4.2: + resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==} + engines: {node: '>= 20'} + hasBin: true + mathjax-full@3.2.2: resolution: {integrity: sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==} deprecated: Version 4 replaces this package with the scoped package @mathjax/src @@ -1569,6 +1923,9 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + mermaid@11.13.0: + resolution: {integrity: sha512-fEnci+Immw6lKMFI8sqzjlATTyjLkRa6axrEgLV2yHTfv8r+h1wjFbV6xeRtd4rUV1cS4EpR9rwp3Rci7TRWDw==} + mhchemparser@4.2.1: resolution: {integrity: sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==} @@ -1661,6 +2018,9 @@ packages: mj-context-menu@0.6.1: resolution: {integrity: sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==} + mlly@1.8.1: + resolution: {integrity: sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -1719,6 +2079,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} @@ -1731,6 +2094,9 @@ packages: parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + path-data-parser@0.1.0: + resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -1743,6 +2109,9 @@ packages: resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} engines: {node: '>=18'} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} @@ -1761,10 +2130,19 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + pngjs@5.0.0: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} + points-on-curve@0.2.0: + resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} + + points-on-path@0.2.1: + resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} + postcss-load-config@6.0.1: resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} engines: {node: '>= 18'} @@ -1854,14 +2232,23 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + rollup@4.53.2: resolution: {integrity: sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + roughjs@4.6.6: + resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} @@ -2040,6 +2427,9 @@ packages: resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} engines: {node: '>=0.10.0'} + stylis@4.3.6: + resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} + superjson@2.2.5: resolution: {integrity: sha512-zWPTX96LVsA/eVYnqOM2+ofcdPqdS1dAF1LN4TS2/MWuUpfitd9ctTa87wt4xrYnZnkLtS69xpBdSxVBP5Rm6w==} engines: {node: '>=16'} @@ -2060,6 +2450,10 @@ packages: resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} engines: {node: ^14.18.0 || >=16.0.0} + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} @@ -2074,12 +2468,19 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + ufo@1.6.3: + resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} @@ -2127,6 +2528,10 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + hasBin: true + varint@6.0.0: resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} @@ -2179,6 +2584,26 @@ packages: yaml: optional: true + vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} + engines: {node: '>=14.0.0'} + + vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + + vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + + vscode-languageserver@9.0.1: + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} + hasBin: true + + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + vue-router@4.6.3: resolution: {integrity: sha512-ARBedLm9YlbvQomnmq91Os7ck6efydTSpRP3nuOKCvgJOHNrhRoJDSKtee8kcL1Vf7nz6U+PMBL+hTvR3bTVQg==} peerDependencies: @@ -2358,6 +2783,11 @@ packages: snapshots: + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.6.0 + tinyexec: 1.0.2 + '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.28.5': {} @@ -2371,8 +2801,27 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@braintree/sanitize-url@7.1.2': {} + '@bufbuild/protobuf@2.10.1': {} + '@chevrotain/cst-dts-gen@11.1.2': + dependencies: + '@chevrotain/gast': 11.1.2 + '@chevrotain/types': 11.1.2 + lodash-es: 4.17.23 + + '@chevrotain/gast@11.1.2': + dependencies: + '@chevrotain/types': 11.1.2 + lodash-es: 4.17.23 + + '@chevrotain/regexp-to-ast@11.1.2': {} + + '@chevrotain/types@11.1.2': {} + + '@chevrotain/utils@11.1.2': {} + '@esbuild/aix-ppc64@0.25.12': optional: true @@ -2451,6 +2900,14 @@ snapshots: '@esbuild/win32-x64@0.25.12': optional: true + '@iconify/types@2.0.0': {} + + '@iconify/utils@3.1.0': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@iconify/types': 2.0.0 + mlly: 1.8.1 + '@jridgewell/sourcemap-codec@1.5.5': {} '@lit-labs/ssr-dom-shim@1.4.0': {} @@ -2671,6 +3128,10 @@ snapshots: optionalDependencies: markdown-it: 14.1.0 + '@mermaid-js/parser@1.0.1': + dependencies: + langium: 4.2.1 + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -2795,6 +3256,123 @@ snapshots: '@stackblitz/sdk@1.11.0': {} + '@types/d3-array@3.2.2': {} + + '@types/d3-axis@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-brush@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-chord@3.0.6': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-contour@3.0.6': + dependencies: + '@types/d3-array': 3.2.2 + '@types/geojson': 7946.0.16 + + '@types/d3-delaunay@6.0.4': {} + + '@types/d3-dispatch@3.0.7': {} + + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-dsv@3.0.7': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-fetch@3.0.7': + dependencies: + '@types/d3-dsv': 3.0.7 + + '@types/d3-force@3.0.10': {} + + '@types/d3-format@3.0.4': {} + + '@types/d3-geo@3.1.0': + dependencies: + '@types/geojson': 7946.0.16 + + '@types/d3-hierarchy@3.1.7': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-polygon@3.0.2': {} + + '@types/d3-quadtree@3.0.6': {} + + '@types/d3-random@3.0.3': {} + + '@types/d3-scale-chromatic@3.1.0': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-selection@3.0.11': {} + + '@types/d3-shape@3.1.8': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time-format@4.0.3': {} + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + + '@types/d3-transition@3.0.9': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-zoom@3.0.8': + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.11 + + '@types/d3@7.4.3': + dependencies: + '@types/d3-array': 3.2.2 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.3 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.7 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.10 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.7 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.1.1 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.3 + '@types/d3-scale': 4.0.9 + '@types/d3-scale-chromatic': 3.1.0 + '@types/d3-selection': 3.0.11 + '@types/d3-shape': 3.1.8 + '@types/d3-time': 3.0.4 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.8 + '@types/debug@4.1.12': dependencies: '@types/ms': 2.1.0 @@ -2806,6 +3384,8 @@ snapshots: '@types/jsonfile': 6.1.4 '@types/node': 24.10.1 + '@types/geojson@7946.0.16': {} + '@types/hash-sum@1.0.2': {} '@types/hast@3.0.4': @@ -2857,6 +3437,11 @@ snapshots: '@ungap/structured-clone@1.3.0': {} + '@upsetjs/venn.js@2.0.0': + optionalDependencies: + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + '@vitejs/plugin-vue@6.0.1(vite@7.0.8(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)': dependencies: '@rolldown/pluginutils': 1.0.0-beta.29 @@ -3154,7 +3739,7 @@ snapshots: transitivePeerDependencies: - typescript - '@vuepress/plugin-markdown-chart@2.0.0-rc.112(markdown-it@14.1.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-markdown-chart@2.0.0-rc.112(markdown-it@14.1.0)(mermaid@11.13.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': dependencies: '@mdit/plugin-container': 0.22.2(markdown-it@14.1.0) '@mdit/plugin-plantuml': 0.22.3(markdown-it@14.1.0) @@ -3162,6 +3747,8 @@ snapshots: '@vueuse/core': 13.9.0(vue@3.5.24) vue: 3.5.24 vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + optionalDependencies: + mermaid: 11.13.0 transitivePeerDependencies: - markdown-it - typescript @@ -3416,6 +4003,8 @@ snapshots: '@xmldom/xmldom@0.9.8': {} + acorn@8.16.0: {} + ansi-regex@5.0.1: {} ansi-regex@6.2.2: {} @@ -3516,6 +4105,20 @@ snapshots: undici: 7.16.0 whatwg-mimetype: 4.0.0 + chevrotain-allstar@0.3.1(chevrotain@11.1.2): + dependencies: + chevrotain: 11.1.2 + lodash-es: 4.17.23 + + chevrotain@11.1.2: + 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 + chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -3558,14 +4161,26 @@ snapshots: commander@14.0.2: {} + commander@7.2.0: {} + commander@8.3.0: {} + confbox@0.1.8: {} + connect-history-api-fallback@2.0.0: {} copy-anything@4.0.5: dependencies: is-what: 5.5.0 + cose-base@1.0.3: + dependencies: + layout-base: 1.0.2 + + cose-base@2.2.0: + dependencies: + layout-base: 2.0.1 + create-codepen@2.0.0: {} css-select@5.2.2: @@ -3580,6 +4195,192 @@ snapshots: csstype@3.2.2: {} + cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1): + dependencies: + cose-base: 1.0.3 + cytoscape: 3.33.1 + + cytoscape-fcose@2.2.0(cytoscape@3.33.1): + dependencies: + cose-base: 2.2.0 + cytoscape: 3.33.1 + + cytoscape@3.33.1: {} + + d3-array@2.12.1: + dependencies: + internmap: 1.0.1 + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-axis@3.0.0: {} + + d3-brush@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3-chord@3.0.1: + dependencies: + d3-path: 3.1.0 + + d3-color@3.1.0: {} + + d3-contour@4.0.2: + dependencies: + d3-array: 3.2.4 + + d3-delaunay@6.0.4: + dependencies: + delaunator: 5.0.1 + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-dsv@3.0.1: + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + + d3-ease@3.0.1: {} + + d3-fetch@3.0.1: + dependencies: + d3-dsv: 3.0.1 + + d3-force@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-format@3.1.2: {} + + d3-geo@3.1.1: + dependencies: + d3-array: 3.2.4 + + d3-hierarchy@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@1.0.9: {} + + d3-path@3.1.0: {} + + d3-polygon@3.0.1: {} + + d3-quadtree@3.0.1: {} + + d3-random@3.0.1: {} + + d3-sankey@0.12.3: + dependencies: + d3-array: 2.12.1 + d3-shape: 1.3.7 + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.2 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-selection@3.0.0: {} + + d3-shape@1.3.7: + dependencies: + d3-path: 1.0.9 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3@7.9.0: + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.2 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + + dagre-d3-es@7.0.14: + dependencies: + d3: 7.9.0 + lodash-es: 4.17.23 + + dayjs@1.11.19: {} + debug@4.4.3: dependencies: ms: 2.1.3 @@ -3590,6 +4391,10 @@ snapshots: dependencies: character-entities: 2.0.2 + delaunator@5.0.1: + dependencies: + robust-predicates: 3.0.2 + dequal@2.0.3: {} devlop@1.1.0: @@ -3610,6 +4415,10 @@ snapshots: dependencies: domelementtype: 2.3.0 + dompurify@3.3.3: + optionalDependencies: + '@types/trusted-types': 2.0.7 + domutils@3.2.2: dependencies: dom-serializer: 2.0.0 @@ -3753,6 +4562,8 @@ snapshots: section-matter: 1.0.0 strip-bom-string: 1.0.0 + hachure-fill@0.5.2: {} + has-flag@4.0.0: {} hash-sum@2.0.0: {} @@ -3836,6 +4647,10 @@ snapshots: immutable@5.1.4: {} + internmap@1.0.1: {} + + internmap@2.0.3: {} + is-alphabetical@2.0.1: {} is-alphanumerical@2.0.1: @@ -3898,8 +4713,22 @@ snapshots: dependencies: commander: 8.3.0 + khroma@2.1.0: {} + kind-of@6.0.3: {} + langium@4.2.1: + dependencies: + chevrotain: 11.1.2 + chevrotain-allstar: 0.3.1(chevrotain@11.1.2) + vscode-languageserver: 9.0.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + + layout-base@1.0.2: {} + + layout-base@2.0.1: {} + lilconfig@3.1.3: {} linkify-it@5.0.0: @@ -3926,6 +4755,8 @@ snapshots: dependencies: p-locate: 4.1.0 + lodash-es@4.17.23: {} + log-symbols@6.0.0: dependencies: chalk: 5.6.2 @@ -3980,6 +4811,8 @@ snapshots: transitivePeerDependencies: - supports-color + marked@16.4.2: {} + mathjax-full@3.2.2: dependencies: esm: 3.2.25 @@ -4003,6 +4836,30 @@ snapshots: merge2@1.4.1: {} + mermaid@11.13.0: + dependencies: + '@braintree/sanitize-url': 7.1.2 + '@iconify/utils': 3.1.0 + '@mermaid-js/parser': 1.0.1 + '@types/d3': 7.4.3 + '@upsetjs/venn.js': 2.0.0 + cytoscape: 3.33.1 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.1) + cytoscape-fcose: 2.2.0(cytoscape@3.33.1) + d3: 7.9.0 + d3-sankey: 0.12.3 + dagre-d3-es: 7.0.14 + dayjs: 1.11.19 + dompurify: 3.3.3 + katex: 0.16.25 + khroma: 2.1.0 + lodash-es: 4.17.23 + marked: 16.4.2 + roughjs: 4.6.6 + stylis: 4.3.6 + ts-dedent: 2.2.0 + uuid: 11.1.0 + mhchemparser@4.2.1: {} micromark-core-commonmark@2.0.2: @@ -4188,6 +5045,13 @@ snapshots: mj-context-menu@0.6.1: {} + mlly@1.8.1: + dependencies: + acorn: 8.16.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.3 + ms@2.1.3: {} nano-staged@0.8.0: @@ -4242,6 +5106,8 @@ snapshots: p-try@2.2.0: {} + package-manager-detector@1.6.0: {} + parse-entities@4.0.2: dependencies: '@types/unist': 2.0.11 @@ -4265,12 +5131,16 @@ snapshots: dependencies: entities: 6.0.1 + path-data-parser@0.1.0: {} + path-exists@4.0.0: {} path-type@5.0.0: {} path-type@6.0.0: {} + pathe@2.0.3: {} + perfect-debounce@1.0.0: {} photoswipe@5.4.4: {} @@ -4281,8 +5151,21 @@ snapshots: picomatch@4.0.3: {} + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.1 + pathe: 2.0.3 + pngjs@5.0.0: {} + points-on-curve@0.2.0: {} + + points-on-path@0.2.1: + dependencies: + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + postcss-load-config@6.0.1(postcss@8.5.6): dependencies: lilconfig: 3.1.3 @@ -4357,6 +5240,8 @@ snapshots: rfdc@1.4.1: {} + robust-predicates@3.0.2: {} + rollup@4.53.2: dependencies: '@types/estree': 1.0.8 @@ -4385,10 +5270,19 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.53.2 fsevents: 2.3.3 + roughjs@4.6.6: + dependencies: + hachure-fill: 0.5.2 + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + points-on-path: 0.2.1 + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 + rw@1.3.3: {} + rxjs@7.8.2: dependencies: tslib: 2.8.1 @@ -4545,6 +5439,8 @@ snapshots: strip-bom-string@1.0.0: {} + stylis@4.3.6: {} + superjson@2.2.5: dependencies: copy-anything: 4.0.5 @@ -4563,6 +5459,8 @@ snapshots: dependencies: '@pkgr/core': 0.2.9 + tinyexec@1.0.2: {} + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) @@ -4576,10 +5474,14 @@ snapshots: trough@2.2.0: {} + ts-dedent@2.2.0: {} + tslib@2.8.1: {} uc.micro@2.1.0: {} + ufo@1.6.3: {} + undici-types@7.16.0: {} undici@7.16.0: {} @@ -4631,6 +5533,8 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + uuid@11.1.0: {} + varint@6.0.0: {} vfile-location@5.0.3: @@ -4661,6 +5565,23 @@ snapshots: fsevents: 2.3.3 sass-embedded: 1.89.2 + vscode-jsonrpc@8.2.0: {} + + vscode-languageserver-protocol@3.17.5: + dependencies: + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 + + vscode-languageserver-textdocument@1.0.12: {} + + vscode-languageserver-types@3.17.5: {} + + vscode-languageserver@9.0.1: + dependencies: + vscode-languageserver-protocol: 3.17.5 + + vscode-uri@3.1.0: {} + vue-router@4.6.3(vue@3.5.24): dependencies: '@vue/devtools-api': 6.6.4 @@ -4719,7 +5640,7 @@ snapshots: transitivePeerDependencies: - typescript - vuepress-theme-hope@2.0.0-rc.94(@vuepress/plugin-feed@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)))(@vuepress/plugin-search@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)))(katex@0.16.25)(markdown-it@14.1.0)(mathjax-full@3.2.2)(sass-embedded@1.89.2)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)): + vuepress-theme-hope@2.0.0-rc.94(@vuepress/plugin-feed@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)))(@vuepress/plugin-search@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)))(katex@0.16.25)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@11.13.0)(sass-embedded@1.89.2)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)): dependencies: '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) '@vuepress/plugin-active-header-links': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) @@ -4732,7 +5653,7 @@ snapshots: '@vuepress/plugin-git': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) '@vuepress/plugin-icon': 2.0.0-rc.112(markdown-it@14.1.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) '@vuepress/plugin-links-check': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-markdown-chart': 2.0.0-rc.112(markdown-it@14.1.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) + '@vuepress/plugin-markdown-chart': 2.0.0-rc.112(markdown-it@14.1.0)(mermaid@11.13.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) '@vuepress/plugin-markdown-ext': 2.0.0-rc.112(markdown-it@14.1.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) '@vuepress/plugin-markdown-hint': 2.0.0-rc.112(markdown-it@14.1.0)(vue@3.5.24)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) '@vuepress/plugin-markdown-image': 2.0.0-rc.112(markdown-it@14.1.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) From 89cf0cb2492115a8c78285271c312568704d127e Mon Sep 17 00:00:00 2001 From: Guide Date: Thu, 12 Mar 2026 17:44:19 +0800 Subject: [PATCH 3/4] =?UTF-8?q?feat=EF=BC=9Avuepress-theme-hope=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude/settings.local.json | 3 +- docs/home.md | 6 +- docs/snippets/article-header.snippet.md | 17 + docs/snippets/small-advertisement.snippet.md | 6 + package.json | 16 +- pnpm-lock.yaml | 2981 ++++++++++-------- 6 files changed, 1679 insertions(+), 1350 deletions(-) diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 350712b..23f83a9 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -2,7 +2,8 @@ "permissions": { "allow": [ "Bash(pnpm install:*)", - "WebSearch" + "WebSearch", + "Bash(pnpm dlx:*)" ] } } diff --git a/docs/home.md b/docs/home.md index ce356b7..a1b175d 100644 --- a/docs/home.md +++ b/docs/home.md @@ -10,9 +10,11 @@ head: ## 项目介绍 -- 这是 [JavaGuide](https://javaguide.cn/) 面试突击版本,适合突击面试的小伙伴。并且,提供了 PDF 下载,方便大家离线阅读/打印,阅读体验非常高。 +- **这是 [JavaGuide](https://javaguide.cn/) 面试突击版本,适合突击面试的小伙伴。** 并且,提供了 PDF 下载,方便大家离线阅读/打印,阅读体验非常高。 - 如果你准备面试的时间比较充足的话,建议阅读完整版,针对重要的知识点有更详细的讲解。地址:**[javaguide.cn](https://javaguide.cn/)**。 -- 专属面试小册/一对一交流/简历修改/专属求职指南,欢迎加入 **[JavaGuide 知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)**(点击链接即可查看星球的详细介绍,一定确定自己真的需要再加入)。 +- **不只是 Java 面试能用!** 网站中的数据库和缓存(MySQL、Redis)、计算机基础(计算机网络、操作系统)、系统设计(设计模式)等内容是后端通用的,适用于各种语言的后端面试。 +- **Go 面试题正在筹备中**,将会以高质量的内容与大家见面,敬请期待!如果大家还有其他什么需要的,也欢迎给我提供建议。 +- **专属面试小册/一对一交流/简历修改/专属求职指南**,欢迎加入 **[JavaGuide 知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)**(点击链接即可查看星球的详细介绍,一定确定自己真的需要再加入)。 ## Java diff --git a/docs/snippets/article-header.snippet.md b/docs/snippets/article-header.snippet.md index 055be76..192f235 100644 --- a/docs/snippets/article-header.snippet.md +++ b/docs/snippets/article-header.snippet.md @@ -1,2 +1,19 @@ [![《SpringAI 智能面试平台+RAG 知识库》](https://oss.javaguide.cn/xingqiu/interview-guide-banner.png)](https://javaguide.cn/zhuanlan/interview-guide.html) +## 前言 + +这是 **JavaGuide 面试突击版本**,只保留最常问的面试题,并对重点内容进行了 ⭐️ 标注。提供亮色和暗色两个主题,需要打印的朋友请选择亮色版本。 + +时间充裕的朋友,推荐使用 [JavaGuide](https://javaguide.cn/) 网站系统学习,内容更全面深入。 + +如果你想要付费支持/面试辅导(比如简历优化、一对一提问、高频考点突击资料等)的话,欢迎了解我的[知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)。已经坚持维护六年,内容持续更新,虽白菜价(0.4元/天)但质量很高,主打一个良心! + +面试突击最新版可在公众号回复「**PDF**」获取(知识星球会提前同步最新版)。 + +![JavaGuide 公众号](https://oss.javaguide.cn/github/javaguide/gongzhonghao-javaguide.png) + +::: tip 重要说明 + +本站所有面试题保持**年度系统性优化完善**,严格同步 Java 技术生态与招聘市场的最新动态,**确保内容时效性与前瞻性**。 + +::: diff --git a/docs/snippets/small-advertisement.snippet.md b/docs/snippets/small-advertisement.snippet.md index 09f3dc4..cf5f285 100644 --- a/docs/snippets/small-advertisement.snippet.md +++ b/docs/snippets/small-advertisement.snippet.md @@ -11,3 +11,9 @@ 面试突击最新版可在公众号回复「**PDF**」获取(知识星球会提前同步最新版)。 ![JavaGuide 公众号](https://oss.javaguide.cn/github/javaguide/gongzhonghao-javaguide.png) + +::: tip 重要说明 + +本站所有面试题保持**年度系统性优化完善**,严格同步 Java 技术生态与招聘市场的最新动态,**确保内容时效性与前瞻性**。 + +::: diff --git a/package.json b/package.json index c0d4807..a0b6307 100644 --- a/package.json +++ b/package.json @@ -20,19 +20,19 @@ ".md": "markdownlint-cli2" }, "dependencies": { - "mermaid": "^11.12.2", - "@vuepress/bundler-vite": "2.0.0-rc.24", - "@vuepress/plugin-feed": "2.0.0-rc.112", - "@vuepress/plugin-search": "2.0.0-rc.112", + "@vuepress/bundler-vite": "2.0.0-rc.26", + "@vuepress/plugin-feed": "2.0.0-rc.124", + "@vuepress/plugin-search": "2.0.0-rc.124", "husky": "9.1.7", "markdownlint-cli2": "0.17.1", "mathjax-full": "3.2.2", + "mermaid": "^11.13.0", "nano-staged": "0.8.0", "prettier": "3.4.2", - "sass-embedded": "1.89.2", - "vue": "^3.5.18", - "vuepress": "2.0.0-rc.24", - "vuepress-theme-hope": "2.0.0-rc.94" + "sass-embedded": "^1.97.3", + "vue": "^3.5.30", + "vuepress": "2.0.0-rc.26", + "vuepress-theme-hope": "2.0.0-rc.103" }, "packageManager": "pnpm@10.0.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 146c34e..2396cb3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,14 +9,14 @@ importers: .: dependencies: '@vuepress/bundler-vite': - specifier: 2.0.0-rc.24 - version: 2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2) + specifier: 2.0.0-rc.26 + version: 2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0) '@vuepress/plugin-feed': - specifier: 2.0.0-rc.112 - version: 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) + specifier: 2.0.0-rc.124 + version: 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) '@vuepress/plugin-search': - specifier: 2.0.0-rc.112 - version: 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) + specifier: 2.0.0-rc.124 + version: 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) husky: specifier: 9.1.7 version: 9.1.7 @@ -27,7 +27,7 @@ importers: specifier: 3.2.2 version: 3.2.2 mermaid: - specifier: ^11.12.2 + specifier: ^11.13.0 version: 11.13.0 nano-staged: specifier: 0.8.0 @@ -36,17 +36,17 @@ importers: specifier: 3.4.2 version: 3.4.2 sass-embedded: - specifier: 1.89.2 - version: 1.89.2 + specifier: ^1.97.3 + version: 1.98.0 vue: - specifier: ^3.5.18 - version: 3.5.24 + specifier: ^3.5.30 + version: 3.5.30 vuepress: - specifier: 2.0.0-rc.24 - version: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + specifier: 2.0.0-rc.26 + version: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) vuepress-theme-hope: - specifier: 2.0.0-rc.94 - version: 2.0.0-rc.94(@vuepress/plugin-feed@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)))(@vuepress/plugin-search@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)))(katex@0.16.25)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@11.13.0)(sass-embedded@1.89.2)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) + specifier: 2.0.0-rc.103 + version: 2.0.0-rc.103(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(@vuepress/plugin-feed@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)))(@vuepress/plugin-search@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)))(katex@0.16.38)(markdown-it@14.1.1)(mermaid@11.13.0)(sass-embedded@1.98.0)(sass@1.98.0)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) packages: @@ -61,20 +61,20 @@ packages: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + '@babel/parser@7.29.0': + resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} '@braintree/sanitize-url@7.1.2': resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} - '@bufbuild/protobuf@2.10.1': - resolution: {integrity: sha512-ckS3+vyJb5qGpEYv/s1OebUHDi/xSNtfgw1wqKZo7MR9F2z+qXr0q5XagafAG/9O0QPVIUfST0smluYSTpYFkg==} + '@bufbuild/protobuf@2.11.0': + resolution: {integrity: sha512-sBXGT13cpmPR5BMgHE6UEEfEaShh5Ror6rfN3yEK5si7QVrtZg8LEPQb0VVhiLRUslD2yLnXtnRzG035J/mZXQ==} '@chevrotain/cst-dts-gen@11.1.2': resolution: {integrity: sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q==} @@ -256,149 +256,170 @@ packages: '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@lit-labs/ssr-dom-shim@1.4.0': - resolution: {integrity: sha512-ficsEARKnmmW5njugNYKipTm4SFnbik7CXtoencDZzmzo/dQ+2Q0bgkzJuoJP20Aj0F+izzJjOqsnkd6F/o1bw==} + '@lit-labs/ssr-dom-shim@1.5.1': + resolution: {integrity: sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==} - '@lit/reactive-element@2.1.1': - resolution: {integrity: sha512-N+dm5PAYdQ8e6UlywyyrgI2t++wFGXfHx+dSJ1oBrg6FAxUj40jId++EaRm80MKX5JnlH1sBsyZ5h0bcZKemCg==} + '@lit/reactive-element@2.1.2': + resolution: {integrity: sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==} - '@mdit-vue/plugin-component@2.1.4': - resolution: {integrity: sha512-fiLbwcaE6gZE4c8Mkdkc4X38ltXh/EdnuPE1hepFT2dLiW6I4X8ho2Wq7nhYuT8RmV4OKlCFENwCuXlKcpV/sw==} + '@mdit-vue/plugin-component@3.0.2': + resolution: {integrity: sha512-Fu53MajrZMOAjOIPGMTdTXgHLgGU9KwTqKtYc6WNYtFZNKw04euSfJ/zFg8eBY/2MlciVngkF7Gyc2IL7e8Bsw==} + engines: {node: '>=20.0.0'} - '@mdit-vue/plugin-frontmatter@2.1.4': - resolution: {integrity: sha512-mOlavV176njnozIf0UZGFYymmQ2LK5S1rjrbJ1uGz4Df59tu0DQntdE7YZXqmJJA9MiSx7ViCTUQCNPKg7R8Ow==} + '@mdit-vue/plugin-frontmatter@3.0.2': + resolution: {integrity: sha512-QKKgIva31YtqHgSAz7S7hRcL7cHXiqdog4wxTfxeQCHo+9IP4Oi5/r1Y5E93nTPccpadDWzAwr3A0F+kAEnsVQ==} + engines: {node: '>=20.0.0'} - '@mdit-vue/plugin-headers@2.1.4': - resolution: {integrity: sha512-tyZwGZu2mYkNSqigFP1CK3aZYxuYwrqcrIh8ljd8tfD1UDPJkAbQeayq62U572po2IuWVB1BqIG8JIXp5POOTA==} + '@mdit-vue/plugin-headers@3.0.2': + resolution: {integrity: sha512-Z3PpDdwBTO5jlW2r617tQibkwtCc5unTnj/Ew1SCxTQaXjtKgwP9WngdSN+xxriISHoNOYzwpoUw/1CW8ntibA==} + engines: {node: '>=20.0.0'} - '@mdit-vue/plugin-sfc@2.1.4': - resolution: {integrity: sha512-oqAlMulkz280xUJIkormzp6Ps0x5WULZrwRivylWJWDEyVAFCj5VgR3Dx6CP2jdgyuPXwW3+gh2Kzw+Xe+kEIQ==} + '@mdit-vue/plugin-sfc@3.0.2': + resolution: {integrity: sha512-dhxIrCGu5Nd4Cgo9JJHLjdNy2lMEv+LpimetBHDSeEEJxJBC4TPN0Cljn+3/nV1uJdGyw33UZA86PGdgt1LsoA==} + engines: {node: '>=20.0.0'} - '@mdit-vue/plugin-title@2.1.4': - resolution: {integrity: sha512-uuF24gJvvLVIWG/VBtCDRqMndfd5JzOXoBoHPdKKLk3PA4P84dsB0u0NnnBUEl/YBOumdCotasn7OfFMmco9uQ==} + '@mdit-vue/plugin-title@3.0.2': + resolution: {integrity: sha512-KTDP7s68eKTwy4iYp5UauQuVJf+tDMdJZMO6K4feWYS8TX95ItmcxyX7RprfBWLTUwNXBYOifsL6CkIGlWcNjA==} + engines: {node: '>=20.0.0'} - '@mdit-vue/plugin-toc@2.1.4': - resolution: {integrity: sha512-vvOU7u6aNmvPwKXzmoHion1sv4zChBp20LDpSHlRlXc3btLwdYIA0DR+UiO5YeyLUAO0XSHQKBpsIWi57K9/3w==} + '@mdit-vue/plugin-toc@3.0.2': + resolution: {integrity: sha512-Dz0dURjD5wR4nBxFMiqb0BTGRAOkCE60byIemqLqnkF6ORKKJ8h5aLF5J5ssbLO87hwu81IikHiaXvqoiEneoQ==} + engines: {node: '>=20.0.0'} - '@mdit-vue/shared@2.1.4': - resolution: {integrity: sha512-Axd8g2iKQTMuHcPXZH5JY3hbSMeLyoeu0ftdgMrjuPzHpJnWiPSAnA0dAx5NQFQqZkXHhyIrAssLSrOWjFmPKg==} + '@mdit-vue/shared@3.0.2': + resolution: {integrity: sha512-anFGls154h0iVzUt5O43EaqYvPwzfUxQ34QpNQsUQML7pbEJMhcgkRNvYw9hZBspab+/TP45agdPw5joh6/BBA==} + engines: {node: '>=20.0.0'} - '@mdit-vue/types@2.1.4': - resolution: {integrity: sha512-QiGNZslz+zXUs2X8D11UQhB4KAMZ0DZghvYxa7+1B+VMLcDtz//XHpWbcuexjzE3kBXSxIUTPH3eSQCa0puZHA==} + '@mdit-vue/types@3.0.2': + resolution: {integrity: sha512-00aAZ0F0NLik6I6Yba2emGbHLxv+QYrPH00qQ5dFKXlAo1Ll2RHDXwY7nN2WAfrx2pP+WrvSRFTGFCNGdzBDHw==} + engines: {node: '>=20.0.0'} - '@mdit/helper@0.22.1': - resolution: {integrity: sha512-lDpajcdAk84aYCNAM/Mi3djw38DJq7ocLw5VOSMu/u2YKX3/OD37a6Qb59in8Uyp4SiAbQoSHa8px6hgHEpB5g==} - engines: {node: '>= 18'} + '@mdit/helper@0.23.1': + resolution: {integrity: sha512-ifWDG3VbUAx1ia7eBWEHm5vpv5QFUPY3kFLPPZzYBr15A7/d5w7D+8ZBg8xxqkvyC73Ys+zF14EQCq7eQAXYxg==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-alert@0.22.3': - resolution: {integrity: sha512-9g99rjLCFd8upA/DXbhGmEM7GMFocy6SRk4OekxuAy9t1aDOE/r5IJgUbBIvc9kMkg39ug0yXtMkKwAt2zp5Hg==} + '@mdit/plugin-alert@0.23.1': + resolution: {integrity: sha512-vbWxewra32hfZKF+XeeWK/eoAzQbe0cSRfSattX9oxGOcaEbcVx2/g7nmI9//ItsOKO7XNRy7ZKLdnm+CaMPvg==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-align@0.22.2': - resolution: {integrity: sha512-hy9TliRnjhjvJxb+mFnJtisTGo6e2rVM191ci1xJ3CZefJACYDJrczjQA9NA8zml4wuC9iIzeCbJH79STd8ePg==} - engines: {node: '>= 18'} + '@mdit/plugin-align@0.24.1': + resolution: {integrity: sha512-JgpvZrcfY20bbpRwPnCbdUoJBIJsc3hrNMKuA8x3eeo0yHqZZwPvK/kj4t9jgMrT9uqlapzn8CTAlrxQHG/eKw==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-attrs@0.23.3': - resolution: {integrity: sha512-DsPY1e1WCjEt0FnKib10vuM2l2g6IB39OmGKBupJ1PgU2jwmxssKQrD02ewhecuNh1QjNgjkx0riiSoUat8ecw==} - engines: {node: '>= 18'} + '@mdit/plugin-attrs@0.25.1': + resolution: {integrity: sha512-nJ8vZvREJOUcbih3D+BaCnbsYbA3MskOzWX6JAjRmnfQFFDmigK0WTx9Z5xLlo87D120AIYWGo3DGxZhwLCE0Q==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-container@0.22.2': - resolution: {integrity: sha512-QBBti5EyQzVl/qzFAD9YAhiAB9S2zF/4MPAS4kwm7VkmeYrcj2HpZpA7snMjnWh3CtriDcaIMInhg0vDtDwyfA==} - engines: {node: '>= 18'} + '@mdit/plugin-container@0.23.1': + resolution: {integrity: sha512-mHTp4+zvuE6uqhG6honfR6F5wLgAIcLlGVCu8xHIoO6H8Oc23lrjl+8Ieyr+PKLH3Lz0QFQf0fWdwNi44EsYSg==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-demo@0.22.3': - resolution: {integrity: sha512-pK/iJVNPqflo72ZFHbf3a+H6R+l741SPXRnaftZ3ihiT2hlaizg2097eBz2llNkHpFtb3luapux0s/o9AZvA5g==} + '@mdit/plugin-demo@0.23.1': + resolution: {integrity: sha512-yyU/VxkLxw/qz/zpnNGWEBCRZmFl3hsIx03VUeBhWU9gWr2px7SCmWqeN+nhdbhTzlC/84c1caCWc+uSx2babA==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-figure@0.22.2': - resolution: {integrity: sha512-mCbrhfbP8VopTzYHw1OnUAEnhh1C24Sx8ExAJpHgnM7HnNF54a+MXbywXZZJAbRZ22l3J2wrxL+IOxKYgNlgdg==} - engines: {node: '>= 18'} + '@mdit/plugin-figure@0.23.1': + resolution: {integrity: sha512-gdEnVk1IW9qZD8QSIs4jZhgdwk/BymKn+5GsVux4Pa7j/+sIkoR76dD6kJI/Q7qStI1sFrmTou1s/sQf7/NRwg==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-footnote@0.22.3': - resolution: {integrity: sha512-4hkki9vlIsRDhb7BZLL53s/htRHcubOkjakHPa7Jkj8BZ8/C++0wF13dr73OXcLNVKe/3JWE6pEl1aKETG20Gw==} - engines: {node: '>= 18'} + '@mdit/plugin-footnote@0.23.1': + resolution: {integrity: sha512-biPYxrIo/2SynwGNVEl4FDh1na1SWxQXXjCtRPe1WN3WPke0D5WNxEHjgnsMuUoig2D1ttJpbzb5gQhChgVrmg==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 - '@mdit/plugin-icon@0.22.2': - resolution: {integrity: sha512-ODVJOhCz1p2zmeuwhJ6mA2z/6MyaD4EVibGmfhsKPlIVMF1PRvx8esbe+25HnL0/Wln+n9JsRUHcxrt7TPsqkA==} + '@mdit/plugin-icon@0.24.1': + resolution: {integrity: sha512-nFkdGpVajAzXKN8KHUVIfH5qfABCQWuH52+Yl3r+OKOFUmFVjGu62CIEoNnlkFjHLIUD4QhvmuncoNW4zEDhEg==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-img-lazyload@0.22.1': - resolution: {integrity: sha512-ombpBQqR1zYjtr4/7s8EvIVx/ymtiflWksXropYz81o0I9Bm9Os1UPuNgjwfT/DEhIit4HMaJhjpKhGkYrOKgA==} - engines: {node: '>= 18'} + '@mdit/plugin-img-lazyload@0.23.1': + resolution: {integrity: sha512-iaQhq++GTk9yv+Azlk88DBzRHUNB00whPaLJAwIzgslHfTyK92o/2yLIR9/nknWuerZjyqh883H/r1knPBUTaA==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-img-mark@0.22.2': - resolution: {integrity: sha512-+dfw7HBSg9/ETWguCbhudpIEIsWN81Ro23agEuU8JO1RDpkiMAFVBcUAFqUWr9+4KHQhiBtyEWn1Y7l+d17RXg==} - engines: {node: '>= 18'} + '@mdit/plugin-img-mark@0.23.1': + resolution: {integrity: sha512-pOZ9m6wkn+mLKXByejKWLIW0HMr2AgkSdTrmwsQ0y8s9/XWckP+9r3alpPQCoqhcRas5NHmg6FR+CDOAXb9rpA==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-img-size@0.22.3': - resolution: {integrity: sha512-dd2coSTYi5rDg+dIQYgIcHlLvE4C6Q7w8GQj5mdvHF0aek46V6PICZC9tQnPe+GcKKyAg5B1MGBo1+suJVXA5A==} - engines: {node: '>= 18'} + '@mdit/plugin-img-size@0.23.1': + resolution: {integrity: sha512-cpnXRpLWGBhBAxuIqq4YTeqcF5wLdmSFlKiEr4dBCKI/pj9Gsjd6WY40OzvpXyamSMoyAjYj4Fo+JO1ghwvarg==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-include@0.22.2': - resolution: {integrity: sha512-H/zm9M7nVBo/eOSZG5YMd0qXk7lEw+z968Z8cjLgvOlh1IMSCX2ZwD3EVeIPGfEOjYQ9hzlZVkTxwZan0VgTJg==} + '@mdit/plugin-include@0.23.1': + resolution: {integrity: sha512-fvep++E2hZYGGnB0VacwKa7Yk8S3pD1lLJKqsaGnG8FDklpTXD6j3RfSYc7JV8xMUtnAwShfCj4FQlRvCfvc8Q==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-katex-slim@0.23.2': - resolution: {integrity: sha512-QZCzPFBeJkSOO/oMe6o4jjXNXWyibSkUMrqxGo8AVLbRfxfOIjHHVdbHaMhqLEoeRqTpDLReX+9U7czQ85lx7A==} - engines: {node: '>= 18'} + '@mdit/plugin-inline-rule@0.23.1': + resolution: {integrity: sha512-ShT+quzVWGxJXb7fo64F/9o05srhL75dspcLF0VbxlFKLQABFW0EI+lrzRortV5RlXhVY42ezpp4UgOnLSQ85A==} + engines: {node: '>= 20'} + peerDependencies: + markdown-it: ^14.1.0 + peerDependenciesMeta: + markdown-it: + optional: true + + '@mdit/plugin-katex-slim@0.26.1': + resolution: {integrity: sha512-bDc9CLFejgSTWUYuTiVcCCSR9Nmbd9dGzGzzzyv7p4iwHEI7cNgxizRodNNMRrxFj8AZQYk6UG9C+RRfhkURkA==} + engines: {node: '>= 20'} peerDependencies: katex: ^0.16.25 markdown-it: ^14.1.0 @@ -408,100 +429,113 @@ packages: markdown-it: optional: true - '@mdit/plugin-mark@0.22.1': - resolution: {integrity: sha512-2blMM/gGyqPARvaal44mt0pOi+8phmFpj7D4suG4qMd1j8aGDZl9R7p8inbr3BePOady1eloh0SWSCdskmutZg==} - engines: {node: '>= 18'} + '@mdit/plugin-layout@0.2.1': + resolution: {integrity: sha512-znfck6af+IdUbnZYU1CIiw4MT+1Nt5c57+ijRQca/yqlExDsm7sVBNawBLNAOyN/VaV7MiAvxuyK+cBE2m3Nog==} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-mathjax-slim@0.23.2': - resolution: {integrity: sha512-2KtNXJMLlV1YV+GDuOlWIjWUFhPQh0IpJp2u63JRkiJs1M620zVgFjKuQnbEzqVMTnqq/FQLQSER2V0otXtE0g==} - engines: {node: '>= 18'} + '@mdit/plugin-mark@0.23.1': + resolution: {integrity: sha512-ks/RRTzuDjxvclsNsMMOo2f9vfnKkIF+9sqpfScw7kxfUWPkfAnGQVv1AQHlfv/OlCyyLUQm2rXYEMr1t/XxGA==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 - mathjax-full: ^3.2.2 peerDependenciesMeta: markdown-it: optional: true - mathjax-full: + + '@mdit/plugin-mathjax-slim@0.26.1': + resolution: {integrity: sha512-GriihQzCxrYeJ1OxSKvPWjBreSSSkJ+xIkz0CY7/UPKyGh4+5TpYo05EjTpoFmR5GEJPmka/9T2X4L/lkZ8mag==} + engines: {node: '>= 20'} + peerDependencies: + '@mathjax/mathjax-newcm-font': ^4.1.0 + '@mathjax/src': ^4.0.0 + markdown-it: ^14.1.0 + peerDependenciesMeta: + '@mathjax/mathjax-newcm-font': + optional: true + '@mathjax/src': + optional: true + markdown-it: optional: true - '@mdit/plugin-plantuml@0.22.3': - resolution: {integrity: sha512-vnMTNO8HsXGQq8DIux+4Y082M/IkT+ICEZhe0EIXgKfbCORa7jQiw1mCKX4L+okqntglOkM5ItvfSdyCbrqidQ==} + '@mdit/plugin-plantuml@0.24.1': + resolution: {integrity: sha512-tRPAnofSMjrrCypghiBDyqyF0cH/wBzS0zjSVjfc+RfMgURt3B4OKvXDc+PsXU6MvJPXVKuMW1ngM4nddPtUyg==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-spoiler@0.22.2': - resolution: {integrity: sha512-XoL08KwYGaGeCzXuwvOcZLrRvvzvOAj96XF5iihbI1M5LSkzWLY0cWlfgF1mEM1+fAyauZxMYXOegKDqT/HRXg==} - engines: {node: '>= 18'} + '@mdit/plugin-spoiler@0.23.1': + resolution: {integrity: sha512-xfodFv8B5vHihKXeKDNeCKwxIi/rZOb4H2apEwB4BUqQMIQ9jl3Iv4CZMDaO5IpPxFz73H3+6zDRJ/noRLcMjQ==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-stylize@0.22.2': - resolution: {integrity: sha512-HpUIeH8T1kdIFvQbO5C9ldaxedkfdJmkoqDalAgUudoIdrDvoeEv6TLnQSS/c6NJ5UqjuwBentv5/I1cQYxLaQ==} - engines: {node: '>= 18'} + '@mdit/plugin-stylize@0.23.1': + resolution: {integrity: sha512-6WFfYbdN3eSq37u/JT+jd0ZGaGgxqXxwi/t1fbpDUsGtabstIYR692YlZG1S4CT2ljhrIZjBHkvKnA4ifQEGVA==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-sub@0.22.2': - resolution: {integrity: sha512-+NSz8IMYNAfQWBRBX6jf3PMIubkQSwy3v4ElW5CP4a0U4r1Youw3MOcDa6FRwW9TZ/+t8E+E3DaBeYcRi/+bGw==} - engines: {node: '>= 18'} + '@mdit/plugin-sub@0.24.1': + resolution: {integrity: sha512-NqkwVlN6GVRNT+6klexUrfS5oyYvaBJUGND7SWYmlmY31TptpDpLWH9cW2UhWmGUKIKoL64Kk4Efd1VMyh2Mkg==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-sup@0.22.2': - resolution: {integrity: sha512-xgpCAbNgyrJW8NyvB5vGbRVlnCSnNjiJ3zyHAqqr9IqPGH1jCWidOlLLWiIOtfqvUExsLmtyt4c76SZb5MiKYw==} - engines: {node: '>= 18'} + '@mdit/plugin-sup@0.24.1': + resolution: {integrity: sha512-yG/zI29K2bxaYXuQxWmaMtTG8gUrCZDNQpiVVurT2fOCD1WoKbdk7ICdjrdU4hvZzig1vECF2AsNP5kCynf0ZQ==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-tab@0.22.3': - resolution: {integrity: sha512-TPMHgVEsqvsCPVwt1KZGhJsVW/6XNyp9VXy2X2nNXvaklfK2+l6DJBWLeN+lPwzXvASnE5CkEFvaY4627zDt9A==} + '@mdit/plugin-tab@0.24.1': + resolution: {integrity: sha512-DSRNyGEBnEgqd1Pw3gt1ropVJv0n5AMCJREY4iq2GNUtxdzNP8jGO7UdXqdnmUPXTWSUZkE7pPu7tvL+38dBHQ==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-tasklist@0.22.2': - resolution: {integrity: sha512-tYxp4tDomTb9NzIphoDXWJxjQZxFuqP4PjU0H9AecUyWuSRP+HICCqe/HVNTTpB0+WDeuVtnxAW9kX08ekxUWw==} - engines: {node: '>= 18'} + '@mdit/plugin-tasklist@0.23.1': + resolution: {integrity: sha512-BNhTESurLLQxydlsfdsXf+e9U746UlHFl0l/rHQH225b6aaOdo/TH0H6PIAZIjx0oV97wg72s/WHKGMejps3Rg==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-tex@0.22.2': - resolution: {integrity: sha512-iniJQ9BPZc8AGdLPRoyC+nDA0SoDSe+AETma4y2dOk/EbaSZMYgMaZO843mk5JV7eJkfRc6TWcTIE2CqY2/9Rg==} - engines: {node: '>= 18'} + '@mdit/plugin-tex@0.24.1': + resolution: {integrity: sha512-fWTdk8Zv7SNKS2CxTmCmo1J8QOExUUsYaMRIOc/U3sFzddn/6kesUoZGk+6wNDktgOIhQRWaaEWDRw2+0QiUpA==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-uml@0.22.2': - resolution: {integrity: sha512-pe1p527i66rKThIxz6yOrBILyl1E+jZtDexuUHnNKAKEgXx+f10eCENLN7+9L59K2pbARj3PtdxDC0fs+e2DqA==} - engines: {node: '>= 18'} + '@mdit/plugin-uml@0.24.1': + resolution: {integrity: sha512-e/aStB1zb9HwV0KtBIkh7z68ZRW9TnmLTZ+kCZt7HbNywGQvRlHv8myZ0BWVAe5Gbo5LH+aFRSVE72pJ9QP1Xg==} + engines: {node: '>= 20'} peerDependencies: markdown-it: ^14.1.0 peerDependenciesMeta: @@ -523,154 +557,270 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@parcel/watcher-android-arm64@2.5.6': + resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.5.6': + resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.6': + resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.6': + resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.6': + resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-arm-musl@2.5.6': + resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [musl] + + '@parcel/watcher-linux-arm64-glibc@2.5.6': + resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-arm64-musl@2.5.6': + resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@parcel/watcher-linux-x64-glibc@2.5.6': + resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-x64-musl@2.5.6': + resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@parcel/watcher-win32-arm64@2.5.6': + resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.6': + resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.6': + resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.6': + resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} + engines: {node: '>= 10.0.0'} + '@pkgr/core@0.2.9': resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@rolldown/pluginutils@1.0.0-beta.29': - resolution: {integrity: sha512-NIJgOsMjbxAXvoGq/X0gD7VPMQ8j9g0BiDaNjVNVjvl+iKXxL3Jre0v31RmBYeLEmkbj2s02v8vFTbUXi5XS2Q==} + '@rolldown/pluginutils@1.0.0-rc.2': + resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==} - '@rollup/rollup-android-arm-eabi@4.53.2': - resolution: {integrity: sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==} + '@rollup/rollup-android-arm-eabi@4.59.0': + resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.2': - resolution: {integrity: sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==} + '@rollup/rollup-android-arm64@4.59.0': + resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.2': - resolution: {integrity: sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==} + '@rollup/rollup-darwin-arm64@4.59.0': + resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.2': - resolution: {integrity: sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==} + '@rollup/rollup-darwin-x64@4.59.0': + resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.2': - resolution: {integrity: sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==} + '@rollup/rollup-freebsd-arm64@4.59.0': + resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.2': - resolution: {integrity: sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==} + '@rollup/rollup-freebsd-x64@4.59.0': + resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.2': - resolution: {integrity: sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==} + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.53.2': - resolution: {integrity: sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==} + '@rollup/rollup-linux-arm-musleabihf@4.59.0': + resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.53.2': - resolution: {integrity: sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==} + '@rollup/rollup-linux-arm64-gnu@4.59.0': + resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.53.2': - resolution: {integrity: sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==} + '@rollup/rollup-linux-arm64-musl@4.59.0': + resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.53.2': - resolution: {integrity: sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==} + '@rollup/rollup-linux-loong64-gnu@4.59.0': + resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.53.2': - resolution: {integrity: sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==} + '@rollup/rollup-linux-loong64-musl@4.59.0': + resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-ppc64-gnu@4.59.0': + resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.53.2': - resolution: {integrity: sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==} + '@rollup/rollup-linux-ppc64-musl@4.59.0': + resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} + cpu: [ppc64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-riscv64-gnu@4.59.0': + resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.53.2': - resolution: {integrity: sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==} + '@rollup/rollup-linux-riscv64-musl@4.59.0': + resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.53.2': - resolution: {integrity: sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==} + '@rollup/rollup-linux-s390x-gnu@4.59.0': + resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.53.2': - resolution: {integrity: sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==} + '@rollup/rollup-linux-x64-gnu@4.59.0': + resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.53.2': - resolution: {integrity: sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==} + '@rollup/rollup-linux-x64-musl@4.59.0': + resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openharmony-arm64@4.53.2': - resolution: {integrity: sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==} + '@rollup/rollup-openbsd-x64@4.59.0': + resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.59.0': + resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.2': - resolution: {integrity: sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==} + '@rollup/rollup-win32-arm64-msvc@4.59.0': + resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.2': - resolution: {integrity: sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==} + '@rollup/rollup-win32-ia32-msvc@4.59.0': + resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.2': - resolution: {integrity: sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==} + '@rollup/rollup-win32-x64-gnu@4.59.0': + resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.2': - resolution: {integrity: sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==} + '@rollup/rollup-win32-x64-msvc@4.59.0': + resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} cpu: [x64] os: [win32] - '@shikijs/core@3.15.0': - resolution: {integrity: sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg==} + '@shikijs/core@4.0.2': + resolution: {integrity: sha512-hxT0YF4ExEqB8G/qFdtJvpmHXBYJ2lWW7qTHDarVkIudPFE6iCIrqdgWxGn5s+ppkGXI0aEGlibI0PAyzP3zlw==} + engines: {node: '>=20'} + + '@shikijs/engine-javascript@4.0.2': + resolution: {integrity: sha512-7PW0Nm49DcoUIQEXlJhNNBHyoGMjalRETTCcjMqEaMoJRLljy1Bi/EGV3/qLBgLKQejdspiiYuHGQW6dX94Nag==} + engines: {node: '>=20'} - '@shikijs/engine-javascript@3.15.0': - resolution: {integrity: sha512-ZedbOFpopibdLmvTz2sJPJgns8Xvyabe2QbmqMTz07kt1pTzfEvKZc5IqPVO/XFiEbbNyaOpjPBkkr1vlwS+qg==} + '@shikijs/engine-oniguruma@4.0.2': + resolution: {integrity: sha512-UpCB9Y2sUKlS9z8juFSKz7ZtysmeXCgnRF0dlhXBkmQnek7lAToPte8DkxmEYGNTMii72zU/lyXiCB6StuZeJg==} + engines: {node: '>=20'} - '@shikijs/engine-oniguruma@3.15.0': - resolution: {integrity: sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA==} + '@shikijs/langs@4.0.2': + resolution: {integrity: sha512-KaXby5dvoeuZzN0rYQiPMjFoUrz4hgwIE+D6Du9owcHcl6/g16/yT5BQxSW5cGt2MZBz6Hl0YuRqf12omRfUUg==} + engines: {node: '>=20'} - '@shikijs/langs@3.15.0': - resolution: {integrity: sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A==} + '@shikijs/primitive@4.0.2': + resolution: {integrity: sha512-M6UMPrSa3fN5ayeJwFVl9qWofl273wtK1VG8ySDZ1mQBfhCpdd8nEx7nPZ/tk7k+TYcpqBZzj/AnwxT9lO+HJw==} + engines: {node: '>=20'} - '@shikijs/themes@3.15.0': - resolution: {integrity: sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ==} + '@shikijs/themes@4.0.2': + resolution: {integrity: sha512-mjCafwt8lJJaVSsQvNVrJumbnnj1RI8jbUKrPKgE6E3OvQKxnuRoBaYC51H4IGHePsGN/QtALglWBU7DoKDFnA==} + engines: {node: '>=20'} - '@shikijs/transformers@3.15.0': - resolution: {integrity: sha512-Hmwip5ovvSkg+Kc41JTvSHHVfCYF+C8Cp1omb5AJj4Xvd+y9IXz2rKJwmFRGsuN0vpHxywcXJ1+Y4B9S7EG1/A==} + '@shikijs/transformers@4.0.2': + resolution: {integrity: sha512-1+L0gf9v+SdDXs08vjaLb3mBFa8U7u37cwcBQIv/HCocLwX69Tt6LpUCjtB+UUTvQxI7BnjZKhN/wMjhHBcJGg==} + engines: {node: '>=20'} - '@shikijs/types@3.15.0': - resolution: {integrity: sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw==} + '@shikijs/types@4.0.2': + resolution: {integrity: sha512-qzbeRooUTPnLE+sHD/Z8DStmaDgnbbc/pMrU203950aRqjX/6AFHeDYT+j00y2lPdz0ywJKx7o/7qnqTivtlXg==} + engines: {node: '>=20'} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -796,8 +946,8 @@ packages: '@types/jsonfile@6.1.4': resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} - '@types/katex@0.16.7': - resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} + '@types/katex@0.16.8': + resolution: {integrity: sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==} '@types/linkify-it@5.0.0': resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} @@ -817,11 +967,14 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@17.0.45': - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + '@types/node@24.12.0': + resolution: {integrity: sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==} - '@types/node@24.10.1': - resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} + '@types/node@25.4.0': + resolution: {integrity: sha512-9wLpoeWuBlcbBpOY3XmzSTG3oscB6xjBEEtn+pYXTfhyXhIxC5FsBer2KTopBlvKEiW9l13po9fq+SJY/5lkhw==} + + '@types/picomatch@4.0.2': + resolution: {integrity: sha512-qHHxQ+P9PysNEGbALT8f8YOSHW0KJu6l2xU8DYY0fu/EmGxXdVnuTLvFUvBgPJMSqXq29SYHveejeAha+4AYgA==} '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} @@ -844,114 +997,122 @@ packages: '@upsetjs/venn.js@2.0.0': resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} - '@vitejs/plugin-vue@6.0.1': - resolution: {integrity: sha512-+MaE752hU0wfPFJEUAIxqw18+20euHHdxVtMvbFcOEpjEyfqXH/5DCoTHiVJ0J29EhTJdoTkjEv5YBKU9dnoTw==} + '@vitejs/plugin-vue@6.0.4': + resolution: {integrity: sha512-uM5iXipgYIn13UUQCZNdWkYk+sysBeA97d5mHsAoAt1u/wpN3+zxOmsVJWosuzX+IMGRzeYUNytztrYznboIkQ==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 vue: ^3.2.25 - '@vue/compiler-core@3.5.24': - resolution: {integrity: sha512-eDl5H57AOpNakGNAkFDH+y7kTqrQpJkZFXhWZQGyx/5Wh7B1uQYvcWkvZi11BDhscPgj8N7XV3oRwiPnx1Vrig==} + '@vue/compiler-core@3.5.30': + resolution: {integrity: sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw==} - '@vue/compiler-dom@3.5.24': - resolution: {integrity: sha512-1QHGAvs53gXkWdd3ZMGYuvQFXHW4ksKWPG8HP8/2BscrbZ0brw183q2oNWjMrSWImYLHxHrx1ItBQr50I/q2zw==} + '@vue/compiler-dom@3.5.30': + resolution: {integrity: sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g==} - '@vue/compiler-sfc@3.5.24': - resolution: {integrity: sha512-8EG5YPRgmTB+YxYBM3VXy8zHD9SWHUJLIGPhDovo3Z8VOgvP+O7UP5vl0J4BBPWYD9vxtBabzW1EuEZ+Cqs14g==} + '@vue/compiler-sfc@3.5.30': + resolution: {integrity: sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A==} - '@vue/compiler-ssr@3.5.24': - resolution: {integrity: sha512-trOvMWNBMQ/odMRHW7Ae1CdfYx+7MuiQu62Jtu36gMLXcaoqKvAyh+P73sYG9ll+6jLB6QPovqoKGGZROzkFFg==} + '@vue/compiler-ssr@3.5.30': + resolution: {integrity: sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA==} '@vue/devtools-api@6.6.4': resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} - '@vue/devtools-api@7.7.8': - resolution: {integrity: sha512-BtFcAmDbtXGwurWUFf8ogIbgZyR+rcVES1TSNEI8Em80fD8Anu+qTRN1Fc3J6vdRHlVM3fzPV1qIo+B4AiqGzw==} + '@vue/devtools-api@8.0.7': + resolution: {integrity: sha512-tc1TXAxclsn55JblLkFVcIRG7MeSJC4fWsPjfM7qu/IcmPUYnQ5Q8vzWwBpyDY24ZjmZTUCCwjRSNbx58IhlAA==} - '@vue/devtools-kit@7.7.8': - resolution: {integrity: sha512-4Y8op+AoxOJhB9fpcEF6d5vcJXWKgHxC3B0ytUB8zz15KbP9g9WgVzral05xluxi2fOeAy6t140rdQ943GcLRQ==} + '@vue/devtools-kit@8.0.7': + resolution: {integrity: sha512-H6esJGHGl5q0E9iV3m2EoBQHJ+V83WMW83A0/+Fn95eZ2iIvdsq4+UCS6yT/Fdd4cGZSchx/MdWDreM3WqMsDw==} - '@vue/devtools-shared@7.7.8': - resolution: {integrity: sha512-XHpO3jC5nOgYr40M9p8Z4mmKfTvUxKyRcUnpBAYg11pE78eaRFBKb0kG5yKLroMuJeeNH9LWmKp2zMU5LUc7CA==} + '@vue/devtools-shared@8.0.7': + resolution: {integrity: sha512-CgAb9oJH5NUmbQRdYDj/1zMiaICYSLtm+B1kxcP72LBrifGAjUmt8bx52dDH1gWRPlQgxGPqpAMKavzVirAEhA==} - '@vue/reactivity@3.5.24': - resolution: {integrity: sha512-BM8kBhtlkkbnyl4q+HiF5R5BL0ycDPfihowulm02q3WYp2vxgPcJuZO866qa/0u3idbMntKEtVNuAUp5bw4teg==} + '@vue/reactivity@3.5.30': + resolution: {integrity: sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q==} - '@vue/runtime-core@3.5.24': - resolution: {integrity: sha512-RYP/byyKDgNIqfX/gNb2PB55dJmM97jc9wyF3jK7QUInYKypK2exmZMNwnjueWwGceEkP6NChd3D2ZVEp9undQ==} + '@vue/runtime-core@3.5.30': + resolution: {integrity: sha512-e0Z+8PQsUTdwV8TtEsLzUM7SzC7lQwYKePydb7K2ZnmS6jjND+WJXkmmfh/swYzRyfP1EY3fpdesyYoymCzYfg==} - '@vue/runtime-dom@3.5.24': - resolution: {integrity: sha512-Z8ANhr/i0XIluonHVjbUkjvn+CyrxbXRIxR7wn7+X7xlcb7dJsfITZbkVOeJZdP8VZwfrWRsWdShH6pngMxRjw==} + '@vue/runtime-dom@3.5.30': + resolution: {integrity: sha512-2UIGakjU4WSQ0T4iwDEW0W7vQj6n7AFn7taqZ9Cvm0Q/RA2FFOziLESrDL4GmtI1wV3jXg5nMoJSYO66egDUBw==} - '@vue/server-renderer@3.5.24': - resolution: {integrity: sha512-Yh2j2Y4G/0/4z/xJ1Bad4mxaAk++C2v4kaa8oSYTMJBJ00/ndPuxCnWeot0/7/qafQFLh5pr6xeV6SdMcE/G1w==} + '@vue/server-renderer@3.5.30': + resolution: {integrity: sha512-v+R34icapydRwbZRD0sXwtHqrQJv38JuMB4JxbOxd8NEpGLny7cncMp53W9UH/zo4j8eDHjQ1dEJXwzFQknjtQ==} peerDependencies: - vue: 3.5.24 + vue: 3.5.30 - '@vue/shared@3.5.24': - resolution: {integrity: sha512-9cwHL2EsJBdi8NY22pngYYWzkTDhld6fAD6jlaeloNGciNSJL6bLpbxVgXl96X00Jtc6YWQv96YA/0sxex/k1A==} + '@vue/shared@3.5.30': + resolution: {integrity: sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==} - '@vuepress/bundler-vite@2.0.0-rc.24': - resolution: {integrity: sha512-prgT3f6xOBC43rhfvzlfXY0wJKsI+oV5RC4s0YyVPZ0s5VQKI3RRD1aY+euiVFPks3Mjx+DxEtKBOLsJ7I6crA==} + '@vuepress/bundler-vite@2.0.0-rc.26': + resolution: {integrity: sha512-4+YfKs2iOxuVSMW+L2tFzu2+X2HiGAREpo1DbkkYVDa5GyyPR+YsSueXNZMroTdzWDk5kAUz2Z1Tz1lIu7TO2g==} - '@vuepress/bundlerutils@2.0.0-rc.24': - resolution: {integrity: sha512-gtO0zhb57SyDotgdSI+TMAwJKg7KC75/G4UoWRwkyAHREsbWUInHQfXzzaFMnKmkdcB9YeXXbOnWGwZjRn74ew==} + '@vuepress/bundlerutils@2.0.0-rc.26': + resolution: {integrity: sha512-OnhUvzuJFEzPBjivZX7j6EhPE6sAwAIfyi3pAFmOpQDHPP7/l0q2I4bNVVGK4t9EZDu4N7Dl40/oFHhIMy5New==} - '@vuepress/cli@2.0.0-rc.24': - resolution: {integrity: sha512-3IJtADHg67U6q3i1n3klbBtm5TZZI3uO+MkEDq8efgK7kk27LAt+7GhxqxZCq5xJ+GPNZqElc+t3+eG9biDNFA==} + '@vuepress/cli@2.0.0-rc.26': + resolution: {integrity: sha512-63/4nIHrl9pbutUWs6SirWxmyykjvR9BWvu7bvczO1hAkWOyDQPcU18JXWy8q38CyMzPxCeedUfP3BQsZs3UgA==} hasBin: true - '@vuepress/client@2.0.0-rc.24': - resolution: {integrity: sha512-7W1FbrtsNDdWqkNoLfZKpZl8hv+j6sGCdmKtq90bRwzbaM+P2FJ6WYQ4Px4o/N0pqvr70k1zQe3A42QIeH0Ybw==} + '@vuepress/client@2.0.0-rc.26': + resolution: {integrity: sha512-+irF1HOTD6sAHdcTjp3yRcfuGlJYAW+YvDhq+7n3TPXeMH/wJbmGmAs2oRIDkx6Nlt3XkMMpFo7e9pOU22ut1w==} - '@vuepress/core@2.0.0-rc.24': - resolution: {integrity: sha512-NfNg6+vo5BJHBsLpoiXO8pU0zKaYCZxQinidW9r4KclNfZzC8PMkeBMeCT0uxcrb+XCaiHOrW19pF0/6NYNs0Q==} + '@vuepress/core@2.0.0-rc.26': + resolution: {integrity: sha512-Wyiv9oRvdT0lAPGU0Pj1HetjKicbX8/gqbBVYv2MmL7Y4a3r0tyQ92IdZ8LHiAgPvzctntQr/JXIELedvU1t/w==} - '@vuepress/helper@2.0.0-rc.112': - resolution: {integrity: sha512-gj19xHyYbG0wygcoJ6YypCNS+nybVt2AEJFyHTFvl+KiB2BfBhKWuCpWufp4c4Od1xkru4y56I+pSU2b8CGIBQ==} + '@vuepress/helper@2.0.0-rc.124': + resolution: {integrity: sha512-4Fn0prLhYX0F+I8P5YGm1vIZqajvy13pwiGsShzFA2enBKn4IHQ9n6sxDHr8NX9GjwovIb6xDit/hKUdxgbhEQ==} peerDependencies: - vuepress: 2.0.0-rc.24 + '@vuepress/bundler-vite': 2.0.0-rc.26 + '@vuepress/bundler-webpack': 2.0.0-rc.26 + vuepress: 2.0.0-rc.26 + peerDependenciesMeta: + '@vuepress/bundler-vite': + optional: true + '@vuepress/bundler-webpack': + optional: true - '@vuepress/highlighter-helper@2.0.0-rc.112': - resolution: {integrity: sha512-gDNGSOFR6yXS567ObWqn7vc8O8ZqCl1kn5wDdBfa0qe011CQgsJKQbGH6tFxfbi0JznZ1bjpKZmEaUKxsFRbtg==} + '@vuepress/highlighter-helper@2.0.0-rc.124': + resolution: {integrity: sha512-KdPOOoAWlAvNs7J4KQ0jzWLcHNVJm2JDfGlKgRBoLQ4KxiKiTRJa4xTatKJ1bXTONv4ihRGPidCO9/m7DPhS4w==} peerDependencies: - '@vueuse/core': ^13.5.0 - vuepress: 2.0.0-rc.24 + '@vuepress/helper': 2.0.0-rc.124 + '@vueuse/core': ^14.2.1 + vuepress: 2.0.0-rc.26 peerDependenciesMeta: '@vueuse/core': optional: true - '@vuepress/markdown@2.0.0-rc.24': - resolution: {integrity: sha512-yYSo89cFbti2F/JWX3Odx9jbPje20PuVO+0SLkZX9AP5wuOv79Mx5QeRVEUS1YfD3faM98ya5LoIyuYWjPjJHw==} + '@vuepress/markdown@2.0.0-rc.26': + resolution: {integrity: sha512-ZAXkRxqPDjxqcG4j4vN2ZL5gmuRmgGH7n0s/7pcWIGFH3BJodp/PXMYCklnne1VwARIim9rqE3FKPB/ifJX0yA==} - '@vuepress/plugin-active-header-links@2.0.0-rc.112': - resolution: {integrity: sha512-D20vh2A/nPslD1fQdJMQh5BmViLCynJ41YcqaM3YEc9duI0rj6oVAFRALs9H2QipPtwPtibXkHERrR0WQxDsdA==} + '@vuepress/plugin-active-header-links@2.0.0-rc.124': + resolution: {integrity: sha512-O5UwL8P1G7Ol+TpF71onoWD1vpJlDnrma4/xgF9UDdctYZ/Xl0jUgpBlaQXaKZOZaBjThd00eOLQtwWcNRzF5Q==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-back-to-top@2.0.0-rc.112': - resolution: {integrity: sha512-R/JrM0jwMTzJxjzz+eCJB475sqAq/6p5SJYioRi7FMeuJ3pLheWVIh4gVV5TuJ71v6XyIJMeBr4Z9/sX+Lb3Bw==} + '@vuepress/plugin-back-to-top@2.0.0-rc.124': + resolution: {integrity: sha512-oc4qROifs82+ub9K8vcmu5xiDaul4HtBu3Z0FRl2bHPo/oVNwvU4yNUWHZPu388OfQQlFM24ywClKQi+qpX/VA==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-blog@2.0.0-rc.112': - resolution: {integrity: sha512-VZQG997jTAXx1E5UeLvf9spqH3UkHvwR8HtRMt/bQITHzAMDtoEFw3RDZd4rSdO41S4jksIsOhuqfz4zX+EQ3A==} + '@vuepress/plugin-blog@2.0.0-rc.124': + resolution: {integrity: sha512-zNuVMZ63W9racQNYevGOBiVSVF39A89yskaMzOOT8hZwmF5OgIhBSlIdb8/4I4vz2YiefQpwCxYAXSNT3UzS7A==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-catalog@2.0.0-rc.112': - resolution: {integrity: sha512-l4BbbwQ1t4jvJc9RurHIp42mQBo5H7H3MOo2bZj6qC3965mRihMztXjmFL8bb0A6pLthimmyYT9bJLvEDBy7Vg==} + '@vuepress/plugin-catalog@2.0.0-rc.124': + resolution: {integrity: sha512-Yzo6S1xFHgpA4zdLbL85oH9/hVS1e3gPhMtInA/+fgWmGu7Dml6ywJ4rh4mnZolEsV83prvzAvEaVD6pWU/VwQ==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-comment@2.0.0-rc.112': - resolution: {integrity: sha512-Ty7HE6oUI5Inlth4ykAWf7sug8kY7LD5t77p9zKLpITffRN6eIRipgAEyWRnogmwYYu6lj8THjrAj6Jc7+ACJw==} + '@vuepress/plugin-comment@2.0.0-rc.124': + resolution: {integrity: sha512-Dkg6P9f2cCE6a3JXCNUM2emTNwbCsCiHYYMNSxmUxM8lvi0E78hugvZ5d+G6rlioz6+DWW8NXpWibTOMrPkivQ==} peerDependencies: - '@waline/client': ^3.5.5 + '@waline/client': ^3.7.1 artalk: ^2.9.1 twikoo: ^1.6.41 - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 peerDependenciesMeta: '@waline/client': optional: true @@ -960,47 +1121,47 @@ packages: twikoo: optional: true - '@vuepress/plugin-copy-code@2.0.0-rc.112': - resolution: {integrity: sha512-P0wrNU5O95/1s8LgXHNoMka66VhaJ9K9xiqVI8afJxJKtKOaanQ15pXqlJlhYIjnxMfV9Rh3YvM5qwiB9WSEyg==} + '@vuepress/plugin-copy-code@2.0.0-rc.124': + resolution: {integrity: sha512-qFhXrKOnqKaDk5eQqdmpg3ZtWwRLkud2G8Fm9rqNoYQ54n1ZMmLCdKIHoLKxf0woLL5Mjiii0eNnWrAgYFtlaw==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-copyright@2.0.0-rc.112': - resolution: {integrity: sha512-kpsIB8ntPufNO9Sbrr1YRdPLiWOUQuYWpey4L2Uiod5010gp79yOv9o3clKJdpKVPP6b5dfcuSYuekPJBbPE8Q==} + '@vuepress/plugin-copyright@2.0.0-rc.124': + resolution: {integrity: sha512-XNamMDJYywIB3sNGmZPwcA0rcGPbZlBMjG8lbf3Z3FZhayCrNmNSr7dnYtFdhLSyKMODQnXfj6JUksBV6sUHNw==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-feed@2.0.0-rc.112': - resolution: {integrity: sha512-K/7kvBxTilLDarqQne6lmmi41mP+PCrVCqMXAyaZR5VXcxUqE5cvNs/6N1AH8HXhRRtyAfsjlVYI3W0Yx5vYFA==} + '@vuepress/plugin-feed@2.0.0-rc.124': + resolution: {integrity: sha512-ZzqfzAizfUlHyL24X0dFaBX9an6bMo4wyJnEH6L8FGhREvKb5y+ZeHKXF/lueNQhFvyYw6VoOdXMFFYq2BluXA==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-git@2.0.0-rc.112': - resolution: {integrity: sha512-OKnw1wSgJuKFE6z2aFoqg+ldjUSRuTahzW8DVC9jOy32Uss0LDo0zXiL4UCk+XAkJXfERUOc2pXYOMs5seGDmQ==} + '@vuepress/plugin-git@2.0.0-rc.124': + resolution: {integrity: sha512-Wjn8Ykjl2KvxYWB/s0uOQstQka1T7q4CDVn+rmOizSnk7lWlyUmBTKt48Vfi8M0UbRGv+fKKLfiWLaJ2Kfzuvg==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-icon@2.0.0-rc.112': - resolution: {integrity: sha512-aufvjiIS9zHuTz2fQXZLCR6zSVtOifnCdnj+sQ8LYsT53OHikI1rNS8o0Dk68IyPP3eiFjdQ423+sKz17UPBYg==} + '@vuepress/plugin-icon@2.0.0-rc.124': + resolution: {integrity: sha512-mciTwwx8o/B/hqYOB5mrFNaCxiyKnzvfGRGsSnEjKCsmIX+T/Q7eA61UQ3M06xCpxG/gXDi1JP1vh98ORDYQ5Q==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-links-check@2.0.0-rc.112': - resolution: {integrity: sha512-UyxFAhJSXnxdeeoAToGPUbOzWLupAlIInLFBV6ZlQkyaOLEusAdxrfRxR+xJc7DhCVbzstP87PJC8VvO36unSA==} + '@vuepress/plugin-links-check@2.0.0-rc.124': + resolution: {integrity: sha512-SMQbpZ+ZoZ0hhHQ3P+aDn5RUexu31Ex/UHifHPLK4RgrJGCi9/tdIygECe2hYnVuqweRKBQ8u2ScTRLwrSV38A==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-markdown-chart@2.0.0-rc.112': - resolution: {integrity: sha512-mvmtYKSwD9m5B0ElrLHhqlwudkJbKtz9NstS5CmZ2exFOBkOGQBDeE9kbZGf2vUxHYbCZQQzjqAJB2bIIb+VZA==} + '@vuepress/plugin-markdown-chart@2.0.0-rc.124': + resolution: {integrity: sha512-7VCxXMwF6c2dab/E8q2d+GpKfN57+wFVsuoUhpvGm0Z0Paoo7+2nplUu/4DWk3CYgWw3v2xfmEQ+Ff4DxcvNxA==} peerDependencies: chart.js: ^4.4.7 - echarts: ^5.6.0 + echarts: ^6.0.0 flowchart.ts: ^3.0.1 markmap-lib: ^0.18.11 markmap-toolbar: ^0.18.10 markmap-view: ^0.18.10 - mermaid: ^11.8.0 - vuepress: 2.0.0-rc.24 + mermaid: ^11.12.0 + vuepress: 2.0.0-rc.26 peerDependenciesMeta: chart.js: optional: true @@ -1017,91 +1178,91 @@ packages: mermaid: optional: true - '@vuepress/plugin-markdown-ext@2.0.0-rc.112': - resolution: {integrity: sha512-fMaBKLmg/ux6s/PNDuIdBEogZOYys7sajZLnr7Xfp1gtQV/GnXAabBoBAINWbdy4Un0RRaMgLcqokR2AeS2poQ==} + '@vuepress/plugin-markdown-ext@2.0.0-rc.124': + resolution: {integrity: sha512-6ClJKNcNDppFU3a+HrZEnBNenG0fMony+ow5r+V8tzKvv9v3R2tcfRh/fKBgT5ipo6+yDALKQ69XraYbV2jPWQ==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-markdown-hint@2.0.0-rc.112': - resolution: {integrity: sha512-H4QCUIF3gvTh+/Etz0g3MBGCk48MLm9Dep/hJl2//Ke56lNSmldMac059itL8rzPQ4ntl0HoI55060e4zOprxw==} + '@vuepress/plugin-markdown-hint@2.0.0-rc.124': + resolution: {integrity: sha512-BFIOJpTSqpP59uroxTJE/bTUp7q2sisLZ3ZSXkG82v1D6+gf02a3FSew/WJHY/jDI0a31aLbOz5OBYIhpQHR7w==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-markdown-image@2.0.0-rc.112': - resolution: {integrity: sha512-E2Qju3SKtCLvRkBM1ZvtBWvOZW+eoIr2n1ZBawxcj9k1Zt74vvEy0BP7pKOSP5Qu9bwY6W1MAnT3H+R3QaDP+g==} + '@vuepress/plugin-markdown-image@2.0.0-rc.124': + resolution: {integrity: sha512-lb2HODcQAgTYqbDL1HvFcHEI5rXNOwoQjmbyQfaS3lFyz3YurxwhcnYe4wwAFOxqhQ1F89/NfZqbVdINC6BR4A==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-markdown-include@2.0.0-rc.112': - resolution: {integrity: sha512-zea8MlrUKbgAJm35Aqf/lDLz5Nu4LhVFV1C/IY0OlcvLwEbdyifPi/l1ZB+b2kfrW81GiuEb24a5Nr1JpDx2Gg==} + '@vuepress/plugin-markdown-include@2.0.0-rc.124': + resolution: {integrity: sha512-Wu0IMiz88kAs9/8iNb95VQB5DaflRmnLVoibwVKGNK+QBHTDJ3D4n3u/H7sQXV/1HR0HpjWWOroj9h2i7lhNMQ==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-markdown-math@2.0.0-rc.112': - resolution: {integrity: sha512-ZsIT3UKokslL+NUrdV5xTaOfuqEn41ZIlIL4PfCCgCpvUap/ziHbpQizU3sVgciq88mDsYYteVqgBqXcQzNiig==} + '@vuepress/plugin-markdown-math@2.0.0-rc.124': + resolution: {integrity: sha512-4rHd3WgXA5cfYfVbYvBrtIx5/XrY+dsOlsetQtYFmzGeGUtpQA+0BgbeQgbV4TW51A/qbG6fHDhHa3mmaFA4yg==} peerDependencies: + '@mathjax/src': ^4.0.0 katex: ^0.16.21 - mathjax-full: ^3.2.2 - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 peerDependenciesMeta: - katex: + '@mathjax/src': optional: true - mathjax-full: + katex: optional: true - '@vuepress/plugin-markdown-preview@2.0.0-rc.112': - resolution: {integrity: sha512-R4Hl0JwapFZbzYPl3kC90w+cN/uecBXhpFER2xkX4oz7fPVYfF4I252JgzIyF1LofSsQMob7EUxbSmReVeliIA==} + '@vuepress/plugin-markdown-preview@2.0.0-rc.124': + resolution: {integrity: sha512-+QNDTd+jFe4ucfI8eMBSzyoSAIStNP4znEoRwKCL1EzFybBwgsH9IxIlVQYLOSO7/WKLWJf+FNLhLoGQKPmxdw==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-markdown-stylize@2.0.0-rc.112': - resolution: {integrity: sha512-M9wYDM1F/Qvo8jJgQcuhQbgrpZLLPe+KhkwBSKvSFOFD5QluEXBrd8S51eXSMlvLRJVE8VIj9Rh7TP9Q8wly/A==} + '@vuepress/plugin-markdown-stylize@2.0.0-rc.124': + resolution: {integrity: sha512-gkg3CEwxE3Svc/rQ+vyVjViNLrP+bEMW9+zmI+r9I60yj+qFCcbGrcA+MpboIenTSGA2Ei+a8VHurOqrzpB64w==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-markdown-tab@2.0.0-rc.112': - resolution: {integrity: sha512-Dnyn6ezrbl8KP7XD+8duPVAQL/E0TZTb3O4bRO/SLJSnbrbwSlNfm/ra5Vv2SgYQV9CnpFo6I+y7dETNK49t7A==} + '@vuepress/plugin-markdown-tab@2.0.0-rc.124': + resolution: {integrity: sha512-yBgWVINZB/J48E01LmcbC2SAvRbhZJpi8zm9WRon7qriMsSzjZea1yJDNQNt9tB93toGb7qKCzBvZ5D87XEf4Q==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-notice@2.0.0-rc.112': - resolution: {integrity: sha512-v6QRqWuH/42WNufosxu0FBUvGXh34j81Wiuio37DqSbMcgATkrPPEdXhMI27bg+zbXhms9UTukKJ4X8JJsN9Rg==} + '@vuepress/plugin-notice@2.0.0-rc.124': + resolution: {integrity: sha512-xcQI+E2we9nojMVsV9N8gbolR9xCEXKMavhlJg15egPiq/IkNI2wpog+sDQiBQDGIr8Eg/gE7cgUfP3zfGM2Og==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-nprogress@2.0.0-rc.112': - resolution: {integrity: sha512-kNz7SvVx7Z09aQFf4iwQ3C9h1WZBuefa7cKyYpSrWYFciFU2do98SUg3C5Wi8ttJ7oPcM+NmSiGbjJrjwpncig==} + '@vuepress/plugin-nprogress@2.0.0-rc.124': + resolution: {integrity: sha512-tAD+qM3uY3bffvxqs7vIRahJCP6wrZUx0M3T4OlW3hE28NIU82TOlNf+fMm6S5yNEE+kKbHOKp28u7/6fD9Q0Q==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-photo-swipe@2.0.0-rc.112': - resolution: {integrity: sha512-WkkPC9rjwAQCMuVwUqCl14hO8z2Odv5k1yF2pWH2XGBja5VyBJK5t+XUmS1ak7zcjTz40+AYmauglbXo06RUSQ==} + '@vuepress/plugin-photo-swipe@2.0.0-rc.124': + resolution: {integrity: sha512-o8gHuj3o/Z+T576qjEF+zsjwbLrs50dXX/4jKQoSbHrpItqHyNvHzQ2MQVNfOUPKFiD6i9BT86fPAsA3B/vPPQ==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-reading-time@2.0.0-rc.112': - resolution: {integrity: sha512-76t64Uvr+1ADAq1z/DbU9ftAXKhVOBjxGKplRkbffobyTQ0mrDjDBM2rArytQiK+8utDgGPTjblCt+oJkxovzg==} + '@vuepress/plugin-reading-time@2.0.0-rc.124': + resolution: {integrity: sha512-BSy+su85wrlYaFPQPKEqK1wv3H5MKVh/Rc9XMv2jFcRaSOatAgfAgwOUirc3OcSc2UrVGYNNoGpBAnJekZU43g==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-redirect@2.0.0-rc.112': - resolution: {integrity: sha512-IOSgVM3nUxO3zpQ7i4FY1kKM4A2I8iM9LCrCFALPrnvt1wfQ4SoTuCxqG3Z1BRgi30DzfMzoXsuVbMZkwk7n2g==} + '@vuepress/plugin-redirect@2.0.0-rc.124': + resolution: {integrity: sha512-0WS+c9A/4A/Aqq1Dpq8BgB3Nm+2YuEyRp6EjHzD31Z9RcUdYwdDan1NIMP78KdGq95DbIH7DQyEQ/dq7yicdvA==} hasBin: true peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-rtl@2.0.0-rc.112': - resolution: {integrity: sha512-wZwf1wE+FemynTECgXGOr7ly6p6hl3a2r39EQZLY7hIEp+MJIE8JKvP1EB2IuW0LCsEhnoSLX7wMC6EncUlnCQ==} + '@vuepress/plugin-rtl@2.0.0-rc.124': + resolution: {integrity: sha512-6ux/vBu9RmObqzPLnOMhyLCcDq/303zlUs/cHbNn4A7H4Wu1l7O5InLc8x+xrS8gFyJmZgAlNGeLlqXKecyktA==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-sass-palette@2.0.0-rc.112': - resolution: {integrity: sha512-luqYhX2AlGRBwABpR/JgnVuAm+5yxGdxoXNe7+cNF2dSRZq47WVT2alHvyWqECpDHxgMjVyUQN5PmD1zDs01sg==} + '@vuepress/plugin-sass-palette@2.0.0-rc.124': + resolution: {integrity: sha512-xZepBr8va9OjK3GnTCR7PolNT+kUngPM4QBVycFt3AdaPPKzBVe4JDZHaaJo27W2HwOuGsPchWjSLGduB9RKcQ==} peerDependencies: - sass: ^1.89.2 - sass-embedded: ^1.89.2 - sass-loader: ^16.0.5 - vuepress: 2.0.0-rc.24 + sass: ^1.95.0 + sass-embedded: ^1.95.0 + sass-loader: ^16.0.7 + vuepress: 2.0.0-rc.26 peerDependenciesMeta: sass: optional: true @@ -1110,51 +1271,51 @@ packages: sass-loader: optional: true - '@vuepress/plugin-search@2.0.0-rc.112': - resolution: {integrity: sha512-liQxClnwXRn3V8I3OORvS2/OwHSx2pi0c3F/V/ji++Zy4DVpSEzhMJAfHkHmo1KKzokqakSBiJz8bQudp5ZMFw==} + '@vuepress/plugin-search@2.0.0-rc.124': + resolution: {integrity: sha512-Jw0+7C54qQicSjpHga4WcjG9LhegmC4/traoeogxod6W86r/TdD9/rJIewoEx8GAmX3u899YCwydNv710zH6Sw==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-seo@2.0.0-rc.112': - resolution: {integrity: sha512-WWZ0Dx1MxF9Mj6UVdB8TP5GozTNv51ZQQP6EAKYzprKCw0RVQYg5/tXWlg7IWcSw72go5iFiMBj5wZQigN+t4g==} + '@vuepress/plugin-seo@2.0.0-rc.124': + resolution: {integrity: sha512-qpAuQfmEQWV3qgbcuqV1j1/nNzItk2MQscU+xN0jaWwfUY92MNFn3ulTS8xd+/rmSUhGpKKA1cWuAkzOPSkmOw==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-shiki@2.0.0-rc.112': - resolution: {integrity: sha512-jXPJuAl9zNrYqdMgLRdAakrYCJcHJJCoIJ/73ODtejfU1+78s7PL6HheFEyakWC8MGyReGw+e0vJs+9NisXxIQ==} + '@vuepress/plugin-shiki@2.0.0-rc.124': + resolution: {integrity: sha512-Ru62i98VGtIwdWimz3IN0inciJYXTLz06ToVKhnJKgyRaf9pOxKA11CdFvWBJN7s57RzsDAIpb9UIMro/jpbZA==} peerDependencies: - '@vuepress/shiki-twoslash': 2.0.0-rc.112 - vuepress: 2.0.0-rc.24 + '@vuepress/shiki-twoslash': 2.0.0-rc.124 + vuepress: 2.0.0-rc.26 peerDependenciesMeta: '@vuepress/shiki-twoslash': optional: true - '@vuepress/plugin-sitemap@2.0.0-rc.112': - resolution: {integrity: sha512-64a/Kpu+2zY8r7o5AqFbZ1M3VKp44Z3RR6mGcr/747BEzVSl7ULk5ctx7Smtqm6Z2sSLEEU1aC6ZAtV5I+jqeQ==} + '@vuepress/plugin-sitemap@2.0.0-rc.124': + resolution: {integrity: sha512-Vi7boCrquHX2JOBjP/grGiy2FJ6KzQYrdYgzI3LFa8b1dxJcRPz1/tLd4WCoKd+wyhkk+TKWvsyucmsYhjTErg==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/plugin-theme-data@2.0.0-rc.112': - resolution: {integrity: sha512-QrCzB/wLxWmy76iEN140pZ1ZaigsFRimfGp1A65UOWAytEmkeRecEGBqZua4PDwiYOZQz/gf80xu5/SFsa8BAQ==} + '@vuepress/plugin-theme-data@2.0.0-rc.124': + resolution: {integrity: sha512-GVCcD9rIlwBQpbYDoYB6E2zdcn1Yfd2hYvy2z/DDzLosz7VprC/OaCPMVGLnr9ZQO4ApQEm32fLBLDbnj8bKcg==} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - '@vuepress/shared@2.0.0-rc.24': - resolution: {integrity: sha512-CAmJGMcDV5DnFEJ74f7IdCms2CBl8Md62uWbgAW8wEYiYanjRM8Rr1oIrz+cWoBSnWPf1HyPR3JoKYgw7OW4bw==} + '@vuepress/shared@2.0.0-rc.26': + resolution: {integrity: sha512-Zl9XNG/fYenZqzuYYGOfHzjmp1HCOj68gcJnJABOX1db0H35dkPSPsxuMjbTljClUqMlfj70CLeip/h04upGVw==} - '@vuepress/utils@2.0.0-rc.24': - resolution: {integrity: sha512-7D6o12Y64efevSdp+k84ivMZ3dSkZjQwbn79ywbHVbYtoZikvnpTE5GuG7lFOLcF3qZWQVqi7sRJVJdZnH9DuA==} + '@vuepress/utils@2.0.0-rc.26': + resolution: {integrity: sha512-RWzZrGQ0WLSWdELuxg7c6q1D9I22T5PfK/qNFkOsv9eD3gpUsU4jq4zAoumS8o+NRIWHovCJ9WnAhHD0Ns5zAw==} - '@vueuse/core@13.9.0': - resolution: {integrity: sha512-ts3regBQyURfCE2BcytLqzm8+MmLlo5Ln/KLoxDVcsZ2gzIwVNnQpQOL/UKV8alUqjSZOlpFZcRNsLRqj+OzyA==} + '@vueuse/core@14.2.1': + resolution: {integrity: sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==} peerDependencies: vue: ^3.5.0 - '@vueuse/metadata@13.9.0': - resolution: {integrity: sha512-1AFRvuiGphfF7yWixZa0KwjYH8ulyjDCC0aFgrGRz8+P4kvDFSdXLVfTk5xAN9wEuD1J6z4/myMoYbnHoX07zg==} + '@vueuse/metadata@14.2.1': + resolution: {integrity: sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw==} - '@vueuse/shared@13.9.0': - resolution: {integrity: sha512-e89uuTLMh0U5cZ9iDpEI2senqPGfbPRTHM/0AaQkcxnpqjkZqDYP8rpfm7edOz8s+pOCOROEy1PIveSW8+fL5g==} + '@vueuse/shared@14.2.1': + resolution: {integrity: sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==} peerDependencies: vue: ^3.5.0 @@ -1179,10 +1340,6 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -1192,8 +1349,8 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - autoprefixer@10.4.22: - resolution: {integrity: sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==} + autoprefixer@10.4.27: + resolution: {integrity: sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -1205,20 +1362,17 @@ packages: balloon-css@1.2.0: resolution: {integrity: sha512-urXwkHgwp6GsXVF+it01485Z2Cj4pnW02ICnM0TemOlkKmCNnDLmyy+ZZiRXBpwldUXO+aRNr7Hdia4CBvXJ5A==} - baseline-browser-mapping@2.8.28: - resolution: {integrity: sha512-gYjt7OIqdM0PcttNYP2aVrr2G0bMALkBaoehD4BuRGjAOtipg0b6wHg1yNL+s5zSnLZZrGHOw4IrND8CD+3oIQ==} + baseline-browser-mapping@2.10.0: + resolution: {integrity: sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==} + engines: {node: '>=6.0.0'} hasBin: true - bcrypt-ts@7.1.0: - resolution: {integrity: sha512-t/Dqr9YzYmn/+oPQBgotBPUuezpZD5CPBwapM5Ep1p3zsLmEycMdXOfZpWbztSBWJ41DlB7EluJBUDsAGSiUeQ==} + bcrypt-ts@8.0.1: + resolution: {integrity: sha512-ILrO7U7YieyG+71KVIVVuPCmjN8N9DY3gYs4OiEoJvW8A5HOe4eerRhLD0Rgo2CAyANRKssFGXmLF74zJz094g==} engines: {node: '>=20'} - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - birpc@2.8.0: - resolution: {integrity: sha512-Bz2a4qD/5GRhiHSwj30c/8kC8QGj12nNDwz3D4ErQ4Xhy35dsSDvF+RA/tWpjyU0pdGtSDiEk6B5fBGE1qNVhw==} + birpc@2.9.0: + resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -1227,14 +1381,11 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.28.0: - resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - buffer-builder@0.2.0: - resolution: {integrity: sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==} - cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -1243,8 +1394,8 @@ packages: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} - caniuse-lite@1.0.30001755: - resolution: {integrity: sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==} + caniuse-lite@1.0.30001778: + resolution: {integrity: sha512-PN7uxFL+ExFJO61aVmP1aIEG4i9whQd4eoSCebav62UwDyp5OHh06zN4jqKSMePVgxHifCw1QJxdRkA1Pisekg==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -1268,8 +1419,8 @@ packages: cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - cheerio@1.1.2: - resolution: {integrity: sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==} + cheerio@1.2.0: + resolution: {integrity: sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==} engines: {node: '>=20.18.1'} chevrotain-allstar@0.3.1: @@ -1280,21 +1431,21 @@ packages: chevrotain@11.1.2: resolution: {integrity: sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg==} - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + cli-cursor@5.0.0: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} + cli-spinners@3.4.0: + resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==} + engines: {node: '>=18.20'} cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} @@ -1316,8 +1467,8 @@ packages: resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} - commander@14.0.2: - resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} + commander@14.0.3: + resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} engines: {node: '>=20'} commander@7.2.0: @@ -1335,19 +1486,15 @@ packages: resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} engines: {node: '>=0.8'} - copy-anything@4.0.5: - resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} - engines: {node: '>=18'} - cose-base@1.0.3: resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} cose-base@2.2.0: resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} - create-codepen@2.0.0: - resolution: {integrity: sha512-ehJ0Zw5RSV2G4+/azUb7vEZWRSA/K9cW7HDock1Y9ViDexkgSJUZJRcObdw/YAWeXKjreEQV9l/igNSsJ1yw5A==} - engines: {node: '>=18'} + create-codepen@2.0.1: + resolution: {integrity: sha512-qFOOo1dxz8/j5Fn8tJHi61/r5ko7sn2RLPZ6HISi5SeKR61y8zA9szsG7UssLzWeBILvN3c1TZNXrz5UR7KlGw==} + engines: {node: '>=20'} css-select@5.2.2: resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} @@ -1356,8 +1503,8 @@ packages: resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} - csstype@3.2.2: - resolution: {integrity: sha512-D80T+tiqkd/8B0xNlbstWDG4x6aqVfO52+OlSUNIdkTvmNw0uQpJLeos2J/2XvpyidAFuTPmpad+tUxLndwj6g==} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} cytoscape-cose-bilkent@4.1.0: resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} @@ -1531,8 +1678,8 @@ packages: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} - decode-named-character-reference@1.2.0: - resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + decode-named-character-reference@1.3.0: + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} delaunator@5.0.1: resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} @@ -1541,6 +1688,10 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -1563,11 +1714,8 @@ packages: domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - electron-to-chromium@1.5.254: - resolution: {integrity: sha512-DcUsWpVhv9svsKRxnSCZ86SjD+sp32SGidNB37KpqXJncp1mfUgKbHvBomE89WJDbfVKw1mdv5+ikrvd43r+Bg==} - - emoji-regex@10.6.0: - resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + electron-to-chromium@1.5.313: + resolution: {integrity: sha512-QBMrTWEf00GXZmJyx2lbYD45jpI3TUFnNIzJ5BBc8piGUDwMPa1GV6HJWTZVvY/eiN3fSopl7NRbgGp9sZ9LTA==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1583,8 +1731,12 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} - envinfo@7.20.0: - resolution: {integrity: sha512-+zUomDcLXsVkQ37vUqWBvQwLaLlj8eZPSi61llaEFAVBY5mhcXdaSw1pSJVl4yTYD5g/gEfpNl28YYk4IPvrrg==} + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + + envinfo@7.21.0: + resolution: {integrity: sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==} engines: {node: '>=4'} hasBin: true @@ -1620,8 +1772,8 @@ packages: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} @@ -1646,8 +1798,8 @@ packages: fraction.js@5.3.4: resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} - fs-extra@11.3.2: - resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==} + fs-extra@11.3.4: + resolution: {integrity: sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==} engines: {node: '>=14.14'} fsevents@2.3.3: @@ -1659,8 +1811,8 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.4.0: - resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} + get-east-asian-width@1.5.0: + resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} engines: {node: '>=18'} giscus@1.6.0: @@ -1674,10 +1826,6 @@ packages: resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} engines: {node: '>=18'} - globby@14.1.0: - resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} - engines: {node: '>=18'} - graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -1722,8 +1870,8 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - htmlparser2@10.0.0: - resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + htmlparser2@10.1.0: + resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==} husky@9.1.7: resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} @@ -1738,12 +1886,8 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} - engines: {node: '>= 4'} - - immutable@5.1.4: - resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==} + immutable@5.1.5: + resolution: {integrity: sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==} internmap@1.0.1: resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} @@ -1758,10 +1902,6 @@ packages: is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} @@ -1796,18 +1936,10 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} - is-unicode-supported@2.1.0: resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} - is-what@5.5.0: - resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} - engines: {node: '>=18'} - js-yaml@3.14.2: resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true @@ -1826,8 +1958,8 @@ packages: jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} - katex@0.16.25: - resolution: {integrity: sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q==} + katex@0.16.38: + resolution: {integrity: sha512-cjHooZUmIAUmDsHBN+1n8LaZdpmbj03LtYeYPyuYB7OuloiaeaV6N4LcfjcnHVzGWjVQmKrxxTrpDcmSzEZQwQ==} hasBin: true khroma@2.1.0: @@ -1854,14 +1986,14 @@ packages: linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - lit-element@4.2.1: - resolution: {integrity: sha512-WGAWRGzirAgyphK2urmYOV72tlvnxw7YfyLDgQ+OZnM9vQQBQnumQ7jUJe6unEzwGU3ahFOjuz1iz1jjrpCPuw==} + lit-element@4.2.2: + resolution: {integrity: sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==} - lit-html@3.3.1: - resolution: {integrity: sha512-S9hbyDu/vs1qNrithiNyeyv64c9yqiW9l+DBgI18fL+MTvOtWoFR0FWiyq1TxaYef5wNlpEmzlXoBlZEO+WjoA==} + lit-html@3.3.2: + resolution: {integrity: sha512-Qy9hU88zcmaxBXcc10ZpdK7cOLXvXpRoBxERdtqV9QOrfpMZZ6pSYP91LhpPtap3sFMUiL7Tw2RImbe0Al2/kw==} - lit@3.3.1: - resolution: {integrity: sha512-Ksr/8L3PTapbdXJCk+EJVB78jDodUMaP54gD24W186zGRARvwrsPfS60wae/SSCTCNZVPd1chXqio1qHQmu4NA==} + lit@3.3.2: + resolution: {integrity: sha512-NF9zbsP79l4ao2SNrH3NkfmFgN/hBYSQo90saIVI1o5GpjAdCPVstVzO1MrLOakHoEhYkrtRjPK6Ob521aoYWQ==} locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} @@ -1870,8 +2002,8 @@ packages: lodash-es@4.17.23: resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} - log-symbols@6.0.0: - resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + log-symbols@7.0.1: + resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} engines: {node: '>=18'} magic-string@0.30.21: @@ -1883,6 +2015,16 @@ packages: '@types/markdown-it': '*' markdown-it: '*' + markdown-it-cjk-friendly@2.0.2: + resolution: {integrity: sha512-KXCl6sd129UqkAiRDb+NcAHrxC9xRa2WsGIsMMvtp2y1YlbeIaNYzArX2zfDoGhOjsyNMfJrGO7xGBss27YQSA==} + engines: {node: '>=18'} + peerDependencies: + '@types/markdown-it': '*' + markdown-it: '*' + peerDependenciesMeta: + '@types/markdown-it': + optional: true + markdown-it-emoji@3.0.0: resolution: {integrity: sha512-+rUD93bXHubA4arpEZO3q80so0qgoFJEKRkRbjKX8RTdca89v2kfyF+xR3i2sQTwql9tpPZPOQN5B+PunspXRg==} @@ -1890,6 +2032,10 @@ packages: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true + markdown-it@14.1.1: + resolution: {integrity: sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==} + hasBin: true + markdownlint-cli2-formatter-default@0.0.5: resolution: {integrity: sha512-4XKTwQ5m1+Txo2kuQ3Jgpo/KmnG+X90dWt4acufg6HVGadTUG5hzHF/wssp9b5MBYOMCnZ9RMPaU//uHsszF8Q==} peerDependencies: @@ -1913,8 +2059,8 @@ packages: resolution: {integrity: sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==} deprecated: Version 4 replaces this package with the scoped package @mathjax/src - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -2012,9 +2158,6 @@ packages: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} - mitt@3.0.1: - resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - mj-context-menu@0.6.1: resolution: {integrity: sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==} @@ -2039,16 +2182,11 @@ packages: engines: {node: ^18 || >=20} hasBin: true - node-releases@2.0.27: - resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} + node-releases@2.0.36: + resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -2060,12 +2198,12 @@ packages: oniguruma-parser@0.12.1: resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} - oniguruma-to-es@4.3.3: - resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} + oniguruma-to-es@4.3.4: + resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} - ora@8.2.0: - resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} - engines: {node: '>=18'} + ora@9.3.0: + resolution: {integrity: sha512-lBX72MWFduWEf7v7uWf5DHp9Jn5BI8bNPGuFgtXMmr2uDz2Gz2749y3am3agSDdkhHPHYmmxEGSKH85ZLGzgXw==} + engines: {node: '>=20'} p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} @@ -2105,15 +2243,11 @@ packages: resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} engines: {node: '>=12'} - path-type@6.0.0: - resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} - engines: {node: '>=18'} - pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - perfect-debounce@1.0.0: - resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + perfect-debounce@2.1.0: + resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} photoswipe@5.4.4: resolution: {integrity: sha512-WNFHoKrkZNnvFFhbHL93WDkW3ifwVOXSW3w1UuZZelSmgXpIGiZSNlZJq37rR8YejqME2rHs9EhH9ZvlvFH2NA==} @@ -2164,8 +2298,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + postcss@8.5.8: + resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} engines: {node: ^10 || ^12 || >=14} prettier@3.4.2: @@ -2188,22 +2322,22 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - readdirp@4.1.2: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} + regex-recursion@6.0.2: resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - regex@6.0.1: - resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} rehype-parse@9.0.1: resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==} @@ -2229,14 +2363,11 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - robust-predicates@3.0.2: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} - rollup@4.53.2: - resolution: {integrity: sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==} + rollup@4.59.0: + resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2255,109 +2386,131 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass-embedded-android-arm64@1.89.2: - resolution: {integrity: sha512-+pq7a7AUpItNyPu61sRlP6G2A8pSPpyazASb+8AK2pVlFayCSPAEgpwpCE9A2/Xj86xJZeMizzKUHxM2CBCUxA==} + sass-embedded-all-unknown@1.98.0: + resolution: {integrity: sha512-6n4RyK7/1mhdfYvpP3CClS3fGoYqDvRmLClCESS6I7+SAzqjxvGG6u5Fo+cb1nrPNbbilgbM4QKdgcgWHO9NCA==} + cpu: ['!arm', '!arm64', '!riscv64', '!x64'] + + sass-embedded-android-arm64@1.98.0: + resolution: {integrity: sha512-M9Ra98A6vYJHpwhoC/5EuH1eOshQ9ZyNwC8XifUDSbRl/cGeQceT1NReR9wFj3L7s1pIbmes1vMmaY2np0uAKQ==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [android] - sass-embedded-android-arm@1.89.2: - resolution: {integrity: sha512-oHAPTboBHRZlDBhyRB6dvDKh4KvFs+DZibDHXbkSI6dBZxMTT+Yb2ivocHnctVGucKTLQeT7+OM5DjWHyynL/A==} + sass-embedded-android-arm@1.98.0: + resolution: {integrity: sha512-LjGiMhHgu7VL1n7EJxTCre1x14bUsWd9d3dnkS2rku003IWOI/fxc7OXgaKagoVzok1kv09rzO3vFXJR5ZeONQ==} engines: {node: '>=14.0.0'} cpu: [arm] os: [android] - sass-embedded-android-riscv64@1.89.2: - resolution: {integrity: sha512-HfJJWp/S6XSYvlGAqNdakeEMPOdhBkj2s2lN6SHnON54rahKem+z9pUbCriUJfM65Z90lakdGuOfidY61R9TYg==} + sass-embedded-android-riscv64@1.98.0: + resolution: {integrity: sha512-WPe+0NbaJIZE1fq/RfCZANMeIgmy83x4f+SvFOG7LhUthHpZWcOcrPTsCKKmN3xMT3iw+4DXvqTYOCYGRL3hcQ==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [android] - sass-embedded-android-x64@1.89.2: - resolution: {integrity: sha512-BGPzq53VH5z5HN8de6jfMqJjnRe1E6sfnCWFd4pK+CAiuM7iw5Fx6BQZu3ikfI1l2GY0y6pRXzsVLdp/j4EKEA==} + sass-embedded-android-x64@1.98.0: + resolution: {integrity: sha512-zrD25dT7OHPEgLWuPEByybnIfx4rnCtfge4clBgjZdZ3lF6E7qNLRBtSBmoFflh6Vg0RlEjJo5VlpnTMBM5MQQ==} engines: {node: '>=14.0.0'} cpu: [x64] os: [android] - sass-embedded-darwin-arm64@1.89.2: - resolution: {integrity: sha512-UCm3RL/tzMpG7DsubARsvGUNXC5pgfQvP+RRFJo9XPIi6elopY5B6H4m9dRYDpHA+scjVthdiDwkPYr9+S/KGw==} + sass-embedded-darwin-arm64@1.98.0: + resolution: {integrity: sha512-cgr1z9rBnCdMf8K+JabIaYd9Rag2OJi5mjq08XJfbJGMZV/TA6hFJCLGkr5/+ZOn4/geTM5/3aSfQ8z5EIJAOg==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [darwin] - sass-embedded-darwin-x64@1.89.2: - resolution: {integrity: sha512-D9WxtDY5VYtMApXRuhQK9VkPHB8R79NIIR6xxVlN2MIdEid/TZWi1MHNweieETXhWGrKhRKglwnHxxyKdJYMnA==} + sass-embedded-darwin-x64@1.98.0: + resolution: {integrity: sha512-OLBOCs/NPeiMqTdOrMFbVHBQFj19GS3bSVSxIhcCq16ZyhouUkYJEZjxQgzv9SWA2q6Ki8GCqp4k6jMeUY9dcA==} engines: {node: '>=14.0.0'} cpu: [x64] os: [darwin] - sass-embedded-linux-arm64@1.89.2: - resolution: {integrity: sha512-2N4WW5LLsbtrWUJ7iTpjvhajGIbmDR18ZzYRywHdMLpfdPApuHPMDF5CYzHbS+LLx2UAx7CFKBnj5LLjY6eFgQ==} + sass-embedded-linux-arm64@1.98.0: + resolution: {integrity: sha512-axOE3t2MTBwCtkUCbrdM++Gj0gC0fdHJPrgzQ+q1WUmY9NoNMGqflBtk5mBZaWUeha2qYO3FawxCB8lctFwCtw==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] + libc: glibc - sass-embedded-linux-arm@1.89.2: - resolution: {integrity: sha512-leP0t5U4r95dc90o8TCWfxNXwMAsQhpWxTkdtySDpngoqtTy3miMd7EYNYd1znI0FN1CBaUvbdCMbnbPwygDlA==} + sass-embedded-linux-arm@1.98.0: + resolution: {integrity: sha512-03baQZCxVyEp8v1NWBRlzGYrmVT/LK7ZrHlF1piscGiGxwfdxoLXVuxsylx3qn/dD/4i/rh7Bzk7reK1br9jvQ==} engines: {node: '>=14.0.0'} cpu: [arm] os: [linux] + libc: glibc - sass-embedded-linux-musl-arm64@1.89.2: - resolution: {integrity: sha512-nTyuaBX6U1A/cG7WJh0pKD1gY8hbg1m2SnzsyoFG+exQ0lBX/lwTLHq3nyhF+0atv7YYhYKbmfz+sjPP8CZ9lw==} + sass-embedded-linux-musl-arm64@1.98.0: + resolution: {integrity: sha512-LeqNxQA8y4opjhe68CcFvMzCSrBuJqYVFbwElEj9bagHXQHTp9xVPJRn6VcrC+0VLEDq13HVXMv7RslIuU0zmA==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] + libc: musl - sass-embedded-linux-musl-arm@1.89.2: - resolution: {integrity: sha512-Z6gG2FiVEEdxYHRi2sS5VIYBmp17351bWtOCUZ/thBM66+e70yiN6Eyqjz80DjL8haRUegNQgy9ZJqsLAAmr9g==} + sass-embedded-linux-musl-arm@1.98.0: + resolution: {integrity: sha512-OBkjTDPYR4hSaueOGIM6FDpl9nt/VZwbSRpbNu9/eEJcxE8G/vynRugW8KRZmCFjPy8j/jkGBvvS+k9iOqKV3g==} engines: {node: '>=14.0.0'} cpu: [arm] os: [linux] + libc: musl - sass-embedded-linux-musl-riscv64@1.89.2: - resolution: {integrity: sha512-N6oul+qALO0SwGY8JW7H/Vs0oZIMrRMBM4GqX3AjM/6y8JsJRxkAwnfd0fDyK+aICMFarDqQonQNIx99gdTZqw==} + sass-embedded-linux-musl-riscv64@1.98.0: + resolution: {integrity: sha512-7w6hSuOHKt8FZsmjRb3iGSxEzM87fO9+M8nt5JIQYMhHTj5C+JY/vcske0v715HCVj5e1xyTnbGXf8FcASeAIw==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [linux] + libc: musl - sass-embedded-linux-musl-x64@1.89.2: - resolution: {integrity: sha512-K+FmWcdj/uyP8GiG9foxOCPfb5OAZG0uSVq80DKgVSC0U44AdGjvAvVZkrgFEcZ6cCqlNC2JfYmslB5iqdL7tg==} + sass-embedded-linux-musl-x64@1.98.0: + resolution: {integrity: sha512-QikNyDEJOVqPmxyCFkci8ZdCwEssdItfjQFJB+D+Uy5HFqcS5Lv3d3GxWNX/h1dSb23RPyQdQc267ok5SbEyJw==} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] + libc: musl - sass-embedded-linux-riscv64@1.89.2: - resolution: {integrity: sha512-g9nTbnD/3yhOaskeqeBQETbtfDQWRgsjHok6bn7DdAuwBsyrR3JlSFyqKc46pn9Xxd9SQQZU8AzM4IR+sY0A0w==} + sass-embedded-linux-riscv64@1.98.0: + resolution: {integrity: sha512-E7fNytc/v4xFBQKzgzBddV/jretA4ULAPO6XmtBiQu4zZBdBozuSxsQLe2+XXeb0X4S2GIl72V7IPABdqke/vA==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [linux] + libc: glibc - sass-embedded-linux-x64@1.89.2: - resolution: {integrity: sha512-Ax7dKvzncyQzIl4r7012KCMBvJzOz4uwSNoyoM5IV6y5I1f5hEwI25+U4WfuTqdkv42taCMgpjZbh9ERr6JVMQ==} + sass-embedded-linux-x64@1.98.0: + resolution: {integrity: sha512-VsvP0t/uw00mMNPv3vwyYKUrFbqzxQHnRMO+bHdAMjvLw4NFf6mscpym9Bzf+NXwi1ZNKnB6DtXjmcpcvqFqYg==} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] + libc: glibc + + sass-embedded-unknown-all@1.98.0: + resolution: {integrity: sha512-C4MMzcAo3oEDQnW7L8SBgB9F2Fq5qHPnaYTZRMOH3Mp/7kM4OooBInXpCiiFjLnjY95hzP4KyctVx0uYR6MYlQ==} + os: ['!android', '!darwin', '!linux', '!win32'] - sass-embedded-win32-arm64@1.89.2: - resolution: {integrity: sha512-j96iJni50ZUsfD6tRxDQE2QSYQ2WrfHxeiyAXf41Kw0V4w5KYR/Sf6rCZQLMTUOHnD16qTMVpQi20LQSqf4WGg==} + sass-embedded-win32-arm64@1.98.0: + resolution: {integrity: sha512-nP/10xbAiPbhQkMr3zQfXE4TuOxPzWRQe1Hgbi90jv2R4TbzbqQTuZVOaJf7KOAN4L2Bo6XCTRjK5XkVnwZuwQ==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [win32] - sass-embedded-win32-x64@1.89.2: - resolution: {integrity: sha512-cS2j5ljdkQsb4PaORiClaVYynE9OAPZG/XjbOMxpQmjRIf7UroY4PEIH+Waf+y47PfXFX9SyxhYuw2NIKGbEng==} + sass-embedded-win32-x64@1.98.0: + resolution: {integrity: sha512-/lbrVsfbcbdZQ5SJCWcV0NVPd6YRs+FtAnfedp4WbCkO/ZO7Zt/58MvI4X2BVpRY/Nt5ZBo1/7v2gYcQ+J4svQ==} engines: {node: '>=14.0.0'} cpu: [x64] os: [win32] - sass-embedded@1.89.2: - resolution: {integrity: sha512-Ack2K8rc57kCFcYlf3HXpZEJFNUX8xd8DILldksREmYXQkRHI879yy8q4mRDJgrojkySMZqmmmW1NxrFxMsYaA==} + sass-embedded@1.98.0: + resolution: {integrity: sha512-Do7u6iRb6K+lrllcTkB1BXcHwOxcKe3rEfOF/GcCLE2w3WpddakRAosJOHFUR37DpsvimQXEt5abs3NzUjEIqg==} engines: {node: '>=16.0.0'} hasBin: true - sax@1.4.3: - resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} + sass@1.98.0: + resolution: {integrity: sha512-+4N/u9dZ4PrgzGgPlKnaaRQx64RO0JBKs9sDhQ2pLgN6JQZ25uPQZKQYaBJU48Kd5BxgXoJ4e09Dq7nMcOUW3A==} + engines: {node: '>=14.0.0'} + hasBin: true + + sax@1.5.0: + resolution: {integrity: sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==} + engines: {node: '>=11.0.0'} section-matter@1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} @@ -2366,16 +2519,17 @@ packages: set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - shiki@3.15.0: - resolution: {integrity: sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw==} + shiki@4.0.2: + resolution: {integrity: sha512-eAVKTMedR5ckPo4xne/PjYQYrU3qx78gtJZ+sHlXEg5IHhhoQhMfZVzetTYuaJS0L2Ef3AcCRzCHV8T0WI6nIQ==} + engines: {node: '>=20'} signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - sitemap@8.0.2: - resolution: {integrity: sha512-LwktpJcyZDoa0IL6KT++lQ53pbSrx2c9ge41/SeLTyqy2XUNA6uR4+P9u5IVo5lPeL2arAcOKn1aZAxoYbCKlQ==} - engines: {node: '>=14.0.0', npm: '>=6.0.0'} + sitemap@9.0.1: + resolution: {integrity: sha512-S6hzjGJSG3d6if0YoF5kTyeRJvia6FSTBroE5fQ0bu1QNxyJqhhinfUsXi9fH3MgtXODWvwo2BDyQSnhPQ88uQ==} + engines: {node: '>=20.19.5', npm: '>=10.8.2'} hasBin: true slash@5.1.0: @@ -2389,10 +2543,6 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - speakingurl@14.0.1: - resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} - engines: {node: '>=0.10.0'} - speech-rule-engine@4.1.2: resolution: {integrity: sha512-S6ji+flMEga+1QU79NDbwZ8Ivf0S/MpupQQiIC0rTpU/ZTKgcajijJJb1OcByBQDjrXCN1/DJtGz4ZJeBMPGJw==} hasBin: true @@ -2400,17 +2550,17 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - stdin-discarder@0.2.2: - resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + stdin-discarder@0.3.1: + resolution: {integrity: sha512-reExS1kSGoElkextOcPkel4NE99S0BWxjUHQeDFnR8S993JxpPX7KU4MNmO19NXhlJp+8dmdCbKQVNgLJh2teA==} engines: {node: '>=18'} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} - string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} - engines: {node: '>=18'} + string-width@8.2.0: + resolution: {integrity: sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==} + engines: {node: '>=20'} stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} @@ -2419,8 +2569,8 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.2: - resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} strip-bom-string@1.0.0: @@ -2430,10 +2580,6 @@ packages: stylis@4.3.6: resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} - superjson@2.2.5: - resolution: {integrity: sha512-zWPTX96LVsA/eVYnqOM2+ofcdPqdS1dAF1LN4TS2/MWuUpfitd9ctTa87wt4xrYnZnkLtS69xpBdSxVBP5Rm6w==} - engines: {node: '>=16'} - supports-color@8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} @@ -2442,12 +2588,12 @@ packages: resolution: {integrity: sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==} engines: {node: '>=16.0.0'} - sync-message-port@1.1.3: - resolution: {integrity: sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==} + sync-message-port@1.2.0: + resolution: {integrity: sha512-gAQ9qrUN/UCypHtGFbbe7Rc/f9bzO88IwrG8TDo/aMKAApKyD6E3W4Cm0EfhfBb6Z6SKt59tTCTfD+n1xmAvMg==} engines: {node: '>=16.0.0'} - synckit@0.11.11: - resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} + synckit@0.11.12: + resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} engines: {node: ^14.18.0 || >=16.0.0} tinyexec@1.0.2: @@ -2484,18 +2630,17 @@ packages: undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - undici@7.16.0: - resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==} + undici-types@7.18.2: + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} + + undici@7.22.0: + resolution: {integrity: sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==} engines: {node: '>=20.18.1'} unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} - unicorn-magic@0.3.0: - resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} - engines: {node: '>=18'} - unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -2511,8 +2656,8 @@ packages: unist-util-visit-parents@6.0.2: resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} @@ -2522,8 +2667,8 @@ packages: resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} engines: {node: '>=4'} - update-browserslist-db@1.1.4: - resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -2544,8 +2689,8 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite@7.0.8: - resolution: {integrity: sha512-cJBdq0/u+8rgstg9t7UkBilf8ipLmeXJO30NxD5HAHOivnj10ocV8YtR/XBvd2wQpN3TmcaxNKaHX3tN7o5F5A==} + vite@7.1.12: + resolution: {integrity: sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -2604,32 +2749,32 @@ packages: vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} - vue-router@4.6.3: - resolution: {integrity: sha512-ARBedLm9YlbvQomnmq91Os7ck6efydTSpRP3nuOKCvgJOHNrhRoJDSKtee8kcL1Vf7nz6U+PMBL+hTvR3bTVQg==} + vue-router@4.6.4: + resolution: {integrity: sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==} peerDependencies: vue: ^3.5.0 - vue@3.5.24: - resolution: {integrity: sha512-uTHDOpVQTMjcGgrqFPSb8iO2m1DUvo+WbGqoXQz8Y1CeBYQ0FXf2z1gLRaBtHjlRz7zZUBHxjVB5VTLzYkvftg==} + vue@3.5.30: + resolution: {integrity: sha512-hTHLc6VNZyzzEH/l7PFGjpcTvUgiaPK5mdLkbjrTeWSRcEfxFrv56g/XckIYlE9ckuobsdwqd5mk2g1sBkMewg==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - vuepress-plugin-components@2.0.0-rc.94: - resolution: {integrity: sha512-U6s7qWG1ETm7yvshD+gWe1SrTezjaFvW8gUvmmAZEoLTV5Pd+FC7BR7W8syPieOzUzOVjF2UeO5zVsZ/M9jp4A==} - engines: {node: '>= 20.6.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + vuepress-plugin-components@2.0.0-rc.103: + resolution: {integrity: sha512-RZEZgNpbRHwGMtubyipjR/KAsgHp7xnw0E4Ww5/IEVPY99LksuuTlnvjhHNmrsX17LxTo6pVJ/Nhc/sXQEknyg==} + engines: {node: '>=20.19.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} peerDependencies: artplayer: ^5.0.0 dashjs: 4.7.4 hls.js: ^1.4.12 mpegts.js: ^1.7.3 - sass: ^1.89.2 - sass-embedded: ^1.89.2 - sass-loader: ^16.0.5 + sass: ^1.97.3 + sass-embedded: ^1.97.3 + sass-loader: ^16.0.7 vidstack: ^1.12.9 - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 peerDependenciesMeta: artplayer: optional: true @@ -2648,17 +2793,17 @@ packages: vidstack: optional: true - vuepress-plugin-md-enhance@2.0.0-rc.94: - resolution: {integrity: sha512-oI9e3JvdcpQeK3w1nIowl+Tn49euLxicrIg1uKf0mUd7JB1ofo1XDuxBLtRASgRoqCRiiQsq1trYnyO9CiPGpQ==} - engines: {node: '>= 20.6.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + vuepress-plugin-md-enhance@2.0.0-rc.103: + resolution: {integrity: sha512-Lpr4bec4mzvzhahG7kjJR5fc8JN/kvlbbGInXL5yscby87baNGpsmVH7xpuym0vT3Q5h8LnDxQ/EvIitwSIFzg==} + engines: {node: '>= 20.19.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} peerDependencies: '@vue/repl': ^4.1.1 kotlin-playground: ^1.23.0 sandpack-vue3: ^3.0.0 - sass: ^1.89.2 - sass-embedded: ^1.89.2 - sass-loader: ^16.0.5 - vuepress: 2.0.0-rc.24 + sass: ^1.97.3 + sass-embedded: ^1.97.3 + sass-loader: ^16.0.7 + vuepress: 2.0.0-rc.26 peerDependenciesMeta: '@vue/repl': optional: true @@ -2673,31 +2818,30 @@ packages: sass-loader: optional: true - vuepress-shared@2.0.0-rc.94: - resolution: {integrity: sha512-ZlVIeRkCY7jt8QpELr3i5PGFkWk7VkTG1emn6BuOE2Hd+tI8zZH4a6lCGqtkhpu093tpM+tSANiR83RRNQCCCw==} - engines: {node: '>= 20.6.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + vuepress-shared@2.0.0-rc.103: + resolution: {integrity: sha512-F8/3mYmh4BEacG+cHCtu7BmF5HrxfcwiLYd0523h+XYN02abgcUS8EJ7mZo/6juj5ZhWjjsWLarctim4wmOvIw==} + engines: {node: '>= 20.19.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} peerDependencies: - vuepress: 2.0.0-rc.24 + vuepress: 2.0.0-rc.26 - vuepress-theme-hope@2.0.0-rc.94: - resolution: {integrity: sha512-FA35vxdUY3tk1ORDSCTTozttoTNSmdCTms3v7871vUFeKmQ+MY+iCFGDVMeoCEcuCMGJ7F0+bcCUkH3ohFcdgQ==} - engines: {node: '>= 20.6.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + vuepress-theme-hope@2.0.0-rc.103: + resolution: {integrity: sha512-LPd5wy7YTUc/FPXpLgEzDOywwI2WGqAgfTnrIoLsPOkTBkZqvJRi47kueF7bTmkqupR2P2igAmHJVToBJIzVOw==} + engines: {node: '>= 20.19.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} peerDependencies: - '@vuepress/plugin-docsearch': 2.0.0-rc.112 - '@vuepress/plugin-feed': 2.0.0-rc.112 - '@vuepress/plugin-meilisearch': 2.0.0-rc.112 - '@vuepress/plugin-prismjs': 2.0.0-rc.112 - '@vuepress/plugin-pwa': 2.0.0-rc.112 - '@vuepress/plugin-revealjs': 2.0.0-rc.112 - '@vuepress/plugin-search': 2.0.0-rc.112 - '@vuepress/plugin-slimsearch': 2.0.0-rc.112 - '@vuepress/plugin-watermark': 2.0.0-rc.112 - '@vuepress/shiki-twoslash': 2.0.0-rc.112 - nodejs-jieba: ^0.2.1 || ^0.3.0 - sass: ^1.89.2 - sass-embedded: ^1.89.2 - sass-loader: ^16.0.5 - vuepress: 2.0.0-rc.24 + '@vuepress/plugin-docsearch': 2.0.0-rc.124 + '@vuepress/plugin-feed': 2.0.0-rc.124 + '@vuepress/plugin-meilisearch': 2.0.0-rc.124 + '@vuepress/plugin-prismjs': 2.0.0-rc.124 + '@vuepress/plugin-pwa': 2.0.0-rc.124 + '@vuepress/plugin-revealjs': 2.0.0-rc.124 + '@vuepress/plugin-search': 2.0.0-rc.124 + '@vuepress/plugin-slimsearch': 2.0.0-rc.124 + '@vuepress/plugin-watermark': 2.0.0-rc.124 + '@vuepress/shiki-twoslash': 2.0.0-rc.124 + sass: ^1.97.3 + sass-embedded: ^1.97.3 + sass-loader: ^16.0.7 + vuepress: 2.0.0-rc.26 peerDependenciesMeta: '@vuepress/plugin-docsearch': optional: true @@ -2719,8 +2863,6 @@ packages: optional: true '@vuepress/shiki-twoslash': optional: true - nodejs-jieba: - optional: true sass: optional: true sass-embedded: @@ -2728,14 +2870,14 @@ packages: sass-loader: optional: true - vuepress@2.0.0-rc.24: - resolution: {integrity: sha512-56O9fAj3Fr1ezngeHDGyp5I1fWxBnP6gaGerjYjPNtr2RteSZtnqL/fQDzmiw5rFpuMVlfOTXESvQjQUlio8PQ==} + vuepress@2.0.0-rc.26: + resolution: {integrity: sha512-ztTS3m6Q2MAb6D26vM2UyU5nOuxIhIk37SSD3jTcKI00x4ha0FcwY3Cm0MAt6w58REBmkwNLPxN5iiulatHtbw==} engines: {node: ^20.9.0 || >=22.0.0} hasBin: true peerDependencies: - '@vuepress/bundler-vite': 2.0.0-rc.24 - '@vuepress/bundler-webpack': 2.0.0-rc.24 - vue: ^3.5.17 + '@vuepress/bundler-vite': 2.0.0-rc.26 + '@vuepress/bundler-webpack': 2.0.0-rc.26 + vue: ^3.5.22 peerDependenciesMeta: '@vuepress/bundler-vite': optional: true @@ -2778,6 +2920,10 @@ packages: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -2792,18 +2938,18 @@ snapshots: '@babel/helper-validator-identifier@7.28.5': {} - '@babel/parser@7.28.5': + '@babel/parser@7.29.0': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.29.0 - '@babel/types@7.28.5': + '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 '@braintree/sanitize-url@7.1.2': {} - '@bufbuild/protobuf@2.10.1': {} + '@bufbuild/protobuf@2.11.0': {} '@chevrotain/cst-dts-gen@11.1.2': dependencies: @@ -2910,223 +3056,237 @@ snapshots: '@jridgewell/sourcemap-codec@1.5.5': {} - '@lit-labs/ssr-dom-shim@1.4.0': {} + '@lit-labs/ssr-dom-shim@1.5.1': {} - '@lit/reactive-element@2.1.1': + '@lit/reactive-element@2.1.2': dependencies: - '@lit-labs/ssr-dom-shim': 1.4.0 + '@lit-labs/ssr-dom-shim': 1.5.1 - '@mdit-vue/plugin-component@2.1.4': + '@mdit-vue/plugin-component@3.0.2': dependencies: '@types/markdown-it': 14.1.2 - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit-vue/plugin-frontmatter@2.1.4': + '@mdit-vue/plugin-frontmatter@3.0.2': dependencies: - '@mdit-vue/types': 2.1.4 + '@mdit-vue/types': 3.0.2 '@types/markdown-it': 14.1.2 gray-matter: 4.0.3 - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit-vue/plugin-headers@2.1.4': + '@mdit-vue/plugin-headers@3.0.2': dependencies: - '@mdit-vue/shared': 2.1.4 - '@mdit-vue/types': 2.1.4 + '@mdit-vue/shared': 3.0.2 + '@mdit-vue/types': 3.0.2 '@types/markdown-it': 14.1.2 - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit-vue/plugin-sfc@2.1.4': + '@mdit-vue/plugin-sfc@3.0.2': dependencies: - '@mdit-vue/types': 2.1.4 + '@mdit-vue/types': 3.0.2 '@types/markdown-it': 14.1.2 - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit-vue/plugin-title@2.1.4': + '@mdit-vue/plugin-title@3.0.2': dependencies: - '@mdit-vue/shared': 2.1.4 - '@mdit-vue/types': 2.1.4 + '@mdit-vue/shared': 3.0.2 + '@mdit-vue/types': 3.0.2 '@types/markdown-it': 14.1.2 - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit-vue/plugin-toc@2.1.4': + '@mdit-vue/plugin-toc@3.0.2': dependencies: - '@mdit-vue/shared': 2.1.4 - '@mdit-vue/types': 2.1.4 + '@mdit-vue/shared': 3.0.2 + '@mdit-vue/types': 3.0.2 '@types/markdown-it': 14.1.2 - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit-vue/shared@2.1.4': + '@mdit-vue/shared@3.0.2': dependencies: - '@mdit-vue/types': 2.1.4 + '@mdit-vue/types': 3.0.2 '@types/markdown-it': 14.1.2 - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit-vue/types@2.1.4': {} + '@mdit-vue/types@3.0.2': {} - '@mdit/helper@0.22.1(markdown-it@14.1.0)': + '@mdit/helper@0.23.1(markdown-it@14.1.1)': dependencies: '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-alert@0.22.3(markdown-it@14.1.0)': + '@mdit/plugin-alert@0.23.1(markdown-it@14.1.1)': dependencies: '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-align@0.22.2(markdown-it@14.1.0)': + '@mdit/plugin-align@0.24.1(markdown-it@14.1.1)': dependencies: - '@mdit/plugin-container': 0.22.2(markdown-it@14.1.0) + '@mdit/plugin-container': 0.23.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-attrs@0.23.3(markdown-it@14.1.0)': + '@mdit/plugin-attrs@0.25.1(markdown-it@14.1.1)': dependencies: - '@mdit/helper': 0.22.1(markdown-it@14.1.0) + '@mdit/helper': 0.23.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-container@0.22.2(markdown-it@14.1.0)': + '@mdit/plugin-container@0.23.1(markdown-it@14.1.1)': dependencies: '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-demo@0.22.3(markdown-it@14.1.0)': + '@mdit/plugin-demo@0.23.1(markdown-it@14.1.1)': dependencies: '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-figure@0.22.2(markdown-it@14.1.0)': + '@mdit/plugin-figure@0.23.1(markdown-it@14.1.1)': dependencies: '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-footnote@0.22.3(markdown-it@14.1.0)': + '@mdit/plugin-footnote@0.23.1(markdown-it@14.1.1)': dependencies: '@types/markdown-it': 14.1.2 - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-icon@0.22.2(markdown-it@14.1.0)': + '@mdit/plugin-icon@0.24.1(markdown-it@14.1.1)': dependencies: - '@mdit/helper': 0.22.1(markdown-it@14.1.0) + '@mdit/helper': 0.23.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-img-lazyload@0.22.1(markdown-it@14.1.0)': + '@mdit/plugin-img-lazyload@0.23.1(markdown-it@14.1.1)': dependencies: '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-img-mark@0.22.2(markdown-it@14.1.0)': + '@mdit/plugin-img-mark@0.23.1(markdown-it@14.1.1)': dependencies: '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-img-size@0.22.3(markdown-it@14.1.0)': + '@mdit/plugin-img-size@0.23.1(markdown-it@14.1.1)': dependencies: '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-include@0.22.2(markdown-it@14.1.0)': + '@mdit/plugin-include@0.23.1(markdown-it@14.1.1)': dependencies: - '@mdit/helper': 0.22.1(markdown-it@14.1.0) + '@mdit/helper': 0.23.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 upath: 2.0.1 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-katex-slim@0.23.2(katex@0.16.25)(markdown-it@14.1.0)': + '@mdit/plugin-inline-rule@0.23.1(markdown-it@14.1.1)': dependencies: - '@mdit/helper': 0.22.1(markdown-it@14.1.0) - '@mdit/plugin-tex': 0.22.2(markdown-it@14.1.0) + '@mdit/helper': 0.23.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 optionalDependencies: - katex: 0.16.25 - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-mark@0.22.1(markdown-it@14.1.0)': + '@mdit/plugin-katex-slim@0.26.1(katex@0.16.38)(markdown-it@14.1.1)': dependencies: + '@mdit/helper': 0.23.1(markdown-it@14.1.1) + '@mdit/plugin-tex': 0.24.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + katex: 0.16.38 + markdown-it: 14.1.1 - '@mdit/plugin-mathjax-slim@0.23.2(markdown-it@14.1.0)(mathjax-full@3.2.2)': + '@mdit/plugin-layout@0.2.1(markdown-it@14.1.1)': dependencies: - '@mdit/plugin-tex': 0.22.2(markdown-it@14.1.0) + '@mdit/helper': 0.23.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 - upath: 2.0.1 optionalDependencies: - markdown-it: 14.1.0 - mathjax-full: 3.2.2 + markdown-it: 14.1.1 - '@mdit/plugin-plantuml@0.22.3(markdown-it@14.1.0)': + '@mdit/plugin-mark@0.23.1(markdown-it@14.1.1)': dependencies: - '@mdit/plugin-uml': 0.22.2(markdown-it@14.1.0) + '@mdit/plugin-inline-rule': 0.23.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-spoiler@0.22.2(markdown-it@14.1.0)': + '@mdit/plugin-mathjax-slim@0.26.1(markdown-it@14.1.1)': dependencies: + '@mdit/plugin-tex': 0.24.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-stylize@0.22.2(markdown-it@14.1.0)': + '@mdit/plugin-plantuml@0.24.1(markdown-it@14.1.1)': dependencies: + '@mdit/plugin-uml': 0.24.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-sub@0.22.2(markdown-it@14.1.0)': + '@mdit/plugin-spoiler@0.23.1(markdown-it@14.1.1)': dependencies: - '@mdit/helper': 0.22.1(markdown-it@14.1.0) + '@mdit/plugin-inline-rule': 0.23.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-sup@0.22.2(markdown-it@14.1.0)': + '@mdit/plugin-stylize@0.23.1(markdown-it@14.1.1)': dependencies: - '@mdit/helper': 0.22.1(markdown-it@14.1.0) '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-tab@0.22.3(markdown-it@14.1.0)': + '@mdit/plugin-sub@0.24.1(markdown-it@14.1.1)': dependencies: - '@mdit/helper': 0.22.1(markdown-it@14.1.0) + '@mdit/plugin-inline-rule': 0.23.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-tasklist@0.22.2(markdown-it@14.1.0)': + '@mdit/plugin-sup@0.24.1(markdown-it@14.1.1)': dependencies: + '@mdit/plugin-inline-rule': 0.23.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-tex@0.22.2(markdown-it@14.1.0)': + '@mdit/plugin-tab@0.24.1(markdown-it@14.1.1)': dependencies: + '@mdit/helper': 0.23.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 - '@mdit/plugin-uml@0.22.2(markdown-it@14.1.0)': + '@mdit/plugin-tasklist@0.23.1(markdown-it@14.1.1)': dependencies: - '@mdit/helper': 0.22.1(markdown-it@14.1.0) '@types/markdown-it': 14.1.2 optionalDependencies: - markdown-it: 14.1.0 + markdown-it: 14.1.1 + + '@mdit/plugin-tex@0.24.1(markdown-it@14.1.1)': + dependencies: + '@types/markdown-it': 14.1.2 + optionalDependencies: + markdown-it: 14.1.1 + + '@mdit/plugin-uml@0.24.1(markdown-it@14.1.1)': + dependencies: + '@mdit/helper': 0.23.1(markdown-it@14.1.1) + '@types/markdown-it': 14.1.2 + optionalDependencies: + markdown-it: 14.1.1 '@mermaid-js/parser@1.0.1': dependencies: @@ -3142,110 +3302,187 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 + fastq: 1.20.1 + + '@parcel/watcher-android-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-x64@2.5.6': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.6': + optional: true + + '@parcel/watcher-win32-arm64@2.5.6': + optional: true + + '@parcel/watcher-win32-ia32@2.5.6': + optional: true + + '@parcel/watcher-win32-x64@2.5.6': + optional: true + + '@parcel/watcher@2.5.6': + dependencies: + detect-libc: 2.1.2 + is-glob: 4.0.3 + node-addon-api: 7.1.1 + picomatch: 4.0.3 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.6 + '@parcel/watcher-darwin-arm64': 2.5.6 + '@parcel/watcher-darwin-x64': 2.5.6 + '@parcel/watcher-freebsd-x64': 2.5.6 + '@parcel/watcher-linux-arm-glibc': 2.5.6 + '@parcel/watcher-linux-arm-musl': 2.5.6 + '@parcel/watcher-linux-arm64-glibc': 2.5.6 + '@parcel/watcher-linux-arm64-musl': 2.5.6 + '@parcel/watcher-linux-x64-glibc': 2.5.6 + '@parcel/watcher-linux-x64-musl': 2.5.6 + '@parcel/watcher-win32-arm64': 2.5.6 + '@parcel/watcher-win32-ia32': 2.5.6 + '@parcel/watcher-win32-x64': 2.5.6 + optional: true '@pkgr/core@0.2.9': {} - '@rolldown/pluginutils@1.0.0-beta.29': {} + '@rolldown/pluginutils@1.0.0-rc.2': {} + + '@rollup/rollup-android-arm-eabi@4.59.0': + optional: true + + '@rollup/rollup-android-arm64@4.59.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.59.0': + optional: true - '@rollup/rollup-android-arm-eabi@4.53.2': + '@rollup/rollup-darwin-x64@4.59.0': optional: true - '@rollup/rollup-android-arm64@4.53.2': + '@rollup/rollup-freebsd-arm64@4.59.0': optional: true - '@rollup/rollup-darwin-arm64@4.53.2': + '@rollup/rollup-freebsd-x64@4.59.0': optional: true - '@rollup/rollup-darwin-x64@4.53.2': + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': optional: true - '@rollup/rollup-freebsd-arm64@4.53.2': + '@rollup/rollup-linux-arm-musleabihf@4.59.0': optional: true - '@rollup/rollup-freebsd-x64@4.53.2': + '@rollup/rollup-linux-arm64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.2': + '@rollup/rollup-linux-arm64-musl@4.59.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.2': + '@rollup/rollup-linux-loong64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.2': + '@rollup/rollup-linux-loong64-musl@4.59.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.2': + '@rollup/rollup-linux-ppc64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.2': + '@rollup/rollup-linux-ppc64-musl@4.59.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.2': + '@rollup/rollup-linux-riscv64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.2': + '@rollup/rollup-linux-riscv64-musl@4.59.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.2': + '@rollup/rollup-linux-s390x-gnu@4.59.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.2': + '@rollup/rollup-linux-x64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.2': + '@rollup/rollup-linux-x64-musl@4.59.0': optional: true - '@rollup/rollup-linux-x64-musl@4.53.2': + '@rollup/rollup-openbsd-x64@4.59.0': optional: true - '@rollup/rollup-openharmony-arm64@4.53.2': + '@rollup/rollup-openharmony-arm64@4.59.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.2': + '@rollup/rollup-win32-arm64-msvc@4.59.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.2': + '@rollup/rollup-win32-ia32-msvc@4.59.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.2': + '@rollup/rollup-win32-x64-gnu@4.59.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.2': + '@rollup/rollup-win32-x64-msvc@4.59.0': optional: true - '@shikijs/core@3.15.0': + '@shikijs/core@4.0.2': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/primitive': 4.0.2 + '@shikijs/types': 4.0.2 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.15.0': + '@shikijs/engine-javascript@4.0.2': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 4.0.2 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.3 + oniguruma-to-es: 4.3.4 - '@shikijs/engine-oniguruma@3.15.0': + '@shikijs/engine-oniguruma@4.0.2': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 4.0.2 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.15.0': + '@shikijs/langs@4.0.2': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 4.0.2 + + '@shikijs/primitive@4.0.2': + dependencies: + '@shikijs/types': 4.0.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 - '@shikijs/themes@3.15.0': + '@shikijs/themes@4.0.2': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 4.0.2 - '@shikijs/transformers@3.15.0': + '@shikijs/transformers@4.0.2': dependencies: - '@shikijs/core': 3.15.0 - '@shikijs/types': 3.15.0 + '@shikijs/core': 4.0.2 + '@shikijs/types': 4.0.2 - '@shikijs/types@3.15.0': + '@shikijs/types@4.0.2': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -3382,7 +3619,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 24.10.1 + '@types/node': 25.4.0 '@types/geojson@7946.0.16': {} @@ -3394,9 +3631,9 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 24.10.1 + '@types/node': 25.4.0 - '@types/katex@0.16.7': {} + '@types/katex@0.16.8': {} '@types/linkify-it@5.0.0': {} @@ -3417,15 +3654,19 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@17.0.45': {} - - '@types/node@24.10.1': + '@types/node@24.12.0': dependencies: undici-types: 7.16.0 + '@types/node@25.4.0': + dependencies: + undici-types: 7.18.2 + + '@types/picomatch@4.0.2': {} + '@types/sax@1.2.7': dependencies: - '@types/node': 17.0.45 + '@types/node': 24.12.0 '@types/trusted-types@2.0.7': {} @@ -3442,102 +3683,97 @@ snapshots: d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) - '@vitejs/plugin-vue@6.0.1(vite@7.0.8(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)': + '@vitejs/plugin-vue@6.0.4(vite@7.1.12(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)': dependencies: - '@rolldown/pluginutils': 1.0.0-beta.29 - vite: 7.0.8(@types/node@24.10.1)(sass-embedded@1.89.2) - vue: 3.5.24 + '@rolldown/pluginutils': 1.0.0-rc.2 + vite: 7.1.12(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0) + vue: 3.5.30 - '@vue/compiler-core@3.5.24': + '@vue/compiler-core@3.5.30': dependencies: - '@babel/parser': 7.28.5 - '@vue/shared': 3.5.24 - entities: 4.5.0 + '@babel/parser': 7.29.0 + '@vue/shared': 3.5.30 + entities: 7.0.1 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.24': + '@vue/compiler-dom@3.5.30': dependencies: - '@vue/compiler-core': 3.5.24 - '@vue/shared': 3.5.24 + '@vue/compiler-core': 3.5.30 + '@vue/shared': 3.5.30 - '@vue/compiler-sfc@3.5.24': + '@vue/compiler-sfc@3.5.30': dependencies: - '@babel/parser': 7.28.5 - '@vue/compiler-core': 3.5.24 - '@vue/compiler-dom': 3.5.24 - '@vue/compiler-ssr': 3.5.24 - '@vue/shared': 3.5.24 + '@babel/parser': 7.29.0 + '@vue/compiler-core': 3.5.30 + '@vue/compiler-dom': 3.5.30 + '@vue/compiler-ssr': 3.5.30 + '@vue/shared': 3.5.30 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.6 + postcss: 8.5.8 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.24': + '@vue/compiler-ssr@3.5.30': dependencies: - '@vue/compiler-dom': 3.5.24 - '@vue/shared': 3.5.24 + '@vue/compiler-dom': 3.5.30 + '@vue/shared': 3.5.30 '@vue/devtools-api@6.6.4': {} - '@vue/devtools-api@7.7.8': + '@vue/devtools-api@8.0.7': dependencies: - '@vue/devtools-kit': 7.7.8 + '@vue/devtools-kit': 8.0.7 - '@vue/devtools-kit@7.7.8': + '@vue/devtools-kit@8.0.7': dependencies: - '@vue/devtools-shared': 7.7.8 - birpc: 2.8.0 + '@vue/devtools-shared': 8.0.7 + birpc: 2.9.0 hookable: 5.5.3 - mitt: 3.0.1 - perfect-debounce: 1.0.0 - speakingurl: 14.0.1 - superjson: 2.2.5 + perfect-debounce: 2.1.0 - '@vue/devtools-shared@7.7.8': - dependencies: - rfdc: 1.4.1 + '@vue/devtools-shared@8.0.7': {} - '@vue/reactivity@3.5.24': + '@vue/reactivity@3.5.30': dependencies: - '@vue/shared': 3.5.24 + '@vue/shared': 3.5.30 - '@vue/runtime-core@3.5.24': + '@vue/runtime-core@3.5.30': dependencies: - '@vue/reactivity': 3.5.24 - '@vue/shared': 3.5.24 + '@vue/reactivity': 3.5.30 + '@vue/shared': 3.5.30 - '@vue/runtime-dom@3.5.24': + '@vue/runtime-dom@3.5.30': dependencies: - '@vue/reactivity': 3.5.24 - '@vue/runtime-core': 3.5.24 - '@vue/shared': 3.5.24 - csstype: 3.2.2 + '@vue/reactivity': 3.5.30 + '@vue/runtime-core': 3.5.30 + '@vue/shared': 3.5.30 + csstype: 3.2.3 - '@vue/server-renderer@3.5.24(vue@3.5.24)': + '@vue/server-renderer@3.5.30(vue@3.5.30)': dependencies: - '@vue/compiler-ssr': 3.5.24 - '@vue/shared': 3.5.24 - vue: 3.5.24 + '@vue/compiler-ssr': 3.5.30 + '@vue/shared': 3.5.30 + vue: 3.5.30 - '@vue/shared@3.5.24': {} + '@vue/shared@3.5.30': {} - '@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2)': + '@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0)': dependencies: - '@vitejs/plugin-vue': 6.0.1(vite@7.0.8(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) - '@vuepress/bundlerutils': 2.0.0-rc.24 - '@vuepress/client': 2.0.0-rc.24 - '@vuepress/core': 2.0.0-rc.24 - '@vuepress/shared': 2.0.0-rc.24 - '@vuepress/utils': 2.0.0-rc.24 - autoprefixer: 10.4.22(postcss@8.5.6) + '@vitejs/plugin-vue': 6.0.4(vite@7.1.12(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) + '@vuepress/bundlerutils': 2.0.0-rc.26 + '@vuepress/client': 2.0.0-rc.26 + '@vuepress/core': 2.0.0-rc.26 + '@vuepress/shared': 2.0.0-rc.26 + '@vuepress/utils': 2.0.0-rc.26 + autoprefixer: 10.4.27(postcss@8.5.8) connect-history-api-fallback: 2.0.0 - postcss: 8.5.6 - postcss-load-config: 6.0.1(postcss@8.5.6) - rollup: 4.53.2 - vite: 7.0.8(@types/node@24.10.1)(sass-embedded@1.89.2) - vue: 3.5.24 - vue-router: 4.6.3(vue@3.5.24) + postcss: 8.5.8 + postcss-load-config: 6.0.1(postcss@8.5.8) + rollup: 4.59.0 + vite: 7.1.12(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0) + vue: 3.5.30 + vue-router: 4.6.4(vue@3.5.30) transitivePeerDependencies: - '@types/node' - jiti @@ -3553,453 +3789,521 @@ snapshots: - typescript - yaml - '@vuepress/bundlerutils@2.0.0-rc.24': + '@vuepress/bundlerutils@2.0.0-rc.26': dependencies: - '@vuepress/client': 2.0.0-rc.24 - '@vuepress/core': 2.0.0-rc.24 - '@vuepress/shared': 2.0.0-rc.24 - '@vuepress/utils': 2.0.0-rc.24 - vue: 3.5.24 - vue-router: 4.6.3(vue@3.5.24) + '@vuepress/client': 2.0.0-rc.26 + '@vuepress/core': 2.0.0-rc.26 + '@vuepress/shared': 2.0.0-rc.26 + '@vuepress/utils': 2.0.0-rc.26 + vue: 3.5.30 + vue-router: 4.6.4(vue@3.5.30) transitivePeerDependencies: - supports-color - typescript - '@vuepress/cli@2.0.0-rc.24': + '@vuepress/cli@2.0.0-rc.26': dependencies: - '@vuepress/core': 2.0.0-rc.24 - '@vuepress/shared': 2.0.0-rc.24 - '@vuepress/utils': 2.0.0-rc.24 + '@vuepress/core': 2.0.0-rc.26 + '@vuepress/shared': 2.0.0-rc.26 + '@vuepress/utils': 2.0.0-rc.26 cac: 6.7.14 - chokidar: 3.6.0 - envinfo: 7.20.0 + chokidar: 4.0.3 + envinfo: 7.21.0 esbuild: 0.25.12 transitivePeerDependencies: - supports-color - typescript - '@vuepress/client@2.0.0-rc.24': + '@vuepress/client@2.0.0-rc.26': dependencies: - '@vue/devtools-api': 7.7.8 - '@vue/devtools-kit': 7.7.8 - '@vuepress/shared': 2.0.0-rc.24 - vue: 3.5.24 - vue-router: 4.6.3(vue@3.5.24) + '@vue/devtools-api': 8.0.7 + '@vue/devtools-kit': 8.0.7 + '@vuepress/shared': 2.0.0-rc.26 + vue: 3.5.30 + vue-router: 4.6.4(vue@3.5.30) transitivePeerDependencies: - typescript - '@vuepress/core@2.0.0-rc.24': + '@vuepress/core@2.0.0-rc.26': dependencies: - '@vuepress/client': 2.0.0-rc.24 - '@vuepress/markdown': 2.0.0-rc.24 - '@vuepress/shared': 2.0.0-rc.24 - '@vuepress/utils': 2.0.0-rc.24 - vue: 3.5.24 + '@vuepress/client': 2.0.0-rc.26 + '@vuepress/markdown': 2.0.0-rc.26 + '@vuepress/shared': 2.0.0-rc.26 + '@vuepress/utils': 2.0.0-rc.26 + vue: 3.5.30 transitivePeerDependencies: - supports-color - typescript - '@vuepress/helper@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/helper@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vue/shared': 3.5.24 - '@vueuse/core': 13.9.0(vue@3.5.24) - cheerio: 1.1.2 + '@vue/shared': 3.5.30 + '@vueuse/core': 14.2.1(vue@3.5.30) + cheerio: 1.2.0 fflate: 0.8.2 gray-matter: 4.0.3 - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) + optionalDependencies: + '@vuepress/bundler-vite': 2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0) transitivePeerDependencies: - typescript - '@vuepress/highlighter-helper@2.0.0-rc.112(@vueuse/core@13.9.0(vue@3.5.24))(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/highlighter-helper@2.0.0-rc.124(@vuepress/helper@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)))(@vueuse/core@14.2.1(vue@3.5.30))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) optionalDependencies: - '@vueuse/core': 13.9.0(vue@3.5.24) - - '@vuepress/markdown@2.0.0-rc.24': - dependencies: - '@mdit-vue/plugin-component': 2.1.4 - '@mdit-vue/plugin-frontmatter': 2.1.4 - '@mdit-vue/plugin-headers': 2.1.4 - '@mdit-vue/plugin-sfc': 2.1.4 - '@mdit-vue/plugin-title': 2.1.4 - '@mdit-vue/plugin-toc': 2.1.4 - '@mdit-vue/shared': 2.1.4 - '@mdit-vue/types': 2.1.4 + '@vueuse/core': 14.2.1(vue@3.5.30) + + '@vuepress/markdown@2.0.0-rc.26': + dependencies: + '@mdit-vue/plugin-component': 3.0.2 + '@mdit-vue/plugin-frontmatter': 3.0.2 + '@mdit-vue/plugin-headers': 3.0.2 + '@mdit-vue/plugin-sfc': 3.0.2 + '@mdit-vue/plugin-title': 3.0.2 + '@mdit-vue/plugin-toc': 3.0.2 + '@mdit-vue/shared': 3.0.2 + '@mdit-vue/types': 3.0.2 '@types/markdown-it': 14.1.2 '@types/markdown-it-emoji': 3.0.1 - '@vuepress/shared': 2.0.0-rc.24 - '@vuepress/utils': 2.0.0-rc.24 - markdown-it: 14.1.0 - markdown-it-anchor: 9.2.0(@types/markdown-it@14.1.2)(markdown-it@14.1.0) + '@vuepress/shared': 2.0.0-rc.26 + '@vuepress/utils': 2.0.0-rc.26 + markdown-it: 14.1.1 + markdown-it-anchor: 9.2.0(@types/markdown-it@14.1.2)(markdown-it@14.1.1) markdown-it-emoji: 3.0.0 mdurl: 2.0.0 transitivePeerDependencies: - supports-color - '@vuepress/plugin-active-header-links@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-active-header-links@2.0.0-rc.124(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vueuse/core': 13.9.0(vue@3.5.24) - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vueuse/core': 14.2.1(vue@3.5.30) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: - typescript - '@vuepress/plugin-back-to-top@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-back-to-top@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vueuse/core': 13.9.0(vue@3.5.24) - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vueuse/core': 14.2.1(vue@3.5.30) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-blog@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-blog@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - chokidar: 4.0.3 - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + chokidar: 5.0.0 + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-catalog@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-catalog@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-comment@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-comment@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vueuse/core': 13.9.0(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vueuse/core': 14.2.1(vue@3.5.30) giscus: 1.6.0 - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-copy-code@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-copy-code@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vueuse/core': 13.9.0(vue@3.5.24) - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vueuse/core': 14.2.1(vue@3.5.30) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-copyright@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-copyright@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vueuse/core': 13.9.0(vue@3.5.24) - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vueuse/core': 14.2.1(vue@3.5.30) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-feed@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-feed@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) xml-js: 1.6.11 transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-git@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-git@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vueuse/core': 13.9.0(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vueuse/core': 14.2.1(vue@3.5.30) rehype-parse: 9.0.1 rehype-sanitize: 6.0.0 rehype-stringify: 10.0.1 unified: 11.0.5 - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-icon@2.0.0-rc.112(markdown-it@14.1.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-icon@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@mdit/plugin-icon': 0.22.2(markdown-it@14.1.0) - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vueuse/core': 13.9.0(vue@3.5.24) - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@mdit/plugin-icon': 0.24.1(markdown-it@14.1.1) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vueuse/core': 14.2.1(vue@3.5.30) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - markdown-it - typescript - '@vuepress/plugin-links-check@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-links-check@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-markdown-chart@2.0.0-rc.112(markdown-it@14.1.0)(mermaid@11.13.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-markdown-chart@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(mermaid@11.13.0)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@mdit/plugin-container': 0.22.2(markdown-it@14.1.0) - '@mdit/plugin-plantuml': 0.22.3(markdown-it@14.1.0) - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vueuse/core': 13.9.0(vue@3.5.24) - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@mdit/plugin-container': 0.23.1(markdown-it@14.1.1) + '@mdit/plugin-plantuml': 0.24.1(markdown-it@14.1.1) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vueuse/core': 14.2.1(vue@3.5.30) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) optionalDependencies: mermaid: 11.13.0 transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - markdown-it - typescript - '@vuepress/plugin-markdown-ext@2.0.0-rc.112(markdown-it@14.1.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-markdown-ext@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@mdit/plugin-container': 0.22.2(markdown-it@14.1.0) - '@mdit/plugin-footnote': 0.22.3(markdown-it@14.1.0) - '@mdit/plugin-tasklist': 0.22.2(markdown-it@14.1.0) + '@mdit/plugin-container': 0.23.1(markdown-it@14.1.1) + '@mdit/plugin-footnote': 0.23.1(markdown-it@14.1.1) + '@mdit/plugin-tasklist': 0.23.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) js-yaml: 4.1.1 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + markdown-it-cjk-friendly: 2.0.2(@types/markdown-it@14.1.2)(markdown-it@14.1.1) + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - markdown-it - typescript - '@vuepress/plugin-markdown-hint@2.0.0-rc.112(markdown-it@14.1.0)(vue@3.5.24)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-markdown-hint@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(vue@3.5.30)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@mdit/plugin-alert': 0.22.3(markdown-it@14.1.0) - '@mdit/plugin-container': 0.22.2(markdown-it@14.1.0) + '@mdit/plugin-alert': 0.23.1(markdown-it@14.1.1) + '@mdit/plugin-container': 0.23.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vueuse/core': 13.9.0(vue@3.5.24) - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vueuse/core': 14.2.1(vue@3.5.30) + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - markdown-it - typescript - vue - '@vuepress/plugin-markdown-image@2.0.0-rc.112(markdown-it@14.1.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-markdown-image@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@mdit/plugin-figure': 0.22.2(markdown-it@14.1.0) - '@mdit/plugin-img-lazyload': 0.22.1(markdown-it@14.1.0) - '@mdit/plugin-img-mark': 0.22.2(markdown-it@14.1.0) - '@mdit/plugin-img-size': 0.22.3(markdown-it@14.1.0) + '@mdit/plugin-figure': 0.23.1(markdown-it@14.1.1) + '@mdit/plugin-img-lazyload': 0.23.1(markdown-it@14.1.1) + '@mdit/plugin-img-mark': 0.23.1(markdown-it@14.1.1) + '@mdit/plugin-img-size': 0.23.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - markdown-it - typescript - '@vuepress/plugin-markdown-include@2.0.0-rc.112(markdown-it@14.1.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-markdown-include@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@mdit/plugin-include': 0.22.2(markdown-it@14.1.0) + '@mdit/plugin-include': 0.23.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - markdown-it - typescript - '@vuepress/plugin-markdown-math@2.0.0-rc.112(katex@0.16.25)(markdown-it@14.1.0)(mathjax-full@3.2.2)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-markdown-math@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(katex@0.16.38)(markdown-it@14.1.1)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@mdit/plugin-katex-slim': 0.23.2(katex@0.16.25)(markdown-it@14.1.0) - '@mdit/plugin-mathjax-slim': 0.23.2(markdown-it@14.1.0)(mathjax-full@3.2.2) + '@mdit/plugin-katex-slim': 0.26.1(katex@0.16.38)(markdown-it@14.1.1) + '@mdit/plugin-mathjax-slim': 0.26.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) optionalDependencies: - katex: 0.16.25 - mathjax-full: 3.2.2 + katex: 0.16.38 transitivePeerDependencies: + - '@mathjax/mathjax-newcm-font' + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - markdown-it - typescript - '@vuepress/plugin-markdown-preview@2.0.0-rc.112(markdown-it@14.1.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-markdown-preview@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@mdit/helper': 0.22.1(markdown-it@14.1.0) - '@mdit/plugin-demo': 0.22.3(markdown-it@14.1.0) + '@mdit/helper': 0.23.1(markdown-it@14.1.1) + '@mdit/plugin-demo': 0.23.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vueuse/core': 13.9.0(vue@3.5.24) - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vueuse/core': 14.2.1(vue@3.5.30) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - markdown-it - typescript - '@vuepress/plugin-markdown-stylize@2.0.0-rc.112(markdown-it@14.1.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-markdown-stylize@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@mdit/plugin-align': 0.22.2(markdown-it@14.1.0) - '@mdit/plugin-attrs': 0.23.3(markdown-it@14.1.0) - '@mdit/plugin-mark': 0.22.1(markdown-it@14.1.0) - '@mdit/plugin-spoiler': 0.22.2(markdown-it@14.1.0) - '@mdit/plugin-stylize': 0.22.2(markdown-it@14.1.0) - '@mdit/plugin-sub': 0.22.2(markdown-it@14.1.0) - '@mdit/plugin-sup': 0.22.2(markdown-it@14.1.0) + '@mdit/plugin-align': 0.24.1(markdown-it@14.1.1) + '@mdit/plugin-attrs': 0.25.1(markdown-it@14.1.1) + '@mdit/plugin-layout': 0.2.1(markdown-it@14.1.1) + '@mdit/plugin-mark': 0.23.1(markdown-it@14.1.1) + '@mdit/plugin-spoiler': 0.23.1(markdown-it@14.1.1) + '@mdit/plugin-stylize': 0.23.1(markdown-it@14.1.1) + '@mdit/plugin-sub': 0.24.1(markdown-it@14.1.1) + '@mdit/plugin-sup': 0.24.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - markdown-it - typescript - '@vuepress/plugin-markdown-tab@2.0.0-rc.112(markdown-it@14.1.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-markdown-tab@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@mdit/plugin-tab': 0.22.3(markdown-it@14.1.0) + '@mdit/plugin-tab': 0.24.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vueuse/core': 13.9.0(vue@3.5.24) - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vueuse/core': 14.2.1(vue@3.5.30) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - markdown-it - typescript - '@vuepress/plugin-notice@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-notice@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vueuse/core': 13.9.0(vue@3.5.24) - chokidar: 4.0.3 - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vueuse/core': 14.2.1(vue@3.5.30) + chokidar: 5.0.0 + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-nprogress@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-nprogress@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-photo-swipe@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-photo-swipe@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vueuse/core': 13.9.0(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vueuse/core': 14.2.1(vue@3.5.30) photoswipe: 5.4.4 - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-reading-time@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-reading-time@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-redirect@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-redirect@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vueuse/core': 13.9.0(vue@3.5.24) - commander: 14.0.2 - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vueuse/core': 14.2.1(vue@3.5.30) + commander: 14.0.3 + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-rtl@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-rtl@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vueuse/core': 13.9.0(vue@3.5.24) - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vueuse/core': 14.2.1(vue@3.5.30) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-sass-palette@2.0.0-rc.112(sass-embedded@1.89.2)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-sass-palette@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(sass-embedded@1.98.0)(sass@1.98.0)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - chokidar: 4.0.3 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + chokidar: 5.0.0 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) optionalDependencies: - sass-embedded: 1.89.2 + sass: 1.98.0 + sass-embedded: 1.98.0 transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-search@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-search@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - chokidar: 4.0.3 - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + chokidar: 5.0.0 + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-seo@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-seo@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-shiki@2.0.0-rc.112(@vueuse/core@13.9.0(vue@3.5.24))(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-shiki@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(@vueuse/core@14.2.1(vue@3.5.30))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@shikijs/transformers': 3.15.0 - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/highlighter-helper': 2.0.0-rc.112(@vueuse/core@13.9.0(vue@3.5.24))(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) + '@shikijs/transformers': 4.0.2 + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/highlighter-helper': 2.0.0-rc.124(@vuepress/helper@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)))(@vueuse/core@14.2.1(vue@3.5.30))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) nanoid: 5.1.6 - shiki: 3.15.0 - synckit: 0.11.11 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + shiki: 4.0.2 + synckit: 0.11.12 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - '@vueuse/core' - typescript - '@vuepress/plugin-sitemap@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-sitemap@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - sitemap: 8.0.2 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + sitemap: 9.0.1 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-theme-data@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24))': + '@vuepress/plugin-theme-data@2.0.0-rc.124(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30))': dependencies: - '@vue/devtools-api': 7.7.8 - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vue/devtools-api': 8.0.7 + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: - typescript - '@vuepress/shared@2.0.0-rc.24': + '@vuepress/shared@2.0.0-rc.26': dependencies: - '@mdit-vue/types': 2.1.4 + '@mdit-vue/types': 3.0.2 - '@vuepress/utils@2.0.0-rc.24': + '@vuepress/utils@2.0.0-rc.26': dependencies: '@types/debug': 4.1.12 '@types/fs-extra': 11.0.4 '@types/hash-sum': 1.0.2 - '@vuepress/shared': 2.0.0-rc.24 + '@types/picomatch': 4.0.2 + '@vuepress/shared': 2.0.0-rc.26 debug: 4.4.3 - fs-extra: 11.3.2 - globby: 14.1.0 + fs-extra: 11.3.4 hash-sum: 2.0.0 - ora: 8.2.0 + ora: 9.3.0 picocolors: 1.1.1 + picomatch: 4.0.3 + tinyglobby: 0.2.15 upath: 2.0.1 transitivePeerDependencies: - supports-color - '@vueuse/core@13.9.0(vue@3.5.24)': + '@vueuse/core@14.2.1(vue@3.5.30)': dependencies: '@types/web-bluetooth': 0.0.21 - '@vueuse/metadata': 13.9.0 - '@vueuse/shared': 13.9.0(vue@3.5.24) - vue: 3.5.24 + '@vueuse/metadata': 14.2.1 + '@vueuse/shared': 14.2.1(vue@3.5.30) + vue: 3.5.30 - '@vueuse/metadata@13.9.0': {} + '@vueuse/metadata@14.2.1': {} - '@vueuse/shared@13.9.0(vue@3.5.24)': + '@vueuse/shared@14.2.1(vue@3.5.30)': dependencies: - vue: 3.5.24 + vue: 3.5.30 '@xmldom/xmldom@0.9.8': {} @@ -4013,11 +4317,6 @@ snapshots: dependencies: color-convert: 2.0.1 - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - arg@5.0.2: {} argparse@1.0.10: @@ -4026,27 +4325,24 @@ snapshots: argparse@2.0.1: {} - autoprefixer@10.4.22(postcss@8.5.6): + autoprefixer@10.4.27(postcss@8.5.8): dependencies: - browserslist: 4.28.0 - caniuse-lite: 1.0.30001755 + browserslist: 4.28.1 + caniuse-lite: 1.0.30001778 fraction.js: 5.3.4 - normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.5.6 + postcss: 8.5.8 postcss-value-parser: 4.2.0 bail@2.0.2: {} balloon-css@1.2.0: {} - baseline-browser-mapping@2.8.28: {} - - bcrypt-ts@7.1.0: {} + baseline-browser-mapping@2.10.0: {} - binary-extensions@2.3.0: {} + bcrypt-ts@8.0.1: {} - birpc@2.8.0: {} + birpc@2.9.0: {} boolbase@1.0.0: {} @@ -4054,21 +4350,19 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.28.0: + browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.8.28 - caniuse-lite: 1.0.30001755 - electron-to-chromium: 1.5.254 - node-releases: 2.0.27 - update-browserslist-db: 1.1.4(browserslist@4.28.0) - - buffer-builder@0.2.0: {} + baseline-browser-mapping: 2.10.0 + caniuse-lite: 1.0.30001778 + electron-to-chromium: 1.5.313 + node-releases: 2.0.36 + update-browserslist-db: 1.2.3(browserslist@4.28.1) cac@6.7.14: {} camelcase@5.3.1: {} - caniuse-lite@1.0.30001755: {} + caniuse-lite@1.0.30001778: {} ccount@2.0.1: {} @@ -4091,18 +4385,18 @@ snapshots: domhandler: 5.0.3 domutils: 3.2.2 - cheerio@1.1.2: + cheerio@1.2.0: dependencies: cheerio-select: 2.1.0 dom-serializer: 2.0.0 domhandler: 5.0.3 domutils: 3.2.2 encoding-sniffer: 0.2.1 - htmlparser2: 10.0.0 + htmlparser2: 10.1.0 parse5: 7.3.0 parse5-htmlparser2-tree-adapter: 7.1.0 parse5-parser-stream: 7.1.2 - undici: 7.16.0 + undici: 7.22.0 whatwg-mimetype: 4.0.0 chevrotain-allstar@0.3.1(chevrotain@11.1.2): @@ -4119,27 +4413,19 @@ snapshots: '@chevrotain/utils': 11.1.2 lodash-es: 4.17.23 - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - chokidar@4.0.3: dependencies: readdirp: 4.1.2 + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 + cli-cursor@5.0.0: dependencies: restore-cursor: 5.1.0 - cli-spinners@2.9.2: {} + cli-spinners@3.4.0: {} cliui@6.0.0: dependencies: @@ -4159,7 +4445,7 @@ snapshots: commander@13.1.0: {} - commander@14.0.2: {} + commander@14.0.3: {} commander@7.2.0: {} @@ -4169,10 +4455,6 @@ snapshots: connect-history-api-fallback@2.0.0: {} - copy-anything@4.0.5: - dependencies: - is-what: 5.5.0 - cose-base@1.0.3: dependencies: layout-base: 1.0.2 @@ -4181,7 +4463,7 @@ snapshots: dependencies: layout-base: 2.0.1 - create-codepen@2.0.0: {} + create-codepen@2.0.1: {} css-select@5.2.2: dependencies: @@ -4193,7 +4475,7 @@ snapshots: css-what@6.2.2: {} - csstype@3.2.2: {} + csstype@3.2.3: {} cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1): dependencies: @@ -4387,7 +4669,7 @@ snapshots: decamelize@1.2.0: {} - decode-named-character-reference@1.2.0: + decode-named-character-reference@1.3.0: dependencies: character-entities: 2.0.2 @@ -4397,6 +4679,9 @@ snapshots: dequal@2.0.3: {} + detect-libc@2.1.2: + optional: true + devlop@1.1.0: dependencies: dequal: 2.0.3 @@ -4425,9 +4710,7 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 - electron-to-chromium@1.5.254: {} - - emoji-regex@10.6.0: {} + electron-to-chromium@1.5.313: {} emoji-regex@8.0.0: {} @@ -4440,7 +4723,9 @@ snapshots: entities@6.0.1: {} - envinfo@7.20.0: {} + entities@7.0.1: {} + + envinfo@7.21.0: {} esbuild@0.25.12: optionalDependencies: @@ -4493,7 +4778,7 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 - fastq@1.19.1: + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -4514,7 +4799,7 @@ snapshots: fraction.js@5.3.4: {} - fs-extra@11.3.2: + fs-extra@11.3.4: dependencies: graceful-fs: 4.2.11 jsonfile: 6.2.0 @@ -4525,11 +4810,11 @@ snapshots: get-caller-file@2.0.5: {} - get-east-asian-width@1.4.0: {} + get-east-asian-width@1.5.0: {} giscus@1.6.0: dependencies: - lit: 3.3.1 + lit: 3.3.2 glob-parent@5.1.2: dependencies: @@ -4544,15 +4829,6 @@ snapshots: slash: 5.1.0 unicorn-magic: 0.1.0 - globby@14.1.0: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.3 - ignore: 7.0.5 - path-type: 6.0.0 - slash: 5.1.0 - unicorn-magic: 0.3.0 - graceful-fs@4.2.11: {} gray-matter@4.0.3: @@ -4606,7 +4882,7 @@ snapshots: comma-separated-tokens: 2.0.3 hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 @@ -4628,12 +4904,12 @@ snapshots: html-void-elements@3.0.0: {} - htmlparser2@10.0.0: + htmlparser2@10.1.0: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.2.2 - entities: 6.0.1 + entities: 7.0.1 husky@9.1.7: {} @@ -4643,9 +4919,7 @@ snapshots: ignore@5.3.2: {} - ignore@7.0.5: {} - - immutable@5.1.4: {} + immutable@5.1.5: {} internmap@1.0.1: {} @@ -4658,10 +4932,6 @@ snapshots: is-alphabetical: 2.0.1 is-decimal: 2.0.1 - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - is-decimal@2.0.1: {} is-extendable@0.1.1: {} @@ -4682,12 +4952,8 @@ snapshots: is-plain-obj@4.1.0: {} - is-unicode-supported@1.3.0: {} - is-unicode-supported@2.1.0: {} - is-what@5.5.0: {} - js-yaml@3.14.2: dependencies: argparse: 1.0.10 @@ -4709,7 +4975,7 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - katex@0.16.25: + katex@0.16.38: dependencies: commander: 8.3.0 @@ -4735,21 +5001,21 @@ snapshots: dependencies: uc.micro: 2.1.0 - lit-element@4.2.1: + lit-element@4.2.2: dependencies: - '@lit-labs/ssr-dom-shim': 1.4.0 - '@lit/reactive-element': 2.1.1 - lit-html: 3.3.1 + '@lit-labs/ssr-dom-shim': 1.5.1 + '@lit/reactive-element': 2.1.2 + lit-html: 3.3.2 - lit-html@3.3.1: + lit-html@3.3.2: dependencies: '@types/trusted-types': 2.0.7 - lit@3.3.1: + lit@3.3.2: dependencies: - '@lit/reactive-element': 2.1.1 - lit-element: 4.2.1 - lit-html: 3.3.1 + '@lit/reactive-element': 2.1.2 + lit-element: 4.2.2 + lit-html: 3.3.2 locate-path@5.0.0: dependencies: @@ -4757,19 +5023,26 @@ snapshots: lodash-es@4.17.23: {} - log-symbols@6.0.0: + log-symbols@7.0.1: dependencies: - chalk: 5.6.2 - is-unicode-supported: 1.3.0 + is-unicode-supported: 2.1.0 + yoctocolors: 2.1.2 magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - markdown-it-anchor@9.2.0(@types/markdown-it@14.1.2)(markdown-it@14.1.0): + markdown-it-anchor@9.2.0(@types/markdown-it@14.1.2)(markdown-it@14.1.1): dependencies: '@types/markdown-it': 14.1.2 - markdown-it: 14.1.0 + markdown-it: 14.1.1 + + markdown-it-cjk-friendly@2.0.2(@types/markdown-it@14.1.2)(markdown-it@14.1.1): + dependencies: + get-east-asian-width: 1.5.0 + markdown-it: 14.1.1 + optionalDependencies: + '@types/markdown-it': 14.1.2 markdown-it-emoji@3.0.0: {} @@ -4782,6 +5055,15 @@ snapshots: punycode.js: 2.3.1 uc.micro: 2.1.0 + markdown-it@14.1.1: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + markdownlint-cli2-formatter-default@0.0.5(markdownlint-cli2@0.17.1): dependencies: markdownlint-cli2: 0.17.1 @@ -4820,7 +5102,7 @@ snapshots: mj-context-menu: 0.6.1 speech-rule-engine: 4.1.2 - mdast-util-to-hast@13.2.0: + mdast-util-to-hast@13.2.1: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -4829,7 +5111,7 @@ snapshots: micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 vfile: 6.0.3 mdurl@2.0.0: {} @@ -4851,7 +5133,7 @@ snapshots: dagre-d3-es: 7.0.14 dayjs: 1.11.19 dompurify: 3.3.3 - katex: 0.16.25 + katex: 0.16.38 khroma: 2.1.0 lodash-es: 4.17.23 marked: 16.4.2 @@ -4864,7 +5146,7 @@ snapshots: micromark-core-commonmark@2.0.2: dependencies: - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 devlop: 1.1.0 micromark-factory-destination: 2.0.1 micromark-factory-label: 2.0.1 @@ -4919,9 +5201,9 @@ snapshots: micromark-extension-math@3.1.0: dependencies: - '@types/katex': 0.16.7 + '@types/katex': 0.16.8 devlop: 1.1.0 - katex: 0.16.25 + katex: 0.16.38 micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 micromark-util-symbol: 2.0.1 @@ -5016,7 +5298,7 @@ snapshots: dependencies: '@types/debug': 4.1.12 debug: 4.4.3 - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.2 micromark-factory-space: 2.0.1 @@ -5041,8 +5323,6 @@ snapshots: mimic-function@5.0.1: {} - mitt@3.0.1: {} - mj-context-menu@0.6.1: {} mlly@1.8.1: @@ -5062,11 +5342,10 @@ snapshots: nanoid@5.1.6: {} - node-releases@2.0.27: {} - - normalize-path@3.0.0: {} + node-addon-api@7.1.1: + optional: true - normalize-range@0.1.2: {} + node-releases@2.0.36: {} nth-check@2.1.1: dependencies: @@ -5078,23 +5357,22 @@ snapshots: oniguruma-parser@0.12.1: {} - oniguruma-to-es@4.3.3: + oniguruma-to-es@4.3.4: dependencies: oniguruma-parser: 0.12.1 - regex: 6.0.1 + regex: 6.1.0 regex-recursion: 6.0.2 - ora@8.2.0: + ora@9.3.0: dependencies: chalk: 5.6.2 cli-cursor: 5.0.0 - cli-spinners: 2.9.2 + cli-spinners: 3.4.0 is-interactive: 2.0.0 is-unicode-supported: 2.1.0 - log-symbols: 6.0.0 - stdin-discarder: 0.2.2 - string-width: 7.2.0 - strip-ansi: 7.1.2 + log-symbols: 7.0.1 + stdin-discarder: 0.3.1 + string-width: 8.2.0 p-limit@2.3.0: dependencies: @@ -5113,7 +5391,7 @@ snapshots: '@types/unist': 2.0.11 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 @@ -5137,11 +5415,9 @@ snapshots: path-type@5.0.0: {} - path-type@6.0.0: {} - pathe@2.0.3: {} - perfect-debounce@1.0.0: {} + perfect-debounce@2.1.0: {} photoswipe@5.4.4: {} @@ -5166,15 +5442,15 @@ snapshots: path-data-parser: 0.1.0 points-on-curve: 0.2.0 - postcss-load-config@6.0.1(postcss@8.5.6): + postcss-load-config@6.0.1(postcss@8.5.8): dependencies: lilconfig: 3.1.3 optionalDependencies: - postcss: 8.5.6 + postcss: 8.5.8 postcss-value-parser@4.2.0: {} - postcss@8.5.6: + postcss@8.5.8: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -5194,19 +5470,17 @@ snapshots: queue-microtask@1.2.3: {} - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - readdirp@4.1.2: {} + readdirp@5.0.0: {} + regex-recursion@6.0.2: dependencies: regex-utilities: 2.3.0 regex-utilities@2.3.0: {} - regex@6.0.1: + regex@6.1.0: dependencies: regex-utilities: 2.3.0 @@ -5238,36 +5512,37 @@ snapshots: reusify@1.1.0: {} - rfdc@1.4.1: {} - robust-predicates@3.0.2: {} - rollup@4.53.2: + rollup@4.59.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.2 - '@rollup/rollup-android-arm64': 4.53.2 - '@rollup/rollup-darwin-arm64': 4.53.2 - '@rollup/rollup-darwin-x64': 4.53.2 - '@rollup/rollup-freebsd-arm64': 4.53.2 - '@rollup/rollup-freebsd-x64': 4.53.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.2 - '@rollup/rollup-linux-arm-musleabihf': 4.53.2 - '@rollup/rollup-linux-arm64-gnu': 4.53.2 - '@rollup/rollup-linux-arm64-musl': 4.53.2 - '@rollup/rollup-linux-loong64-gnu': 4.53.2 - '@rollup/rollup-linux-ppc64-gnu': 4.53.2 - '@rollup/rollup-linux-riscv64-gnu': 4.53.2 - '@rollup/rollup-linux-riscv64-musl': 4.53.2 - '@rollup/rollup-linux-s390x-gnu': 4.53.2 - '@rollup/rollup-linux-x64-gnu': 4.53.2 - '@rollup/rollup-linux-x64-musl': 4.53.2 - '@rollup/rollup-openharmony-arm64': 4.53.2 - '@rollup/rollup-win32-arm64-msvc': 4.53.2 - '@rollup/rollup-win32-ia32-msvc': 4.53.2 - '@rollup/rollup-win32-x64-gnu': 4.53.2 - '@rollup/rollup-win32-x64-msvc': 4.53.2 + '@rollup/rollup-android-arm-eabi': 4.59.0 + '@rollup/rollup-android-arm64': 4.59.0 + '@rollup/rollup-darwin-arm64': 4.59.0 + '@rollup/rollup-darwin-x64': 4.59.0 + '@rollup/rollup-freebsd-arm64': 4.59.0 + '@rollup/rollup-freebsd-x64': 4.59.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.59.0 + '@rollup/rollup-linux-arm-musleabihf': 4.59.0 + '@rollup/rollup-linux-arm64-gnu': 4.59.0 + '@rollup/rollup-linux-arm64-musl': 4.59.0 + '@rollup/rollup-linux-loong64-gnu': 4.59.0 + '@rollup/rollup-linux-loong64-musl': 4.59.0 + '@rollup/rollup-linux-ppc64-gnu': 4.59.0 + '@rollup/rollup-linux-ppc64-musl': 4.59.0 + '@rollup/rollup-linux-riscv64-gnu': 4.59.0 + '@rollup/rollup-linux-riscv64-musl': 4.59.0 + '@rollup/rollup-linux-s390x-gnu': 4.59.0 + '@rollup/rollup-linux-x64-gnu': 4.59.0 + '@rollup/rollup-linux-x64-musl': 4.59.0 + '@rollup/rollup-openbsd-x64': 4.59.0 + '@rollup/rollup-openharmony-arm64': 4.59.0 + '@rollup/rollup-win32-arm64-msvc': 4.59.0 + '@rollup/rollup-win32-ia32-msvc': 4.59.0 + '@rollup/rollup-win32-x64-gnu': 4.59.0 + '@rollup/rollup-win32-x64-msvc': 4.59.0 fsevents: 2.3.3 roughjs@4.6.6: @@ -5289,83 +5564,103 @@ snapshots: safer-buffer@2.1.2: {} - sass-embedded-android-arm64@1.89.2: + sass-embedded-all-unknown@1.98.0: + dependencies: + sass: 1.98.0 + optional: true + + sass-embedded-android-arm64@1.98.0: + optional: true + + sass-embedded-android-arm@1.98.0: optional: true - sass-embedded-android-arm@1.89.2: + sass-embedded-android-riscv64@1.98.0: optional: true - sass-embedded-android-riscv64@1.89.2: + sass-embedded-android-x64@1.98.0: optional: true - sass-embedded-android-x64@1.89.2: + sass-embedded-darwin-arm64@1.98.0: optional: true - sass-embedded-darwin-arm64@1.89.2: + sass-embedded-darwin-x64@1.98.0: optional: true - sass-embedded-darwin-x64@1.89.2: + sass-embedded-linux-arm64@1.98.0: optional: true - sass-embedded-linux-arm64@1.89.2: + sass-embedded-linux-arm@1.98.0: optional: true - sass-embedded-linux-arm@1.89.2: + sass-embedded-linux-musl-arm64@1.98.0: optional: true - sass-embedded-linux-musl-arm64@1.89.2: + sass-embedded-linux-musl-arm@1.98.0: optional: true - sass-embedded-linux-musl-arm@1.89.2: + sass-embedded-linux-musl-riscv64@1.98.0: optional: true - sass-embedded-linux-musl-riscv64@1.89.2: + sass-embedded-linux-musl-x64@1.98.0: optional: true - sass-embedded-linux-musl-x64@1.89.2: + sass-embedded-linux-riscv64@1.98.0: optional: true - sass-embedded-linux-riscv64@1.89.2: + sass-embedded-linux-x64@1.98.0: optional: true - sass-embedded-linux-x64@1.89.2: + sass-embedded-unknown-all@1.98.0: + dependencies: + sass: 1.98.0 optional: true - sass-embedded-win32-arm64@1.89.2: + sass-embedded-win32-arm64@1.98.0: optional: true - sass-embedded-win32-x64@1.89.2: + sass-embedded-win32-x64@1.98.0: optional: true - sass-embedded@1.89.2: + sass-embedded@1.98.0: dependencies: - '@bufbuild/protobuf': 2.10.1 - buffer-builder: 0.2.0 + '@bufbuild/protobuf': 2.11.0 colorjs.io: 0.5.2 - immutable: 5.1.4 + immutable: 5.1.5 rxjs: 7.8.2 supports-color: 8.1.1 sync-child-process: 1.0.2 varint: 6.0.0 optionalDependencies: - sass-embedded-android-arm: 1.89.2 - sass-embedded-android-arm64: 1.89.2 - sass-embedded-android-riscv64: 1.89.2 - sass-embedded-android-x64: 1.89.2 - sass-embedded-darwin-arm64: 1.89.2 - sass-embedded-darwin-x64: 1.89.2 - sass-embedded-linux-arm: 1.89.2 - sass-embedded-linux-arm64: 1.89.2 - sass-embedded-linux-musl-arm: 1.89.2 - sass-embedded-linux-musl-arm64: 1.89.2 - sass-embedded-linux-musl-riscv64: 1.89.2 - sass-embedded-linux-musl-x64: 1.89.2 - sass-embedded-linux-riscv64: 1.89.2 - sass-embedded-linux-x64: 1.89.2 - sass-embedded-win32-arm64: 1.89.2 - sass-embedded-win32-x64: 1.89.2 - - sax@1.4.3: {} + sass-embedded-all-unknown: 1.98.0 + sass-embedded-android-arm: 1.98.0 + sass-embedded-android-arm64: 1.98.0 + sass-embedded-android-riscv64: 1.98.0 + sass-embedded-android-x64: 1.98.0 + sass-embedded-darwin-arm64: 1.98.0 + sass-embedded-darwin-x64: 1.98.0 + sass-embedded-linux-arm: 1.98.0 + sass-embedded-linux-arm64: 1.98.0 + sass-embedded-linux-musl-arm: 1.98.0 + sass-embedded-linux-musl-arm64: 1.98.0 + sass-embedded-linux-musl-riscv64: 1.98.0 + sass-embedded-linux-musl-x64: 1.98.0 + sass-embedded-linux-riscv64: 1.98.0 + sass-embedded-linux-x64: 1.98.0 + sass-embedded-unknown-all: 1.98.0 + sass-embedded-win32-arm64: 1.98.0 + sass-embedded-win32-x64: 1.98.0 + + sass@1.98.0: + dependencies: + chokidar: 4.0.3 + immutable: 5.1.5 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.6 + optional: true + + sax@1.5.0: {} section-matter@1.0.0: dependencies: @@ -5374,25 +5669,25 @@ snapshots: set-blocking@2.0.0: {} - shiki@3.15.0: + shiki@4.0.2: dependencies: - '@shikijs/core': 3.15.0 - '@shikijs/engine-javascript': 3.15.0 - '@shikijs/engine-oniguruma': 3.15.0 - '@shikijs/langs': 3.15.0 - '@shikijs/themes': 3.15.0 - '@shikijs/types': 3.15.0 + '@shikijs/core': 4.0.2 + '@shikijs/engine-javascript': 4.0.2 + '@shikijs/engine-oniguruma': 4.0.2 + '@shikijs/langs': 4.0.2 + '@shikijs/themes': 4.0.2 + '@shikijs/types': 4.0.2 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 signal-exit@4.1.0: {} - sitemap@8.0.2: + sitemap@9.0.1: dependencies: - '@types/node': 17.0.45 + '@types/node': 24.12.0 '@types/sax': 1.2.7 arg: 5.0.2 - sax: 1.4.3 + sax: 1.5.0 slash@5.1.0: {} @@ -5400,8 +5695,6 @@ snapshots: space-separated-tokens@2.0.2: {} - speakingurl@14.0.1: {} - speech-rule-engine@4.1.2: dependencies: '@xmldom/xmldom': 0.9.8 @@ -5410,7 +5703,7 @@ snapshots: sprintf-js@1.0.3: {} - stdin-discarder@0.2.2: {} + stdin-discarder@0.3.1: {} string-width@4.2.3: dependencies: @@ -5418,11 +5711,10 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@7.2.0: + string-width@8.2.0: dependencies: - emoji-regex: 10.6.0 - get-east-asian-width: 1.4.0 - strip-ansi: 7.1.2 + get-east-asian-width: 1.5.0 + strip-ansi: 7.2.0 stringify-entities@4.0.4: dependencies: @@ -5433,7 +5725,7 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.2: + strip-ansi@7.2.0: dependencies: ansi-regex: 6.2.2 @@ -5441,21 +5733,17 @@ snapshots: stylis@4.3.6: {} - superjson@2.2.5: - dependencies: - copy-anything: 4.0.5 - supports-color@8.1.1: dependencies: has-flag: 4.0.0 sync-child-process@1.0.2: dependencies: - sync-message-port: 1.1.3 + sync-message-port: 1.2.0 - sync-message-port@1.1.3: {} + sync-message-port@1.2.0: {} - synckit@0.11.11: + synckit@0.11.12: dependencies: '@pkgr/core': 0.2.9 @@ -5484,11 +5772,11 @@ snapshots: undici-types@7.16.0: {} - undici@7.16.0: {} + undici-types@7.18.2: {} - unicorn-magic@0.1.0: {} + undici@7.22.0: {} - unicorn-magic@0.3.0: {} + unicorn-magic@0.1.0: {} unified@11.0.5: dependencies: @@ -5517,7 +5805,7 @@ snapshots: '@types/unist': 3.0.3 unist-util-is: 6.0.1 - unist-util-visit@5.0.0: + unist-util-visit@5.1.0: dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.1 @@ -5527,9 +5815,9 @@ snapshots: upath@2.0.1: {} - update-browserslist-db@1.1.4(browserslist@4.28.0): + update-browserslist-db@1.2.3(browserslist@4.28.1): dependencies: - browserslist: 4.28.0 + browserslist: 4.28.1 escalade: 3.2.0 picocolors: 1.1.1 @@ -5552,18 +5840,19 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@7.0.8(@types/node@24.10.1)(sass-embedded@1.89.2): + vite@7.1.12(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.53.2 + postcss: 8.5.8 + rollup: 4.59.0 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 25.4.0 fsevents: 2.3.3 - sass-embedded: 1.89.2 + sass: 1.98.0 + sass-embedded: 1.98.0 vscode-jsonrpc@8.2.0: {} @@ -5582,112 +5871,125 @@ snapshots: vscode-uri@3.1.0: {} - vue-router@4.6.3(vue@3.5.24): + vue-router@4.6.4(vue@3.5.30): dependencies: '@vue/devtools-api': 6.6.4 - vue: 3.5.24 + vue: 3.5.30 - vue@3.5.24: + vue@3.5.30: dependencies: - '@vue/compiler-dom': 3.5.24 - '@vue/compiler-sfc': 3.5.24 - '@vue/runtime-dom': 3.5.24 - '@vue/server-renderer': 3.5.24(vue@3.5.24) - '@vue/shared': 3.5.24 + '@vue/compiler-dom': 3.5.30 + '@vue/compiler-sfc': 3.5.30 + '@vue/runtime-dom': 3.5.30 + '@vue/server-renderer': 3.5.30(vue@3.5.30) + '@vue/shared': 3.5.30 - vuepress-plugin-components@2.0.0-rc.94(sass-embedded@1.89.2)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)): + vuepress-plugin-components@2.0.0-rc.103(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(sass-embedded@1.98.0)(sass@1.98.0)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)): dependencies: '@stackblitz/sdk': 1.11.0 - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-sass-palette': 2.0.0-rc.112(sass-embedded@1.89.2)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vueuse/core': 13.9.0(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-sass-palette': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(sass-embedded@1.98.0)(sass@1.98.0)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vueuse/core': 14.2.1(vue@3.5.30) balloon-css: 1.2.0 - create-codepen: 2.0.0 + create-codepen: 2.0.1 qrcode: 1.5.4 - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) - vuepress-shared: 2.0.0-rc.94(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) + vuepress-shared: 2.0.0-rc.103(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) optionalDependencies: - sass-embedded: 1.89.2 + sass: 1.98.0 + sass-embedded: 1.98.0 transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - vuepress-plugin-md-enhance@2.0.0-rc.94(markdown-it@14.1.0)(sass-embedded@1.89.2)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)): + vuepress-plugin-md-enhance@2.0.0-rc.103(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(sass-embedded@1.98.0)(sass@1.98.0)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)): dependencies: - '@mdit/plugin-container': 0.22.2(markdown-it@14.1.0) - '@mdit/plugin-demo': 0.22.3(markdown-it@14.1.0) + '@mdit/plugin-container': 0.23.1(markdown-it@14.1.1) + '@mdit/plugin-demo': 0.23.1(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-sass-palette': 2.0.0-rc.112(sass-embedded@1.89.2)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vueuse/core': 13.9.0(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-sass-palette': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(sass-embedded@1.98.0)(sass@1.98.0)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vueuse/core': 14.2.1(vue@3.5.30) balloon-css: 1.2.0 js-yaml: 4.1.1 - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) - vuepress-shared: 2.0.0-rc.94(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) + vuepress-shared: 2.0.0-rc.103(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) optionalDependencies: - sass-embedded: 1.89.2 + sass: 1.98.0 + sass-embedded: 1.98.0 transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - markdown-it - typescript - vuepress-shared@2.0.0-rc.94(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)): + vuepress-shared@2.0.0-rc.103(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)): dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vueuse/core': 13.9.0(vue@3.5.24) - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vueuse/core': 14.2.1(vue@3.5.30) + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) transitivePeerDependencies: + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - typescript - vuepress-theme-hope@2.0.0-rc.94(@vuepress/plugin-feed@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)))(@vuepress/plugin-search@2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)))(katex@0.16.25)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@11.13.0)(sass-embedded@1.89.2)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)): - dependencies: - '@vuepress/helper': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-active-header-links': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-back-to-top': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-blog': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-catalog': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-comment': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-copy-code': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-copyright': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-git': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-icon': 2.0.0-rc.112(markdown-it@14.1.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-links-check': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-markdown-chart': 2.0.0-rc.112(markdown-it@14.1.0)(mermaid@11.13.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-markdown-ext': 2.0.0-rc.112(markdown-it@14.1.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-markdown-hint': 2.0.0-rc.112(markdown-it@14.1.0)(vue@3.5.24)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-markdown-image': 2.0.0-rc.112(markdown-it@14.1.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-markdown-include': 2.0.0-rc.112(markdown-it@14.1.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-markdown-math': 2.0.0-rc.112(katex@0.16.25)(markdown-it@14.1.0)(mathjax-full@3.2.2)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-markdown-preview': 2.0.0-rc.112(markdown-it@14.1.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-markdown-stylize': 2.0.0-rc.112(markdown-it@14.1.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-markdown-tab': 2.0.0-rc.112(markdown-it@14.1.0)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-notice': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-nprogress': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-photo-swipe': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-reading-time': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-redirect': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-rtl': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-sass-palette': 2.0.0-rc.112(sass-embedded@1.89.2)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-seo': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-shiki': 2.0.0-rc.112(@vueuse/core@13.9.0(vue@3.5.24))(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-sitemap': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-theme-data': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vueuse/core': 13.9.0(vue@3.5.24) + vuepress-theme-hope@2.0.0-rc.103(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(@vuepress/plugin-feed@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)))(@vuepress/plugin-search@2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)))(katex@0.16.38)(markdown-it@14.1.1)(mermaid@11.13.0)(sass-embedded@1.98.0)(sass@1.98.0)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)): + dependencies: + '@vuepress/helper': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-active-header-links': 2.0.0-rc.124(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-back-to-top': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-blog': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-catalog': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-comment': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-copy-code': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-copyright': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-git': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-icon': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-links-check': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-markdown-chart': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(mermaid@11.13.0)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-markdown-ext': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-markdown-hint': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(vue@3.5.30)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-markdown-image': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-markdown-include': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-markdown-math': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(katex@0.16.38)(markdown-it@14.1.1)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-markdown-preview': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-markdown-stylize': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-markdown-tab': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-notice': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-nprogress': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-photo-swipe': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-reading-time': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-redirect': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-rtl': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-sass-palette': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(sass-embedded@1.98.0)(sass@1.98.0)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-seo': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-shiki': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(@vueuse/core@14.2.1(vue@3.5.30))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-sitemap': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-theme-data': 2.0.0-rc.124(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vueuse/core': 14.2.1(vue@3.5.30) balloon-css: 1.2.0 - bcrypt-ts: 7.1.0 - chokidar: 4.0.3 - vue: 3.5.24 - vuepress: 2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24) - vuepress-plugin-components: 2.0.0-rc.94(sass-embedded@1.89.2)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - vuepress-plugin-md-enhance: 2.0.0-rc.94(markdown-it@14.1.0)(sass-embedded@1.89.2)(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - vuepress-shared: 2.0.0-rc.94(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) + bcrypt-ts: 8.0.1 + chokidar: 5.0.0 + vue: 3.5.30 + vuepress: 2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30) + vuepress-plugin-components: 2.0.0-rc.103(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(sass-embedded@1.98.0)(sass@1.98.0)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + vuepress-plugin-md-enhance: 2.0.0-rc.103(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(markdown-it@14.1.1)(sass-embedded@1.98.0)(sass@1.98.0)(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + vuepress-shared: 2.0.0-rc.103(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) optionalDependencies: - '@vuepress/plugin-feed': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - '@vuepress/plugin-search': 2.0.0-rc.112(vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24)) - sass-embedded: 1.89.2 + '@vuepress/plugin-feed': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + '@vuepress/plugin-search': 2.0.0-rc.124(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30)) + sass: 1.98.0 + sass-embedded: 1.98.0 transitivePeerDependencies: + - '@mathjax/mathjax-newcm-font' + - '@mathjax/src' - '@vue/repl' + - '@vuepress/bundler-vite' + - '@vuepress/bundler-webpack' - '@waline/client' - artalk - artplayer @@ -5702,7 +6004,6 @@ snapshots: - markmap-lib - markmap-toolbar - markmap-view - - mathjax-full - mermaid - mpegts.js - sandpack-vue3 @@ -5710,17 +6011,17 @@ snapshots: - typescript - vidstack - vuepress@2.0.0-rc.24(@vuepress/bundler-vite@2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2))(vue@3.5.24): + vuepress@2.0.0-rc.26(@vuepress/bundler-vite@2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0))(vue@3.5.30): dependencies: - '@vuepress/cli': 2.0.0-rc.24 - '@vuepress/client': 2.0.0-rc.24 - '@vuepress/core': 2.0.0-rc.24 - '@vuepress/markdown': 2.0.0-rc.24 - '@vuepress/shared': 2.0.0-rc.24 - '@vuepress/utils': 2.0.0-rc.24 - vue: 3.5.24 + '@vuepress/cli': 2.0.0-rc.26 + '@vuepress/client': 2.0.0-rc.26 + '@vuepress/core': 2.0.0-rc.26 + '@vuepress/markdown': 2.0.0-rc.26 + '@vuepress/shared': 2.0.0-rc.26 + '@vuepress/utils': 2.0.0-rc.26 + vue: 3.5.30 optionalDependencies: - '@vuepress/bundler-vite': 2.0.0-rc.24(@types/node@24.10.1)(sass-embedded@1.89.2) + '@vuepress/bundler-vite': 2.0.0-rc.26(@types/node@25.4.0)(sass-embedded@1.98.0)(sass@1.98.0) transitivePeerDependencies: - supports-color - typescript @@ -5745,7 +6046,7 @@ snapshots: xml-js@1.6.11: dependencies: - sax: 1.4.3 + sax: 1.5.0 y18n@4.0.3: {} @@ -5768,4 +6069,6 @@ snapshots: y18n: 4.0.3 yargs-parser: 18.1.3 + yoctocolors@2.1.2: {} + zwitch@2.0.4: {} From d667df7a665f8e3c4b9c69d4ddb129707794aac1 Mon Sep 17 00:00:00 2001 From: Zhehao Zhang <15364519511@163.com> Date: Mon, 16 Mar 2026 20:24:11 +0800 Subject: [PATCH 4/4] Update mysql.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更新错别字 --- docs/database/mysql.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/database/mysql.md b/docs/database/mysql.md index 8090274..e94c153 100755 --- a/docs/database/mysql.md +++ b/docs/database/mysql.md @@ -418,7 +418,7 @@ InnoDB 使用缓冲池(Buffer Pool)缓存数据页和索引页,MyISAM 使 ### 为什么 InnoDB 没有使用哈希作为索引的数据结构? -> 我发现很多求职者甚至是面试官对这个问题都有误解,他们相当然的认为 MySQL 底层并没有使用哈希或者 B 树作为索引的数据结构。 +> 我发现很多求职者甚至是面试官对这个问题都有误解,他们想当然的认为 MySQL 底层并没有使用哈希或者 B 树作为索引的数据结构。 > > 实际上,不论是提问还是回答这个问题都要区分好存储引擎。像 MEMORY 引擎就同时支持哈希和 B 树。