feat(theme): add changelog and improve contributors, close #319 (#329)

This commit is contained in:
pengzhanbo 2024-11-08 12:17:25 +08:00 committed by GitHub
parent 7685f24525
commit 08a2d6107f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
36 changed files with 1178 additions and 399 deletions

View File

@ -111,6 +111,8 @@ export const themeGuide = defineNoteConfig({
'评论',
'公告板',
'加密',
'文章贡献者',
'文章变更历史',
'文章水印',
'友情链接页',
'seo',

View File

@ -5,8 +5,6 @@ import { enNotes, zhNotes } from './notes/index.js'
export default defineThemeConfig({
logo: '/plume.png',
docsRepo: 'https://github.com/pengzhanbo/vuepress-theme-plume',
docsDir: 'docs',
profile: {
avatar: '/plume.png',

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View File

@ -4,6 +4,11 @@ import { plumeTheme } from 'vuepress-theme-plume'
export const theme: Theme = plumeTheme({
hostname: process.env.SITE_HOST || 'https://plume.pengzhanbo.cn',
docsRepo: 'https://github.com/pengzhanbo/vuepress-theme-plume',
docsDir: 'docs',
changelog: true,
contributors: { mode: 'block' },
plugins: {
shiki: {

View File

@ -8,6 +8,8 @@ prev: false
next: false
draft: true
externalLinkIcon: false
contributors: false
changelog: false
docs:
-
name: VuePress Plume

View File

@ -189,6 +189,16 @@ permalink: /config/frontmatter/basic/
如果您的文章来源于第三方, git 提交不能完整列出所有的作者,您可以在此处补充贡献者。
额外信息补充请查看 [contributors](../../guide/功能/文章贡献者.md#info)
### changelog
- 类型: `boolean`
- 默认值: `false`
- 详情:
当前页面是否显示页面变更历史。
### editLink
- 类型: `boolean`

View File

@ -1,6 +1,5 @@
---
title: 主题配置
author: pengzhanbo
createTime: 2024/03/02 18:07:03
permalink: /config/basic/
---
@ -28,8 +27,7 @@ permalink: /config/basic/
主题使用的插件默认已进行了配置,大多数情况下您不需要进行修改,如果需要使用到细致的定制化,请查阅
[此文档](./plugins/README.md)
::: warning
该字段不支持在 [主题配置文件 `plume.config.js`](./配置说明.md#主题配置文件) 中进行配置。
::: warning 该字段不支持在 [主题配置文件 `plume.config.js`](./配置说明.md#主题配置文件) 中进行配置。
:::
### hostname
@ -42,8 +40,7 @@ permalink: /config/basic/
`hostname` 配置为有效域名时,主题将会生成 `sitemap``seo` 相关的内容。
::: warning
该字段不支持在 [主题配置文件 `plume.config.js`](./配置说明.md#主题配置文件) 中进行配置。
::: warning 该字段不支持在 [主题配置文件 `plume.config.js`](./配置说明.md#主题配置文件) 中进行配置。
:::
### blog
@ -262,6 +259,78 @@ interface BlogPostCover {
为了使缓存能够生效,您应该 **删除** `package.json``vuepress dev` 开发服务启动脚本中的 `--clean-cache` 参数。
:::
### docsRepo
- 类型: `string`
- 默认值: `''`
- 详情: 文档仓库配置, 用于生成 `Edit this page` 链接。
### docsBranch
- 类型: `string`
- 默认值: `''`
- 详情: 文档仓库分支配置,用于生成 `Edit this page` 链接。
### docsDir
- 类型: `string`
- 默认值: `''`
- 详情: 文档仓库目录配置,用于生成 `Edit this page` 链接。
### editLink
- 类型: `boolean`
- 默认值: `true`
- 详情: 是否启用 编辑链接
::: warning 该字段不支持在 [主题配置文件 `plume.config.js`](./配置说明.md#主题配置文件) 中进行配置。
:::
### lastUpdated
- 类型: `false | LastUpdatedOptions`
- 默认值: `{ formatOptions: { dateStyle: 'short', timeStyle: 'short' } }`
- 详情: 最后更新时间
```ts
interface LastUpdatedOptions {
/**
* 设置最后更新时间格式的选项。
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat#using_options
*
* @default
* { dateStyle: 'short', timeStyle: 'short' }
*/
formatOptions?: Intl.DateTimeFormatOptions & { forceLocale?: boolean }
}
```
::: warning 该字段不支持在 [主题配置文件 `plume.config.js`](./配置说明.md#主题配置文件) 中进行配置。
:::
### contributors
- 类型: `boolean | ContributorsOptions`
- 默认值: `true`
- 详情: 是否显示贡献者
更多配置请参考 [此文档](../guide/功能/文章贡献者.md)
::: warning 该字段不支持在 [主题配置文件 `plume.config.js`](./配置说明.md#主题配置文件) 中进行配置。
:::
### changelog
- 类型: `boolean | ChangelogOptions`
- 默认值: `false`
- 详情: 是否显示页面变更历史
更多配置请参考 [此文档](../guide/功能/文章变更历史.md)
::: warning 该字段不支持在 [主题配置文件 `plume.config.js`](./配置说明.md#主题配置文件) 中进行配置。
:::
### locales
- 类型: `Record<string, PlumeThemeLocaleConfig>`
@ -717,12 +786,6 @@ interface SidebarItem {
移动设备下的导航栏中大纲标题的文本
### editLink
- 类型: `boolean`
- 默认值: `true`
- 详情: 是否启用 编辑链接
### editLinkText
- 类型: `string`
@ -737,55 +800,11 @@ interface SidebarItem {
示例: `':repo/edit/:branch/:path'`
### docsRepo
### latestUpdatedText
- 类型: `string`
- 默认值: `''`
- 详情: 文档仓库配置, 用于生成 `Edit this page` 链接。
### docsBranch
- 类型: `string`
- 默认值: `''`
- 详情: 文档仓库分支配置,用于生成 `Edit this page` 链接。
### docsDir
- 类型: `string`
- 默认值: `''`
- 详情: 文档仓库目录配置,用于生成 `Edit this page` 链接。
### lastUpdated
- 类型: `false | LastUpdatedOptions`
- 默认值: `{ text: 'Last Updated', formatOptions: { dateStyle: 'short', timeStyle: 'short' } }`
- 详情: 最后更新时间
```ts
interface LastUpdatedOptions {
/**
* 设置 最后更新时间 的文本
*
* @default 'Last updated'
*/
text?: string
/**
* 设置最后更新时间格式的选项。
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat#using_options
*
* @default
* { dateStyle: 'short', timeStyle: 'short' }
*/
formatOptions?: Intl.DateTimeFormatOptions & { forceLocale?: boolean }
}
```
### contributors
- 类型: `boolean`
- 默认值: `true`
- 详情: 是否显示贡献者
- 默认值: `'Latest Updated'`
- 详情: 最近更新时间 的文本
### contributorsText
@ -793,6 +812,24 @@ interface LastUpdatedOptions {
- 默认值: `'Contributors'`
- 详情: 贡献者的文本
### changelogText
- 类型: `string`
- 默认值: `'Changelog'`
- 详情: 变更记录的文本
### changelogOnText
- 类型: `string`
- 默认值: `'On'`
- 详情: 单次变更记录的时间文本
### changelogButtonText
- 类型: `string`
- 默认值: `'View All Changelog'`
- 详情: 变更记录的按钮文本
### prevPage
- 类型: `boolean`

View File

@ -0,0 +1,114 @@
---
title: 文章变更历史
icon: radix-icons:activity-log
createTime: 2024/11/07 18:16:25
permalink: /guide/features/changelog/
---
## 概述
主题支持为文章添加 文章变更历史,以便更好的了解您的文章修改历史。
文章变更历史 通过 git 提交记录获取。
该功能由 [@vuepress/plugin-git](https://ecosystem.vuejs.press/zh/plugins/development/git.html) 提供支持。
## 使用
主题已内置 [@vuepress/plugin-git](https://ecosystem.vuejs.press/zh/plugins/development/git.html) 插件,你无需重新安装即可使用。
在主题配置文件中启用该功能:
::: code-tabs
@tab .vuepress/config.ts
```ts
import { defineUserConfig } from 'vuepress'
import { plumeTheme } from 'vuepress-theme-plume'
export default defineUserConfig({
theme: plumeTheme({
// 默认 不启用,仅当 plugins.git 为 true 时生效
// 此配置在 plume.config.ts 中无效
changelog: true,
plugins: {
// 如果您在此处直接声明为 true则表示开发环境和生产环境都启用该功能
git: process.env.NODE_ENV === 'production'
}
})
})
```
:::
::: warning 出于性能考虑,主题默认不会在 开发环境中启用该功能,仅在 生产环境中启用。
:::
## 配置
```ts
interface ChangelogOptions {
/**
* 最大变更记录条数, 默认获取所有记录
*/
maxCount?: number
/**
* git 仓库的访问地址例如https://github.com/vuepress/ecosystem
*/
repoUrl?: string
/**
* 提交记录访问地址模式
*
* - `:repo` - git 仓库的访问地址
* - `:hash` - 提交记录的 hash
*
* @default ':repo/commit/:hash'
*/
commitUrlPattern?: string
/**
* issue 访问地址模式
*
* - `:repo` - git 仓库的访问地址
* - `:issue` - issue 的 id
*
* @default ':repo/issues/:issue'
*/
issueUrlPattern?: string
/**
* tag 访问地址模式,
* 默认值:':repo/releases/tag/:tag'
*
* - `:repo` - git 仓库的访问地址
* - `:tag` - tag 的名称
*
* @default ':repo/releases/tag/:tag'
*/
tagUrlPattern?: string
}
```
```ts
import { defineUserConfig } from 'vuepress'
import { plumeTheme } from 'vuepress-theme-plume'
export default defineUserConfig({
theme: plumeTheme({
changelog: {
maxCount: 10,
repoUrl: 'https://github.com/vuepress/vuepress',
commitUrlPattern: ':repo/commit/:hash',
issueUrlPattern: ':repo/issues/:issue',
tagUrlPattern: ':repo/releases/tag/:tag'
},
})
})
```
::: warning 注意
请确保 `changelog.repoUrl` 配置正确, 默认值为 [docsRepo](../../config/主题配置.md#docsrepo)。
主题默认适配了 `github/gitlab/gitee/bitbucket` git 托管服务的相关访问地址模式。
如果您使用的是内建的托管服务或者其他,请自行配置 `commitUrlPattern``issueUrlPattern``tagUrlPattern`
:::

View File

@ -0,0 +1,261 @@
---
title: 文章贡献者
icon: simple-icons:contributorcovenant
createTime: 2024/11/07 16:26:54
permalink: /guide/features/contributors/
---
## 概述
主题支持为文章添加贡献者信息,以便更好的了解您的文章贡献者。
文章贡献者通过 git 提交记录获取。
该功能由 [@vuepress/plugin-git](https://ecosystem.vuejs.press/zh/plugins/development/git.html) 提供支持。
## 使用
主题已内置 [@vuepress/plugin-git](https://ecosystem.vuejs.press/zh/plugins/development/git.html) 插件,你无需重新安装即可使用。
在主题配置文件中启用该功能:
::: code-tabs
@tab .vuepress/config.ts
```ts
import { defineUserConfig } from 'vuepress'
import { plumeTheme } from 'vuepress-theme-plume'
export default defineUserConfig({
theme: plumeTheme({
// 默认启用,仅当 plugins.git 为 true 时生效
// 此配置在 plume.config.ts 中无效
contributors: true,
plugins: {
// 如果您在此处直接声明为 true则表示开发环境和生产环境都启用该功能
git: process.env.NODE_ENV === 'production'
}
})
})
```
:::
::: warning 出于性能考虑,主题默认不会在 开发环境中启用该功能,仅在 生产环境中启用。
:::
## 配置
### mode
- 类型:`'inline' | 'block'`
- 默认值:`'inline'`
- 描述:
- `inline`:在文章页底部,与 最后更新时间,并列显示贡献者信息,该模式下仅显示 贡献者名称。
![contributors inline](/images/contributors-inline.png)
- `block`:在文章内容末尾插入贡献者信息,该模式下包含 贡献者名称、贡献者链接、贡献者头像。
(如当前页面内容结尾所示)
```ts
import { defineUserConfig } from 'vuepress'
import { plumeTheme } from 'vuepress-theme-plume'
export default defineUserConfig({
theme: plumeTheme({
contributors: {
mode: 'block',
},
})
})
```
### info
- 类型:`ContributorInfo[]`
```ts
interface ContributorInfo {
/**
* 贡献者在 Git 托管服务中的用户名
*/
username: string
/**
* 贡献者显示在页面上的名字, 默认为 `username`
*/
name?: string
/**
* 贡献者别名, 由于贡献者可能在本地 git 配置中保存的 用户名与 托管服务 用户名不一致,
* 这时候可以通过别名映射到真实的用户名
*/
alias?: string[] | string
/**
* 贡献者头像地址
* 如果 git 托管服务为 `github`,则可以忽略不填,由插件自动填充
*/
avatar?: string
/**
* 贡献者访问地址
* 如果 git 托管服务为 `github`,则可以忽略不填,由插件自动填充
*/
url?: string
}
```
- 描述:
贡献者信息列表。
用户在本地 git 服务中配置的 用户名和邮箱 可能与 git 托管服务(如 github、gitlab、gitee的用户信息不一致。
可以在此预先配置贡献者信息。
(对于非 github 的其他 git 托管服务,诸如 gitlab、gitee由于不能通过用户名直接获取头像和用户地址请在此
补充完善用户信息。)
::: code-tabs
@tab Github
```ts
import { defineUserConfig } from 'vuepress'
import { plumeTheme } from 'vuepress-theme-plume'
export default defineUserConfig({
theme: plumeTheme({
contributors: {
mode: 'block',
info: [
{
username: 'pengzhanbo', // github username
alias: ['peng_zhan_bo'], // 别名,本地 git 配置中的用户名
}
]
},
})
})
```
@tab Gitlab
```ts
import { defineUserConfig } from 'vuepress'
import { plumeTheme } from 'vuepress-theme-plume'
export default defineUserConfig({
theme: plumeTheme({
contributors: {
mode: 'block',
info: [
{
username: 'pengzhanbo', // gitlab username
alias: ['peng_zhan_bo'], // 别名,本地 git 配置中的用户名
url: 'https://gitlab.com/pengzhanbo',
avatar: 'https://gitlab.com/uploads/-/system/user/avatar/1/avatar.png',
}
]
},
})
})
```
@tab Gitee
```ts
import { defineUserConfig } from 'vuepress'
import { plumeTheme } from 'vuepress-theme-plume'
export default defineUserConfig({
theme: plumeTheme({
contributors: {
mode: 'block',
info: [
{
username: 'pengzhanbo', // gitee username
alias: ['peng_zhan_bo'], // 别名,本地 git 配置中的用户名
url: 'https://gitee.com/pengzhanbo',
avatar: 'https://foruda.gitee.com/avatar/1234455/avatar.png',
}
]
},
})
})
```
@tab Bitbucket
```ts
import { defineUserConfig } from 'vuepress'
import { plumeTheme } from 'vuepress-theme-plume'
export default defineUserConfig({
theme: plumeTheme({
contributors: {
mode: 'block',
info: [
{
username: 'pengzhanbo', // bitbucket username
alias: ['peng_zhan_bo'], // 别名,本地 git 配置中的用户名
url: 'https://bitbucket.org/pengzhanbo',
avatar: 'https://bitbucket.org/pengzhanbo/avatar/1234455/avatar.png',
}
]
},
})
})
```
@tab 其它
```ts
import { defineUserConfig } from 'vuepress'
import { plumeTheme } from 'vuepress-theme-plume'
export default defineUserConfig({
theme: plumeTheme({
contributors: {
mode: 'block',
info: [
{
username: 'pengzhanbo', // username
alias: ['peng_zhan_bo'], // 别名,本地 git 配置中的用户名
url: 'https://your-git.com/pengzhanbo',
avatar: 'https://your-git.com/avatar.png',
}
]
},
})
})
```
:::
### transform(contributors)
- 类型:`(contributors: GitContributor[]) => GitContributor[]`
```ts
interface GitContributor {
name: string
email: string
commits: number // 贡献者提交次数
}
```
- 描述:
贡献者转换函数。该函数需要返回新的 贡献者列表。
## frontmatter
### contributors
- 类型:`boolean | string[]`
- 描述:
是否显示贡献者信息。
如果您的文章来源于第三方, git 提交不能完整列出所有的作者,您可以在此处补充贡献者。

View File

@ -6,8 +6,6 @@ createTime: 2024/04/16 12:41:26
permalink: /tools/caniuse/
readingTime: false
editLink: false
contributors: false
lastUpdated: false
---
::: info 提示

View File

@ -6,8 +6,6 @@ createTime: 2024/04/15 20:17:42
permalink: /tools/home-hero-tint-plate/
readingTime: false
editLink: false
contributors: false
lastUpdated: false
---
为了更直观更方便的配置首页 Hero 区域 的 背景色板,主题提供了 色板配置工具,

View File

@ -53,7 +53,7 @@
"@mdit/plugin-sup": "^0.13.1",
"@mdit/plugin-tab": "^0.13.2",
"@mdit/plugin-tasklist": "^0.13.1",
"@vuepress/helper": "2.0.0-rc.57",
"@vuepress/helper": "2.0.0-rc.60",
"@vueuse/core": "^11.2.0",
"image-size": "^1.1.1",
"local-pkg": "^0.5.0",

View File

@ -40,7 +40,7 @@
"vuepress": "2.0.0-rc.18"
},
"dependencies": {
"@vuepress/helper": "2.0.0-rc.57",
"@vuepress/helper": "2.0.0-rc.60",
"@vueuse/core": "^11.2.0",
"@vueuse/integrations": "^11.2.0",
"chokidar": "3.6.0",

View File

@ -39,7 +39,7 @@
"@shikijs/transformers": "^1.22.2",
"@shikijs/twoslash": "^1.22.2",
"@types/hast": "^3.0.4",
"@vuepress/helper": "2.0.0-rc.57",
"@vuepress/helper": "2.0.0-rc.60",
"@vueuse/core": "^11.2.0",
"fast-glob": "^3.3.2",
"floating-vue": "^5.2.2",

450
pnpm-lock.yaml generated
View File

@ -202,8 +202,8 @@ importers:
specifier: ^0.13.1
version: 0.13.1(markdown-it@14.1.0)
'@vuepress/helper':
specifier: 2.0.0-rc.57
version: 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.5)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
specifier: 2.0.0-rc.60
version: 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.5)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vueuse/core':
specifier: ^11.2.0
version: 11.2.0(vue@3.5.12(typescript@5.6.3))
@ -245,8 +245,8 @@ importers:
plugins/plugin-search:
dependencies:
'@vuepress/helper':
specifier: 2.0.0-rc.57
version: 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.5)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
specifier: 2.0.0-rc.60
version: 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.5)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vueuse/core':
specifier: ^11.2.0
version: 11.2.0(vue@3.5.12(typescript@5.6.3))
@ -287,8 +287,8 @@ importers:
specifier: ^3.0.4
version: 3.0.4
'@vuepress/helper':
specifier: 2.0.0-rc.57
version: 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.5)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
specifier: 2.0.0-rc.60
version: 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.5)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vueuse/core':
specifier: ^11.2.0
version: 11.2.0(vue@3.5.12(typescript@5.6.3))
@ -347,47 +347,47 @@ importers:
specifier: workspace:*
version: link:../plugins/plugin-shikiji
'@vuepress/helper':
specifier: 2.0.0-rc.57
version: 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
specifier: 2.0.0-rc.60
version: 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/plugin-cache':
specifier: 2.0.0-rc.54
version: 2.0.0-rc.54(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/plugin-comment':
specifier: 2.0.0-rc.57
version: 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
specifier: 2.0.0-rc.60
version: 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/plugin-docsearch':
specifier: 2.0.0-rc.56
version: 2.0.0-rc.56(@algolia/client-search@4.24.0)(search-insights@2.17.2)(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
specifier: 2.0.0-rc.60
version: 2.0.0-rc.60(@algolia/client-search@5.12.0)(search-insights@2.17.2)(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/plugin-git':
specifier: 2.0.0-rc.56
version: 2.0.0-rc.56(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
specifier: 2.0.0-rc.60
version: 2.0.0-rc.60(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/plugin-markdown-hint':
specifier: 2.0.0-rc.57
version: 2.0.0-rc.57(markdown-it@14.1.0)(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
specifier: 2.0.0-rc.60
version: 2.0.0-rc.60(markdown-it@14.1.0)(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/plugin-markdown-image':
specifier: 2.0.0-rc.57
version: 2.0.0-rc.57(markdown-it@14.1.0)(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
specifier: 2.0.0-rc.60
version: 2.0.0-rc.60(markdown-it@14.1.0)(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/plugin-markdown-math':
specifier: 2.0.0-rc.57
version: 2.0.0-rc.57(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
specifier: 2.0.0-rc.60
version: 2.0.0-rc.60(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/plugin-nprogress':
specifier: 2.0.0-rc.57
version: 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
specifier: 2.0.0-rc.60
version: 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/plugin-photo-swipe':
specifier: 2.0.0-rc.57
version: 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
specifier: 2.0.0-rc.60
version: 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/plugin-reading-time':
specifier: 2.0.0-rc.57
version: 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
specifier: 2.0.0-rc.60
version: 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/plugin-seo':
specifier: 2.0.0-rc.57
version: 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
specifier: 2.0.0-rc.60
version: 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/plugin-sitemap':
specifier: 2.0.0-rc.57
version: 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
specifier: 2.0.0-rc.60
version: 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/plugin-watermark':
specifier: 2.0.0-rc.57
version: 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
specifier: 2.0.0-rc.60
version: 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vueuse/core':
specifier: ^11.2.0
version: 11.2.0(vue@3.5.12(typescript@5.6.3))
@ -461,70 +461,77 @@ importers:
packages:
'@algolia/autocomplete-core@1.9.3':
resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==}
'@algolia/autocomplete-core@1.17.6':
resolution: {integrity: sha512-lkDoW4I7h2kKlIgf3pUt1LqvxyYKkVyiypoGLlUnhPSnCpmeOwudM6rNq6YYsCmdQtnDQoW5lUNNuj6ASg3qeg==}
'@algolia/autocomplete-plugin-algolia-insights@1.9.3':
resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==}
'@algolia/autocomplete-plugin-algolia-insights@1.17.6':
resolution: {integrity: sha512-17NnaacuFzSWVuZu4NKzVeaFIe9Abpw8w+/gjc7xhZFtqj+GadufzodIdchwiB2eM2cDdiR3icW7gbNTB3K2YA==}
peerDependencies:
search-insights: '>= 1 < 3'
'@algolia/autocomplete-preset-algolia@1.9.3':
resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==}
'@algolia/autocomplete-preset-algolia@1.17.6':
resolution: {integrity: sha512-Cvg5JENdSCMuClwhJ1ON1/jSuojaYMiUW2KePm18IkdCzPJj/NXojaOxw58RFtQFpJgfVW8h2E8mEoDtLlMdeA==}
peerDependencies:
'@algolia/client-search': '>= 4.9.1 < 6'
algoliasearch: '>= 4.9.1 < 6'
'@algolia/autocomplete-shared@1.9.3':
resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==}
'@algolia/autocomplete-shared@1.17.6':
resolution: {integrity: sha512-aq/3V9E00Tw2GC/PqgyPGXtqJUlVc17v4cn1EUhSc+O/4zd04Uwb3UmPm8KDaYQQOrkt1lwvCj2vG2wRE5IKhw==}
peerDependencies:
'@algolia/client-search': '>= 4.9.1 < 6'
algoliasearch: '>= 4.9.1 < 6'
'@algolia/cache-browser-local-storage@4.24.0':
resolution: {integrity: sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==}
'@algolia/client-abtesting@5.12.0':
resolution: {integrity: sha512-hx4eVydkm3yrFCFxmcBtSzI/ykt0cZ6sDWch+v3JTgKpD2WtosMJU3Upv1AjQ4B6COSHCOWEX3vfFxW6OoH6aA==}
engines: {node: '>= 14.0.0'}
'@algolia/cache-common@4.24.0':
resolution: {integrity: sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==}
'@algolia/client-analytics@5.12.0':
resolution: {integrity: sha512-EpTsSv6IW8maCfXCDIptgT7+mQJj7pImEkcNUnxR8yUKAHzTogTXv9yGm2WXOZFVuwstd2i0sImhQ1Vz8RH/hA==}
engines: {node: '>= 14.0.0'}
'@algolia/cache-in-memory@4.24.0':
resolution: {integrity: sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==}
'@algolia/client-common@5.12.0':
resolution: {integrity: sha512-od3WmO8qxyfNhKc+K3D17tvun3IMs/xMNmxCG9MiElAkYVbPPTRUYMkRneCpmJyQI0hNx2/EA4kZgzVfQjO86Q==}
engines: {node: '>= 14.0.0'}
'@algolia/client-account@4.24.0':
resolution: {integrity: sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==}
'@algolia/client-insights@5.12.0':
resolution: {integrity: sha512-8alajmsYUd+7vfX5lpRNdxqv3Xx9clIHLUItyQK0Z6gwGMbVEFe6YYhgDtwslMAP0y6b0WeJEIZJMLgT7VYpRw==}
engines: {node: '>= 14.0.0'}
'@algolia/client-analytics@4.24.0':
resolution: {integrity: sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==}
'@algolia/client-personalization@5.12.0':
resolution: {integrity: sha512-bUV9HtfkTBgpoVhxFrMkmVPG03ZN1Rtn51kiaEtukucdk3ggjR9Qu1YUfRSU2lFgxr9qJc8lTxwfvhjCeJRcqw==}
engines: {node: '>= 14.0.0'}
'@algolia/client-common@4.24.0':
resolution: {integrity: sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==}
'@algolia/client-query-suggestions@5.12.0':
resolution: {integrity: sha512-Q5CszzGWfxbIDs9DJ/QJsL7bP6h+lJMg27KxieEnI9KGCu0Jt5iFA3GkREkgRZxRdzlHbZKkrIzhtHVbSHw/rg==}
engines: {node: '>= 14.0.0'}
'@algolia/client-personalization@4.24.0':
resolution: {integrity: sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==}
'@algolia/client-search@5.12.0':
resolution: {integrity: sha512-R3qzEytgVLHOGNri+bpta6NtTt7YtkvUe/QBcAmMDjW4Jk1P0eBYIPfvnzIPbINRsLxIq9fZs9uAYBgsrts4Zg==}
engines: {node: '>= 14.0.0'}
'@algolia/client-search@4.24.0':
resolution: {integrity: sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==}
'@algolia/ingestion@1.12.0':
resolution: {integrity: sha512-zpHo6qhR22tL8FsdSI4DvEraPDi/019HmMrCFB/TUX98yzh5ooAU7sNW0qPL1I7+S++VbBmNzJOEU9VI8tEC8A==}
engines: {node: '>= 14.0.0'}
'@algolia/logger-common@4.24.0':
resolution: {integrity: sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==}
'@algolia/monitoring@1.12.0':
resolution: {integrity: sha512-i2AJZED/zf4uhxezAJUhMKoL5QoepCBp2ynOYol0N76+TSoohaMADdPnWCqOULF4RzOwrG8wWynAwBlXsAI1RQ==}
engines: {node: '>= 14.0.0'}
'@algolia/logger-console@4.24.0':
resolution: {integrity: sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==}
'@algolia/recommend@5.12.0':
resolution: {integrity: sha512-0jmZyKvYnB/Bj5c7WKsKedOUjnr0UtXm0LVFUdQrxXfqOqvWv9n6Vpr65UjdYG4Q49kRQxhlwtal9WJYrYymXg==}
engines: {node: '>= 14.0.0'}
'@algolia/recommend@4.24.0':
resolution: {integrity: sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==}
'@algolia/requester-browser-xhr@5.12.0':
resolution: {integrity: sha512-KxwleraFuVoEGCoeW6Y1RAEbgBMS7SavqeyzWdtkJc6mXeCOJXn1iZitb8Tyn2FcpMNUKlSm0adrUTt7G47+Ow==}
engines: {node: '>= 14.0.0'}
'@algolia/requester-browser-xhr@4.24.0':
resolution: {integrity: sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==}
'@algolia/requester-fetch@5.12.0':
resolution: {integrity: sha512-FuDZXUGU1pAg2HCnrt8+q1VGHKChV/LhvjvZlLOT7e56GJie6p+EuLu4/hMKPOVuQQ8XXtrTHKIU3Lw+7O5/bQ==}
engines: {node: '>= 14.0.0'}
'@algolia/requester-common@4.24.0':
resolution: {integrity: sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==}
'@algolia/requester-node-http@4.24.0':
resolution: {integrity: sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==}
'@algolia/transporter@4.24.0':
resolution: {integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==}
'@algolia/requester-node-http@5.12.0':
resolution: {integrity: sha512-ncDDY7CxZhMs6LIoPl+vHFQceIBhYPY5EfuGF1V7beO0U38xfsCYEyutEFB2kRzf4D9Gqppn3iWX71sNtrKcuw==}
engines: {node: '>= 14.0.0'}
'@ampproject/remapping@2.3.0':
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
@ -765,14 +772,14 @@ packages:
peerDependencies:
postcss-selector-parser: ^6.1.0
'@docsearch/css@3.6.2':
resolution: {integrity: sha512-vKNZepO2j7MrYBTZIGXvlUOIR+v9KRf70FApRgovWrj3GTs1EITz/Xb0AOlm1xsQBp16clVZj1SY/qaOJbQtZw==}
'@docsearch/css@3.7.0':
resolution: {integrity: sha512-1OorbTwi1eeDmr0v5t+ckSRlt1zM5GHjm92iIl3kUu7im3GHuP+csf6E0WBg8pdXQczTWP9J9+o9n+Vg6DH5cQ==}
'@docsearch/js@3.6.2':
resolution: {integrity: sha512-pS4YZF+VzUogYrkblCucQ0Oy2m8Wggk8Kk7lECmZM60hTbaydSIhJTTiCrmoxtBqV8wxORnOqcqqOfbmkkQEcA==}
'@docsearch/js@3.7.0':
resolution: {integrity: sha512-ScfqOIKrSr8SImbpxVaD59xc/bytbL8QEM2GUpe3aICmoICflWp5DyTRzAdFky16HY+yEOAVZXt3COXQ1NOCWw==}
'@docsearch/react@3.6.2':
resolution: {integrity: sha512-rtZce46OOkVflCQH71IdbXSFK+S8iJZlUF56XBW5rIgx/eG5qoomC7Ag3anZson1bBac/JFQn7XOBfved/IMRA==}
'@docsearch/react@3.7.0':
resolution: {integrity: sha512-8e6tdDfkYoxafEEPuX5eE1h9cTkLvhe4KgoFkO5JCddXSQONnN1FHcDZRI4r8894eMpbYq6rdJF0dVYh8ikwNQ==}
peerDependencies:
'@types/react': '>= 16.8.0 < 19.0.0'
react: '>= 16.8.0 < 19.0.0'
@ -2228,8 +2235,8 @@ packages:
peerDependencies:
vuepress: 2.0.0-rc.18
'@vuepress/helper@2.0.0-rc.57':
resolution: {integrity: sha512-6tJpiVCMdJ5bu5tvH51o+SIDyQG20kqYBvOPeRRsBVGjp8n0rH6KDGY0xDEkd/HF8mJ9UPqNYvqhsQyI3iKKWQ==}
'@vuepress/helper@2.0.0-rc.60':
resolution: {integrity: sha512-WvImKfX+ysLxndtEDaqfZAp72J6VYAzYLRESQ8XiGVLL5A+abeR1+64lQID6Zb1EClqkPt3Rox5EWAXEhY9D5Q==}
peerDependencies:
vuepress: 2.0.0-rc.18
@ -2241,8 +2248,8 @@ packages:
peerDependencies:
vuepress: 2.0.0-rc.18
'@vuepress/plugin-comment@2.0.0-rc.57':
resolution: {integrity: sha512-Ched+tAy+WhFU3zI9JE+eP6vG+bmL25wswlqLkjdA6DFdgx7kCfktsTkHaGA9XyzPpzfCUj4T8d8JG3LNlM2+Q==}
'@vuepress/plugin-comment@2.0.0-rc.60':
resolution: {integrity: sha512-t81rIe3NlHFCNbeexa4a1tTg0WB73JFYZtB22NISlyprqDNG1HUpHaWUWvFmBYFaSqJ0I9oZzkJxD11S8wu2nA==}
peerDependencies:
'@waline/client': ^3.3.1
artalk: ^2.9.0
@ -2256,28 +2263,28 @@ packages:
twikoo:
optional: true
'@vuepress/plugin-docsearch@2.0.0-rc.56':
resolution: {integrity: sha512-l5+RP+l3d+WCOnxXVSCRmODYA8a6kyj3WBpjaFubOnVnasreHwKCCCWPInAFdgNsSFzw47SREXYtSSdkmwBf4A==}
'@vuepress/plugin-docsearch@2.0.0-rc.60':
resolution: {integrity: sha512-Nx69POUstOp1IfvM1veB1n6FqTg3pmLF3i9HRhN+gqgEU5v9im3n4gYpWs3hbvh3pnEzYIhbW+pgNpIHet/c1A==}
peerDependencies:
vuepress: 2.0.0-rc.18
'@vuepress/plugin-git@2.0.0-rc.56':
resolution: {integrity: sha512-hjIYPYQYC6qK0Zwo5pK4h2CkXcA4LMVx77ErdiVTyLpUOWT7ly0FIspNUiwHUgo4jddzMLFtttW2aEX1Q/2vgg==}
'@vuepress/plugin-git@2.0.0-rc.60':
resolution: {integrity: sha512-Eug3e/KtVcToql70fJmbY/s9d0mzyVku/tDX7Jy+BjjsyBuDQYl0geAJNn2uGDWl/k4QdQH0AqWly6h977m/4g==}
peerDependencies:
vuepress: 2.0.0-rc.18
'@vuepress/plugin-markdown-hint@2.0.0-rc.57':
resolution: {integrity: sha512-pJNy9N54s/VX1XOxMv43QFVfwBsavbA5P2oyAwzvmKKBeHZ1Tb2yq47ctEMdPXwcfWPQ+7KKO0M5zWFlt2ApbQ==}
'@vuepress/plugin-markdown-hint@2.0.0-rc.60':
resolution: {integrity: sha512-S5lTs1z4atkikul8RxTXR5eeGmjYM23ROhHLC2X4gTvHDbVH4gg+Z3HXbaOMJoafzSjwu4AQX2IRoehhHdsiEw==}
peerDependencies:
vuepress: 2.0.0-rc.18
'@vuepress/plugin-markdown-image@2.0.0-rc.57':
resolution: {integrity: sha512-1hFh0unC7GLwV7BxHs9/ieVhhv0YaqUNzNU0cXgWKAc1gIasMD0GG4mHiMbpUOMooL3oTimreQ9MCLAyfdI52Q==}
'@vuepress/plugin-markdown-image@2.0.0-rc.60':
resolution: {integrity: sha512-mL6SlBIZGKI9z93Ieg23umV673Keg3hAeB6B6FaF8C7sh6mrJYvWgdG2kasPOOUlzaASzZNbUhY5OZr14OMaYg==}
peerDependencies:
vuepress: 2.0.0-rc.18
'@vuepress/plugin-markdown-math@2.0.0-rc.57':
resolution: {integrity: sha512-IU/IWJyXRwLWChxf1PBHCL1CQ4X5mA306onnJVCHx5xuNpUce4hLFZWqvavugsY4KV478bznEoSCxxlR6YQNxw==}
'@vuepress/plugin-markdown-math@2.0.0-rc.60':
resolution: {integrity: sha512-RxrGSImeKwZVMNP+eXBaZKtV9P+EeNuS0uSdLne5uXGuNYF/CdRJEPRIdbseQb2KxfvOCHklZoZOxwbZvF0INw==}
peerDependencies:
katex: ^0.16.10
mathjax-full: ^3.2.2
@ -2288,18 +2295,18 @@ packages:
mathjax-full:
optional: true
'@vuepress/plugin-nprogress@2.0.0-rc.57':
resolution: {integrity: sha512-Rf/KMx6d2N4ILqmSyo7IvxYx7XgoPk1tG6sAuXq4uir7c2xiwvwerUgMabLTIMt678eOdnVINhoNeOM5kIcDrQ==}
'@vuepress/plugin-nprogress@2.0.0-rc.60':
resolution: {integrity: sha512-dlMvDJQUbw8WNKSJeuzDQ9Hayje29QuFa9d75dLlXqwZUXDHER8Wn4luCPYDBnkIqMEK6jcum0Van7zqT1/udg==}
peerDependencies:
vuepress: 2.0.0-rc.18
'@vuepress/plugin-photo-swipe@2.0.0-rc.57':
resolution: {integrity: sha512-fiNvYP1LXxOahm7a2P7BRQM6zTrsK4cTGLoJPVSMZxjISyrm+wldcpJ/z3KMRTBmHmOGyHoao1smQDSVEckfwA==}
'@vuepress/plugin-photo-swipe@2.0.0-rc.60':
resolution: {integrity: sha512-JUHmYCp2cduu4UVZ1OneaQQ6ORG6gB9El7n6mCbH0k6nE+cd22OkIggmMOEMSP9EICpnKQe8jfu2No966h+dUg==}
peerDependencies:
vuepress: 2.0.0-rc.18
'@vuepress/plugin-reading-time@2.0.0-rc.57':
resolution: {integrity: sha512-4xl1F1gEicuzzlPvdEi4MUAR0iFVuqpVSRwqq0+ybqZVFNk3wCM+B+Y8x9vFNrsrrdl3uArQSuMLCTFHOj1MdA==}
'@vuepress/plugin-reading-time@2.0.0-rc.60':
resolution: {integrity: sha512-bon4SiuWNU4+asQWge1rOwiYTNeC5TIyv7Y0sOUoBlSc1WUBLcqHNKre1AXBNfXsCgisqdG32znW+vaGo7uwIQ==}
peerDependencies:
vuepress: 2.0.0-rc.18
@ -2318,18 +2325,18 @@ packages:
sass-loader:
optional: true
'@vuepress/plugin-seo@2.0.0-rc.57':
resolution: {integrity: sha512-ngnwk5TEKOeB0BYlWh3wltka6VYhMlP478JChFxxEHc6u9H5iSDRX2bV2+WnCsPYNXnsAAtmy28KpRriMsVQ0g==}
'@vuepress/plugin-seo@2.0.0-rc.60':
resolution: {integrity: sha512-OQU4IFrY5w2MwXPserOlr7L0mNN0SjZ5NWqp3536pFkEpD8gNMjPQ/MogVG/6c36J4GhZKMih28Tgy2cSpV4Nw==}
peerDependencies:
vuepress: 2.0.0-rc.18
'@vuepress/plugin-sitemap@2.0.0-rc.57':
resolution: {integrity: sha512-rP4zvNgdkwU6z8xRBiCVtijltaAYOyWh3R/iKDXx7G1nbgppZOzY3/gzWj98AMsfy+yoAH/1irW+LS6nokuddw==}
'@vuepress/plugin-sitemap@2.0.0-rc.60':
resolution: {integrity: sha512-dPXK8oEBJ4LLUnOleqtGsODMnF2ROubBsAeTS97GW9TyUVI4DNFmzCUUctzfhHtGjVQOuChfJ+eCcaNEpL9/NQ==}
peerDependencies:
vuepress: 2.0.0-rc.18
'@vuepress/plugin-watermark@2.0.0-rc.57':
resolution: {integrity: sha512-DdielmdGMX+jTg+yFcCk7jjDNcowFUnMXrtwv0KyC5TT4hJjw+i0mTI5/yOR+Xdb0q03WwJolq25E4QzWg+SOg==}
'@vuepress/plugin-watermark@2.0.0-rc.60':
resolution: {integrity: sha512-eLtMkjKhJvPbSStSGh7FPRa04/GpwNsk60vGdYNTCQ09ncfbUO17vci0yUryRc48e2RqfWLfyE1Ipt4Vl+iphw==}
peerDependencies:
vuepress: 2.0.0-rc.18
@ -2412,8 +2419,9 @@ packages:
ajv@8.17.1:
resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
algoliasearch@4.24.0:
resolution: {integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==}
algoliasearch@5.12.0:
resolution: {integrity: sha512-psGBRYdGgik8I6m28iAB8xpubvjEt7UQU+w5MAJUA2324WHiGoHap5BPkkjB14rMaXeRts6pmOsrVIglGyOVwg==}
engines: {node: '>= 14.0.0'}
ansi-escapes@4.3.2:
resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
@ -6379,109 +6387,110 @@ packages:
snapshots:
'@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.2)':
'@algolia/autocomplete-core@1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0)(search-insights@2.17.2)':
dependencies:
'@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.2)
'@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)
'@algolia/autocomplete-plugin-algolia-insights': 1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0)(search-insights@2.17.2)
'@algolia/autocomplete-shared': 1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0)
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
- search-insights
'@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.2)':
'@algolia/autocomplete-plugin-algolia-insights@1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0)(search-insights@2.17.2)':
dependencies:
'@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)
'@algolia/autocomplete-shared': 1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0)
search-insights: 2.17.2
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
'@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)':
'@algolia/autocomplete-preset-algolia@1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0)':
dependencies:
'@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)
'@algolia/client-search': 4.24.0
algoliasearch: 4.24.0
'@algolia/autocomplete-shared': 1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0)
'@algolia/client-search': 5.12.0
algoliasearch: 5.12.0
'@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)':
'@algolia/autocomplete-shared@1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0)':
dependencies:
'@algolia/client-search': 4.24.0
algoliasearch: 4.24.0
'@algolia/client-search': 5.12.0
algoliasearch: 5.12.0
'@algolia/cache-browser-local-storage@4.24.0':
'@algolia/client-abtesting@5.12.0':
dependencies:
'@algolia/cache-common': 4.24.0
'@algolia/client-common': 5.12.0
'@algolia/requester-browser-xhr': 5.12.0
'@algolia/requester-fetch': 5.12.0
'@algolia/requester-node-http': 5.12.0
'@algolia/cache-common@4.24.0': {}
'@algolia/cache-in-memory@4.24.0':
'@algolia/client-analytics@5.12.0':
dependencies:
'@algolia/cache-common': 4.24.0
'@algolia/client-common': 5.12.0
'@algolia/requester-browser-xhr': 5.12.0
'@algolia/requester-fetch': 5.12.0
'@algolia/requester-node-http': 5.12.0
'@algolia/client-account@4.24.0':
'@algolia/client-common@5.12.0': {}
'@algolia/client-insights@5.12.0':
dependencies:
'@algolia/client-common': 4.24.0
'@algolia/client-search': 4.24.0
'@algolia/transporter': 4.24.0
'@algolia/client-common': 5.12.0
'@algolia/requester-browser-xhr': 5.12.0
'@algolia/requester-fetch': 5.12.0
'@algolia/requester-node-http': 5.12.0
'@algolia/client-analytics@4.24.0':
'@algolia/client-personalization@5.12.0':
dependencies:
'@algolia/client-common': 4.24.0
'@algolia/client-search': 4.24.0
'@algolia/requester-common': 4.24.0
'@algolia/transporter': 4.24.0
'@algolia/client-common': 5.12.0
'@algolia/requester-browser-xhr': 5.12.0
'@algolia/requester-fetch': 5.12.0
'@algolia/requester-node-http': 5.12.0
'@algolia/client-common@4.24.0':
'@algolia/client-query-suggestions@5.12.0':
dependencies:
'@algolia/requester-common': 4.24.0
'@algolia/transporter': 4.24.0
'@algolia/client-common': 5.12.0
'@algolia/requester-browser-xhr': 5.12.0
'@algolia/requester-fetch': 5.12.0
'@algolia/requester-node-http': 5.12.0
'@algolia/client-personalization@4.24.0':
'@algolia/client-search@5.12.0':
dependencies:
'@algolia/client-common': 4.24.0
'@algolia/requester-common': 4.24.0
'@algolia/transporter': 4.24.0
'@algolia/client-common': 5.12.0
'@algolia/requester-browser-xhr': 5.12.0
'@algolia/requester-fetch': 5.12.0
'@algolia/requester-node-http': 5.12.0
'@algolia/client-search@4.24.0':
'@algolia/ingestion@1.12.0':
dependencies:
'@algolia/client-common': 4.24.0
'@algolia/requester-common': 4.24.0
'@algolia/transporter': 4.24.0
'@algolia/client-common': 5.12.0
'@algolia/requester-browser-xhr': 5.12.0
'@algolia/requester-fetch': 5.12.0
'@algolia/requester-node-http': 5.12.0
'@algolia/logger-common@4.24.0': {}
'@algolia/logger-console@4.24.0':
'@algolia/monitoring@1.12.0':
dependencies:
'@algolia/logger-common': 4.24.0
'@algolia/client-common': 5.12.0
'@algolia/requester-browser-xhr': 5.12.0
'@algolia/requester-fetch': 5.12.0
'@algolia/requester-node-http': 5.12.0
'@algolia/recommend@4.24.0':
'@algolia/recommend@5.12.0':
dependencies:
'@algolia/cache-browser-local-storage': 4.24.0
'@algolia/cache-common': 4.24.0
'@algolia/cache-in-memory': 4.24.0
'@algolia/client-common': 4.24.0
'@algolia/client-search': 4.24.0
'@algolia/logger-common': 4.24.0
'@algolia/logger-console': 4.24.0
'@algolia/requester-browser-xhr': 4.24.0
'@algolia/requester-common': 4.24.0
'@algolia/requester-node-http': 4.24.0
'@algolia/transporter': 4.24.0
'@algolia/client-common': 5.12.0
'@algolia/requester-browser-xhr': 5.12.0
'@algolia/requester-fetch': 5.12.0
'@algolia/requester-node-http': 5.12.0
'@algolia/requester-browser-xhr@4.24.0':
'@algolia/requester-browser-xhr@5.12.0':
dependencies:
'@algolia/requester-common': 4.24.0
'@algolia/client-common': 5.12.0
'@algolia/requester-common@4.24.0': {}
'@algolia/requester-node-http@4.24.0':
'@algolia/requester-fetch@5.12.0':
dependencies:
'@algolia/requester-common': 4.24.0
'@algolia/client-common': 5.12.0
'@algolia/transporter@4.24.0':
'@algolia/requester-node-http@5.12.0':
dependencies:
'@algolia/cache-common': 4.24.0
'@algolia/logger-common': 4.24.0
'@algolia/requester-common': 4.24.0
'@algolia/client-common': 5.12.0
'@ampproject/remapping@2.3.0':
dependencies:
@ -6798,11 +6807,11 @@ snapshots:
dependencies:
postcss-selector-parser: 6.1.2
'@docsearch/css@3.6.2': {}
'@docsearch/css@3.7.0': {}
'@docsearch/js@3.6.2(@algolia/client-search@4.24.0)(search-insights@2.17.2)':
'@docsearch/js@3.7.0(@algolia/client-search@5.12.0)(search-insights@2.17.2)':
dependencies:
'@docsearch/react': 3.6.2(@algolia/client-search@4.24.0)(search-insights@2.17.2)
'@docsearch/react': 3.7.0(@algolia/client-search@5.12.0)(search-insights@2.17.2)
preact: 10.24.1
transitivePeerDependencies:
- '@algolia/client-search'
@ -6811,12 +6820,12 @@ snapshots:
- react-dom
- search-insights
'@docsearch/react@3.6.2(@algolia/client-search@4.24.0)(search-insights@2.17.2)':
'@docsearch/react@3.7.0(@algolia/client-search@5.12.0)(search-insights@2.17.2)':
dependencies:
'@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.2)
'@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)
'@docsearch/css': 3.6.2
algoliasearch: 4.24.0
'@algolia/autocomplete-core': 1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0)(search-insights@2.17.2)
'@algolia/autocomplete-preset-algolia': 1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0)
'@docsearch/css': 3.7.0
algoliasearch: 5.12.0
optionalDependencies:
search-insights: 2.17.2
transitivePeerDependencies:
@ -8343,7 +8352,7 @@ snapshots:
- '@vue/composition-api'
- typescript
'@vuepress/helper@2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
'@vuepress/helper@2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
dependencies:
'@vue/shared': 3.5.12
'@vueuse/core': 11.2.0(vue@3.5.12(typescript@5.6.3))
@ -8356,7 +8365,7 @@ snapshots:
- '@vue/composition-api'
- typescript
'@vuepress/helper@2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.5)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
'@vuepress/helper@2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.5)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
dependencies:
'@vue/shared': 3.5.12
'@vueuse/core': 11.2.0(vue@3.5.12(typescript@5.6.3))
@ -8396,9 +8405,9 @@ snapshots:
lru-cache: 10.4.3
vuepress: 2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))
'@vuepress/plugin-comment@2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
'@vuepress/plugin-comment@2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
dependencies:
'@vuepress/helper': 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/helper': 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
giscus: 1.5.0
vue: 3.5.12(typescript@5.6.3)
vuepress: 2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))
@ -8406,12 +8415,11 @@ snapshots:
- '@vue/composition-api'
- typescript
'@vuepress/plugin-docsearch@2.0.0-rc.56(@algolia/client-search@4.24.0)(search-insights@2.17.2)(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
'@vuepress/plugin-docsearch@2.0.0-rc.60(@algolia/client-search@5.12.0)(search-insights@2.17.2)(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
dependencies:
'@docsearch/css': 3.6.2
'@docsearch/js': 3.6.2(@algolia/client-search@4.24.0)(search-insights@2.17.2)
'@docsearch/react': 3.6.2(@algolia/client-search@4.24.0)(search-insights@2.17.2)
'@vuepress/helper': 2.0.0-rc.56(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@docsearch/css': 3.7.0
'@docsearch/js': 3.7.0(@algolia/client-search@5.12.0)(search-insights@2.17.2)
'@vuepress/helper': 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vueuse/core': 11.2.0(vue@3.5.12(typescript@5.6.3))
ts-debounce: 4.0.0
vue: 3.5.12(typescript@5.6.3)
@ -8425,17 +8433,17 @@ snapshots:
- search-insights
- typescript
'@vuepress/plugin-git@2.0.0-rc.56(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
'@vuepress/plugin-git@2.0.0-rc.60(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
dependencies:
execa: 9.5.1
vuepress: 2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))
'@vuepress/plugin-markdown-hint@2.0.0-rc.57(markdown-it@14.1.0)(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
'@vuepress/plugin-markdown-hint@2.0.0-rc.60(markdown-it@14.1.0)(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
dependencies:
'@mdit/plugin-alert': 0.13.1(markdown-it@14.1.0)
'@mdit/plugin-container': 0.13.1(markdown-it@14.1.0)
'@types/markdown-it': 14.1.2
'@vuepress/helper': 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/helper': 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vueuse/core': 11.2.0(vue@3.5.12(typescript@5.6.3))
vuepress: 2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))
transitivePeerDependencies:
@ -8444,26 +8452,26 @@ snapshots:
- typescript
- vue
'@vuepress/plugin-markdown-image@2.0.0-rc.57(markdown-it@14.1.0)(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
'@vuepress/plugin-markdown-image@2.0.0-rc.60(markdown-it@14.1.0)(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
dependencies:
'@mdit/plugin-figure': 0.13.1(markdown-it@14.1.0)
'@mdit/plugin-img-lazyload': 0.13.1(markdown-it@14.1.0)
'@mdit/plugin-img-mark': 0.13.1(markdown-it@14.1.0)
'@mdit/plugin-img-size': 0.13.1(markdown-it@14.1.0)
'@types/markdown-it': 14.1.2
'@vuepress/helper': 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/helper': 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
vuepress: 2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))
transitivePeerDependencies:
- '@vue/composition-api'
- markdown-it
- typescript
'@vuepress/plugin-markdown-math@2.0.0-rc.57(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
'@vuepress/plugin-markdown-math@2.0.0-rc.60(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
dependencies:
'@mdit/plugin-katex-slim': 0.13.1(katex@0.16.11)(markdown-it@14.1.0)
'@mdit/plugin-mathjax-slim': 0.13.1(markdown-it@14.1.0)(mathjax-full@3.2.2)
'@types/markdown-it': 14.1.2
'@vuepress/helper': 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/helper': 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
vue: 3.5.12(typescript@5.6.3)
vuepress: 2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))
optionalDependencies:
@ -8474,18 +8482,18 @@ snapshots:
- markdown-it
- typescript
'@vuepress/plugin-nprogress@2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
'@vuepress/plugin-nprogress@2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
dependencies:
'@vuepress/helper': 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/helper': 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
vue: 3.5.12(typescript@5.6.3)
vuepress: 2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))
transitivePeerDependencies:
- '@vue/composition-api'
- typescript
'@vuepress/plugin-photo-swipe@2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
'@vuepress/plugin-photo-swipe@2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
dependencies:
'@vuepress/helper': 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/helper': 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vueuse/core': 11.2.0(vue@3.5.12(typescript@5.6.3))
photoswipe: 5.4.4
vue: 3.5.12(typescript@5.6.3)
@ -8494,9 +8502,9 @@ snapshots:
- '@vue/composition-api'
- typescript
'@vuepress/plugin-reading-time@2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
'@vuepress/plugin-reading-time@2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
dependencies:
'@vuepress/helper': 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/helper': 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
vue: 3.5.12(typescript@5.6.3)
vuepress: 2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))
transitivePeerDependencies:
@ -8516,26 +8524,26 @@ snapshots:
- '@vue/composition-api'
- typescript
'@vuepress/plugin-seo@2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
'@vuepress/plugin-seo@2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
dependencies:
'@vuepress/helper': 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/helper': 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
vuepress: 2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))
transitivePeerDependencies:
- '@vue/composition-api'
- typescript
'@vuepress/plugin-sitemap@2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
'@vuepress/plugin-sitemap@2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
dependencies:
'@vuepress/helper': 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/helper': 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
sitemap: 8.0.0
vuepress: 2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))
transitivePeerDependencies:
- '@vue/composition-api'
- typescript
'@vuepress/plugin-watermark@2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
'@vuepress/plugin-watermark@2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))':
dependencies:
'@vuepress/helper': 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
'@vuepress/helper': 2.0.0-rc.60(typescript@5.6.3)(vuepress@2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))
vue: 3.5.12(typescript@5.6.3)
vuepress: 2.0.0-rc.18(@vuepress/bundler-vite@2.0.0-rc.18(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.80.3)(sass@1.80.3)(typescript@5.6.3)(yaml@2.5.1))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))
watermark-js-plus: 1.5.7
@ -8621,23 +8629,21 @@ snapshots:
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
algoliasearch@4.24.0:
algoliasearch@5.12.0:
dependencies:
'@algolia/cache-browser-local-storage': 4.24.0
'@algolia/cache-common': 4.24.0
'@algolia/cache-in-memory': 4.24.0
'@algolia/client-account': 4.24.0
'@algolia/client-analytics': 4.24.0
'@algolia/client-common': 4.24.0
'@algolia/client-personalization': 4.24.0
'@algolia/client-search': 4.24.0
'@algolia/logger-common': 4.24.0
'@algolia/logger-console': 4.24.0
'@algolia/recommend': 4.24.0
'@algolia/requester-browser-xhr': 4.24.0
'@algolia/requester-common': 4.24.0
'@algolia/requester-node-http': 4.24.0
'@algolia/transporter': 4.24.0
'@algolia/client-abtesting': 5.12.0
'@algolia/client-analytics': 5.12.0
'@algolia/client-common': 5.12.0
'@algolia/client-insights': 5.12.0
'@algolia/client-personalization': 5.12.0
'@algolia/client-query-suggestions': 5.12.0
'@algolia/client-search': 5.12.0
'@algolia/ingestion': 1.12.0
'@algolia/monitoring': 1.12.0
'@algolia/recommend': 5.12.0
'@algolia/requester-browser-xhr': 5.12.0
'@algolia/requester-fetch': 5.12.0
'@algolia/requester-node-http': 5.12.0
ansi-escapes@4.3.2:
dependencies:

View File

@ -98,20 +98,20 @@
"@vuepress-plume/plugin-fonts": "workspace:*",
"@vuepress-plume/plugin-search": "workspace:*",
"@vuepress-plume/plugin-shikiji": "workspace:*",
"@vuepress/helper": "2.0.0-rc.57",
"@vuepress/helper": "2.0.0-rc.60",
"@vuepress/plugin-cache": "2.0.0-rc.54",
"@vuepress/plugin-comment": "2.0.0-rc.57",
"@vuepress/plugin-docsearch": "2.0.0-rc.56",
"@vuepress/plugin-git": "2.0.0-rc.56",
"@vuepress/plugin-markdown-hint": "2.0.0-rc.57",
"@vuepress/plugin-markdown-image": "2.0.0-rc.57",
"@vuepress/plugin-markdown-math": "2.0.0-rc.57",
"@vuepress/plugin-nprogress": "2.0.0-rc.57",
"@vuepress/plugin-photo-swipe": "2.0.0-rc.57",
"@vuepress/plugin-reading-time": "2.0.0-rc.57",
"@vuepress/plugin-seo": "2.0.0-rc.57",
"@vuepress/plugin-sitemap": "2.0.0-rc.57",
"@vuepress/plugin-watermark": "2.0.0-rc.57",
"@vuepress/plugin-comment": "2.0.0-rc.60",
"@vuepress/plugin-docsearch": "2.0.0-rc.60",
"@vuepress/plugin-git": "2.0.0-rc.60",
"@vuepress/plugin-markdown-hint": "2.0.0-rc.60",
"@vuepress/plugin-markdown-image": "2.0.0-rc.60",
"@vuepress/plugin-markdown-math": "2.0.0-rc.60",
"@vuepress/plugin-nprogress": "2.0.0-rc.60",
"@vuepress/plugin-photo-swipe": "2.0.0-rc.60",
"@vuepress/plugin-reading-time": "2.0.0-rc.60",
"@vuepress/plugin-seo": "2.0.0-rc.60",
"@vuepress/plugin-sitemap": "2.0.0-rc.60",
"@vuepress/plugin-watermark": "2.0.0-rc.60",
"@vueuse/core": "^11.2.0",
"bcrypt-ts": "^5.0.2",
"chokidar": "3.6.0",

View File

@ -1,6 +1,8 @@
<script setup lang="ts">
import VPDocAside from '@theme/VPDocAside.vue'
import VPDocBreadcrumbs from '@theme/VPDocBreadcrumbs.vue'
import VPDocChangelog from '@theme/VPDocChangelog.vue'
import VPDocContributor from '@theme/VPDocContributor.vue'
import VPDocFooter from '@theme/VPDocFooter.vue'
import VPDocMeta from '@theme/VPDocMeta.vue'
import VPEncryptPage from '@theme/VPEncryptPage.vue'
@ -120,11 +122,14 @@ watch(
<VPDocBreadcrumbs />
<VPDocMeta />
<VPEncryptPage v-if="!isPageDecrypted" />
<Content
<div
v-else class="vp-doc plume-content"
:class="[pageName, enabledExternalLinkIcon && 'external-link-icon-enabled']"
vp-content
/>
:class="[pageName, enabledExternalLinkIcon && 'external-link-icon-enabled']" vp-content
>
<Content />
<VPDocContributor />
<VPDocChangelog />
</div>
</main>
<VPDocFooter v-if="isPageDecrypted">
<template #doc-footer-before>

View File

@ -0,0 +1,178 @@
<script setup lang="ts">
import VPLink from '@theme/VPLink.vue'
import { computed } from 'vue'
import { usePageLang } from 'vuepress/client'
import { useData, useLastUpdated, useThemeData } from '../composables/index.js'
const { theme, frontmatter, page } = useData()
const themeData = useThemeData()
const lang = usePageLang()
const { datetime, lastUpdatedText } = useLastUpdated()
const list = computed(() => {
const list = page.value.git?.changelog || []
const formatter = new Intl.DateTimeFormat(lang.value, { dateStyle: 'short' })
return list.map(({ date, ...item }) => {
const datetime = formatter.format(date)
return { datetime, ...item }
})
})
const hasChangelog = computed(() =>
list.value.length && (frontmatter.value.changelog ?? !!themeData.value.changelog),
)
const header = computed(() => {
const outline = frontmatter.value.outline ?? theme.value.outline
const level = Array.isArray(outline) ? outline[0] : outline === 'deep' ? 2 : outline || 2
return `h${level}`
})
</script>
<template>
<div v-if="hasChangelog" class="vp-doc-changelog">
<component :is="header" id="doc-changelog" tabindex="-1">
<a href="#doc-changelog" class="header-anchor">
<span>{{ theme.changelogText || 'Changelog' }}</span>
</a>
</component>
<details class="hint-container details">
<summary class="changelog-header">
<span><span class="vpi-changelog" /><span>{{ lastUpdatedText }}:</span> <span>{{ datetime }}</span></span>
<span class="changelog-button"><span class="vpi-menu" /><span>{{ theme.changelogButtonText || 'View All Changelog' }}</span></span>
</summary>
<ul class="changelog-list">
<template v-for="item in list" :key="item.hash">
<li v-if="item.tag" class="changelog release-tag">
<div>
<VPLink :href="item.tagUrl" no-icon class="release-tag">
<code>{{ item.tag }}</code>
</VPLink>
<span class="datetime">{{ theme.changelogOnText }} {{ item.datetime }}</span>
</div>
</li>
<li v-else class="changelog commit">
<div>
<VPLink :href="item.commitUrl" no-icon class="hash">
<code>{{ item.hash.slice(0, 5) }}</code>
</VPLink>
<span class="divider">-</span>
</div>
<div>
<p class="message" v-html="item.message" />
<span class="datetime">{{ theme.changelogOnText }} {{ item.datetime }}</span>
</div>
</li>
</template>
</ul>
</details>
</div>
</template>
<style scoped>
.vp-doc .vp-doc-changelog h2 {
border-top: 1px solid var(--vp-c-divider);
}
.vp-doc-changelog .changelog-header {
display: block;
}
.vp-doc-changelog .changelog-header > span {
display: block;
}
@media (min-width: 440px) {
.vp-doc-changelog .changelog-header {
display: flex;
align-items: center;
justify-content: space-between;
}
}
.vp-doc-changelog .changelog-header [class*="vpi-"] {
margin-right: 4px;
color: var(--vp-c-text-2);
transition: color var(--vp-t-color);
transform: translateY(-1px);
}
.vp-doc-changelog .changelog-header .changelog-button:hover,
.vp-doc-changelog .changelog-header .changelog-button:hover .vpi-menu {
color: var(--vp-c-brand-1);
transition: color var(--vp-t-color);
}
.vp-doc-changelog .changelog-list {
padding-left: 0;
list-style: none;
}
.vp-doc-changelog .changelog-list .changelog {
position: relative;
display: flex;
align-items: flex-start;
padding-left: 20px;
transition: color var(--vp-t-color);
}
.vp-doc-changelog .changelog-list .changelog::before {
position: absolute;
top: 4px;
left: 0;
display: inline-block;
width: 1.25em;
height: 1.25em;
color: var(--vp-c-text-3);
content: "";
background-color: currentcolor;
-webkit-mask: var(--icon) no-repeat;
mask: var(--icon) no-repeat;
-webkit-mask-size: 100% 100%;
mask-size: 100% 100%;
transition: color var(--vp-t-color);
}
.vp-doc-changelog .changelog-list .changelog.commit::before {
--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 12a3 3 0 1 0 6 0a3 3 0 1 0-6 0m3-9v6m0 6v6'/%3E%3C/svg%3E");
}
.vp-doc-changelog .changelog-list .changelog.release-tag::before {
--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M6.5 7.5a1 1 0 1 0 2 0a1 1 0 1 0-2 0'/%3E%3Cpath d='M3 6v5.172a2 2 0 0 0 .586 1.414l7.71 7.71a2.41 2.41 0 0 0 3.408 0l5.592-5.592a2.41 2.41 0 0 0 0-3.408l-7.71-7.71A2 2 0 0 0 11.172 3H6a3 3 0 0 0-3 3'/%3E%3C/g%3E%3C/svg%3E");
}
.vp-doc-changelog .changelog-list .changelog .release-tag {
margin-right: 4px;
text-decoration: none;
}
.vp-doc-changelog .changelog-list .changelog .release-tag code {
font-size: 14px;
font-weight: 500;
}
.vp-doc-changelog .changelog-list .changelog .hash {
margin-right: 4px;
text-decoration: none;
}
.vp-doc-changelog .changelog-list .changelog .divider {
margin-right: 8px;
}
.vp-doc-changelog .changelog-list .changelog .message {
display: inline;
margin-right: 8px;
}
.vp-doc-changelog .changelog-list .changelog .message :deep(a::after) {
display: none;
}
.vp-doc-changelog .changelog-list .changelog .datetime {
font-size: 12px;
color: var(--vp-c-text-3);
transition: color var(--vp-t-color);
}
</style>

View File

@ -0,0 +1,66 @@
<script setup lang="ts">
import VPLink from '@theme/VPLink.vue'
import { computed } from 'vue'
import { useContributors, useData } from '../composables/index.js'
const { theme, frontmatter } = useData()
const { contributors, mode } = useContributors()
const hasContributors = computed(() => Boolean(contributors.value.length) && mode.value === 'block')
const header = computed(() => {
const outline = frontmatter.value.outline ?? theme.value.outline
const level = Array.isArray(outline) ? outline[0] : outline === 'deep' ? 2 : outline || 2
return `h${level}`
})
</script>
<template>
<div v-if="hasContributors" class="vp-doc-contributor">
<component :is="header" id="doc-contributors" tabindex="-1">
<a href="#doc-contributors" class="header-anchor">
<span>{{ theme.contributorsText || 'Contributors' }}</span>
</a>
</component>
<ul class="contributor-list">
<li v-for="contributor in contributors" :key="contributor.name + contributor.email" class="contributor">
<VPLink :href="contributor.url" no-icon>
<img v-if="contributor.avatar" :src="contributor.avatar" :alt="contributor.name">
<span>{{ contributor.name }}</span>
</VPLink>
</li>
</ul>
</div>
</template>
<style scoped>
.vp-doc .vp-doc-contributor h2 {
border-top: 1px solid var(--vp-c-divider);
}
.vp-doc-contributor .contributor-list {
display: flex;
flex-wrap: wrap;
gap: 24px 16px;
align-items: center;
justify-content: flex-start;
padding-left: 0;
margin-top: 32px;
list-style: none;
}
.contributor-list .contributor img {
width: 32px;
height: 32px;
border-radius: 50%;
}
.contributor-list .contributor :deep(.vp-link) {
display: flex;
gap: 4px;
align-items: center;
justify-content: center;
text-decoration: none;
}
</style>

View File

@ -7,21 +7,27 @@ import {
useEditLink,
useLastUpdated,
usePrevNext,
useThemeData,
} from '../composables/index.js'
const { theme, frontmatter } = useData()
const { theme, frontmatter, page } = useData()
const themeData = useThemeData()
const editLink = useEditLink()
const { datetime: lastUpdated, isoDatetime, lastUpdatedText } = useLastUpdated()
const contributors = useContributors()
const { contributors, mode } = useContributors()
const { prev, next } = usePrevNext()
const hasChangelog = computed(() =>
page.value.git?.changelog?.length && (frontmatter.value.changelog ?? !!themeData.value.changelog),
)
const hasEditLink = computed(() =>
Boolean(theme.value.editLink && frontmatter.value.editLink !== false && editLink.value),
Boolean(themeData.value.editLink && frontmatter.value.editLink !== false && editLink.value),
)
const hasLastUpdated = computed(() =>
Boolean(theme.value.lastUpdated && frontmatter.value.lastUpdated !== false && lastUpdated.value),
Boolean(themeData.value.lastUpdated !== false && frontmatter.value.lastUpdated !== false && lastUpdated.value) && !hasChangelog.value,
)
const hasContributors = computed(() => Boolean(contributors.value.length))
const hasContributors = computed(() => Boolean(contributors.value.length) && mode.value === 'inline')
const showFooter = computed(() => {
return hasEditLink.value
@ -44,7 +50,7 @@ const showFooter = computed(() => {
</VPLink>
</div>
<div v-if="hasLastUpdated" class="last-updated">
<div v-if="hasLastUpdated" class="last-updated" aria-label="Last updated">
<p class="last-updated-text">
{{ lastUpdatedText }}:
<time :datetime="isoDatetime" class="last-updated-time">
@ -54,14 +60,18 @@ const showFooter = computed(() => {
</div>
</div>
<div v-if="hasContributors && contributors?.length" class="contributors">
<div
v-if="hasContributors && contributors?.length"
class="contributors" :class="{ right: hasLastUpdated }"
aria-label="Contributors"
>
<span class="contributors-label">
{{ theme.contributorsText || 'Contributors' }}:
</span>
<span class="contributors-info">
<template v-for="(contributor, index) in contributors" :key="contributor">
<template v-for="(contributor, index) in contributors" :key="contributor.name + index">
<span class="contributor">
{{ contributor }}
{{ contributor.name }}
</span>
<template v-if="index !== contributors.length - 1">, </template>
</template>
@ -155,7 +165,7 @@ const showFooter = computed(() => {
}
@media (min-width: 640px) {
.contributors {
.contributors.right {
text-align: right;
}
}

View File

@ -1,20 +1,32 @@
import type { ComputedRef } from 'vue'
import type { GitContributor } from '../../shared/index.js'
import { computed } from 'vue'
import { isPlainObject } from 'vuepress/shared'
import { useData } from '../composables/data.js'
import { toArray } from '../utils/index.js'
import { useThemeData } from './theme-data.js'
export function useContributors(): ComputedRef<string[]> {
const { theme, page, frontmatter } = useData()
export function useContributors(): {
mode: ComputedRef<'inline' | 'block'>
contributors: ComputedRef<GitContributor[]>
} {
const { page, frontmatter } = useData()
const theme = useThemeData()
return computed(() => {
const config = frontmatter.value.contributors ?? theme.value.contributors ?? true
const mode = computed(() => {
const config = theme.value.contributors
if (isPlainObject(config))
return config.mode || 'inline'
return 'inline'
})
const contributors = computed(() => {
const config = frontmatter.value.contributors ?? !!theme.value.contributors
if (config === false)
return []
const contributors = config === true ? [] : toArray(config)
const gitContributors = (page.value.git?.contributors ?? []).map(({ name }) => name)
return Array.from(new Set([...gitContributors, ...contributors]))
return page.value.git?.contributors ?? []
})
return { mode, contributors }
}

View File

@ -3,15 +3,17 @@ import type {
NavItemWithLink,
} from '../../shared/index.js'
import { computed } from 'vue'
import { useData } from '../composables/data.js'
import { resolveEditLink } from '../utils/index.js'
import { useData } from './data.js'
import { useThemeData } from './theme-data.js'
export function useEditLink(): ComputedRef<null | NavItemWithLink> {
const { theme, page, frontmatter } = useData()
const themeData = useThemeData()
return computed(() => {
const showEditLink
= frontmatter.value.editLink ?? theme.value.editLink ?? true
= frontmatter.value.editLink ?? themeData.value.editLink ?? true
if (!showEditLink)
return null
@ -19,8 +21,8 @@ export function useEditLink(): ComputedRef<null | NavItemWithLink> {
docsRepo,
docsBranch = 'main',
docsDir = '',
editLinkText,
} = theme.value
} = themeData.value
const { editLinkText } = theme.value
if (!docsRepo)
return null

View File

@ -1,9 +1,11 @@
import { computed, onMounted, ref, watchEffect } from 'vue'
import { usePageLang } from 'vuepress/client'
import { useData } from './data.js'
import { useThemeData } from './theme-data.js'
export function useLastUpdated() {
const { theme, page, frontmatter } = useData()
const themeData = useThemeData()
const lang = usePageLang()
const date = computed(() => page.value.git?.updatedTime ? new Date(page.value.git.updatedTime) : null)
@ -12,20 +14,20 @@ export function useLastUpdated() {
const datetime = ref('')
const lastUpdatedText = computed(() => {
if (theme.value.lastUpdated === false)
return
return theme.value.lastUpdated?.text || theme.value.lastUpdatedText || 'Last updated'
if (themeData.value.lastUpdated === false)
return ''
return theme.value.lastUpdatedText || 'Last updated'
})
onMounted(() => {
watchEffect(() => {
if (frontmatter.value.lastUpdated === false || theme.value.lastUpdated === false)
if (frontmatter.value.lastUpdated === false || themeData.value.lastUpdated === false)
return
datetime.value = date.value
? new Intl.DateTimeFormat(
theme.value.lastUpdated?.formatOptions?.forceLocale ? lang.value : undefined,
theme.value.lastUpdated?.formatOptions ?? {
themeData.value.lastUpdated?.formatOptions?.forceLocale ? lang.value : undefined,
themeData.value.lastUpdated?.formatOptions ?? {
dateStyle: 'short',
timeStyle: 'short',
},

View File

@ -339,3 +339,8 @@
color: currentcolor;
content: "";
}
.vp-doc a[href*="://"]:has(img:only-child)::after,
.vp-doc a[target=_blank]:has(img:only-child)::after {
display: none;
}

View File

@ -164,3 +164,11 @@
.vpi-close {
--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z'/%3E%3Cpath fill='%23000' d='m12 14.122l5.303 5.303a1.5 1.5 0 0 0 2.122-2.122L14.12 12l5.304-5.303a1.5 1.5 0 1 0-2.122-2.121L12 9.879L6.697 4.576a1.5 1.5 0 1 0-2.122 2.12L9.88 12l-5.304 5.304a1.5 1.5 0 1 0 2.122 2.12z'/%3E%3C/g%3E%3C/svg%3E");
}
.vpi-changelog {
--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' d='M2.71 10.96a6.5 6.5 0 1 0-.69-3.53M2 8l1.5-1.5M2 8L.5 6.5m8 2v-4m0 4h3'/%3E%3C/svg%3E");
}
.vpi-menu {
--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M4 5h0.01'/%3E%3Cpath d='M8 5h12'/%3E%3Cpath d='M4 10h0.01'/%3E%3Cpath d='M8 10h12'/%3E%3Cpath d='M4 15h0.01'/%3E%3Cpath d='M8 15h12'/%3E%3Cpath d='M4 20h0.01'/%3E%3Cpath d='M8 20h12'/%3E%3C/g%3E%3C/svg%3E");
}

View File

@ -1,10 +1,10 @@
import type { App } from 'vuepress'
import type { PlumeThemeLocaleData, PlumeThemeLocaleOptions } from '../../shared/index.js'
import type { PlumeThemeData, PlumeThemeLocaleOptions } from '../../shared/index.js'
import { entries, fromEntries, getLocaleConfig } from '@vuepress/helper'
import { LOCALE_OPTIONS } from '../locales/index.js'
import { THEME_NAME } from '../utils/index.js'
const FALLBACK_OPTIONS: PlumeThemeLocaleData = {
const FALLBACK_OPTIONS: PlumeThemeData = {
appearance: true,
blog: {
@ -28,6 +28,8 @@ const FALLBACK_OPTIONS: PlumeThemeLocaleData = {
// page meta
editLink: true,
contributors: true,
changelog: false,
prevPage: true,
nextPage: true,

View File

@ -1,6 +1,6 @@
import type { App } from 'vuepress'
import type { NavItem, PlumeThemeLocaleOptions } from '../../shared/index.js'
import { entries, getRootLangPath, isPlainObject } from '@vuepress/helper'
import { entries, getRootLangPath, isBoolean, isPlainObject } from '@vuepress/helper'
import { PRESET_LOCALES } from '../locales/index.js'
import { withBase } from '../utils/index.js'
@ -22,6 +22,12 @@ export function resolveThemeData(app: App, options: PlumeThemeLocaleOptions): Pl
themeData.profile ??= options.avatar
}
options.contributors = isPlainObject(options.contributors)
? { mode: options.contributors.mode || 'inline' }
: isBoolean(options.contributors) ? options.contributors : true
options.changelog = !!options.changelog
if (isPlainObject(themeData.bulletin)) {
const { enablePage: _, ...opt } = themeData.bulletin
themeData.bulletin = opt

View File

@ -11,9 +11,11 @@ export const enLocale: PlumeThemeLocaleData = {
editLinkText: 'Edit this page',
contributorsText: 'Contributors',
lastUpdated: {
text: 'Last Updated',
},
lastUpdatedText: 'Last Updated',
changelogText: 'Changelog',
changelogOnText: 'On',
changelogButtonText: 'View All Changelog',
encryptButtonText: 'Confirm',
encryptPlaceholder: 'Enter password',

View File

@ -16,10 +16,11 @@ export const zhLocale: PlumeThemeLocaleData = {
contributorsText: '贡献者',
prevPageLabel: '上一页',
nextPageLabel: '下一页',
lastUpdatedText: '最后更新于',
lastUpdated: {
text: '最后更新于',
},
changelogText: '变更历史',
changelogOnText: '于',
changelogButtonText: '查看全部变更历史',
notFound: {
code: '404',

View File

@ -30,6 +30,10 @@ function cleanPageData(page: Page<PlumeThemePageData>) {
}
delete page.frontmatter.article
if (page.headers) {
page.data.headers = []
}
if (page.frontmatter.friends) {
page.frontmatter.draft = true
page.data.type = 'friends'

View File

@ -1,5 +1,5 @@
import type { App, PluginConfig } from 'vuepress/core'
import type { PlumeThemePluginOptions } from '../../shared/index.js'
import type { PlumeThemeLocaleOptions, PlumeThemePluginOptions } from '../../shared/index.js'
import { isPlainObject } from '@vuepress/helper'
import { cachePlugin } from '@vuepress/plugin-cache'
import { commentPlugin } from '@vuepress/plugin-comment'
@ -30,12 +30,15 @@ export interface SetupPluginOptions {
cache?: false | 'memory' | 'filesystem'
}
export function getPlugins({
app,
pluginOptions,
hostname,
cache,
}: SetupPluginOptions): PluginConfig {
export function getPlugins(
options: PlumeThemeLocaleOptions,
{
app,
pluginOptions,
hostname,
cache,
}: SetupPluginOptions,
): PluginConfig {
const isProd = app.env.isBuild
const plugins: PluginConfig = [
@ -61,11 +64,26 @@ export function getPlugins({
plugins.push(nprogressPlugin())
}
if (pluginOptions.git ?? isProd) {
if (pluginOptions.git !== false) {
const excludes = ['home', 'friends', 'page', 'custom', false]
const changelogOptions = isPlainObject(options.changelog) ? options.changelog : {}
plugins.push(gitPlugin({
createdTime: true,
updatedTime: true,
contributors: true,
createdTime: false,
updatedTime: options.lastUpdated !== false,
contributors: isPlainObject(options.contributors) || options.contributors === true
? {
avatar: true,
...options.contributors === true ? {} : options.contributors,
}
: false,
changelog: options.changelog && (options.docsRepo || changelogOptions.repoUrl)
? { repoUrl: options.docsRepo, ...changelogOptions }
: false,
filter(page) {
if (page.frontmatter.home || excludes.includes(page.frontmatter.pageLayout as string))
return false
return true
},
}))
}

View File

@ -33,7 +33,7 @@ export function plumeTheme(options: PlumeThemeOptions = {}): Theme {
alias: resolveAlias(),
plugins: getPlugins({ app, pluginOptions, hostname, cache }),
plugins: getPlugins(getThemeConfig().localeOptions, { app, pluginOptions, hostname, cache }),
extendsBundlerOptions,

View File

@ -25,7 +25,12 @@ export interface PlumeThemePageFrontmatter extends PlumeNormalFrontmatter {
/**
*
*/
contributors?: boolean | string | string[]
contributors?: boolean | string[]
/**
*
*/
changelog?: boolean
/**
*
*/

View File

@ -1,7 +1,8 @@
import type { ChangelogOptions, ContributorsOptions, GitChangelog, GitContributor } from '@vuepress/plugin-git'
import type { LocaleConfig } from 'vuepress/shared'
import type { AutoFrontmatter } from '../auto-frontmatter.js'
import type { PlumeThemeEncrypt } from './encrypt.js'
import type { PlumeThemeLocaleData } from './locale.js'
import type { LastUpdatedOptions, PlumeThemeLocaleData } from './locale.js'
import type { PlumeThemePluginOptions } from './plugins.js'
export interface PlumeThemeOptions extends PlumeThemeLocaleOptions {
@ -44,16 +45,58 @@ export interface PlumeThemeOptions extends PlumeThemeLocaleOptions {
* frontmatter
*/
autoFrontmatter?: false | Omit<AutoFrontmatter, 'frontmatter'>
}
export type PlumeThemeLocaleOptions = PlumeThemeData
export type PlumeThemeData = PlumeThemeLocaleData & {
locales?: LocaleConfig<Omit<PlumeThemeLocaleData, 'blog' | 'article'>>
/**
* , Edit this page
*/
docsRepo?: string
/**
* `Edit this page`
*/
docsBranch?: string
/**
* `Edit this page`
*/
docsDir?: string
/**
* "编辑此页"
*
* @default true
*/
editLink?: boolean
/**
*
*
* @default { text: 'Last Updated', formatOptions: { dateStyle: 'short', timeStyle: 'short' } }
*/
lastUpdated?: false | LastUpdatedOptions
/**
*
*/
contributors?: boolean | ContributorsOptions & { mode?: 'inline' | 'block' }
/**
*
*/
changelog?: boolean | ChangelogOptions
}
export * from './bulletin.js'
export * from './encrypt.js'
export * from './locale.js'
export * from './plugins.js'
export {
type GitChangelog,
type GitContributor,
}

View File

@ -137,13 +137,6 @@ export interface PlumeThemeLocaleData extends LocaleData {
*/
selectLanguageName?: string
/**
* "编辑此页"
*
* @default true
*/
editLink?: boolean
/**
* "编辑此页"
*
@ -157,45 +150,38 @@ export interface PlumeThemeLocaleData extends LocaleData {
* @example ':repo/edit/:branch/:path'
*/
editLinkPattern?: string
/**
* , Edit this page
*/
docsRepo?: string
/**
* `Edit this page`
*/
docsBranch?: string
/**
* `Edit this page`
*/
docsDir?: string
/**
*
*
* @default { text: 'Last Updated', formatOptions: { dateStyle: 'short', timeStyle: 'short' } }
*/
lastUpdated?: false | LastUpdatedOptions
/**
* @deprecated 使 `lastUpdated.text` .
*
* "最后更新时间"
*
* @default 'Last updated'
*/
lastUpdatedText?: string
/**
*
*/
contributors?: boolean
/**
*
*/
contributorsText?: string
/**
*
* @default 'Changelog'
*/
changelogText?: string
/**
*
* @default 'On'
*/
changelogOnText?: string
/**
*
*
* @default 'View All Changelog'
*/
changelogButtonText?: string
/**
*
*
@ -350,13 +336,6 @@ export interface PlumeThemeProfile {
/** ========================== Page Meta ====================== */
export interface LastUpdatedOptions {
/**
* Set custom last updated text.
*
* @default 'Last updated'
*/
text?: string
/**
* Set options for last updated time formatting.
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat#using_options