>
+}
+```
+
+在[这里](https://github.com/vuejs/vitepress/blob/main/types/docsearch.d.ts)查看完整配置。
+
+## carbonAds {#carbon-ads}
+
+- 类型:`CarbonAdsOptions`
+
+一个配置即可展示 [Carbon Ads](https://www.carbonads.net/)。
+
+```ts
+export default {
+ themeConfig: {
+ carbonAds: {
+ code: 'your-carbon-code',
+ placement: 'your-carbon-placement'
+ }
+ }
+}
+```
+
+```ts
+export interface CarbonAdsOptions {
+ code: string
+ placement: string
+}
+```
+
+在 [Default Theme: Carbon Ads](./default-theme-carbon-ads) 中了解更多信息。
+
+## docFooter
+
+- 类型:`DocFooter`
+
+可用于自定义出现在上一页和下一页链接上方的文本。如果不是用英语编写文档,这很有帮助。也可用于全局禁用上一页/下一页链接。如果想有选择地启用/禁用上一个/下一个链接,可以使用 [frontmatter](./default-theme-prev-next-links)。
+
+```ts
+export default {
+ themeConfig: {
+ docFooter: {
+ prev: 'Pagina prior',
+ next: 'Proxima pagina'
+ }
+ }
+}
+```
+
+```ts
+export interface DocFooter {
+ prev?: string | false
+ next?: string | false
+}
+```
+
+## darkModeSwitchLabel
+
+- 类型:`string`
+- 默认值:`Appearance`
+
+用于自定义暗模式开关标签,该标签仅在移动端视图中显示。
+
+## lightModeSwitchTitle
+
+- 类型:`string`
+- 默认值:`Switch to light theme`
+
+用于自定义悬停时显示的亮模式开关标题。
+
+## darkModeSwitchTitle
+
+- 类型:`string`
+- 默认值:`Switch to dark theme`
+
+用于自定义悬停时显示的暗模式开关标题。
+
+## sidebarMenuLabel
+
+- 类型:`string`
+- 默认值:`Menu`
+
+用于自定义侧边栏菜单标签,该标签仅在移动端视图中显示。
+
+## returnToTopLabel
+
+- 类型:`string`
+- 默认值:`Return to top`
+
+用于自定义返回顶部按钮的标签,该标签仅在移动端视图中显示。
+
+## langMenuLabel
+
+- 类型:`string`
+- 默认值:`Change language`
+
+用于自定义导航栏中语言切换按钮的 aria-label,仅当使用 [i18n](../guide/i18n) 时才使用此选项。
+
+## externalLinkIcon
+
+- 类型:`boolean`
+- 默认值:`false`
+
+是否在 markdown 中的外部链接旁显示外部链接图标。
diff --git a/docs/zh/reference/default-theme-edit-link.md b/docs/zh/reference/default-theme-edit-link.md
new file mode 100644
index 00000000..92f3cd25
--- /dev/null
+++ b/docs/zh/reference/default-theme-edit-link.md
@@ -0,0 +1,60 @@
+# 编辑链接 {#edit-link}
+
+## 站点级配置 {#site-level-config}
+
+编辑链接让你可以显示一个链接,以在 GitHub 或 GitLab 等 Git 管理服务上编辑页面。要启用它,请将 `themeConfig.editLink` 选项添加到配置中。
+
+```js
+export default {
+ themeConfig: {
+ editLink: {
+ pattern: 'https://github.com/vuejs/vitepress/edit/main/docs/:path'
+ }
+ }
+}
+```
+
+`pattern` 选项定义链接的 URL 结构,并且 `:path` 将被替换为页面路径。
+
+你还可以放置一个接受 [`PageData`](./runtime-api#usedata) 作为参数并返回 URL 字符串的纯函数。
+
+```js
+export default {
+ themeConfig: {
+ editLink: {
+ pattern: ({ filePath }) => {
+ if (filePath.startsWith('packages/')) {
+ return `https://github.com/acme/monorepo/edit/main/${filePath}`
+ } else {
+ return `https://github.com/acme/monorepo/edit/main/docs/${filePath}`
+ }
+ }
+ }
+ }
+}
+```
+
+它不应该有副作用,也不应该访问其范围之外的任何东西,因为它将在浏览器中被序列化和执行。
+
+默认情况下,这将在文档页面底部添加链接文本“Edit this page”。可以通过定义 `text` 选项来自定义此文本。
+
+```js
+export default {
+ themeConfig: {
+ editLink: {
+ pattern: 'https://github.com/vuejs/vitepress/edit/main/docs/:path',
+ text: 'Edit this page on GitHub'
+ }
+ }
+}
+```
+
+## frontmatter 配置 {#frontmatter-config}
+
+可以使用 frontmatter 上的 `editLink` 选项单独禁用某个页面的编辑链接:
+
+```yaml
+---
+editLink: false
+---
+```
diff --git a/docs/zh/reference/default-theme-footer.md b/docs/zh/reference/default-theme-footer.md
new file mode 100644
index 00000000..7499089f
--- /dev/null
+++ b/docs/zh/reference/default-theme-footer.md
@@ -0,0 +1,53 @@
+# 页脚 {#footer}
+
+配置好 `themeConfig.footer`,VitePress 将在全局页面底部显示页脚。
+
+```ts
+export default {
+ themeConfig: {
+ footer: {
+ message: 'Released under the MIT License.',
+ copyright: 'Copyright © 2019-present Evan You'
+ }
+ }
+}
+```
+
+```ts
+export interface Footer {
+ // 版权前显示的信息
+ message?: string
+
+ // 实际的版权文本
+ copyright?: string
+}
+```
+
+上面的配置也支持 HTML 字符串。所以,例如,如果想配置页脚文本有一些链接,可以调整配置如下:
+
+```ts
+export default {
+ themeConfig: {
+ footer: {
+ message: 'Released under the MIT License.',
+ copyright: 'Copyright © 2019-present Evan You'
+ }
+ }
+}
+```
+
+::: warning
+只有内联元素可以在 `message` 和 `copyright` 中使用,因为它们渲染在 `` 元素中。如果想添加块元素,请考虑使用 [`layout-bottom`](../guide/extending-default-theme#layout-slots) 插槽。
+:::
+
+请注意,当[侧边栏](./default-theme-sidebar)可见时,不会显示页脚。
+
+## frontmatter 配置 {#frontmatter-config}
+
+可以使用 frontmatter 上的 `footer` 选项在单独页面上禁用此功能:
+
+```yaml
+---
+footer: false
+---
+```
diff --git a/docs/zh/reference/default-theme-home-page.md b/docs/zh/reference/default-theme-home-page.md
new file mode 100644
index 00000000..ac5848c4
--- /dev/null
+++ b/docs/zh/reference/default-theme-home-page.md
@@ -0,0 +1,155 @@
+# 主页 {#home-page}
+
+VitePress 默认主题提供了一个首页布局,也可以在[此站点首页](../)看到。可以通过 [frontmatter](./frontmatter-config) 指定 `layout: home` 在任何页面上使用它
+
+```yaml
+---
+layout: home
+---
+```
+
+但是,仅此选项不会有太大作用。可以通过设置其他选项(例如 `hero` 和 `features`)向主页添加几个不同的预模板化。
+
+## Hero 部分 {#hero-section}
+
+Hero section 位于主页顶部。以下是配置 Hero 的方法。
+
+```yaml
+---
+layout: home
+
+hero:
+ name: VitePress
+ text: Vite & Vue powered static site generator.
+ tagline: Lorem ipsum...
+ image:
+ src: /logo.png
+ alt: VitePress
+ actions:
+ - theme: brand
+ text: Get Started
+ link: /guide/what-is-vitepress
+ - theme: alt
+ text: View on GitHub
+ link: https://github.com/vuejs/vitepress
+---
+```
+
+```ts
+interface Hero {
+ // `text` 上方的字符,带有品牌颜色,预计简短,例如产品名称
+ name?: string
+
+ // hero 部分的主要文字,被定义为 `h1` 标签
+ text: string
+
+ // `text` 下方的标语
+ tagline?: string
+
+ // text 和 tagline 区域旁的图片
+ image?: ThemeableImage
+
+ // 主页 hero 部分的操作按钮
+ actions?: HeroAction[]
+}
+
+type ThemeableImage =
+ | string
+ | { src: string; alt?: string }
+ | { light: string; dark: string; alt?: string }
+
+interface HeroAction {
+ // 按钮的颜色主题,默认为 `brand`
+ theme?: 'brand' | 'alt'
+
+ // 按钮的标签
+ text: string
+
+ // 按钮的目标链接
+ link: string
+}
+```
+
+### 自定义 name 的颜色 {#customizing-the-name-color}
+
+VitePress 通过 (`--vp-c-brand-1`) 设置 `name` 的颜色 .但是,可以通过覆盖 `--vp-home-hero-name-color` 变量来自定义此颜色。
+
+```css
+:root {
+ --vp-home-hero-name-color: blue;
+}
+```
+
+也可以通过组合 `--vp-home-hero-name-background` 来进一步自定义 `name` 为渐变色。
+
+```css
+:root {
+ --vp-home-hero-name-color: transparent;
+ --vp-home-hero-name-background: -webkit-linear-gradient(120deg, #bd34fe, #41d1ff);
+}
+```
+
+## Features 部分 {#features-section}
+
+在 Features section,可以在 Hero section 之后列出任意数量的 Features。可以在 frontmatter 中配置 `features`。
+
+可以为每个 feature 提供一个图标,可以是表情符号或任何类型的图像。当配置的图标是图片(svg, png, jpeg...)时,必须提供合适的宽度和高度的图标;还可以在需要时配置其描述、固有大小以及深色和浅色主题下的不同表现。
+
+```yaml
+---
+layout: home
+
+features:
+ - icon: 🛠️
+ title: Simple and minimal, always
+ details: Lorem ipsum...
+ - icon:
+ src: /cool-feature-icon.svg
+ title: Another cool feature
+ details: Lorem ipsum...
+ - icon:
+ dark: /dark-feature-icon.svg
+ light: /light-feature-icon.svg
+ title: Another cool feature
+ details: Lorem ipsum...
+---
+```
+
+```ts
+interface Feature {
+ // 在每个 feature 框中显示图标
+ icon?: FeatureIcon
+
+ // feature 的标题
+ title: string
+
+ // feature 的详情
+ details: string
+
+ // 点击 feature 组件时的链接,可以是内部链接,也可以是外部链接。
+ //
+ // 例如 `guide/reference/default-theme-home-page` 或 `https://example.com`
+ link?: string
+
+ // feature 组件内显示的链接文本,最好与 `link` 选项一起使用
+ //
+ // 例如 `Learn more`, `Visit page` 等
+ linkText?: string
+
+ // `link` 选项的链接 rel 属性
+ //
+ // 例如 `external`
+ rel?: string
+}
+
+type FeatureIcon =
+ | string
+ | { src: string; alt?: string; width?: string; height: string }
+ | {
+ light: string
+ dark: string
+ alt?: string
+ width?: string
+ height: string
+ }
+```
\ No newline at end of file
diff --git a/docs/zh/reference/default-theme-last-updated.md b/docs/zh/reference/default-theme-last-updated.md
new file mode 100644
index 00000000..aa519731
--- /dev/null
+++ b/docs/zh/reference/default-theme-last-updated.md
@@ -0,0 +1,27 @@
+# 最后更新于 {#last-updated}
+
+最近一条内容的更新时间会显示在页面右下角。要启用它,请将 `lastUpdated` 选项添加到配置中。
+
+::: tip
+你必须提交 markdown 文件才能看到最近更新时间。
+:::
+
+## 全局配置 {#site-level-config}
+
+```js
+export default {
+ lastUpdated: true
+}
+```
+
+## frontmatter 配置 {#frontmatter-config}
+
+可以使用 frontmatter 上的 `lastUpdated` 选项单独禁用某个页面的最后更新展示:
+
+```yaml
+---
+lastUpdated: false
+---
+```
+
+另请参阅[默认主题:最近更新时间](./default-theme-config#lastupdated) 了解更多详细信息。主题级别的任何 [truthy](https://developer.mozilla.org/zh-CN/docs/Glossary/Truthy) 值也将启用该功能,除非在站点或页面级别明确禁用。
diff --git a/docs/zh/reference/default-theme-layout.md b/docs/zh/reference/default-theme-layout.md
new file mode 100644
index 00000000..1353ab46
--- /dev/null
+++ b/docs/zh/reference/default-theme-layout.md
@@ -0,0 +1,62 @@
+# 布局 {#layout}
+
+可以通过设置页面 [frontmatter](./frontmatter-config) 选项来选择页面布局。有 3 种布局选项 `doc`、`page` 和 `home`。如果未指定任何内容,则该页面将被视为 `doc` 页面。
+
+```yaml
+---
+layout: doc
+---
+```
+
+## doc 布局 {#doc-layout}
+
+`doc` 是默认布局,它将整个 Markdown 内容设置为“documentation”外观。它的工作原理是将整个内容包装在 css `vp-doc` 类中,并将样式应用于它下面的元素。
+
+几乎所有通用元素,例如 `p`, 或 `h2` 都有特殊的样式。因此,请记住,如果在 Markdown 内容中添加任何自定义 HTML,这些内容也会受到这些样式的影响。
+
+它还提供下面列出的文档特定功能。这些功能仅在此布局中启用。
+
+- [编辑链接](./default-theme-edit-link)
+- [上下页链接](./default-theme-prev-next-links)
+- [大纲](./default-theme-config#outline)
+- [Carbon Ads](./default-theme-carbon-ads)
+
+## page 布局 {#page-layout}
+
+`page` 被视为“空白页”。Markdown 仍然会被解析,所有的 [Markdown 拓展](../guide/markdown) 都和 `doc` 布局一样运行,但它没有任何默认样式。
+
+`page` 布局将使可以自行设计所有内容,而不会受 VitePress 主题影响。当想要创建自己的自定义页面时,这很有用。
+
+请注意,即使在此布局中,如果页面具有匹配的侧边栏配置,侧边栏仍会显示。
+
+## home 布局 {#home-layout}
+
+`home` 将生成模板化的“主页”。在此布局中,可以设置额外的选项,例如 `hero` 和 `features` 以进一步自定义内容。请访问[默认主题: 主页](./default-theme-home-page)了解更多详情。
+
+## 无布局 {#no-layout}
+
+如果不想要任何布局,可以通过 frontmatter 传递 `layout: false`。如果想要一个完全可自定义的登录页面(默认情况下没有任何侧边栏、导航栏或页脚),此选项很有用。
+
+## 自定义布局 {#custom-layout}
+
+也可以使用自定义布局:
+
+```md
+---
+layout: foo
+---
+```
+
+这将在上下文中查找注册名为 `foo` 的组件。例如,可以在 `.vitepress/theme/index.ts`中全局注册组件:
+
+```ts
+import DefaultTheme from 'vitepress/theme'
+import Foo from './Foo.vue'
+
+export default {
+ extends: DefaultTheme,
+ enhanceApp({ app }) {
+ app.component('foo', Foo)
+ }
+}
+```
diff --git a/docs/zh/reference/default-theme-nav.md b/docs/zh/reference/default-theme-nav.md
new file mode 100644
index 00000000..ca844c65
--- /dev/null
+++ b/docs/zh/reference/default-theme-nav.md
@@ -0,0 +1,161 @@
+# 导航栏 {#nav}
+
+Nav 是显示在页面顶部的导航栏。它包含站点标题、全局菜单链接等。
+
+## 站点标题和图标 {#site-title-and-logo}
+
+默认情况下,nav 显示 [`config.title`](./site-config#title) 作为站点的标题。如果想更改导航栏上显示的内容,可以在 `themeConfig.siteTitle` 选项中定义自定义文本。
+
+```js
+export default {
+ themeConfig: {
+ siteTitle: 'My Custom Title'
+ }
+}
+```
+
+如果站点有图标,则可以通过传递图片路径来显示它。应该将图标直接放在 `public` 中,并赋值该绝对路径。
+
+```js
+export default {
+ themeConfig: {
+ logo: '/my-logo.svg'
+ }
+}
+```
+
+添加图标时,它会与站点标题一起显示。如果只需要图标并且想要隐藏站点标题文本,请将 `siteTitle` 选项设置为 `false`。
+
+```js
+export default {
+ themeConfig: {
+ logo: '/my-logo.svg',
+ siteTitle: false
+ }
+}
+```
+
+如果想添加 `alt` 属性或根据暗/亮模式自定义它,还可以将图标作为对象传递。有关详细信息,请参阅 [`themeConfig.logo`](./default-theme-config#logo)。
+
+## 导航链接 {#navigation-links}
+
+可以定义 `themeConfig.nav` 选项以将链接添加到导航栏。
+
+```js
+export default {
+ themeConfig: {
+ nav: [
+ { text: 'Guide', link: '/guide' },
+ { text: 'Config', link: '/config' },
+ { text: 'Changelog', link: 'https://github.com/...' }
+ ]
+ }
+}
+```
+
+`text` 是 nav 中显示的实际文本,而 `link` 是单击文本时将导航到的链接。对于链接,将路径设置为不带 `.md` 后缀的实际文件,并且始终以 `/` 开头。
+
+导航链接也可以是下拉菜单。为此,请替换 `link` 选项,设置 `items` 数组。
+
+```js
+export default {
+ themeConfig: {
+ nav: [
+ { text: 'Guide', link: '/guide' },
+ {
+ text: 'Dropdown Menu',
+ items: [
+ { text: 'Item A', link: '/item-1' },
+ { text: 'Item B', link: '/item-2' },
+ { text: 'Item C', link: '/item-3' }
+ ]
+ }
+ ]
+ }
+}
+```
+
+请注意,下拉菜单标题(上例中的 `下拉菜单`)不能具有 `link` 属性,因为它是打开下拉对话框的按钮。
+
+还可以通过传入更多嵌套项来进一步向下拉菜单项添加“sections”。
+
+```js
+export default {
+ themeConfig: {
+ nav: [
+ { text: 'Guide', link: '/guide' },
+ {
+ text: 'Dropdown Menu',
+ items: [
+ {
+ // 该部分的标题
+ text: 'Section A Title',
+ items: [
+ { text: 'Section A Item A', link: '...' },
+ { text: 'Section B Item B', link: '...' }
+ ]
+ }
+ ]
+ },
+ {
+ text: 'Dropdown Menu',
+ items: [
+ {
+ // 也可以省略标题
+ items: [
+ { text: 'Section A Item A', link: '...' },
+ { text: 'Section B Item B', link: '...' }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+}
+```
+
+### 自定义链接的路由匹配状态 {#customize-link-s-active-state}
+
+当前页面位于匹配路径下时,导航菜单项将突出显示。如果 想自定义要匹配的路径,请将 `activeMatch` 属性和正则表达式定义为字符串值。
+
+```js
+export default {
+ themeConfig: {
+ nav: [
+ // 当用户位于 `/config/` 路径时,该链接处于激活状态
+ {
+ text: 'Guide',
+ link: '/guide',
+ activeMatch: '/config/'
+ }
+ ]
+ }
+}
+```
+
+::: warning
+`activeMatch` 应为正则表达式字符串,但必须将其定义为字符串。我们不能在这里使用实际的 RegExp 对象,因为它在构建期间不可序列化。
+:::
+
+### 自定义链接的“target”和“rel”属性 {#customize-link-s-target-and-rel-attributes}
+
+默认情况下,VitePress 会根据链接是否为外部链接自动判断 `target` 和 `rel` 属性。但如果愿意,也可以自定义它们。
+
+```js
+export default {
+ themeConfig: {
+ nav: [
+ {
+ text: 'Merchandise',
+ link: 'https://www.thegithubshop.com/',
+ target: '_self',
+ rel: 'sponsored'
+ }
+ ]
+ }
+}
+```
+
+## 社交链接 {#social-links}
+
+参考 [`socialLinks`](./default-theme-config#sociallinks)。
diff --git a/docs/zh/reference/default-theme-prev-next-links.md b/docs/zh/reference/default-theme-prev-next-links.md
new file mode 100644
index 00000000..cdbe8434
--- /dev/null
+++ b/docs/zh/reference/default-theme-prev-next-links.md
@@ -0,0 +1,43 @@
+# 上下页链接 {#prev-next-links}
+
+可以自定义上一页和下一页的文本和链接 (显示在文档页脚处)。如果要使其与侧边栏上的文本不同,这会很有帮助。此外,你可能会发现,要禁用未包含在侧边栏中的页面的页脚或链接时,这很有用。
+
+## prev
+
+- 类型:`string | false | { text?: string; link?: string }`
+
+- 说明:
+
+ 指定要在指向上一页的链接上显示的文本/链接。如果没有在 frontmatter 中设置它,文本/链接将从侧边栏配置中推断出来。
+
+- 示例:
+
+ - 仅自定义文本:
+
+ ```yaml
+ ---
+ prev: 'Get Started | Markdown'
+ ---
+ ```
+
+ - 自定义文本和链接:
+
+ ```yaml
+ ---
+ prev:
+ text: 'Markdown'
+ link: '/guide/markdown'
+ ---
+ ```
+
+ - 隐藏上一页:
+
+ ```yaml
+ ---
+ prev: false
+ ---
+ ```
+
+## next
+
+与 `prev` 相同,但用于下一页。
diff --git a/docs/zh/reference/default-theme-search.md b/docs/zh/reference/default-theme-search.md
new file mode 100644
index 00000000..4449a4ce
--- /dev/null
+++ b/docs/zh/reference/default-theme-search.md
@@ -0,0 +1,379 @@
+---
+outline: deep
+---
+
+# 搜索 {#search}
+
+## 本地搜索 {#local-search}
+
+得益于 [minisearch](https://github.com/lucaong/minisearch/),VitePress 支持使用浏览器内索引进行模糊全文搜索。要启用此功能,只需在 `.vitepress/config.ts` 文件中将 `themeConfig.search.provider` 选项设置为 `'local'` 即可:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ themeConfig: {
+ search: {
+ provider: 'local'
+ }
+ }
+})
+```
+
+示例结果:
+
+
+
+或者,你可以使用 [Algolia DocSearch](#algolia-search) 或一些社区插件,例如: 或者 。
+
+### i18n {#local-search-i18n}
+
+你可以使用这样的配置来使用多语言搜索:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ themeConfig: {
+ search: {
+ provider: 'local',
+ options: {
+ locales: {
+ zh: {
+ translations: {
+ button: {
+ buttonText: '搜索文档',
+ buttonAriaLabel: '搜索文档'
+ },
+ modal: {
+ noResultsText: '无法找到相关结果',
+ resetButtonTitle: '清除查询条件',
+ footer: {
+ selectText: '选择',
+ navigateText: '切换'
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+})
+```
+
+### MiniSearch 配置项 {#mini-search-options}
+
+你可以像这样配置 MiniSearch :
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ themeConfig: {
+ search: {
+ provider: 'local',
+ options: {
+ miniSearch: {
+ /**
+ * @type {Pick}
+ */
+ options: {
+ /* ... */
+ },
+ /**
+ * @type {import('minisearch').SearchOptions}
+ * @default
+ * { fuzzy: 0.2, prefix: true, boost: { title: 4, text: 2, titles: 1 } }
+ */
+ searchOptions: {
+ /* ... */
+ }
+ }
+ }
+ }
+ }
+})
+```
+
+参阅 [MiniSearch 文档](https://lucaong.github.io/minisearch/classes/MiniSearch.MiniSearch.html)了解更多信息。
+
+### 自定义渲染内容 {#custom-content-renderer}
+
+可以在索引之前自定义用于渲染 Markdown 内容的函数:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ themeConfig: {
+ search: {
+ provider: 'local',
+ options: {
+ /**
+ * @param {string} src
+ * @param {import('vitepress').MarkdownEnv} env
+ * @param {import('markdown-it')} md
+ */
+ _render(src, env, md) {
+ // 返回 html 字符串
+ }
+ }
+ }
+ }
+})
+```
+
+该函数将从客户端站点数据中剥离,因此你可以在其中使用 Node.js API。
+
+#### 示例:从搜索中排除页面 {#example-excluding-pages-from-search}
+
+你可以通过将 `search: false` 添加到页面的 `frontmatter` 来从搜索中排除页面。或者:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ themeConfig: {
+ search: {
+ provider: 'local',
+ options: {
+ _render(src, env, md) {
+ const html = md.render(src, env)
+ if (env.frontmatter?.search === false) return ''
+ if (env.relativePath.startsWith('some/path')) return ''
+ return html
+ }
+ }
+ }
+ }
+})
+```
+
+::: warning 注意
+如果提供了自定义的 `_render` 函数,你需要自己处理 `search: false` 的 frontmatter。此外,在调用 `md.render` 之前,`env` 对象不会完全填充,因此对可选 `env` 属性(如 `frontmatter` )的任何检查都应该在此之后完成。
+:::
+
+#### 示例:转换内容-添加锚点{#example-transforming-content-adding-anchors}
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ themeConfig: {
+ search: {
+ provider: 'local',
+ options: {
+ _render(src, env, md) {
+ const html = md.render(src, env)
+ if (env.frontmatter?.title)
+ return md.render(`# ${env.frontmatter.title}`) + html
+ return html
+ }
+ }
+ }
+ }
+})
+```
+
+## Algolia Search {#algolia-search}
+
+VitePress 支持使用 [Algolia DocSearch](https://docsearch.algolia.com/docs/what-is-docsearch) 搜索文档站点。请参阅他们的入门指南。在你的 `.vitepress/config.ts` 中,你至少需要提供以下内容才能使其正常工作:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ themeConfig: {
+ search: {
+ provider: 'algolia',
+ options: {
+ appId: '...',
+ apiKey: '...',
+ indexName: '...'
+ }
+ }
+ }
+})
+```
+
+### i18n {#algolia-search-i18n}
+
+你可以使用这样的配置来使用多语言搜索:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ themeConfig: {
+ search: {
+ provider: 'algolia',
+ options: {
+ appId: '...',
+ apiKey: '...',
+ indexName: '...',
+ locales: {
+ zh: {
+ placeholder: '搜索文档',
+ translations: {
+ button: {
+ buttonText: '搜索文档',
+ buttonAriaLabel: '搜索文档'
+ },
+ modal: {
+ searchBox: {
+ resetButtonTitle: '清除查询条件',
+ resetButtonAriaLabel: '清除查询条件',
+ cancelButtonText: '取消',
+ cancelButtonAriaLabel: '取消'
+ },
+ startScreen: {
+ recentSearchesTitle: '搜索历史',
+ noRecentSearchesText: '没有搜索历史',
+ saveRecentSearchButtonTitle: '保存至搜索历史',
+ removeRecentSearchButtonTitle: '从搜索历史中移除',
+ favoriteSearchesTitle: '收藏',
+ removeFavoriteSearchButtonTitle: '从收藏中移除'
+ },
+ errorScreen: {
+ titleText: '无法获取结果',
+ helpText: '你可能需要检查你的网络连接'
+ },
+ footer: {
+ selectText: '选择',
+ navigateText: '切换',
+ closeText: '关闭',
+ searchByText: '搜索提供者'
+ },
+ noResultsScreen: {
+ noResultsText: '无法找到相关结果',
+ suggestedQueryText: '你可以尝试查询',
+ reportMissingResultsText: '你认为该查询应该有结果?',
+ reportMissingResultsLinkText: '点击反馈'
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+})
+```
+
+[这些选项](https://github.com/vuejs/vitepress/blob/main/types/docsearch.d.ts)可以被覆盖。请参阅 Algolia 官方文档以了解更多信息。
+
+### 爬虫配置 {#crawler-config}
+
+以下是基于此站点使用的示例配置:
+
+```ts
+new Crawler({
+ appId: '...',
+ apiKey: '...',
+ rateLimit: 8,
+ startUrls: ['https://vitepress.dev/'],
+ renderJavaScript: false,
+ sitemaps: [],
+ exclusionPatterns: [],
+ ignoreCanonicalTo: false,
+ discoveryPatterns: ['https://vitepress.dev/**'],
+ schedule: 'at 05:10 on Saturday',
+ actions: [
+ {
+ indexName: 'vitepress',
+ pathsToMatch: ['https://vitepress.dev/**'],
+ recordExtractor: ({ $, helpers }) => {
+ return helpers.docsearch({
+ recordProps: {
+ lvl1: '.content h1',
+ content: '.content p, .content li',
+ lvl0: {
+ selectors: '',
+ defaultValue: 'Documentation'
+ },
+ lvl2: '.content h2',
+ lvl3: '.content h3',
+ lvl4: '.content h4',
+ lvl5: '.content h5'
+ },
+ indexHeadings: true
+ })
+ }
+ }
+ ],
+ initialIndexSettings: {
+ vitepress: {
+ attributesForFaceting: ['type', 'lang'],
+ attributesToRetrieve: ['hierarchy', 'content', 'anchor', 'url'],
+ attributesToHighlight: ['hierarchy', 'hierarchy_camel', 'content'],
+ attributesToSnippet: ['content:10'],
+ camelCaseAttributes: ['hierarchy', 'hierarchy_radio', 'content'],
+ searchableAttributes: [
+ 'unordered(hierarchy_radio_camel.lvl0)',
+ 'unordered(hierarchy_radio.lvl0)',
+ 'unordered(hierarchy_radio_camel.lvl1)',
+ 'unordered(hierarchy_radio.lvl1)',
+ 'unordered(hierarchy_radio_camel.lvl2)',
+ 'unordered(hierarchy_radio.lvl2)',
+ 'unordered(hierarchy_radio_camel.lvl3)',
+ 'unordered(hierarchy_radio.lvl3)',
+ 'unordered(hierarchy_radio_camel.lvl4)',
+ 'unordered(hierarchy_radio.lvl4)',
+ 'unordered(hierarchy_radio_camel.lvl5)',
+ 'unordered(hierarchy_radio.lvl5)',
+ 'unordered(hierarchy_radio_camel.lvl6)',
+ 'unordered(hierarchy_radio.lvl6)',
+ 'unordered(hierarchy_camel.lvl0)',
+ 'unordered(hierarchy.lvl0)',
+ 'unordered(hierarchy_camel.lvl1)',
+ 'unordered(hierarchy.lvl1)',
+ 'unordered(hierarchy_camel.lvl2)',
+ 'unordered(hierarchy.lvl2)',
+ 'unordered(hierarchy_camel.lvl3)',
+ 'unordered(hierarchy.lvl3)',
+ 'unordered(hierarchy_camel.lvl4)',
+ 'unordered(hierarchy.lvl4)',
+ 'unordered(hierarchy_camel.lvl5)',
+ 'unordered(hierarchy.lvl5)',
+ 'unordered(hierarchy_camel.lvl6)',
+ 'unordered(hierarchy.lvl6)',
+ 'content'
+ ],
+ distinct: true,
+ attributeForDistinct: 'url',
+ customRanking: [
+ 'desc(weight.pageRank)',
+ 'desc(weight.level)',
+ 'asc(weight.position)'
+ ],
+ ranking: [
+ 'words',
+ 'filters',
+ 'typo',
+ 'attribute',
+ 'proximity',
+ 'exact',
+ 'custom'
+ ],
+ highlightPreTag: '',
+ highlightPostTag: '',
+ minWordSizefor1Typo: 3,
+ minWordSizefor2Typos: 7,
+ allowTyposOnNumericTokens: false,
+ minProximity: 1,
+ ignorePlurals: true,
+ advancedSyntax: true,
+ attributeCriteriaComputedByMinProximity: true,
+ removeWordsIfNoResults: 'allOptional'
+ }
+ }
+})
+```
+
+
diff --git a/docs/zh/reference/default-theme-sidebar.md b/docs/zh/reference/default-theme-sidebar.md
new file mode 100644
index 00000000..8a001c0d
--- /dev/null
+++ b/docs/zh/reference/default-theme-sidebar.md
@@ -0,0 +1,213 @@
+# 侧边栏 {#sidebar}
+
+侧边栏是文档的主要导航块。可以在 [`themeConfig.sidebar`](./default-theme-config#sidebar) 中配置侧边栏菜单。
+
+```js
+export default {
+ themeConfig: {
+ sidebar: [
+ {
+ text: 'Guide',
+ items: [
+ { text: 'Introduction', link: '/introduction' },
+ { text: 'Getting Started', link: '/getting-started' },
+ ...
+ ]
+ }
+ ]
+ }
+}
+```
+
+## 基本用法 {#the-basics}
+
+侧边栏菜单的最简单形式是传入一个链接数组。第一级项目定义侧边栏的“部分”。它应该包含作为小标题的 `text` 和作为实际导航链接的 `items`。
+
+```js
+export default {
+ themeConfig: {
+ sidebar: [
+ {
+ text: 'Section Title A',
+ items: [
+ { text: 'Item A', link: '/item-a' },
+ { text: 'Item B', link: '/item-b' },
+ ...
+ ]
+ },
+ {
+ text: 'Section Title B',
+ items: [
+ { text: 'Item C', link: '/item-c' },
+ { text: 'Item D', link: '/item-d' },
+ ...
+ ]
+ }
+ ]
+ }
+}
+```
+
+每个 `link` 都应指定以 `/` 开头的实际文件的路径。如果在链接末尾添加斜杠,它将显示相应目录的 `index.md`。
+
+```js
+export default {
+ themeConfig: {
+ sidebar: [
+ {
+ text: 'Guide',
+ items: [
+ // 显示的是 `/guide/index.md` 页面
+ { text: 'Introduction', link: '/guide/' }
+ ]
+ }
+ ]
+ }
+}
+```
+
+可以进一步将侧边栏项目嵌入到 6 级深度,从根级别上计数。请注意,深度超过 6 级将被忽略,并且不会在侧边栏上显示。
+
+```js
+export default {
+ themeConfig: {
+ sidebar: [
+ {
+ text: 'Level 1',
+ items: [
+ {
+ text: 'Level 2',
+ items: [
+ {
+ text: 'Level 3',
+ items: [
+ ...
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+}
+```
+
+## 多侧边栏 {#multiple-sidebars}
+
+可能会根据页面路径显示不同的侧边栏。例如,如本站点所示,可能希望在文档中创建单独的侧边栏,例如“指南”页面和“配置参考”页面。
+
+为此,首先将你的页面组织到每个所需部分的目录中:
+
+```
+.
+├─ guide/
+│ ├─ index.md
+│ ├─ one.md
+│ └─ two.md
+└─ config/
+ ├─ index.md
+ ├─ three.md
+ └─ four.md
+```
+
+然后,更新配置以定义每个部分的侧边栏。这一次,应该传递一个对象而不是数组。
+
+```js
+export default {
+ themeConfig: {
+ sidebar: {
+ // 当用户位于 `guide` 目录时,会显示此侧边栏
+ '/guide/': [
+ {
+ text: 'Guide',
+ items: [
+ { text: 'Index', link: '/guide/' },
+ { text: 'One', link: '/guide/one' },
+ { text: 'Two', link: '/guide/two' }
+ ]
+ }
+ ],
+
+ // 当用户位于 `config` 目录时,会显示此侧边栏
+ '/config/': [
+ {
+ text: 'Config',
+ items: [
+ { text: 'Index', link: '/config/' },
+ { text: 'Three', link: '/config/three' },
+ { text: 'Four', link: '/config/four' }
+ ]
+ }
+ ]
+ }
+ }
+}
+```
+
+## 可折叠的侧边栏组 {#collapsible-sidebar-groups}
+
+通过向侧边栏组添加 `collapsed` 选项,它会显示一个切换按钮来隐藏/显示每个部分。
+
+```js
+export default {
+ themeConfig: {
+ sidebar: [
+ {
+ text: 'Section Title A',
+ collapsed: false,
+ items: [...]
+ }
+ ]
+ }
+}
+```
+
+默认情况下,所有部分都是“打开”的。如果 希望它们在初始页面加载时“关闭”,请将 `collapsed` 选项设置为 `true`。
+
+```js
+export default {
+ themeConfig: {
+ sidebar: [
+ {
+ text: 'Section Title A',
+ collapsed: true,
+ items: [...]
+ }
+ ]
+ }
+}
+```
+
+## `useSidebar`
+
+返回侧边栏相关数据。返回的对象具有以下类型:
+
+```ts
+export interface DocSidebar {
+ isOpen: Ref
+ sidebar: ComputedRef
+ sidebarGroups: ComputedRef
+ hasSidebar: ComputedRef
+ hasAside: ComputedRef
+ leftAside: ComputedRef
+ isSidebarEnabled: ComputedRef
+ open: () => void
+ close: () => void
+ toggle: () => void
+}
+```
+
+**示例:**
+
+```vue
+
+
+
+ Only show when sidebar exists
+
+```
diff --git a/docs/zh/reference/default-theme-team-page.md b/docs/zh/reference/default-theme-team-page.md
new file mode 100644
index 00000000..0ff5568e
--- /dev/null
+++ b/docs/zh/reference/default-theme-team-page.md
@@ -0,0 +1,257 @@
+
+
+# 团队页 {#team-page}
+
+如果你想介绍你的团队,你可以使用 Team components 来构建团队页面。有两种使用这些组件的方法。一种是将其嵌入文档页面,另一种是创建完整的团队页面。
+
+## 在页面中显示团队成员 {#show-team-members-in-a-page}
+
+你可以在任何页面上使用从 `vitepress/theme` 暴露出的公共组件 `` 显示团队成员。
+
+```html
+
+
+# Our Team
+
+Say hello to our awesome team.
+
+
+```
+
+以上将在卡片外观元素中显示团队成员。它应该显示类似于下面的内容。
+
+
+
+`` 组件有 2 种不同的尺寸,`small` 和 `medium`。虽然它取决于你的偏好,但通常尺寸在文档页面中使用时 `small` 应该更适合。此外,你可以为每个成员添加更多属性,例如添加“描述”或“赞助”按钮。在 [``](#vpteammembers)中了解更多信息。
+
+在文档页面中嵌入团队成员对于小型团队来说非常有用,某种情况下,完整的贡献团队可能太大了,可以引入部分成员作为文档上下文的参考。
+
+如果你有大量成员,或者只是想有更多空间来展示团队成员,请考虑[创建一个完整的团队页面](#create-a-full-team-page)。
+
+## 创建一个完整的团队页面 {#create-a-full-team-page}
+
+除了将团队成员添加到 doc 页面,你还可以创建一个完整的团队页面,类似于创建自定义[默认主题:主页](./default-theme-home-page)的方式。
+
+要创建团队页面,首先,创建一个新的 md 文件。文件名无所谓,这里我们就叫它 `team.md` 吧。在这个文件中,在 frontmatter 设置 `layout: page`,然后你可以使用 `TeamPage` 组件来组成页面结构。
+
+```html
+---
+layout: page
+---
+
+
+
+
+
+ Our Team
+
+
+ The development of VitePress is guided by an international
+ team, some of whom have chosen to be featured below.
+
+
+
+
+```
+
+创建完整的团队页面时,请记住用 `` 组件包装所有团队相关组件,以获得正确的布局结构,如间距。
+
+`` 组件添加页面标题部分。标题是 `` 标题。使用 `#title` 和 `#lead` 插槽来介绍你的团队。
+
+`` 和在 doc 页面中使用时一样。它将显示成员列表。
+
+### 添加分段以划分团队成员 {#add-sections-to-divide-team-members}
+
+你可以将“分段”添加到团队页面。例如,你可能有不同类型的团队成员,例如核心团队成员和社区合作伙伴。你可以将这些成员分成几个部分,以更好地解释每组的角色。
+
+为此,将 `` 组件添加到我们之前创建的 `team.md` 文件中。
+
+```html
+---
+layout: page
+---
+
+
+
+
+ Our Team
+ ...
+
+
+
+ Partners
+ ...
+
+
+
+
+
+```
+
+`` 组件可以有类似于 `VPTeamPageTitle` 组件的 `#title` 和 `#lead` 插槽,还有用于显示团队成员的 `#members` 插槽。
+
+请记住将 `` 组件放入 `#members` 插槽中。
+
+## ``
+
+`` 组件显示给定的成员列表。
+
+```html
+
+```
+
+```ts
+interface Props {
+ // 每个成员的大小,默认为 `medium`
+ size?: 'small' | 'medium'
+
+ // 显示的成员列表
+ members: TeamMember[]
+}
+
+interface TeamMember {
+ // 成员的头像图像
+ avatar: string
+
+ // 成员的名称
+ name: string
+
+ // 成员姓名下方的标题
+ // 例如:Developer, Software Engineer, etc.
+ title?: string
+
+ // 成员所属的组织
+ org?: string
+
+ // 组织的 URL
+ orgLink?: string
+
+ // 成员的描述
+ desc?: string
+
+ // 社交媒体链接,例如 GitHub、Twitter 等,可以在此处传入 Social Links 对象
+ // 参见: https://vitepress.dev/reference/default-theme-config.html#sociallinks
+ links?: SocialLink[]
+
+ // 成员 sponsor 页面的 URL
+ sponsor?: string
+
+ // sponsor 链接的文本,默认为 'Sponsor'
+ actionText?: string
+}
+```
+
+## ``
+
+创建完整团队页面时的根组件。它只接受一个插槽。它将设置所有传入的团队相关组件的样式。
+
+## ``
+
+添加页面的标题。最好在一开始就在 `` 下使用。它接受 `#title` 和 `#lead` 插槽。
+
+```html
+
+
+
+ Our Team
+
+
+ The development of VitePress is guided by an international
+ team, some of whom have chosen to be featured below.
+
+
+
+```
+
+## ``
+
+在团队页面中创建一个“分段”。它接受 `#title`、`#lead` 和 `#members` 插槽。你可以在 `` 中添加任意数量的分段。
+
+```html
+
+ ...
+
+ Partners
+ Lorem ipsum...
+
+
+
+
+
+```
diff --git a/docs/zh/reference/frontmatter-config.md b/docs/zh/reference/frontmatter-config.md
new file mode 100644
index 00000000..48ff8c49
--- /dev/null
+++ b/docs/zh/reference/frontmatter-config.md
@@ -0,0 +1,221 @@
+---
+outline: deep
+---
+
+# frontmatter 配置 {#frontmatter-config}
+
+frontmatter 支持基于页面的配置。在每个 markdown 文件中,可以使用 frontmatter 配置来覆盖站点级别或主题级别的配置选项。此外,还有一些配置选项只能在 frontmatter 中定义。
+
+示例用法:
+
+```md
+---
+title: Docs with VitePress
+editLink: true
+---
+```
+
+可以通过 Vue 表达式中的 `$frontmatter` 全局变量访问 frontmatter 数据:
+
+```md
+{{ $frontmatter.title }}
+```
+
+## title
+
+- 类型:`string`
+
+页面的标题。它与 [config.title](./site-config#title) 相同,并且覆盖站点级配置。
+
+```yaml
+---
+title: VitePress
+---
+```
+
+## titleTemplate
+
+- 类型:`string | boolean`
+
+标题的后缀。它与 [config.titleTemplate](./site-config#titletemplate) 相同,它会覆盖站点级别的配置。
+
+```yaml
+---
+title: VitePress
+titleTemplate: Vite & Vue powered static site generator
+---
+```
+
+## description
+
+- 类型:`string`
+
+页面的描述。它与 [config.description](./site-config#description) 相同,它会覆盖站点级别的配置。
+
+```yaml
+---
+description: VitePress
+---
+```
+
+## head
+
+- 类型:`HeadConfig[]`
+
+指定要为当前页面注入的额外 head 标签。将附加在站点级配置注入的头部标签之后。
+
+```yaml
+---
+head:
+ - - meta
+ - name: description
+ content: hello
+ - - meta
+ - name: keywords
+ content: super duper SEO
+---
+```
+
+```ts
+type HeadConfig =
+ | [string, Record]
+ | [string, Record, string]
+```
+
+## 仅默认主题 {#default-theme-only}
+
+以下 frontmatter 选项仅在使用默认主题时适用。
+
+### layout
+
+- 类型:`doc | home | page`
+- 默认值:`doc`
+
+指定页面的布局。
+
+- `doc`——它将默认文档样式应用于 markdown 内容。
+- `home`——“主页”的特殊布局。可以添加额外的选项,例如 `hero` 和 `features`,以快速创建漂亮的落地页。
+- `page`——表现类似于 `doc`,但它不对内容应用任何样式。当想创建一个完全自定义的页面时很有用。
+
+```yaml
+---
+layout: doc
+---
+```
+
+### hero
+
+当 `layout` 设置为 `home` 时,定义主页 hero 部分的内容。更多详细信息:[默认主题:主页](./default-theme-home-page)。
+
+### features
+
+定义当`layout` 设置为 `home` 时要在 features 部分中显示的项目。更多详细信息:[默认主题:主页](./default-theme-home-page)。
+
+### navbar
+
+- 类型:`boolean`
+- 默认值:`true`
+
+是否显示[导航栏](./default-theme-nav)。
+
+```yaml
+---
+navbar: false
+---
+```
+
+### sidebar
+
+- 类型:`boolean`
+- 默认值:`true`
+
+是否显示 [侧边栏](./default-theme-sidebar).
+
+```yaml
+---
+sidebar: false
+---
+```
+
+### aside
+
+- 类型:`boolean | 'left'`
+- 默认值:`true`
+
+定义侧边栏组件在 `doc` 布局中的位置。
+
+将此值设置为 `false` 可禁用侧边栏容器。\
+将此值设置为 `true` 会将侧边栏渲染到右侧。\
+将此值设置为 `left` 会将侧边栏渲染到左侧。
+
+```yaml
+---
+aside: false
+---
+```
+
+### outline
+
+- 类型:`number | [number, number] | 'deep' | false`
+- 默认值:`2`
+
+大纲中显示的标题级别。它与 [config.themeConfig.outline.level](./default-theme-config#outline) 相同,它会覆盖站点级的配置。
+
+### lastUpdated
+
+- 类型:`boolean | Date`
+- 默认值:`true`
+
+是否在当前页面的页脚中显示[最近更新时间](./default-theme-last-updated)的文本。如果指定了日期时间,则会显示该日期时间而不是上次 git 修改的时间戳。
+
+```yaml
+---
+lastUpdated: false
+---
+```
+
+### editLink
+
+- 类型:`boolean`
+- 默认值:`true`
+
+是否在当前页的页脚显示[编辑链接](./default-theme-edit-link)。
+
+```yaml
+---
+editLink: false
+---
+```
+
+### footer
+
+- 类型:`boolean`
+- 默认值:`true`
+
+是否显示[页脚](./default-theme-footer)。
+
+```yaml
+---
+footer: false
+---
+```
+
+### pageClass
+
+- 类型:`string`
+
+将额外的类名称添加到特定页面。
+
+```yaml
+---
+pageClass: custom-page-class
+---
+```
+
+然后可以在 `.vitepress/theme/custom.css` 文件中自定义该特定页面的样式:
+
+```css
+.custom-page-class {
+ /* 特定页面的样式 */
+}
+```
diff --git a/docs/zh/reference/runtime-api.md b/docs/zh/reference/runtime-api.md
new file mode 100644
index 00000000..6bd232f7
--- /dev/null
+++ b/docs/zh/reference/runtime-api.md
@@ -0,0 +1,164 @@
+# 运行时 API {#runtime-api}
+
+VitePress 提供了几个内置的 API 来让你访问应用程序数据。VitePress 还附带了一些可以在全局范围内使用的内置组件。
+
+辅助函数可从 `vitepress` 全局导入,通常用于自定义主题 Vue 组件。但是,它们也可以在 `.md` 页面内使用,因为 markdown 文件被编译成 Vue [单文件组件](https://vuejs.org/guide/scaling-up/sfc.html)。
+
+以 `use*` 开头的方法表示它是一个 [Vue 3 Composition API](https://vuejs.org/guide/introduction.html#composition-api) 函数(“Composable(可组合)”),只能在 `setup()` 或 `
+
+
+ {{ theme.footer.copyright }}
+
+```
+
+## `useRoute`
+
+返回具有以下类型的当前路由对象:
+
+```ts
+interface Route {
+ path: string
+ data: PageData
+ component: Component | null
+}
+```
+
+## `useRouter`
+
+返回 VitePress 路由实例,以便可以以编程方式导航到另一个页面。
+
+```ts
+interface Router {
+ /**
+ * 当前路由
+ */
+ route: Route
+ /**
+ * 导航到新的 URL
+ */
+ go: (to?: string) => Promise
+ /**
+ * 在路由更改前调用。返回 `false` 表示取消导航
+ */
+ onBeforeRouteChange?: (to: string) => Awaitable
+ /**
+ * 在页面组件加载前(history 状态更新后)调用。返回 `false` 表示取消导航
+ */
+ onBeforePageLoad?: (to: string) => Awaitable
+ /**
+ * 在路由更改后调用
+ */
+ onAfterRouteChanged?: (to: string) => Awaitable
+}
+```
+
+## `withBase`
+
+- **Type**: `(path: string) => string`
+
+将配置的 [`base`](./site-config#base) 追加到给定的 URL 路径。另请参阅 [Base URL](../guide/asset-handling#base-url)。
+
+## ``
+
+`` 组件显示渲染的 markdown 内容。在[创建自己的主题时](../guide/custom-theme)很有用。
+
+```vue
+
+ Custom Layout!
+
+
+```
+
+## ``
+
+`` 组件仅在客户端渲染其插槽。
+
+由于 VitePress 应用程序在生成静态构建时是在 Node.js 中服务器渲染的,因此任何 Vue 使用都必须符合通用代码要求。简而言之,确保仅在 beforeMount 或 mounted 钩子中访问 Browser/DOM API。
+
+如果正在使用或演示对 SSR 不友好的组件 (例如,包含自定义指令),可以将它们包装在 `ClientOnly` 组件中。
+
+```vue-html
+
+
+
+```
+
+- 相关文档:[SSR 兼容性](../guide/ssr-compat)
+
+## `$frontmatter`
+
+在 Vue 表达式中直接访问当前页面的 [frontmatter](../guide/frontmatter) 数据。
+
+```md
+---
+title: Hello
+---
+
+# {{ $frontmatter.title }}
+```
+
+## `$params`
+
+在 Vue 表达式中直接访问当前页面的[动态路由参数](../guide/routing#dynamic-routes)。
+
+```md
+- package name: {{ $params.pkg }}
+- version: {{ $params.version }}
+```
diff --git a/docs/zh/reference/site-config.md b/docs/zh/reference/site-config.md
new file mode 100644
index 00000000..fd5c2c4f
--- /dev/null
+++ b/docs/zh/reference/site-config.md
@@ -0,0 +1,695 @@
+---
+outline: deep
+---
+
+# 站点配置 {#site-config}
+
+站点配置可以定义站点的全局设置。应用配置选项适用于每个 VitePress 站点,无论它使用什么主题。例如根目录或站点的标题。
+
+## 概览 {#overview}
+
+### 配置解析 {#config-resolution}
+
+配置文件总是从 `/.vitepress/config.[ext]` 解析,其中 `` 是 VitePress [项目根目录](../guide/routing#root-and-source-directory),`[ext]` 是支持的文件扩展名之一。开箱即用地支持 TypeScript。支持的扩展名包括 `.js`、`.ts`、`.mjs` 和 `.mts`。
+
+建议在配置文件中使用 ES 模块语法。配置文件应该默认导出一个对象:
+
+```ts
+export default {
+ // 应用级配置选项
+ lang: 'en-US',
+ title: 'VitePress',
+ description: 'Vite & Vue powered static site generator.',
+ ...
+}
+```
+
+:::details 异步的动态配置
+
+如果需要动态生成配置,也可以默认导出一个函数,例如:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default async () => defineConfig({
+ const posts = await (await fetch('https://my-cms.com/blog-posts')).json()
+
+ return {
+ // 应用级配置选项
+ lang: 'en-US',
+ title: 'VitePress',
+ description: 'Vite & Vue powered static site generator.',
+
+ // 主题级别配置选项
+ themeConfig: {
+ sidebar: [
+ ...posts.map((post) => ({
+ text: post.name,
+ link: `/posts/${post.name}`
+ }))
+ ]
+ }
+ }
+})
+```
+
+也可以在最外层使用 `await`。例如:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+const posts = await (await fetch('https://my-cms.com/blog-posts')).json()
+
+export default defineConfig({
+ // 应用级配置选项
+ lang: 'en-US',
+ title: 'VitePress',
+ description: 'Vite & Vue powered static site generator.',
+
+ // 主题级别配置选项
+ themeConfig: {
+ sidebar: [
+ ...posts.map((post) => ({
+ text: post.name,
+ link: `/posts/${post.name}`
+ }))
+ ]
+ }
+})
+```
+
+:::
+
+### 配置智能提示 {#config-intellisense}
+
+使用 `defineConfig` 辅助函数将为配置选项提供 TypeScript 支持的智能提示。假设 IDE 支持它,那么智能提示在 JavaScript 和 TypeScript 中都将触发。
+
+```js
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ // ...
+})
+```
+
+### 主题类型提示 {#typed-theme-config}
+
+默认情况下,`defineConfig` 辅助函数期望默认主题的主题配置数据类型:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ themeConfig: {
+ // 类型为 `DefaultTheme.Config`
+ }
+})
+```
+
+如果使用自定义主题并希望对主题配置进行类型检查,则需要改用 `defineConfigWithTheme`,并通过通用参数传递自定义主题的配置类型:
+
+```ts
+import { defineConfigWithTheme } from 'vitepress'
+import type { ThemeConfig } from 'your-theme'
+
+export default defineConfigWithTheme({
+ themeConfig: {
+ // 类型为 `ThemeConfig`
+ }
+})
+```
+
+### Vite、Vue 和 Markdown 配置
+
+- **Vite**
+
+ 可以使用 VitePress 配置中的 [vite](#vite) 选项配置底层 Vite 实例。无需创建单独的 Vite 配置文件。
+
+- **Vue**
+
+ VitePress 已经包含 Vite 的官方 Vue 插件([@vitejs/plugin-vue](https://github.com/vitejs/vite-plugin-vue))。可以配置 VitePress 中的 [vue](#vue) 选项。
+
+- **Markdown**
+
+ 可以使用 VitePress 配置中的 [markdown](#markdown) 选项配置底层的 [Markdown-It](https://github.com/markdown-it/markdown-it) 实例。
+
+## 站点元数据 {#site-metadata}
+
+### title
+
+- 类型:`string`
+- 默认值: `VitePress`
+- 每个页面可以通过 [frontmatter](./frontmatter-config#title) 覆盖
+
+站点的标题。使用默认主题时,这将显示在导航栏中。
+
+它还将用作所有单独页面标题的默认后缀,除非定义了 [`titleTemplate`](#titletemplate)。单个页面的最终标题将是其第一个 `` 标题的文本内容加上的全局 `title`。例如使用以下配置和页面内容:
+
+```ts
+export default {
+ title: 'My Awesome Site'
+}
+```
+
+```md
+# Hello
+```
+
+页面标题就是 `Hello | My Awesome Site`.
+
+### titleTemplate
+
+- 类型:`string | boolean`
+- 每个页面可以通过 [frontmatter](./frontmatter-config#titletemplate) 覆盖
+
+允许自定义每个页面的标题后缀或整个标题。例如:
+
+```ts
+export default {
+ title: 'My Awesome Site',
+ titleTemplate: 'Custom Suffix'
+}
+```
+
+```md
+# Hello
+```
+
+页面标题就是 `Hello | Custom Suffix`.
+
+要完全自定义标题的呈现方式,可以在 `titleTemplate` 中使用 `:title` 标识符:
+
+```ts
+export default {
+ titleTemplate: ':title - Custom Suffix'
+}
+```
+
+这里的 `:title` 将替换为从页面的第一个 `` 标题推断出的文本。上一个示例页面的标题将是 `Hello - Custom Suffix`。
+
+该选项可以设置为 `false` 以禁用标题后缀。
+
+### description
+
+- 类型:`string`
+- 默认值: `A VitePress site`
+- 每个页面可以通过 [frontmatter](./frontmatter-config#description) 覆盖
+
+站点的描述。这将呈现为页面 HTML 中的 `` 标签。
+
+```ts
+export default {
+ description: 'A VitePress site'
+}
+```
+
+### head
+
+- 类型:`HeadConfig[]`
+- 默认值: `[]`
+- 每个页面可以通过 [frontmatter](./frontmatter-config#head) 添加
+
+要在页面 HTML 的 `` 标记中呈现的其他元素。用户添加的标签在结束 `head` 标签之前呈现,在 VitePress 标签之后。
+
+```ts
+type HeadConfig =
+ | [string, Record]
+ | [string, Record, string]
+```
+
+#### 示例:添加一个图标 {#example-adding-a-favicon}
+
+```ts
+export default {
+ head: [['link', { rel: 'icon', href: '/favicon.ico' }]]
+} // 将 favicon.ico 放在公共目录中,如果设置了 base,则使用 /base/favicon.ico
+
+/* 渲染成:
+
+*/
+```
+
+#### 示例:添加谷歌字体 {#example-adding-google-fonts}
+
+```ts
+export default {
+ head: [
+ [
+ 'link',
+ { rel: 'preconnect', href: 'https://fonts.googleapis.com' }
+ ],
+ [
+ 'link',
+ { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: '' }
+ ],
+ [
+ 'link',
+ { href: 'https://fonts.googleapis.com/css2?family=Roboto&display=swap', rel: 'stylesheet' }
+ ]
+ ]
+}
+
+/* 渲染成:
+
+
+
+*/
+```
+
+#### 示例:添加一个 serviceWorker {#example-registering-a-service-worker}
+
+```ts
+export default {
+ head: [
+ [
+ 'script',
+ { id: 'register-sw' },
+ `;(() => {
+ if ('serviceWorker' in navigator) {
+ navigator.serviceWorker.register('/sw.js')
+ }
+ })()`
+ ]
+ ]
+}
+
+/* 渲染成:
+
+*/
+```
+
+#### 示例:使用谷歌分析 {#example-using-google-analytics}
+
+```ts
+export default {
+ head: [
+ [
+ 'script',
+ { async: '', src: 'https://www.googletagmanager.com/gtag/js?id=TAG_ID' }
+ ],
+ [
+ 'script',
+ {},
+ `window.dataLayer = window.dataLayer || [];
+ function gtag(){dataLayer.push(arguments);}
+ gtag('js', new Date());
+ gtag('config', 'TAG_ID');`
+ ]
+ ]
+}
+
+/* 渲染成:
+
+
+*/
+```
+
+### lang
+
+- 类型:`string`
+- 默认值: `en-US`
+
+站点的 lang 属性。这将呈现为页面 HTML 中的 `` 标签。
+
+```ts
+export default {
+ lang: 'en-US'
+}
+```
+
+### base
+
+- 类型:`string`
+- 默认值: `/`
+
+站点将部署到的 base URL。如果计划在子路径(例如 GitHub 页面)下部署站点,则需要设置此项。如果计划将站点部署到 `https://foo.github.io/bar/`,那么应该将 `base` 设置为 `“/bar/”`。它应该始终以 `/`开头和结尾。
+
+base 会自动添加到其他选项中以 `/` 开头的所有 URL 前面,因此只需指定一次。
+
+```ts
+export default {
+ base: '/base/'
+}
+```
+
+## 路由 {#routing}
+
+### cleanUrls
+
+- 类型:`boolean`
+- 默认值: `false`
+
+当设置为 `true` 时,VitePress 将从 URL 中删除 `.html` 后缀。另请参阅[生成简洁的 URL](../guide/routing#generating-clean-url)。
+
+::: warning 需要服务器支持
+要启用此功能,可能需要在托管平台上进行额外配置。要使其正常工作,服务器必须能够在**不重定向的情况下**访问 `/foo` 时提供 `/foo.html`。
+:::
+
+### rewrites
+
+- 类型:`Record`
+
+自定义目录 <-> URL 映射。详细信息请参阅[路由:路由重写](../guide/routing#route-rewrites)。
+
+```ts
+export default {
+ rewrites: {
+ 'source/:page': 'destination/:page'
+ }
+}
+```
+
+## 构建 {#build}
+
+### srcDir
+
+- 类型:`string`
+- 默认值: `.`
+
+markdown 页面的目录,相对于项目根目录。另请参阅[根目录和源目录](../guide/routing#root-and-source-directory)。
+
+```ts
+export default {
+ srcDir: './src'
+}
+```
+
+### srcExclude
+
+- 类型:`string`
+- 默认值: `undefined`
+
+用于匹配应作为源内容输出的 markdown 文件的 [全局模式](https://github.com/mrmlnc/fast-glob#pattern-syntax)。
+
+```ts
+export default {
+ srcExclude: ['**/README.md', '**/TODO.md']
+}
+```
+
+### outDir
+
+- 类型:`string`
+- 默认值: `./.vitepress/dist`
+
+项目的构建输出位置,相对于[项目根目录](../guide/routing#root-and-source-directory)。
+
+```ts
+export default {
+ outDir: '../public'
+}
+```
+
+### assetsDir
+
+- 类型:`string`
+- 默认值: `assets`
+
+指定放置生成的静态资源的目录。该路径应位于 [`outDir`](#outdir) 内,并相对于它进行解析。
+
+```ts
+export default {
+ assetsDir: 'static'
+}
+```
+
+### cacheDir
+
+- 类型:`string`
+- 默认值: `./.vitepress/cache`
+
+缓存文件的目录,相对于[项目根目录](../guide/routing#root-and-source-directory)。另请参阅:[cacheDir](https://vitejs.dev/config/shared-options.html#cachedir)。
+
+```ts
+export default {
+ cacheDir: './.vitepress/.vite'
+}
+```
+
+### ignoreDeadLinks
+
+- 类型:`boolean | 'localhostLinks' | (string | RegExp | ((link: string) => boolean))[]`
+- 默认值: `false`
+
+当设置为 `true` 时,VitePress 不会因为死链而导致构建失败。
+
+当设置为 `'localhostLinks'` ,出现死链时构建将失败,但不会检查 `localhost` 链接。
+
+```ts
+export default {
+ ignoreDeadLinks: true
+}
+```
+
+它也可以是一组精确的 url 字符串、正则表达式模式或自定义过滤函数。
+
+```ts
+export default {
+ ignoreDeadLinks: [
+ // 忽略精确网址 "/playground"
+ '/playground',
+ // 忽略所有 localhost 链接
+ /^https?:\/\/localhost/,
+ // 忽略所有包含 "/repl/" 的链接
+ /\/repl\//,
+ // 自定义函数,忽略所有包含 "ignore "的链接
+ (url) => {
+ return url.toLowerCase().includes('ignore')
+ }
+ ]
+}
+```
+
+### mpa
+
+- 类型:`boolean`
+- 默认值: `false`
+
+设置为 `true` 时,生产应用程序将在 [MPA 模式](../guide/mpa-mode)下构建。MPA 模式默认提供 零 JavaScript 支持,代价是禁用客户端导航,并且需要明确选择加入才能进行交互。
+
+## 主题 {#theming}
+
+### appearance
+
+- 类型:`boolean | 'dark' | 'force-dark' | import('@vueuse/core').UseDarkOptions`
+- 默认值: `true`
+
+是否启用深色模式(通过将 `.dark` 类添加到 `` 元素)。
+
+- 如果该选项设置为 `true`,则默认主题将由用户的首选配色方案决定。
+- 如果该选项设置为 `dark`,则默认情况下主题将是深色的,除非用户手动切换它。
+- 如果该选项设置为 `false`,用户将无法切换主题。
+
+此选项注入一个内联脚本,使用 `vitepress-theme-appearance` key 从本地存储恢复用户设置。这确保在呈现页面之前应用 `.dark` 类以避免闪烁。
+
+`appearance.initialValue` 只能是 `'dark' | undefined`。 不支持 Refs 或 getters。
+
+### lastUpdated
+
+- 类型:`boolean`
+- 默认值: `false`
+
+是否使用 Git 获取每个页面的最后更新时间戳。时间戳将包含在每个页面的页面数据中,可通过 [`useData`](./runtime-api#usedata) 访问。
+
+使用默认主题时,启用此选项将显示每个页面的最后更新时间。可以通过 [`themeConfig.lastUpdatedText`](./default-theme-config#lastupdatedtext) 选项自定义文本。
+
+## 自定义 {#customization}
+
+### markdown
+
+- 类型:`MarkdownOption`
+
+配置 Markdown 解析器选项。VitePress 使用 [Markdown-it](https://github.com/markdown-it/markdown-it) 作为解析器,使用[Shikiji](https://github.com/antfu/shikiji) ([Shiki](https://shiki.matsu.io/) 的改进版本) 来高亮不同语言语法。在此选项中,可以传递各种 Markdown 相关选项以满足的需要。
+
+```js
+export default {
+ markdown: {...}
+}
+```
+
+查看[类型声明和 jsdocs](https://github.com/vuejs/vitepress/blob/main/src/node/markdown/markdown.ts) 以获得所有可配置的选项。
+
+### vite
+
+- 类型:`import('vite').UserConfig`
+
+将原始 [Vite 配置](https://vitejs.dev/config/)传递给内部 Vite 开发服务器 / bundler。
+
+```js
+export default {
+ vite: {
+ // Vite 配置选项
+ }
+}
+```
+
+### vue
+
+- 类型:`import('@vitejs/plugin-vue').Options`
+
+将原始的 [@vitejs/plugin-vue 选项](https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#options)传递给内部插件实例。
+
+```js
+export default {
+ vue: {
+ // @vitejs/plugin-vue 选项
+ }
+}
+```
+
+## 构建钩子 {#build-hooks}
+
+VitePress 构建钩子允许向站点添加新功能和行为:
+
+- Sitemap
+- Search Indexing
+- PWA
+- Teleport
+
+### buildEnd
+
+- 类型:`(siteConfig: SiteConfig) => Awaitable`
+
+`buildEnd` 是一个构建 CLI 钩子,它将在构建(SSG)完成后但在 VitePress CLI 进程退出之前运行。
+
+```ts
+export default {
+ async buildEnd(siteConfig) {
+ // ...
+ }
+}
+```
+
+### postRender
+
+- 类型:`(context: SSGContext) => Awaitable`
+
+ `postRender` 是一个构建钩子,在 SSG 渲染完成时调用。它将允许在 SSG 期间处理传递的内容。
+
+```ts
+export default {
+ async postRender(context) {
+ // ...
+ }
+}
+```
+
+```ts
+interface SSGContext {
+ content: string
+ teleports?: Record
+ [key: string]: any
+}
+```
+
+### transformHead
+
+- 类型:`(context: TransformContext) => Awaitable`
+
+`transformHead` 是一个构建钩子,用于在生成每个页面之前转换 head。它将允许添加无法静态添加到 VitePress 配置中的 head entries。只需要返回额外的 entries,它们将自动与现有 entries 合并。
+
+::: warning
+不要改变 `context` 中的任何东西。
+:::
+
+```ts
+export default {
+ async transformHead(context) {
+ // ...
+ }
+}
+```
+
+```ts
+interface TransformContext {
+ page: string // 例如 index.md (相对于 srcDir)
+ assets: string[] // 所有非 js/css 资源均作为完全解析的公共 URL
+ siteConfig: SiteConfig
+ siteData: SiteData
+ pageData: PageData
+ title: string
+ description: string
+ head: HeadConfig[]
+ content: string
+}
+```
+
+请注意,仅在静态生成站点时才会调用此挂钩。在开发期间不会调用它。如果需要在开发期间添加动态头条目,可以使用 [`transformPageData`](#transformpagedata) 钩子来替代:
+
+```ts
+export default {
+ transformPageData(pageData) {
+ pageData.frontmatter.head ??= []
+ pageData.frontmatter.head.push([
+ 'meta',
+ {
+ name: 'og:title',
+ content:
+ pageData.frontmatter.layout === 'home'
+ ? `VitePress`
+ : `${pageData.title} | VitePress`
+ }
+ ])
+ }
+}
+```
+
+### transformHtml
+
+- 类型:`(code: string, id: string, context: TransformContext) => Awaitable`
+
+`transformHtml` 是一个构建钩子,用于在保存到磁盘之前转换每个页面的内容。
+
+::: warning
+不要改变 `context` 中的任何东西。另外,修改 html 内容可能会导致运行时出现激活问题。
+:::
+
+```ts
+export default {
+ async transformHtml(code, id, context) {
+ // ...
+ }
+}
+```
+
+### transformPageData
+
+- 类型:`(pageData: PageData, context: TransformPageContext) => Awaitable | { [key: string]: any } | void>`
+
+`transformPageData` 是一个钩子,用于转换每个页面的 `pageData`。可以直接改变 `pageData` 或返回将合并到 `PageData` 中的更改值。
+
+::: warning
+不要改变 `context` 中的任何东西。请注意,这可能会影响开发服务器的性能,特别是当在钩子中有一些网络请求或大量计算(例如生成图像)时。可以通过判断 `process.env.NODE_ENV === 'production'` 匹配符合条件的情况。
+:::
+
+```ts
+export default {
+ async transformPageData(pageData, { siteConfig }) {
+ pageData.contributors = await getPageContributors(pageData.relativePath)
+ }
+
+ // 或返回要合并的数据
+ async transformPageData(pageData, { siteConfig }) {
+ return {
+ contributors: await getPageContributors(pageData.relativePath)
+ }
+ }
+}
+```
+
+```ts
+interface TransformPageContext {
+ siteConfig: SiteConfig
+}
+```
diff --git a/package.json b/package.json
index bfc8ec25..94ef6fb0 100644
--- a/package.json
+++ b/package.json
@@ -1,9 +1,9 @@
{
"name": "vitepress",
- "version": "1.0.0-rc.33",
+ "version": "1.0.0-rc.34",
"description": "Vite & Vue powered static site generator",
"type": "module",
- "packageManager": "pnpm@8.12.1",
+ "packageManager": "pnpm@8.13.1",
"main": "dist/node/index.js",
"types": "types/index.d.ts",
"exports": {
@@ -93,18 +93,18 @@
"@docsearch/css": "^3.5.2",
"@docsearch/js": "^3.5.2",
"@types/markdown-it": "^13.0.7",
- "@vitejs/plugin-vue": "^5.0.0",
+ "@vitejs/plugin-vue": "^5.0.2",
"@vue/devtools-api": "^6.5.1",
- "@vueuse/core": "^10.7.0",
- "@vueuse/integrations": "^10.7.0",
+ "@vueuse/core": "^10.7.1",
+ "@vueuse/integrations": "^10.7.1",
"focus-trap": "^7.5.4",
"mark.js": "8.11.1",
"minisearch": "^6.3.0",
- "mrmime": "^2.0.0",
- "shikiji": "^0.9.12",
- "shikiji-transformers": "^0.9.12",
+ "shikiji": "^0.9.16",
+ "shikiji-core": "^0.9.16",
+ "shikiji-transformers": "^0.9.16",
"vite": "^5.0.10",
- "vue": "^3.4.0-rc.2"
+ "vue": "^3.4.3"
},
"peerDependencies": {
"markdown-it-mathjax3": "^4.3.2",
@@ -144,16 +144,16 @@
"@types/markdown-it-emoji": "^2.0.4",
"@types/micromatch": "^4.0.6",
"@types/minimist": "^1.2.5",
- "@types/node": "^20.10.5",
+ "@types/node": "^20.10.6",
"@types/postcss-prefix-selector": "^1.16.3",
"@types/prompts": "^2.4.9",
- "@vue/shared": "^3.3.13",
+ "@vue/shared": "^3.4.3",
"chokidar": "^3.5.3",
"compression": "^1.7.4",
"conventional-changelog-cli": "^4.1.0",
"cross-spawn": "^7.0.3",
"debug": "^4.3.4",
- "esbuild": "^0.19.10",
+ "esbuild": "^0.19.11",
"escape-html": "^1.0.3",
"execa": "^8.0.1",
"fast-glob": "^3.3.2",
@@ -174,7 +174,7 @@
"nanoid": "^5.0.4",
"npm-run-all": "^4.1.5",
"ora": "^8.0.1",
- "p-map": "^7.0.0",
+ "p-map": "^7.0.1",
"path-to-regexp": "^6.2.1",
"picocolors": "^1.0.0",
"pkg-dir": "^8.0.0",
@@ -185,18 +185,17 @@
"prompts": "^2.4.2",
"punycode": "^2.3.1",
"rimraf": "^5.0.5",
- "rollup": "^4.9.1",
+ "rollup": "^4.9.2",
"rollup-plugin-dts": "^6.1.0",
"rollup-plugin-esbuild": "^6.1.0",
"semver": "^7.5.4",
- "shikiji-core": "^0.9.12",
"simple-git-hooks": "^2.9.0",
"sirv": "^2.0.4",
"sitemap": "^7.1.1",
"supports-color": "^9.4.0",
"typescript": "^5.3.3",
- "vitest": "^1.1.0",
- "vue-tsc": "^1.8.26",
+ "vitest": "^1.1.1",
+ "vue-tsc": "^1.8.27",
"wait-on": "^7.2.0"
},
"simple-git-hooks": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ba4c0aaf..b4b9c507 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -21,17 +21,17 @@ importers:
specifier: ^13.0.7
version: 13.0.7
'@vitejs/plugin-vue':
- specifier: ^5.0.0
- version: 5.0.0(vite@5.0.10)(vue@3.4.0-rc.2)
+ specifier: ^5.0.2
+ version: 5.0.2(vite@5.0.10)(vue@3.4.3)
'@vue/devtools-api':
specifier: ^6.5.1
version: 6.5.1
'@vueuse/core':
- specifier: ^10.7.0
- version: 10.7.0(vue@3.4.0-rc.2)
+ specifier: ^10.7.1
+ version: 10.7.1(vue@3.4.3)
'@vueuse/integrations':
- specifier: ^10.7.0
- version: 10.7.0(focus-trap@7.5.4)(vue@3.4.0-rc.2)
+ specifier: ^10.7.1
+ version: 10.7.1(focus-trap@7.5.4)(vue@3.4.3)
focus-trap:
specifier: ^7.5.4
version: 7.5.4
@@ -41,21 +41,21 @@ importers:
minisearch:
specifier: ^6.3.0
version: 6.3.0
- mrmime:
- specifier: ^2.0.0
- version: 2.0.0
shikiji:
- specifier: ^0.9.12
- version: 0.9.12
+ specifier: ^0.9.16
+ version: 0.9.16
+ shikiji-core:
+ specifier: ^0.9.16
+ version: 0.9.16
shikiji-transformers:
- specifier: ^0.9.12
- version: 0.9.12
+ specifier: ^0.9.16
+ version: 0.9.16
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.5)
+ version: 5.0.10(@types/node@20.10.6)
vue:
- specifier: ^3.4.0-rc.2
- version: 3.4.0-rc.2(typescript@5.3.3)
+ specifier: ^3.4.3
+ version: 3.4.3(typescript@5.3.3)
devDependencies:
'@clack/prompts':
specifier: ^0.7.0
@@ -83,19 +83,19 @@ importers:
version: 2.0.0
'@rollup/plugin-alias':
specifier: ^5.1.0
- version: 5.1.0(rollup@4.9.1)
+ version: 5.1.0(rollup@4.9.2)
'@rollup/plugin-commonjs':
specifier: ^25.0.7
- version: 25.0.7(rollup@4.9.1)
+ version: 25.0.7(rollup@4.9.2)
'@rollup/plugin-json':
specifier: ^6.1.0
- version: 6.1.0(rollup@4.9.1)
+ version: 6.1.0(rollup@4.9.2)
'@rollup/plugin-node-resolve':
specifier: ^15.2.3
- version: 15.2.3(rollup@4.9.1)
+ version: 15.2.3(rollup@4.9.2)
'@rollup/plugin-replace':
specifier: ^5.0.5
- version: 5.0.5(rollup@4.9.1)
+ version: 5.0.5(rollup@4.9.2)
'@types/compression':
specifier: ^1.7.5
version: 1.7.5
@@ -133,8 +133,8 @@ importers:
specifier: ^1.2.5
version: 1.2.5
'@types/node':
- specifier: ^20.10.5
- version: 20.10.5
+ specifier: ^20.10.6
+ version: 20.10.6
'@types/postcss-prefix-selector':
specifier: ^1.16.3
version: 1.16.3
@@ -142,8 +142,8 @@ importers:
specifier: ^2.4.9
version: 2.4.9
'@vue/shared':
- specifier: ^3.3.13
- version: 3.3.13
+ specifier: ^3.4.3
+ version: 3.4.3
chokidar:
specifier: ^3.5.3
version: 3.5.3
@@ -160,8 +160,8 @@ importers:
specifier: ^4.3.4
version: 4.3.4(supports-color@9.4.0)
esbuild:
- specifier: ^0.19.10
- version: 0.19.10
+ specifier: ^0.19.11
+ version: 0.19.11
escape-html:
specifier: ^1.0.3
version: 1.0.3
@@ -223,8 +223,8 @@ importers:
specifier: ^8.0.1
version: 8.0.1
p-map:
- specifier: ^7.0.0
- version: 7.0.0
+ specifier: ^7.0.1
+ version: 7.0.1
path-to-regexp:
specifier: ^6.2.1
version: 6.2.1
@@ -256,20 +256,17 @@ importers:
specifier: ^5.0.5
version: 5.0.5
rollup:
- specifier: ^4.9.1
- version: 4.9.1
+ specifier: ^4.9.2
+ version: 4.9.2
rollup-plugin-dts:
specifier: ^6.1.0
- version: 6.1.0(rollup@4.9.1)(typescript@5.3.3)
+ version: 6.1.0(rollup@4.9.2)(typescript@5.3.3)
rollup-plugin-esbuild:
specifier: ^6.1.0
- version: 6.1.0(esbuild@0.19.10)(rollup@4.9.1)(supports-color@9.4.0)
+ version: 6.1.0(esbuild@0.19.11)(rollup@4.9.2)(supports-color@9.4.0)
semver:
specifier: ^7.5.4
version: 7.5.4
- shikiji-core:
- specifier: ^0.9.12
- version: 0.9.12
simple-git-hooks:
specifier: ^2.9.0
version: 2.9.0
@@ -286,11 +283,11 @@ importers:
specifier: ^5.3.3
version: 5.3.3
vitest:
- specifier: ^1.1.0
- version: 1.1.0(@types/node@20.10.5)(supports-color@9.4.0)
+ specifier: ^1.1.1
+ version: 1.1.1(@types/node@20.10.6)(supports-color@9.4.0)
vue-tsc:
- specifier: ^1.8.26
- version: 1.8.26(typescript@5.3.3)
+ specifier: ^1.8.27
+ version: 1.8.27(typescript@5.3.3)
wait-on:
specifier: ^7.2.0
version: 7.2.0(debug@4.3.4)
@@ -558,184 +555,184 @@ packages:
- '@algolia/client-search'
dev: false
- /@esbuild/aix-ppc64@0.19.10:
- resolution: {integrity: sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==}
+ /@esbuild/aix-ppc64@0.19.11:
+ resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [aix]
requiresBuild: true
optional: true
- /@esbuild/android-arm64@0.19.10:
- resolution: {integrity: sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==}
+ /@esbuild/android-arm64@0.19.11:
+ resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
requiresBuild: true
optional: true
- /@esbuild/android-arm@0.19.10:
- resolution: {integrity: sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==}
+ /@esbuild/android-arm@0.19.11:
+ resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
requiresBuild: true
optional: true
- /@esbuild/android-x64@0.19.10:
- resolution: {integrity: sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==}
+ /@esbuild/android-x64@0.19.11:
+ resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
requiresBuild: true
optional: true
- /@esbuild/darwin-arm64@0.19.10:
- resolution: {integrity: sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==}
+ /@esbuild/darwin-arm64@0.19.11:
+ resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
optional: true
- /@esbuild/darwin-x64@0.19.10:
- resolution: {integrity: sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==}
+ /@esbuild/darwin-x64@0.19.11:
+ resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
requiresBuild: true
optional: true
- /@esbuild/freebsd-arm64@0.19.10:
- resolution: {integrity: sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==}
+ /@esbuild/freebsd-arm64@0.19.11:
+ resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
requiresBuild: true
optional: true
- /@esbuild/freebsd-x64@0.19.10:
- resolution: {integrity: sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==}
+ /@esbuild/freebsd-x64@0.19.11:
+ resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
requiresBuild: true
optional: true
- /@esbuild/linux-arm64@0.19.10:
- resolution: {integrity: sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==}
+ /@esbuild/linux-arm64@0.19.11:
+ resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
requiresBuild: true
optional: true
- /@esbuild/linux-arm@0.19.10:
- resolution: {integrity: sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==}
+ /@esbuild/linux-arm@0.19.11:
+ resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
requiresBuild: true
optional: true
- /@esbuild/linux-ia32@0.19.10:
- resolution: {integrity: sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==}
+ /@esbuild/linux-ia32@0.19.11:
+ resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
requiresBuild: true
optional: true
- /@esbuild/linux-loong64@0.19.10:
- resolution: {integrity: sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==}
+ /@esbuild/linux-loong64@0.19.11:
+ resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
requiresBuild: true
optional: true
- /@esbuild/linux-mips64el@0.19.10:
- resolution: {integrity: sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==}
+ /@esbuild/linux-mips64el@0.19.11:
+ resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
requiresBuild: true
optional: true
- /@esbuild/linux-ppc64@0.19.10:
- resolution: {integrity: sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==}
+ /@esbuild/linux-ppc64@0.19.11:
+ resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
requiresBuild: true
optional: true
- /@esbuild/linux-riscv64@0.19.10:
- resolution: {integrity: sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==}
+ /@esbuild/linux-riscv64@0.19.11:
+ resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
requiresBuild: true
optional: true
- /@esbuild/linux-s390x@0.19.10:
- resolution: {integrity: sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==}
+ /@esbuild/linux-s390x@0.19.11:
+ resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
requiresBuild: true
optional: true
- /@esbuild/linux-x64@0.19.10:
- resolution: {integrity: sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==}
+ /@esbuild/linux-x64@0.19.11:
+ resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
requiresBuild: true
optional: true
- /@esbuild/netbsd-x64@0.19.10:
- resolution: {integrity: sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==}
+ /@esbuild/netbsd-x64@0.19.11:
+ resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
requiresBuild: true
optional: true
- /@esbuild/openbsd-x64@0.19.10:
- resolution: {integrity: sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==}
+ /@esbuild/openbsd-x64@0.19.11:
+ resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
requiresBuild: true
optional: true
- /@esbuild/sunos-x64@0.19.10:
- resolution: {integrity: sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==}
+ /@esbuild/sunos-x64@0.19.11:
+ resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
requiresBuild: true
optional: true
- /@esbuild/win32-arm64@0.19.10:
- resolution: {integrity: sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==}
+ /@esbuild/win32-arm64@0.19.11:
+ resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
requiresBuild: true
optional: true
- /@esbuild/win32-ia32@0.19.10:
- resolution: {integrity: sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==}
+ /@esbuild/win32-ia32@0.19.11:
+ resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
requiresBuild: true
optional: true
- /@esbuild/win32-x64@0.19.10:
- resolution: {integrity: sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==}
+ /@esbuild/win32-x64@0.19.11:
+ resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
@@ -874,7 +871,7 @@ packages:
resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==}
dev: true
- /@rollup/plugin-alias@5.1.0(rollup@4.9.1):
+ /@rollup/plugin-alias@5.1.0(rollup@4.9.2):
resolution: {integrity: sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -883,11 +880,11 @@ packages:
rollup:
optional: true
dependencies:
- rollup: 4.9.1
+ rollup: 4.9.2
slash: 4.0.0
dev: true
- /@rollup/plugin-commonjs@25.0.7(rollup@4.9.1):
+ /@rollup/plugin-commonjs@25.0.7(rollup@4.9.2):
resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -896,16 +893,16 @@ packages:
rollup:
optional: true
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.9.1)
+ '@rollup/pluginutils': 5.1.0(rollup@4.9.2)
commondir: 1.0.1
estree-walker: 2.0.2
glob: 8.1.0
is-reference: 1.2.1
magic-string: 0.30.5
- rollup: 4.9.1
+ rollup: 4.9.2
dev: true
- /@rollup/plugin-json@6.1.0(rollup@4.9.1):
+ /@rollup/plugin-json@6.1.0(rollup@4.9.2):
resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -914,11 +911,11 @@ packages:
rollup:
optional: true
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.9.1)
- rollup: 4.9.1
+ '@rollup/pluginutils': 5.1.0(rollup@4.9.2)
+ rollup: 4.9.2
dev: true
- /@rollup/plugin-node-resolve@15.2.3(rollup@4.9.1):
+ /@rollup/plugin-node-resolve@15.2.3(rollup@4.9.2):
resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -927,16 +924,16 @@ packages:
rollup:
optional: true
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.9.1)
+ '@rollup/pluginutils': 5.1.0(rollup@4.9.2)
'@types/resolve': 1.20.2
deepmerge: 4.3.1
is-builtin-module: 3.2.1
is-module: 1.0.0
resolve: 1.22.8
- rollup: 4.9.1
+ rollup: 4.9.2
dev: true
- /@rollup/plugin-replace@5.0.5(rollup@4.9.1):
+ /@rollup/plugin-replace@5.0.5(rollup@4.9.2):
resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -945,12 +942,12 @@ packages:
rollup:
optional: true
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.9.1)
+ '@rollup/pluginutils': 5.1.0(rollup@4.9.2)
magic-string: 0.30.5
- rollup: 4.9.1
+ rollup: 4.9.2
dev: true
- /@rollup/pluginutils@5.1.0(rollup@4.9.1):
+ /@rollup/pluginutils@5.1.0(rollup@4.9.2):
resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -962,95 +959,95 @@ packages:
'@types/estree': 1.0.5
estree-walker: 2.0.2
picomatch: 2.3.1
- rollup: 4.9.1
+ rollup: 4.9.2
dev: true
- /@rollup/rollup-android-arm-eabi@4.9.1:
- resolution: {integrity: sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==}
+ /@rollup/rollup-android-arm-eabi@4.9.2:
+ resolution: {integrity: sha512-RKzxFxBHq9ysZ83fn8Iduv3A283K7zPPYuhL/z9CQuyFrjwpErJx0h4aeb/bnJ+q29GRLgJpY66ceQ/Wcsn3wA==}
cpu: [arm]
os: [android]
requiresBuild: true
optional: true
- /@rollup/rollup-android-arm64@4.9.1:
- resolution: {integrity: sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==}
+ /@rollup/rollup-android-arm64@4.9.2:
+ resolution: {integrity: sha512-yZ+MUbnwf3SHNWQKJyWh88ii2HbuHCFQnAYTeeO1Nb8SyEiWASEi5dQUygt3ClHWtA9My9RQAYkjvrsZ0WK8Xg==}
cpu: [arm64]
os: [android]
requiresBuild: true
optional: true
- /@rollup/rollup-darwin-arm64@4.9.1:
- resolution: {integrity: sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==}
+ /@rollup/rollup-darwin-arm64@4.9.2:
+ resolution: {integrity: sha512-vqJ/pAUh95FLc/G/3+xPqlSBgilPnauVf2EXOQCZzhZJCXDXt/5A8mH/OzU6iWhb3CNk5hPJrh8pqJUPldN5zw==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
optional: true
- /@rollup/rollup-darwin-x64@4.9.1:
- resolution: {integrity: sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==}
+ /@rollup/rollup-darwin-x64@4.9.2:
+ resolution: {integrity: sha512-otPHsN5LlvedOprd3SdfrRNhOahhVBwJpepVKUN58L0RnC29vOAej1vMEaVU6DadnpjivVsNTM5eNt0CcwTahw==}
cpu: [x64]
os: [darwin]
requiresBuild: true
optional: true
- /@rollup/rollup-linux-arm-gnueabihf@4.9.1:
- resolution: {integrity: sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==}
+ /@rollup/rollup-linux-arm-gnueabihf@4.9.2:
+ resolution: {integrity: sha512-ewG5yJSp+zYKBYQLbd1CUA7b1lSfIdo9zJShNTyc2ZP1rcPrqyZcNlsHgs7v1zhgfdS+kW0p5frc0aVqhZCiYQ==}
cpu: [arm]
os: [linux]
requiresBuild: true
optional: true
- /@rollup/rollup-linux-arm64-gnu@4.9.1:
- resolution: {integrity: sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==}
+ /@rollup/rollup-linux-arm64-gnu@4.9.2:
+ resolution: {integrity: sha512-pL6QtV26W52aCWTG1IuFV3FMPL1m4wbsRG+qijIvgFO/VBsiXJjDPE/uiMdHBAO6YcpV4KvpKtd0v3WFbaxBtg==}
cpu: [arm64]
os: [linux]
requiresBuild: true
optional: true
- /@rollup/rollup-linux-arm64-musl@4.9.1:
- resolution: {integrity: sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==}
+ /@rollup/rollup-linux-arm64-musl@4.9.2:
+ resolution: {integrity: sha512-On+cc5EpOaTwPSNetHXBuqylDW+765G/oqB9xGmWU3npEhCh8xu0xqHGUA+4xwZLqBbIZNcBlKSIYfkBm6ko7g==}
cpu: [arm64]
os: [linux]
requiresBuild: true
optional: true
- /@rollup/rollup-linux-riscv64-gnu@4.9.1:
- resolution: {integrity: sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==}
+ /@rollup/rollup-linux-riscv64-gnu@4.9.2:
+ resolution: {integrity: sha512-Wnx/IVMSZ31D/cO9HSsU46FjrPWHqtdF8+0eyZ1zIB5a6hXaZXghUKpRrC4D5DcRTZOjml2oBhXoqfGYyXKipw==}
cpu: [riscv64]
os: [linux]
requiresBuild: true
optional: true
- /@rollup/rollup-linux-x64-gnu@4.9.1:
- resolution: {integrity: sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==}
+ /@rollup/rollup-linux-x64-gnu@4.9.2:
+ resolution: {integrity: sha512-ym5x1cj4mUAMBummxxRkI4pG5Vht1QMsJexwGP8547TZ0sox9fCLDHw9KCH9c1FO5d9GopvkaJsBIOkTKxksdw==}
cpu: [x64]
os: [linux]
requiresBuild: true
optional: true
- /@rollup/rollup-linux-x64-musl@4.9.1:
- resolution: {integrity: sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==}
+ /@rollup/rollup-linux-x64-musl@4.9.2:
+ resolution: {integrity: sha512-m0hYELHGXdYx64D6IDDg/1vOJEaiV8f1G/iO+tejvRCJNSwK4jJ15e38JQy5Q6dGkn1M/9KcyEOwqmlZ2kqaZg==}
cpu: [x64]
os: [linux]
requiresBuild: true
optional: true
- /@rollup/rollup-win32-arm64-msvc@4.9.1:
- resolution: {integrity: sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==}
+ /@rollup/rollup-win32-arm64-msvc@4.9.2:
+ resolution: {integrity: sha512-x1CWburlbN5JjG+juenuNa4KdedBdXLjZMp56nHFSHTOsb/MI2DYiGzLtRGHNMyydPGffGId+VgjOMrcltOksA==}
cpu: [arm64]
os: [win32]
requiresBuild: true
optional: true
- /@rollup/rollup-win32-ia32-msvc@4.9.1:
- resolution: {integrity: sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==}
+ /@rollup/rollup-win32-ia32-msvc@4.9.2:
+ resolution: {integrity: sha512-VVzCB5yXR1QlfsH1Xw1zdzQ4Pxuzv+CPr5qpElpKhVxlxD3CRdfubAG9mJROl6/dmj5gVYDDWk8sC+j9BI9/kQ==}
cpu: [ia32]
os: [win32]
requiresBuild: true
optional: true
- /@rollup/rollup-win32-x64-msvc@4.9.1:
- resolution: {integrity: sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==}
+ /@rollup/rollup-win32-x64-msvc@4.9.2:
+ resolution: {integrity: sha512-SYRedJi+mweatroB+6TTnJYLts0L0bosg531xnQWtklOI6dezEagx4Q0qDyvRdK+qgdA3YZpjjGuPFtxBmddBA==}
cpu: [x64]
os: [win32]
requiresBuild: true
@@ -1078,7 +1075,7 @@ packages:
resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==}
dependencies:
'@types/connect': 3.4.38
- '@types/node': 20.10.5
+ '@types/node': 20.10.6
dev: true
/@types/braces@3.0.4:
@@ -1094,13 +1091,13 @@ packages:
/@types/connect@3.4.38:
resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
dependencies:
- '@types/node': 20.10.5
+ '@types/node': 20.10.6
dev: true
/@types/cross-spawn@6.0.6:
resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==}
dependencies:
- '@types/node': 20.10.5
+ '@types/node': 20.10.6
dev: true
/@types/debug@4.1.12:
@@ -1120,7 +1117,7 @@ packages:
/@types/express-serve-static-core@4.17.41:
resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==}
dependencies:
- '@types/node': 20.10.5
+ '@types/node': 20.10.6
'@types/qs': 6.9.11
'@types/range-parser': 1.2.7
'@types/send': 0.17.4
@@ -1139,7 +1136,7 @@ packages:
resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==}
dependencies:
'@types/jsonfile': 6.1.4
- '@types/node': 20.10.5
+ '@types/node': 20.10.6
dev: true
/@types/http-errors@2.0.4:
@@ -1155,7 +1152,7 @@ packages:
/@types/jsonfile@6.1.4:
resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==}
dependencies:
- '@types/node': 20.10.5
+ '@types/node': 20.10.6
dev: true
/@types/linkify-it@3.0.5:
@@ -1230,8 +1227,8 @@ packages:
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
dev: true
- /@types/node@20.10.5:
- resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==}
+ /@types/node@20.10.6:
+ resolution: {integrity: sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==}
dependencies:
undici-types: 5.26.5
@@ -1248,7 +1245,7 @@ packages:
/@types/prompts@2.4.9:
resolution: {integrity: sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==}
dependencies:
- '@types/node': 20.10.5
+ '@types/node': 20.10.6
kleur: 3.0.3
dev: true
@@ -1267,14 +1264,14 @@ packages:
/@types/sax@1.2.7:
resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==}
dependencies:
- '@types/node': 20.10.5
+ '@types/node': 20.10.6
dev: true
/@types/send@0.17.4:
resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==}
dependencies:
'@types/mime': 1.3.5
- '@types/node': 20.10.5
+ '@types/node': 20.10.6
dev: true
/@types/serve-static@1.15.5:
@@ -1282,7 +1279,7 @@ packages:
dependencies:
'@types/http-errors': 2.0.4
'@types/mime': 3.0.4
- '@types/node': 20.10.5
+ '@types/node': 20.10.6
dev: true
/@types/sizzle@2.3.8:
@@ -1293,49 +1290,49 @@ packages:
resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
dev: false
- /@vitejs/plugin-vue@5.0.0(vite@5.0.10)(vue@3.4.0-rc.2):
- resolution: {integrity: sha512-7x5e8X4J1Wi4NxudGjJBd2OFerAi/0nzF80ojCzvfj347WVr0YSn82C8BSsgwSHzlk9Kw5xnZfj0/7RLnNwP5w==}
+ /@vitejs/plugin-vue@5.0.2(vite@5.0.10)(vue@3.4.3):
+ resolution: {integrity: sha512-kEjJHrLb5ePBvjD0SPZwJlw1QTRcjjCA9sB5VyfonoXVBxTS7TMnqL6EkLt1Eu61RDeiuZ/WN9Hf6PxXhPI2uA==}
engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies:
vite: ^5.0.0
vue: ^3.2.25
dependencies:
- vite: 5.0.10(@types/node@20.10.5)
- vue: 3.4.0-rc.2(typescript@5.3.3)
+ vite: 5.0.10(@types/node@20.10.6)
+ vue: 3.4.3(typescript@5.3.3)
dev: false
- /@vitest/expect@1.1.0:
- resolution: {integrity: sha512-9IE2WWkcJo2BR9eqtY5MIo3TPmS50Pnwpm66A6neb2hvk/QSLfPXBz2qdiwUOQkwyFuuXEUj5380CbwfzW4+/w==}
+ /@vitest/expect@1.1.1:
+ resolution: {integrity: sha512-Qpw01C2Hyb3085jBkOJLQ7HRX0Ncnh2qV4p+xWmmhcIUlMykUF69zsnZ1vPmAjZpomw9+5tWEGOQ0GTfR8U+kA==}
dependencies:
- '@vitest/spy': 1.1.0
- '@vitest/utils': 1.1.0
+ '@vitest/spy': 1.1.1
+ '@vitest/utils': 1.1.1
chai: 4.3.10
dev: true
- /@vitest/runner@1.1.0:
- resolution: {integrity: sha512-zdNLJ00pm5z/uhbWF6aeIJCGMSyTyWImy3Fcp9piRGvueERFlQFbUwCpzVce79OLm2UHk9iwaMSOaU9jVHgNVw==}
+ /@vitest/runner@1.1.1:
+ resolution: {integrity: sha512-8HokyJo1SnSi3uPFKfWm/Oq1qDwLC4QDcVsqpXIXwsRPAg3gIDh8EbZ1ri8cmQkBxdOu62aOF9B4xcqJhvt4xQ==}
dependencies:
- '@vitest/utils': 1.1.0
+ '@vitest/utils': 1.1.1
p-limit: 5.0.0
pathe: 1.1.1
dev: true
- /@vitest/snapshot@1.1.0:
- resolution: {integrity: sha512-5O/wyZg09V5qmNmAlUgCBqflvn2ylgsWJRRuPrnHEfDNT6tQpQ8O1isNGgo+VxofISHqz961SG3iVvt3SPK/QQ==}
+ /@vitest/snapshot@1.1.1:
+ resolution: {integrity: sha512-WnMHjv4VdHLbFGgCdVVvyRkRPnOKN75JJg+LLTdr6ah7YnL75W+7CTIMdzPEPzaDxA8r5yvSVlc1d8lH3yE28w==}
dependencies:
magic-string: 0.30.5
pathe: 1.1.1
pretty-format: 29.7.0
dev: true
- /@vitest/spy@1.1.0:
- resolution: {integrity: sha512-sNOVSU/GE+7+P76qYo+VXdXhXffzWZcYIPQfmkiRxaNCSPiLANvQx5Mx6ZURJ/ndtEkUJEpvKLXqAYTKEY+lTg==}
+ /@vitest/spy@1.1.1:
+ resolution: {integrity: sha512-hDU2KkOTfFp4WFFPWwHFauddwcKuGQ7gF6Un/ZZkCogoAiTMN7/7YKvUDbywPZZ754iCQGjdUmXN3t4k0jm1IQ==}
dependencies:
tinyspy: 2.2.0
dev: true
- /@vitest/utils@1.1.0:
- resolution: {integrity: sha512-z+s510fKmYz4Y41XhNs3vcuFTFhcij2YF7F8VQfMEYAAUfqQh0Zfg7+w9xdgFGhPf3tX3TicAe+8BDITk6ampQ==}
+ /@vitest/utils@1.1.1:
+ resolution: {integrity: sha512-E9LedH093vST/JuBSyHLFMpxJKW3dLhe/flUSPFedoyj4wKiFX7Jm8gYLtOIiin59dgrssfmFv0BJ1u8P/LC/A==}
dependencies:
diff-sequences: 29.6.3
loupe: 2.3.7
@@ -1361,66 +1358,48 @@ packages:
path-browserify: 1.0.1
dev: true
- /@vue/compiler-core@3.3.13:
- resolution: {integrity: sha512-bwi9HShGu7uaZLOErZgsH2+ojsEdsjerbf2cMXPwmvcgZfVPZ2BVZzCVnwZBxTAYd6Mzbmf6izcUNDkWnBBQ6A==}
- dependencies:
- '@babel/parser': 7.23.6
- '@vue/shared': 3.3.13
- estree-walker: 2.0.2
- source-map-js: 1.0.2
- dev: true
-
- /@vue/compiler-core@3.4.0-rc.2:
- resolution: {integrity: sha512-UMcGc7JUJyOA/HR3PoGewcFSJK8oQ3OQc7yLsCa4K9HvvL8A7/GVcuVIgP0HpSoEI1vPi2XzyFzt+Z87B+0trw==}
+ /@vue/compiler-core@3.4.3:
+ resolution: {integrity: sha512-u8jzgFg0EDtSrb/hG53Wwh1bAOQFtc1ZCegBpA/glyvTlgHl+tq13o1zvRfLbegYUw/E4mSTGOiCnAJ9SJ+lsg==}
dependencies:
'@babel/parser': 7.23.6
- '@vue/shared': 3.4.0-rc.2
+ '@vue/shared': 3.4.3
entities: 4.5.0
estree-walker: 2.0.2
source-map-js: 1.0.2
- dev: false
-
- /@vue/compiler-dom@3.3.13:
- resolution: {integrity: sha512-EYRDpbLadGtNL0Gph+HoKiYqXLqZ0xSSpR5Dvnu/Ep7ggaCbjRDIus1MMxTS2Qm0koXED4xSlvTZaTnI8cYAsw==}
- dependencies:
- '@vue/compiler-core': 3.3.13
- '@vue/shared': 3.3.13
- dev: true
- /@vue/compiler-dom@3.4.0-rc.2:
- resolution: {integrity: sha512-9a2YlLtxbP9cIJBNesiebhYorTlApT3zCwQGbeLdwbvqZKAUTWaNlnGdoZoFi1FFlfMvGF2f+GNjGXgDtKj9jQ==}
+ /@vue/compiler-dom@3.4.3:
+ resolution: {integrity: sha512-oGF1E9/htI6JWj/lTJgr6UgxNCtNHbM6xKVreBWeZL9QhRGABRVoWGAzxmtBfSOd+w0Zi5BY0Es/tlJrN6WgEg==}
dependencies:
- '@vue/compiler-core': 3.4.0-rc.2
- '@vue/shared': 3.4.0-rc.2
- dev: false
+ '@vue/compiler-core': 3.4.3
+ '@vue/shared': 3.4.3
- /@vue/compiler-sfc@3.4.0-rc.2:
- resolution: {integrity: sha512-ZKUWH4jMxyGCVpVW/7r4lmnLoMOcjFHlX+RGGarozeaH8wIap/IN1v1WM6h2BnY+yhTV5gykg7EhhSRLyX9rpA==}
+ /@vue/compiler-sfc@3.4.3:
+ resolution: {integrity: sha512-NuJqb5is9I4uzv316VRUDYgIlPZCG8D+ARt5P4t5UDShIHKL25J3TGZAUryY/Aiy0DsY7srJnZL5ryB6DD63Zw==}
dependencies:
'@babel/parser': 7.23.6
- '@vue/compiler-core': 3.4.0-rc.2
- '@vue/compiler-dom': 3.4.0-rc.2
- '@vue/compiler-ssr': 3.4.0-rc.2
- '@vue/shared': 3.4.0-rc.2
+ '@vue/compiler-core': 3.4.3
+ '@vue/compiler-dom': 3.4.3
+ '@vue/compiler-ssr': 3.4.3
+ '@vue/shared': 3.4.3
estree-walker: 2.0.2
magic-string: 0.30.5
postcss: 8.4.32
source-map-js: 1.0.2
dev: false
- /@vue/compiler-ssr@3.4.0-rc.2:
- resolution: {integrity: sha512-+XvAn6TKYJ+Y2xsvjMhE0auC31/i1TVPrkdoXKLMXYAK0VvS6EPhtVN2ii9A2oP1CLsFa/VQErTzXtmnsAwuPA==}
+ /@vue/compiler-ssr@3.4.3:
+ resolution: {integrity: sha512-wnYQtMBkeFSxgSSQbYGQeXPhQacQiog2c6AlvMldQH6DB+gSXK/0F6DVXAJfEiuBSgBhUc8dwrrG5JQcqwalsA==}
dependencies:
- '@vue/compiler-dom': 3.4.0-rc.2
- '@vue/shared': 3.4.0-rc.2
+ '@vue/compiler-dom': 3.4.3
+ '@vue/shared': 3.4.3
dev: false
/@vue/devtools-api@6.5.1:
resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==}
dev: false
- /@vue/language-core@1.8.26(typescript@5.3.3):
- resolution: {integrity: sha512-9cmza/Y2YTiOnKZ0Mi9zsNn7Irw+aKirP+5LLWVSNaL3fjKJjW1cD3HGBckasY2RuVh4YycvdA9/Q6EBpVd/7Q==}
+ /@vue/language-core@1.8.27(typescript@5.3.3):
+ resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
@@ -1429,8 +1408,8 @@ packages:
dependencies:
'@volar/language-core': 1.11.1
'@volar/source-map': 1.11.1
- '@vue/compiler-dom': 3.3.13
- '@vue/shared': 3.3.13
+ '@vue/compiler-dom': 3.4.3
+ '@vue/shared': 3.4.3
computeds: 0.0.1
minimatch: 9.0.3
muggle-string: 0.3.1
@@ -1439,59 +1418,54 @@ packages:
vue-template-compiler: 2.7.16
dev: true
- /@vue/reactivity@3.4.0-rc.2:
- resolution: {integrity: sha512-Ls8agGUZGz+T30KfP0euW12lbRQfgm/gjKTp6oyArEXS6SD3XnQ718K6fmtVjL3DlfM0UI1+QpL49WcDdN35qg==}
+ /@vue/reactivity@3.4.3:
+ resolution: {integrity: sha512-q5f9HLDU+5aBKizXHAx0w4whkIANs1Muiq9R5YXm0HtorSlflqv9u/ohaMxuuhHWCji4xqpQ1eL04WvmAmGnFg==}
dependencies:
- '@vue/shared': 3.4.0-rc.2
+ '@vue/shared': 3.4.3
dev: false
- /@vue/runtime-core@3.4.0-rc.2:
- resolution: {integrity: sha512-dE0sP7PiBLrKxGk/F+bdDrTUCg04o32KrZo02mnSUWnlBPjg9ymHB7t65/U4Cru4yG81Wpy9U4beIDzeK1YMWw==}
+ /@vue/runtime-core@3.4.3:
+ resolution: {integrity: sha512-C1r6QhB1qY7D591RCSFhMULyzL9CuyrGc+3PpB0h7dU4Qqw6GNyo4BNFjHZVvsWncrUlKX3DIKg0Y7rNNr06NQ==}
dependencies:
- '@vue/reactivity': 3.4.0-rc.2
- '@vue/shared': 3.4.0-rc.2
+ '@vue/reactivity': 3.4.3
+ '@vue/shared': 3.4.3
dev: false
- /@vue/runtime-dom@3.4.0-rc.2:
- resolution: {integrity: sha512-gsyLBJeMWh5wg1MqnlDy5/0uDMrnJGxuLxEL+rAEc/OlTFX5woSHwjoypE/E7oBwO4z/nETRSzY/ph+Zqh/h9Q==}
+ /@vue/runtime-dom@3.4.3:
+ resolution: {integrity: sha512-wrsprg7An5Ec+EhPngWdPuzkp0BEUxAKaQtN9dPU/iZctPyD9aaXmVtehPJerdQxQale6gEnhpnfywNw3zOv2A==}
dependencies:
- '@vue/runtime-core': 3.4.0-rc.2
- '@vue/shared': 3.4.0-rc.2
+ '@vue/runtime-core': 3.4.3
+ '@vue/shared': 3.4.3
csstype: 3.1.3
dev: false
- /@vue/server-renderer@3.4.0-rc.2(vue@3.4.0-rc.2):
- resolution: {integrity: sha512-5+9/+8K3bPAIev1S49T1gw+IhelWUl1p6Ypj+yb4GHCpsRlB7FATNF7bGnQ10wAlrVgjfuG+0m4GOzqOPhrncQ==}
+ /@vue/server-renderer@3.4.3(vue@3.4.3):
+ resolution: {integrity: sha512-BUxt8oVGMKKsqSkM1uU3d3Houyfy4WAc2SpSQRebNd+XJGATVkW/rO129jkyL+kpB/2VRKzE63zwf5RtJ3XuZw==}
peerDependencies:
- vue: 3.4.0-rc.2
+ vue: 3.4.3
dependencies:
- '@vue/compiler-ssr': 3.4.0-rc.2
- '@vue/shared': 3.4.0-rc.2
- vue: 3.4.0-rc.2(typescript@5.3.3)
+ '@vue/compiler-ssr': 3.4.3
+ '@vue/shared': 3.4.3
+ vue: 3.4.3(typescript@5.3.3)
dev: false
- /@vue/shared@3.3.13:
- resolution: {integrity: sha512-/zYUwiHD8j7gKx2argXEMCUXVST6q/21DFU0sTfNX0URJroCe3b1UF6vLJ3lQDfLNIiiRl2ONp7Nh5UVWS6QnA==}
- dev: true
-
- /@vue/shared@3.4.0-rc.2:
- resolution: {integrity: sha512-ZynnK2vWLBcCEdMsyHUWIzbqhRjnTSv/eolFO+okzf5LLQqlasi/7qeo4mYzGhyPvGb0XltxCZmzTtTcJtlxkw==}
- dev: false
+ /@vue/shared@3.4.3:
+ resolution: {integrity: sha512-rIwlkkP1n4uKrRzivAKPZIEkHiuwY5mmhMJ2nZKCBLz8lTUlE73rQh4n1OnnMurXt1vcUNyH4ZPfdh8QweTjpQ==}
- /@vueuse/core@10.7.0(vue@3.4.0-rc.2):
- resolution: {integrity: sha512-4EUDESCHtwu44ZWK3Gc/hZUVhVo/ysvdtwocB5vcauSV4B7NiGY5972WnsojB3vRNdxvAt7kzJWE2h9h7C9d5w==}
+ /@vueuse/core@10.7.1(vue@3.4.3):
+ resolution: {integrity: sha512-74mWHlaesJSWGp1ihg76vAnfVq9NTv1YT0SYhAQ6zwFNdBkkP+CKKJmVOEHcdSnLXCXYiL5e7MaewblfiYLP7g==}
dependencies:
'@types/web-bluetooth': 0.0.20
- '@vueuse/metadata': 10.7.0
- '@vueuse/shared': 10.7.0(vue@3.4.0-rc.2)
- vue-demi: 0.14.6(vue@3.4.0-rc.2)
+ '@vueuse/metadata': 10.7.1
+ '@vueuse/shared': 10.7.1(vue@3.4.3)
+ vue-demi: 0.14.6(vue@3.4.3)
transitivePeerDependencies:
- '@vue/composition-api'
- vue
dev: false
- /@vueuse/integrations@10.7.0(focus-trap@7.5.4)(vue@3.4.0-rc.2):
- resolution: {integrity: sha512-rxiMYgS+91n93qXpHZF9NbHhppWY6IJyVTDxt4acyChL0zZVx7P8FAAfpF1qVK8e4wfjerhpEiMJ0IZ1GWUZ2A==}
+ /@vueuse/integrations@10.7.1(focus-trap@7.5.4)(vue@3.4.3):
+ resolution: {integrity: sha512-cKo5LEeKVHdBRBtMTOrDPdR0YNtrmN9IBfdcnY2P3m5LHVrsD0xiHUtAH1WKjHQRIErZG6rJUa6GA4tWZt89Og==}
peerDependencies:
async-validator: '*'
axios: '*'
@@ -1531,23 +1505,23 @@ packages:
universal-cookie:
optional: true
dependencies:
- '@vueuse/core': 10.7.0(vue@3.4.0-rc.2)
- '@vueuse/shared': 10.7.0(vue@3.4.0-rc.2)
+ '@vueuse/core': 10.7.1(vue@3.4.3)
+ '@vueuse/shared': 10.7.1(vue@3.4.3)
focus-trap: 7.5.4
- vue-demi: 0.14.6(vue@3.4.0-rc.2)
+ vue-demi: 0.14.6(vue@3.4.3)
transitivePeerDependencies:
- '@vue/composition-api'
- vue
dev: false
- /@vueuse/metadata@10.7.0:
- resolution: {integrity: sha512-GlaH7tKP2iBCZ3bHNZ6b0cl9g0CJK8lttkBNUX156gWvNYhTKEtbweWLm9rxCPIiwzYcr/5xML6T8ZUEt+DkvA==}
+ /@vueuse/metadata@10.7.1:
+ resolution: {integrity: sha512-jX8MbX5UX067DYVsbtrmKn6eG6KMcXxLRLlurGkZku5ZYT3vxgBjui2zajvUZ18QLIjrgBkFRsu7CqTAg18QFw==}
dev: false
- /@vueuse/shared@10.7.0(vue@3.4.0-rc.2):
- resolution: {integrity: sha512-kc00uV6CiaTdc3i1CDC4a3lBxzaBE9AgYNtFN87B5OOscqeWElj/uza8qVDmk7/U8JbqoONLbtqiLJ5LGRuqlw==}
+ /@vueuse/shared@10.7.1(vue@3.4.3):
+ resolution: {integrity: sha512-v0jbRR31LSgRY/C5i5X279A/WQjD6/JsMzGa+eqt658oJ75IvQXAeONmwvEMrvJQKnRElq/frzBR7fhmWY5uLw==}
dependencies:
- vue-demi: 0.14.6(vue@3.4.0-rc.2)
+ vue-demi: 0.14.6(vue@3.4.3)
transitivePeerDependencies:
- '@vue/composition-api'
- vue
@@ -1574,8 +1548,8 @@ packages:
engines: {node: '>=0.4.0'}
dev: true
- /acorn@8.11.2:
- resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==}
+ /acorn@8.11.3:
+ resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
engines: {node: '>=0.4.0'}
hasBin: true
dev: true
@@ -1708,10 +1682,10 @@ packages:
engines: {node: '>= 0.4'}
dev: true
- /axios@1.6.2(debug@4.3.4):
- resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==}
+ /axios@1.6.3(debug@4.3.4):
+ resolution: {integrity: sha512-fWyNdeawGam70jXSVlKl+SUNVcL6j6W79CuSIPfi6HnDUmSCH6gyUys/HrqHeA/wU0Az41rRgean494d0Jb+ww==}
dependencies:
- follow-redirects: 1.15.3(debug@4.3.4)
+ follow-redirects: 1.15.4(debug@4.3.4)
form-data: 4.0.0
proxy-from-env: 1.1.0
transitivePeerDependencies:
@@ -2333,35 +2307,35 @@ packages:
is-symbol: 1.0.4
dev: true
- /esbuild@0.19.10:
- resolution: {integrity: sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==}
+ /esbuild@0.19.11:
+ resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==}
engines: {node: '>=12'}
hasBin: true
requiresBuild: true
optionalDependencies:
- '@esbuild/aix-ppc64': 0.19.10
- '@esbuild/android-arm': 0.19.10
- '@esbuild/android-arm64': 0.19.10
- '@esbuild/android-x64': 0.19.10
- '@esbuild/darwin-arm64': 0.19.10
- '@esbuild/darwin-x64': 0.19.10
- '@esbuild/freebsd-arm64': 0.19.10
- '@esbuild/freebsd-x64': 0.19.10
- '@esbuild/linux-arm': 0.19.10
- '@esbuild/linux-arm64': 0.19.10
- '@esbuild/linux-ia32': 0.19.10
- '@esbuild/linux-loong64': 0.19.10
- '@esbuild/linux-mips64el': 0.19.10
- '@esbuild/linux-ppc64': 0.19.10
- '@esbuild/linux-riscv64': 0.19.10
- '@esbuild/linux-s390x': 0.19.10
- '@esbuild/linux-x64': 0.19.10
- '@esbuild/netbsd-x64': 0.19.10
- '@esbuild/openbsd-x64': 0.19.10
- '@esbuild/sunos-x64': 0.19.10
- '@esbuild/win32-arm64': 0.19.10
- '@esbuild/win32-ia32': 0.19.10
- '@esbuild/win32-x64': 0.19.10
+ '@esbuild/aix-ppc64': 0.19.11
+ '@esbuild/android-arm': 0.19.11
+ '@esbuild/android-arm64': 0.19.11
+ '@esbuild/android-x64': 0.19.11
+ '@esbuild/darwin-arm64': 0.19.11
+ '@esbuild/darwin-x64': 0.19.11
+ '@esbuild/freebsd-arm64': 0.19.11
+ '@esbuild/freebsd-x64': 0.19.11
+ '@esbuild/linux-arm': 0.19.11
+ '@esbuild/linux-arm64': 0.19.11
+ '@esbuild/linux-ia32': 0.19.11
+ '@esbuild/linux-loong64': 0.19.11
+ '@esbuild/linux-mips64el': 0.19.11
+ '@esbuild/linux-ppc64': 0.19.11
+ '@esbuild/linux-riscv64': 0.19.11
+ '@esbuild/linux-s390x': 0.19.11
+ '@esbuild/linux-x64': 0.19.11
+ '@esbuild/netbsd-x64': 0.19.11
+ '@esbuild/openbsd-x64': 0.19.11
+ '@esbuild/sunos-x64': 0.19.11
+ '@esbuild/win32-arm64': 0.19.11
+ '@esbuild/win32-ia32': 0.19.11
+ '@esbuild/win32-x64': 0.19.11
/escape-goat@3.0.0:
resolution: {integrity: sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw==}
@@ -2460,8 +2434,8 @@ packages:
tabbable: 6.2.0
dev: false
- /follow-redirects@1.15.3(debug@4.3.4):
- resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==}
+ /follow-redirects@1.15.4(debug@4.3.4):
+ resolution: {integrity: sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==}
engines: {node: '>=4.0'}
peerDependencies:
debug: '*'
@@ -3352,7 +3326,7 @@ packages:
/mlly@1.4.2:
resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==}
dependencies:
- acorn: 8.11.2
+ acorn: 8.11.3
pathe: 1.1.1
pkg-types: 1.0.3
ufo: 1.3.2
@@ -3361,6 +3335,7 @@ packages:
/mrmime@2.0.0:
resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
engines: {node: '>=10'}
+ dev: true
/ms@2.0.0:
resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
@@ -3543,8 +3518,8 @@ packages:
p-limit: 4.0.0
dev: true
- /p-map@7.0.0:
- resolution: {integrity: sha512-EZl03dLKv3RypkrjlevZoNwQMSy4bAblWcR18zhonktnN4fUs3asFQKSe0awn982omGxamvbejqQKQYDJYHCEg==}
+ /p-map@7.0.1:
+ resolution: {integrity: sha512-2wnaR0XL/FDOj+TgpDuRb2KTjLnu3Fma6b1ZUwGY7LcqenMcvP/YFpjpbPKY6WVGsbuJZRuoUz8iPrt8ORnAFw==}
engines: {node: '>=18'}
dev: true
@@ -3767,7 +3742,7 @@ packages:
dependencies:
find-up: 6.3.0
read-pkg: 8.1.0
- type-fest: 4.8.3
+ type-fest: 4.9.0
dev: true
/read-pkg@3.0.0:
@@ -3786,7 +3761,7 @@ packages:
'@types/normalize-package-data': 2.4.4
normalize-package-data: 6.0.0
parse-json: 7.1.1
- type-fest: 4.8.3
+ type-fest: 4.9.0
dev: true
/readdirp@3.6.0:
@@ -3848,7 +3823,7 @@ packages:
glob: 10.3.10
dev: true
- /rollup-plugin-dts@6.1.0(rollup@4.9.1)(typescript@5.3.3):
+ /rollup-plugin-dts@6.1.0(rollup@4.9.2)(typescript@5.3.3):
resolution: {integrity: sha512-ijSCPICkRMDKDLBK9torss07+8dl9UpY9z1N/zTeA1cIqdzMlpkV3MOOC7zukyvQfDyxa1s3Dl2+DeiP/G6DOw==}
engines: {node: '>=16'}
peerDependencies:
@@ -3856,47 +3831,47 @@ packages:
typescript: ^4.5 || ^5.0
dependencies:
magic-string: 0.30.5
- rollup: 4.9.1
+ rollup: 4.9.2
typescript: 5.3.3
optionalDependencies:
'@babel/code-frame': 7.23.5
dev: true
- /rollup-plugin-esbuild@6.1.0(esbuild@0.19.10)(rollup@4.9.1)(supports-color@9.4.0):
+ /rollup-plugin-esbuild@6.1.0(esbuild@0.19.11)(rollup@4.9.2)(supports-color@9.4.0):
resolution: {integrity: sha512-HPpXU65V8bSpW8eSYPahtUJaJHmbxJGybuf/M8B3bz/6i11YaYHlNNJIQ38gSEV0FyohQOgVxJ2YMEEZtEmwvA==}
engines: {node: '>=14.18.0'}
peerDependencies:
esbuild: '>=0.18.0'
rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.9.1)
+ '@rollup/pluginutils': 5.1.0(rollup@4.9.2)
debug: 4.3.4(supports-color@9.4.0)
es-module-lexer: 1.4.1
- esbuild: 0.19.10
+ esbuild: 0.19.11
get-tsconfig: 4.7.2
- rollup: 4.9.1
+ rollup: 4.9.2
transitivePeerDependencies:
- supports-color
dev: true
- /rollup@4.9.1:
- resolution: {integrity: sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==}
+ /rollup@4.9.2:
+ resolution: {integrity: sha512-66RB8OtFKUTozmVEh3qyNfH+b+z2RXBVloqO2KCC/pjFaGaHtxP9fVfOQKPSGXg2mElmjmxjW/fZ7iKrEpMH5Q==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.9.1
- '@rollup/rollup-android-arm64': 4.9.1
- '@rollup/rollup-darwin-arm64': 4.9.1
- '@rollup/rollup-darwin-x64': 4.9.1
- '@rollup/rollup-linux-arm-gnueabihf': 4.9.1
- '@rollup/rollup-linux-arm64-gnu': 4.9.1
- '@rollup/rollup-linux-arm64-musl': 4.9.1
- '@rollup/rollup-linux-riscv64-gnu': 4.9.1
- '@rollup/rollup-linux-x64-gnu': 4.9.1
- '@rollup/rollup-linux-x64-musl': 4.9.1
- '@rollup/rollup-win32-arm64-msvc': 4.9.1
- '@rollup/rollup-win32-ia32-msvc': 4.9.1
- '@rollup/rollup-win32-x64-msvc': 4.9.1
+ '@rollup/rollup-android-arm-eabi': 4.9.2
+ '@rollup/rollup-android-arm64': 4.9.2
+ '@rollup/rollup-darwin-arm64': 4.9.2
+ '@rollup/rollup-darwin-x64': 4.9.2
+ '@rollup/rollup-linux-arm-gnueabihf': 4.9.2
+ '@rollup/rollup-linux-arm64-gnu': 4.9.2
+ '@rollup/rollup-linux-arm64-musl': 4.9.2
+ '@rollup/rollup-linux-riscv64-gnu': 4.9.2
+ '@rollup/rollup-linux-x64-gnu': 4.9.2
+ '@rollup/rollup-linux-x64-musl': 4.9.2
+ '@rollup/rollup-win32-arm64-msvc': 4.9.2
+ '@rollup/rollup-win32-ia32-msvc': 4.9.2
+ '@rollup/rollup-win32-x64-msvc': 4.9.2
fsevents: 2.3.3
/run-parallel@1.2.0:
@@ -4005,19 +3980,20 @@ packages:
resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
dev: true
- /shikiji-core@0.9.12:
- resolution: {integrity: sha512-AYsAtsbZuq0FPT3mdskNMa+yxD5VwXrFC2sH7R2ELmncVGNYvSzR6Zlfq8iEzINq7/kKL5prtt81UFzFWTTbxQ==}
+ /shikiji-core@0.9.16:
+ resolution: {integrity: sha512-eJIK8/IpzvAGnbckCE2Qf/fOSfpjVLSosUfI3pQAnbphGXagEqiRcT/gyVtL4llqmBh0nexqRdJKMFZF3A6ayw==}
+ dev: false
- /shikiji-transformers@0.9.12:
- resolution: {integrity: sha512-ge+47j4MLTbKAnTnhTTolD9DKGW2Fhp80MV7Tb2E+p4HsJixu4slq2SDV/eFR34iH/egtyi/cjGMD8vJbNLBUA==}
+ /shikiji-transformers@0.9.16:
+ resolution: {integrity: sha512-DcvhYtLc3Xtme070vgyyeHX0XrNK0zHrKIiPk8wcptFbFUuS65qYDd/UFl68+R8KhdoSFTM9EXlBa9MhrGlbaw==}
dependencies:
- shikiji: 0.9.12
+ shikiji: 0.9.16
dev: false
- /shikiji@0.9.12:
- resolution: {integrity: sha512-jYbulSGcPKYKu2uFZOSg4lgrF7s9s8/ITFzRvczE6633wypMjnnTcRnG/mCFe6v1Dbov7bRCMsXVINBUD2FV9w==}
+ /shikiji@0.9.16:
+ resolution: {integrity: sha512-QeSwiW88gHke9deQ5Av1f6CEVPGW/riRMPT3vMDGPnASCOhBZK4TYk5ZRoa2qYLncPZS5kXKwcggccQvg3+U7Q==}
dependencies:
- shikiji-core: 0.9.12
+ shikiji-core: 0.9.16
dev: false
/side-channel@1.0.4:
@@ -4256,7 +4232,7 @@ packages:
/strip-literal@1.3.0:
resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==}
dependencies:
- acorn: 8.11.2
+ acorn: 8.11.3
dev: true
/supports-color@5.5.0:
@@ -4356,8 +4332,8 @@ packages:
engines: {node: '>=14.16'}
dev: true
- /type-fest@4.8.3:
- resolution: {integrity: sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==}
+ /type-fest@4.9.0:
+ resolution: {integrity: sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==}
engines: {node: '>=16'}
dev: true
@@ -4454,8 +4430,8 @@ packages:
engines: {node: '>= 0.8'}
dev: true
- /vite-node@1.1.0(@types/node@20.10.5)(supports-color@9.4.0):
- resolution: {integrity: sha512-jV48DDUxGLEBdHCQvxL1mEh7+naVy+nhUUUaPAZLd3FJgXuxQiewHcfeZebbJ6onDqNGkP4r3MhQ342PRlG81Q==}
+ /vite-node@1.1.1(@types/node@20.10.6)(supports-color@9.4.0):
+ resolution: {integrity: sha512-2bGE5w4jvym5v8llF6Gu1oBrmImoNSs4WmRVcavnG2me6+8UQntTqLiAMFyiAobp+ZXhj5ZFhI7SmLiFr/jrow==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
dependencies:
@@ -4463,7 +4439,7 @@ packages:
debug: 4.3.4(supports-color@9.4.0)
pathe: 1.1.1
picocolors: 1.0.0
- vite: 5.0.10(@types/node@20.10.5)
+ vite: 5.0.10(@types/node@20.10.6)
transitivePeerDependencies:
- '@types/node'
- less
@@ -4475,7 +4451,7 @@ packages:
- terser
dev: true
- /vite@5.0.10(@types/node@20.10.5):
+ /vite@5.0.10(@types/node@20.10.6):
resolution: {integrity: sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
@@ -4503,15 +4479,15 @@ packages:
terser:
optional: true
dependencies:
- '@types/node': 20.10.5
- esbuild: 0.19.10
+ '@types/node': 20.10.6
+ esbuild: 0.19.11
postcss: 8.4.32
- rollup: 4.9.1
+ rollup: 4.9.2
optionalDependencies:
fsevents: 2.3.3
- /vitest@1.1.0(@types/node@20.10.5)(supports-color@9.4.0):
- resolution: {integrity: sha512-oDFiCrw7dd3Jf06HoMtSRARivvyjHJaTxikFxuqJjO76U436PqlVw1uLn7a8OSPrhSfMGVaRakKpA2lePdw79A==}
+ /vitest@1.1.1(@types/node@20.10.6)(supports-color@9.4.0):
+ resolution: {integrity: sha512-Ry2qs4UOu/KjpXVfOCfQkTnwSXYGrqTbBZxw6reIYEFjSy1QUARRg5pxiI5BEXy+kBVntxUYNMlq4Co+2vD3fQ==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@@ -4535,12 +4511,12 @@ packages:
jsdom:
optional: true
dependencies:
- '@types/node': 20.10.5
- '@vitest/expect': 1.1.0
- '@vitest/runner': 1.1.0
- '@vitest/snapshot': 1.1.0
- '@vitest/spy': 1.1.0
- '@vitest/utils': 1.1.0
+ '@types/node': 20.10.6
+ '@vitest/expect': 1.1.1
+ '@vitest/runner': 1.1.1
+ '@vitest/snapshot': 1.1.1
+ '@vitest/spy': 1.1.1
+ '@vitest/utils': 1.1.1
acorn-walk: 8.3.1
cac: 6.7.14
chai: 4.3.10
@@ -4554,8 +4530,8 @@ packages:
strip-literal: 1.3.0
tinybench: 2.5.1
tinypool: 0.8.1
- vite: 5.0.10(@types/node@20.10.5)
- vite-node: 1.1.0(@types/node@20.10.5)(supports-color@9.4.0)
+ vite: 5.0.10(@types/node@20.10.6)
+ vite-node: 1.1.1(@types/node@20.10.6)(supports-color@9.4.0)
why-is-node-running: 2.2.2
transitivePeerDependencies:
- less
@@ -4567,7 +4543,7 @@ packages:
- terser
dev: true
- /vue-demi@0.14.6(vue@3.4.0-rc.2):
+ /vue-demi@0.14.6(vue@3.4.3):
resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==}
engines: {node: '>=12'}
hasBin: true
@@ -4579,7 +4555,7 @@ packages:
'@vue/composition-api':
optional: true
dependencies:
- vue: 3.4.0-rc.2(typescript@5.3.3)
+ vue: 3.4.3(typescript@5.3.3)
dev: false
/vue-template-compiler@2.7.16:
@@ -4589,31 +4565,31 @@ packages:
he: 1.2.0
dev: true
- /vue-tsc@1.8.26(typescript@5.3.3):
- resolution: {integrity: sha512-jMEJ4aqU/l1hdgmeExH5h1TFoN+hbho0A2ZAhHy53/947DGm7Qj/bpB85VpECOCwV00h7JYNVnvoD2ceOorB4Q==}
+ /vue-tsc@1.8.27(typescript@5.3.3):
+ resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==}
hasBin: true
peerDependencies:
typescript: '*'
dependencies:
'@volar/typescript': 1.11.1
- '@vue/language-core': 1.8.26(typescript@5.3.3)
+ '@vue/language-core': 1.8.27(typescript@5.3.3)
semver: 7.5.4
typescript: 5.3.3
dev: true
- /vue@3.4.0-rc.2(typescript@5.3.3):
- resolution: {integrity: sha512-/HP5U5Da5+0oUc4mEzn8nxRpIvIHbfozIH0GFX0Dywmm35TrlD5B5/m4QRkuigbuR9ydtzB3D7wReGUiUoJADg==}
+ /vue@3.4.3(typescript@5.3.3):
+ resolution: {integrity: sha512-GjN+culMAGv/mUbkIv8zMKItno8npcj5gWlXkSxf1SPTQf8eJ4A+YfHIvQFyL1IfuJcMl3soA7SmN1fRxbf/wA==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
- '@vue/compiler-dom': 3.4.0-rc.2
- '@vue/compiler-sfc': 3.4.0-rc.2
- '@vue/runtime-dom': 3.4.0-rc.2
- '@vue/server-renderer': 3.4.0-rc.2(vue@3.4.0-rc.2)
- '@vue/shared': 3.4.0-rc.2
+ '@vue/compiler-dom': 3.4.3
+ '@vue/compiler-sfc': 3.4.3
+ '@vue/runtime-dom': 3.4.3
+ '@vue/server-renderer': 3.4.3(vue@3.4.3)
+ '@vue/shared': 3.4.3
typescript: 5.3.3
dev: false
@@ -4622,7 +4598,7 @@ packages:
engines: {node: '>=12.0.0'}
hasBin: true
dependencies:
- axios: 1.6.2(debug@4.3.4)
+ axios: 1.6.3(debug@4.3.4)
joi: 17.11.0
lodash: 4.17.21
minimist: 1.2.8
diff --git a/src/client/app/data.ts b/src/client/app/data.ts
index 77cc80d3..c75f79e7 100644
--- a/src/client/app/data.ts
+++ b/src/client/app/data.ts
@@ -44,9 +44,9 @@ export interface VitePressData {
title: Ref
description: Ref
lang: Ref
- isDark: Ref
dir: Ref
localeIndex: Ref
+ isDark: Ref
}
// site data is a singleton
@@ -89,14 +89,12 @@ export function initData(route: Route): VitePressData {
frontmatter: computed(() => route.data.frontmatter),
params: computed(() => route.data.params),
lang: computed(() => site.value.lang),
- dir: computed(() => site.value.dir),
+ dir: computed(() => route.data.frontmatter.dir || site.value.dir),
localeIndex: computed(() => site.value.localeIndex || 'root'),
- title: computed(() => {
- return createTitle(site.value, route.data)
- }),
- description: computed(() => {
- return route.data.description || site.value.description
- }),
+ title: computed(() => createTitle(site.value, route.data)),
+ description: computed(
+ () => route.data.description || site.value.description
+ ),
isDark
}
}
diff --git a/src/client/app/index.ts b/src/client/app/index.ts
index 023b93ae..57cfe15a 100644
--- a/src/client/app/index.ts
+++ b/src/client/app/index.ts
@@ -38,13 +38,13 @@ const Theme = resolveThemeExtends(RawTheme)
const VitePressApp = defineComponent({
name: 'VitePressApp',
setup() {
- const { site } = useData()
+ const { site, lang, dir } = useData()
// change the language on the HTML element based on the current lang
onMounted(() => {
watchEffect(() => {
- document.documentElement.lang = site.value.lang
- document.documentElement.dir = site.value.dir
+ document.documentElement.lang = lang.value
+ document.documentElement.dir = dir.value
})
})
@@ -135,7 +135,11 @@ function newRouter(): Router {
pageFilePath = pageFilePath.replace(/\.js$/, '.lean.js')
}
- pageModule = import(/*@vite-ignore*/ pageFilePath)
+ if (import.meta.env.SSR) {
+ pageModule = import(/*@vite-ignore*/ pageFilePath + '?t=' + Date.now())
+ } else {
+ pageModule = import(/*@vite-ignore*/ pageFilePath)
+ }
}
if (inBrowser) {
diff --git a/src/client/app/router.ts b/src/client/app/router.ts
index 3a7d8cb5..02d98944 100644
--- a/src/client/app/router.ts
+++ b/src/client/app/router.ts
@@ -1,7 +1,6 @@
import { reactive, inject, markRaw, nextTick, readonly } from 'vue'
import type { Component, InjectionKey } from 'vue'
-import { lookup } from 'mrmime'
-import { notFoundPageData } from '../shared'
+import { notFoundPageData, treatAsHtml } from '../shared'
import type { PageData, PageDataPayload, Awaitable } from '../shared'
import { inBrowser, withBase } from './utils'
import { siteDataRef } from './data'
@@ -182,8 +181,7 @@ export function createRouter(
link.baseURI
)
const currentUrl = window.location
- const mimeType = lookup(pathname)
- // only intercept inbound links
+ // only intercept inbound html links
if (
!e.ctrlKey &&
!e.shiftKey &&
@@ -191,8 +189,7 @@ export function createRouter(
!e.metaKey &&
!target &&
origin === currentUrl.origin &&
- // intercept only html and unknown types (assume html)
- (!mimeType || mimeType === 'text/html')
+ treatAsHtml(pathname)
) {
e.preventDefault()
if (
diff --git a/src/client/theme-default/components/VPBadge.vue b/src/client/theme-default/components/VPBadge.vue
index b9c14aa9..1d5c1678 100644
--- a/src/client/theme-default/components/VPBadge.vue
+++ b/src/client/theme-default/components/VPBadge.vue
@@ -14,7 +14,7 @@ withDefaults(defineProps(), {
-
diff --git a/src/client/theme-default/components/VPDocOutlineDropdown.vue b/src/client/theme-default/components/VPDocOutlineDropdown.vue
deleted file mode 100644
index e6009402..00000000
--- a/src/client/theme-default/components/VPDocOutlineDropdown.vue
+++ /dev/null
@@ -1,85 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/client/theme-default/components/VPDocOutlineItem.vue b/src/client/theme-default/components/VPDocOutlineItem.vue
index 4ba55b99..89ea9710 100644
--- a/src/client/theme-default/components/VPDocOutlineItem.vue
+++ b/src/client/theme-default/components/VPDocOutlineItem.vue
@@ -14,7 +14,7 @@ function onClick({ target: el }: Event) {
-
+
-
{{ title }}
@@ -31,18 +31,20 @@ function onClick({ target: el }: Event) {
}
.nested {
+ padding-right: 16px;
padding-left: 16px;
}
.outline-link {
display: block;
- line-height: 28px;
+ line-height: 32px;
+ font-size: 14px;
+ font-weight: 400;
color: var(--vp-c-text-2);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
transition: color 0.5s;
- font-weight: 400;
}
.outline-link:hover,
diff --git a/src/client/theme-default/components/VPLocalNav.vue b/src/client/theme-default/components/VPLocalNav.vue
index 0ef64c18..5491b94c 100644
--- a/src/client/theme-default/components/VPLocalNav.vue
+++ b/src/client/theme-default/components/VPLocalNav.vue
@@ -1,9 +1,10 @@
@@ -77,10 +85,6 @@ const classes = computed(() => {
/*rtl:ignore*/
left: 0;
z-index: var(--vp-z-index-local-nav);
- display: flex;
- justify-content: space-between;
- align-items: center;
- border-top: 1px solid var(--vp-c-gutter);
border-bottom: 1px solid var(--vp-c-gutter);
padding-top: var(--vp-layout-top-height, 0px);
width: 100%;
@@ -91,16 +95,38 @@ const classes = computed(() => {
position: fixed;
}
-.VPLocalNav.reached-top {
- border-top-color: transparent;
+@media (min-width: 960px) {
+ .VPLocalNav {
+ top: var(--vp-nav-height);
+ }
+
+ .VPLocalNav.has-sidebar {
+ padding-left: var(--vp-sidebar-width);
+ }
+
+ .VPLocalNav.empty {
+ display: none;
+ }
}
-@media (min-width: 960px) {
+@media (min-width: 1280px) {
.VPLocalNav {
display: none;
}
}
+@media (min-width: 1440px) {
+ .VPLocalNav.has-sidebar {
+ padding-left: calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width));
+ }
+}
+
+.container {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
.menu {
display: flex;
align-items: center;
@@ -123,6 +149,12 @@ const classes = computed(() => {
}
}
+@media (min-width: 960px) {
+ .menu {
+ display: none;
+ }
+}
+
.menu-icon {
margin-right: 8px;
width: 16px;
diff --git a/src/client/theme-default/components/VPLocalNavOutlineDropdown.vue b/src/client/theme-default/components/VPLocalNavOutlineDropdown.vue
index d31e9f3f..2e8e310e 100644
--- a/src/client/theme-default/components/VPLocalNavOutlineDropdown.vue
+++ b/src/client/theme-default/components/VPLocalNavOutlineDropdown.vue
@@ -1,4 +1,5 @@
-
+
-