From 4ffc338612f781d85bc4b9d08bd94bf09aefab06 Mon Sep 17 00:00:00 2001 From: "Mr.Hope" Date: Mon, 4 Dec 2023 21:12:15 +0800 Subject: [PATCH] feat: use theme-hope --- .github/workflows/deploy-docs.yml | 39 + .vscode/settings.json | 3 +- README.md | 5 +- docs/.vuepress/config.ts | 86 +- docs/.vuepress/configs/navbar/en.ts | 104 +- docs/.vuepress/configs/navbar/zh.ts | 103 +- docs/.vuepress/configs/sidebar/en.ts | 137 +- docs/.vuepress/configs/sidebar/zh.ts | 140 +- docs/.vuepress/theme.ts | 61 + docs/README.md | 12 +- docs/advanced/architecture.md | 6 +- docs/advanced/cookbook/README.md | 4 + docs/advanced/cookbook/adding-extra-pages.md | 4 + .../cookbook/making-a-theme-extendable.md | 4 + .../advanced/cookbook/markdown-and-vue-sfc.md | 19 +- .../cookbook/passing-data-to-client-code.md | 4 + .../cookbook/usage-of-client-config.md | 10 +- docs/advanced/plugin.md | 4 + docs/advanced/theme.md | 4 + docs/guide/README.md | 4 + docs/guide/assets.md | 4 + docs/guide/bundler.md | 20 +- docs/guide/configuration.md | 4 + docs/guide/deployment.md | 3 + docs/guide/getting-started.md | 52 +- docs/guide/i18n.md | 4 + docs/guide/markdown.md | 4 + docs/guide/migration.md | 4 + docs/guide/page.md | 4 + docs/guide/plugin.md | 6 +- docs/guide/theme.md | 4 + docs/reference/bundler/vite.md | 4 + docs/reference/bundler/webpack.md | 4 + docs/reference/cli.md | 4 + docs/reference/client-api.md | 4 + docs/reference/components.md | 4 + docs/reference/config.md | 4 + docs/reference/default-theme/components.md | 20 +- docs/reference/default-theme/config.md | 9 +- docs/reference/default-theme/extending.md | 4 + docs/reference/default-theme/frontmatter.md | 4 + docs/reference/default-theme/markdown.md | 33 +- docs/reference/default-theme/styles.md | 4 + docs/reference/frontmatter.md | 44 +- docs/reference/node-api.md | 6 +- docs/reference/plugin-api.md | 8 +- docs/reference/plugin/container.md | 60 +- docs/reference/plugin/pwa.md | 8 +- docs/reference/plugin/register-components.md | 5 +- docs/reference/plugin/shiki.md | 4 +- docs/reference/theme-api.md | 4 + docs/zh/README.md | 12 +- docs/zh/advanced/architecture.md | 4 + docs/zh/advanced/cookbook/README.md | 4 + .../advanced/cookbook/adding-extra-pages.md | 4 + .../cookbook/making-a-theme-extendable.md | 4 + .../advanced/cookbook/markdown-and-vue-sfc.md | 19 +- .../cookbook/passing-data-to-client-code.md | 5 +- .../cookbook/usage-of-client-config.md | 8 +- docs/zh/advanced/plugin.md | 4 + docs/zh/advanced/theme.md | 4 + docs/zh/guide/README.md | 6 +- docs/zh/guide/assets.md | 6 + docs/zh/guide/bundler.md | 22 +- docs/zh/guide/configuration.md | 4 + docs/zh/guide/deployment.md | 14 +- docs/zh/guide/getting-started.md | 53 +- docs/zh/guide/i18n.md | 4 + docs/zh/guide/markdown.md | 6 +- docs/zh/guide/migration.md | 4 + docs/zh/guide/page.md | 5 + docs/zh/guide/plugin.md | 6 +- docs/zh/guide/theme.md | 4 + docs/zh/reference/bundler/vite.md | 4 + docs/zh/reference/bundler/webpack.md | 4 + docs/zh/reference/cli.md | 4 + docs/zh/reference/client-api.md | 4 + docs/zh/reference/components.md | 6 +- docs/zh/reference/config.md | 4 + docs/zh/reference/default-theme/components.md | 20 +- docs/zh/reference/default-theme/config.md | 9 +- docs/zh/reference/default-theme/extending.md | 4 + .../zh/reference/default-theme/frontmatter.md | 4 + docs/zh/reference/default-theme/markdown.md | 32 +- docs/zh/reference/default-theme/styles.md | 4 + docs/zh/reference/frontmatter.md | 4 + docs/zh/reference/node-api.md | 21 +- docs/zh/reference/plugin-api.md | 9 +- docs/zh/reference/plugin/container.md | 7 +- docs/zh/reference/plugin/git.md | 1 - docs/zh/reference/plugin/google-analytics.md | 2 +- docs/zh/reference/plugin/pwa.md | 11 +- .../reference/plugin/register-components.md | 6 +- docs/zh/reference/theme-api.md | 4 + package.json | 10 +- pnpm-lock.yaml | 1252 ++++++++++++++++- 96 files changed, 2134 insertions(+), 593 deletions(-) create mode 100644 .github/workflows/deploy-docs.yml create mode 100644 docs/.vuepress/theme.ts diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml new file mode 100644 index 00000000..c515010b --- /dev/null +++ b/.github/workflows/deploy-docs.yml @@ -0,0 +1,39 @@ +name: Deploy docs + +on: + push: + branches: + - theme-hope + +jobs: + deploy-netlify: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install pnpm + uses: pnpm/action-setup@v2 + with: + run_install: true + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + + - name: Build docs + env: + NODE_OPTIONS: --max_old_space_size=4096 + run: |- + pnpm run docs:build + > docs/.vuepress/dist/.nojekyll + + - name: Deploy docs + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: netlify + folder: docs/.vuepress/dist diff --git a/.vscode/settings.json b/.vscode/settings.json index 9b673398..967b6652 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -39,5 +39,6 @@ "vuepress", "vueuse", "zoomable" - ] + ], + "markdown.extension.toc.updateOnSave": false } diff --git a/README.md b/README.md index cb86b27e..42cf2bda 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,11 @@ VuePress documentation repository. +This branch holds a VuePress2 official docs powered by [VuePress Theme Hope](https://theme-hope.vuejs.press). + ## Deployments -- Release deployment: https://v2.vuepress.vuejs.org -- Developer deployment: https://vuepress.github.io +- Deployment: ## License diff --git a/docs/.vuepress/config.ts b/docs/.vuepress/config.ts index 5cf08ede..df0d3f5a 100644 --- a/docs/.vuepress/config.ts +++ b/docs/.vuepress/config.ts @@ -4,22 +4,13 @@ import { viteBundler } from '@vuepress/bundler-vite' import { webpackBundler } from '@vuepress/bundler-webpack' import { defineUserConfig } from '@vuepress/cli' import { docsearchPlugin } from '@vuepress/plugin-docsearch' -import { googleAnalyticsPlugin } from '@vuepress/plugin-google-analytics' import { registerComponentsPlugin } from '@vuepress/plugin-register-components' -import { shikiPlugin } from '@vuepress/plugin-shiki' -import { defaultTheme } from '@vuepress/theme-default' import { getDirname, path } from '@vuepress/utils' -import { - head, - navbarEn, - navbarZh, - sidebarEn, - sidebarZh, -} from './configs/index.js' +import { head } from './configs/index.js' +import theme from './theme.js' const __dirname = getDirname(import.meta.url) const require = createRequire(import.meta.url) -const isProd = process.env.NODE_ENV === 'production' export default defineUserConfig({ // set site base to default value @@ -46,71 +37,6 @@ export default defineUserConfig({ bundler: process.env.DOCS_BUNDLER === 'webpack' ? webpackBundler() : viteBundler(), - // configure default theme - theme: defaultTheme({ - logo: '/images/hero.png', - repo: 'vuepress/vuepress-next', - docsDir: 'docs', - - // theme-level locales config - locales: { - /** - * English locale config - * - * As the default locale of @vuepress/theme-default is English, - * we don't need to set all of the locale fields - */ - '/': { - // navbar - navbar: navbarEn, - // sidebar - sidebar: sidebarEn, - // page meta - editLinkText: 'Edit this page on GitHub', - }, - - /** - * Chinese locale config - */ - '/zh/': { - // navbar - navbar: navbarZh, - selectLanguageName: '简体中文', - selectLanguageText: '选择语言', - selectLanguageAriaLabel: '选择语言', - // sidebar - sidebar: sidebarZh, - // page meta - editLinkText: '在 GitHub 上编辑此页', - lastUpdatedText: '上次更新', - contributorsText: '贡献者', - // custom containers - tip: '提示', - warning: '注意', - danger: '警告', - // 404 page - notFound: [ - '这里什么都没有', - '我们怎么到这来了?', - '这是一个 404 页面', - '看起来我们进入了错误的链接', - ], - backToHome: '返回首页', - // a11y - openInNewWindow: '在新窗口打开', - toggleColorMode: '切换颜色模式', - toggleSidebar: '切换侧边栏', - }, - }, - - themePlugins: { - // only enable git plugin in production mode - git: isProd, - // use shiki plugin in production mode instead - prismjs: !isProd, - }, - }), - // configure markdown markdown: { importCode: { @@ -131,6 +57,8 @@ export default defineUserConfig({ }, }, + theme, + // use plugins plugins: [ docsearchPlugin({ @@ -184,14 +112,8 @@ export default defineUserConfig({ }, }, }), - googleAnalyticsPlugin({ - // we have multiple deployments, which would use different id - id: process.env.DOCS_GA_ID ?? '', - }), registerComponentsPlugin({ componentsDir: path.resolve(__dirname, './components'), }), - // only enable shiki plugin in production mode - isProd ? shikiPlugin({ theme: 'dark-plus' }) : [], ], }) diff --git a/docs/.vuepress/configs/navbar/en.ts b/docs/.vuepress/configs/navbar/en.ts index 73874ecc..d92c5ec7 100644 --- a/docs/.vuepress/configs/navbar/en.ts +++ b/docs/.vuepress/configs/navbar/en.ts @@ -1,110 +1,108 @@ -import type { NavbarConfig } from '@vuepress/theme-default' +import { navbar } from 'vuepress-theme-hope' import { version } from '../meta.js' -export const navbarEn: NavbarConfig = [ +export const enNavbar = navbar([ { text: 'Guide', + icon: 'fa6-solid:lightbulb', link: '/guide/', }, { text: 'Reference', + icon: 'fa6-solid:book', + prefix: '/reference/', children: [ { text: 'VuePress', children: [ { text: 'CLI', - link: '/reference/cli.html', + icon: 'bi:terminal-fill', + link: 'cli.html', }, - '/reference/config.md', - '/reference/frontmatter.md', - '/reference/components.md', - '/reference/plugin-api.md', - '/reference/theme-api.md', - '/reference/client-api.md', - '/reference/node-api.md', + 'config', + 'frontmatter', + 'components', + 'plugin-api', + 'theme-api', + 'client-api', + 'node-api', ], }, { text: 'Bundlers', - children: [ - '/reference/bundler/vite.md', - '/reference/bundler/webpack.md', - ], + prefix: 'bundler/', + children: ['vite', 'webpack'], }, { text: 'Default Theme', + prefix: 'default-theme/', children: [ - '/reference/default-theme/config.md', - '/reference/default-theme/frontmatter.md', - '/reference/default-theme/components.md', - '/reference/default-theme/markdown.md', - '/reference/default-theme/styles.md', - '/reference/default-theme/extending.md', + 'config', + 'frontmatter', + 'components', + 'markdown', + 'styles', + 'extending', ], }, ], }, { text: 'Plugins', + icon: 'fa6-solid:plug', + prefix: '/reference/plugin/', children: [ { text: 'Common Features', children: [ - '/reference/plugin/back-to-top.md', - '/reference/plugin/container.md', - '/reference/plugin/external-link-icon.md', - '/reference/plugin/google-analytics.md', - '/reference/plugin/medium-zoom.md', - '/reference/plugin/nprogress.md', - '/reference/plugin/register-components.md', + 'back-to-top', + 'container', + 'external-link-icon', + 'google-analytics', + 'medium-zoom', + 'nprogress', + 'register-components', ], }, { text: 'Content Search', - children: [ - '/reference/plugin/docsearch.md', - '/reference/plugin/search.md', - ], + children: ['docsearch', 'search'], }, { text: 'PWA', - children: [ - '/reference/plugin/pwa.md', - '/reference/plugin/pwa-popup.md', - ], + children: ['pwa', 'pwa-popup'], }, { text: 'Syntax Highlighting', - children: [ - '/reference/plugin/prismjs.md', - '/reference/plugin/shiki.md', - ], + children: ['prismjs', 'shiki'], }, { text: 'Theme Development', children: [ - '/reference/plugin/active-header-links.md', - '/reference/plugin/git.md', - '/reference/plugin/palette.md', - '/reference/plugin/theme-data.md', - '/reference/plugin/toc.md', + 'active-header-links', + 'git', + 'palette', + 'theme-data', + 'toc', ], }, ], }, { text: 'Learn More', + icon: 'fa6-solid:feather', children: [ { text: 'Advanced', + prefix: '/advanced/', children: [ - '/advanced/architecture.md', - '/advanced/plugin.md', - '/advanced/theme.md', + 'architecture', + 'plugin', + 'theme', { text: 'Cookbook', - link: '/advanced/cookbook/', + link: 'cookbook/', }, ], }, @@ -119,25 +117,33 @@ export const navbarEn: NavbarConfig = [ text: 'Awesome VuePress', link: 'https://github.com/vuepress/awesome-vuepress', }, + { + text: 'VuePress MarketPlace', + link: 'https://marketplace.vuejs.press', + }, ], }, ], }, { text: `v${version}`, + icon: 'fa6-solid:tag', children: [ { text: 'Changelog', + icon: 'fa6-solid:clock', link: 'https://github.com/vuepress/vuepress-next/blob/main/CHANGELOG.md', }, { text: 'v1.x', + icon: 'fa6-brands:vuejs', link: 'https://v1.vuepress.vuejs.org', }, { text: 'v0.x', + icon: 'fa6-brands:vuejs', link: 'https://v0.vuepress.vuejs.org', }, ], }, -] +]) diff --git a/docs/.vuepress/configs/navbar/zh.ts b/docs/.vuepress/configs/navbar/zh.ts index 17f77fd3..efcbeee8 100644 --- a/docs/.vuepress/configs/navbar/zh.ts +++ b/docs/.vuepress/configs/navbar/zh.ts @@ -1,107 +1,104 @@ -import type { NavbarConfig } from '@vuepress/theme-default' +import { navbar } from 'vuepress-theme-hope' import { version } from '../meta.js' -export const navbarZh: NavbarConfig = [ +export const zhNavbar = navbar([ { text: '指南', + icon: 'fa6-solid:lightbulb', link: '/zh/guide/', }, { text: '参考', + icon: 'fa6-solid:book', + prefix: '/zh/reference/', children: [ { text: 'VuePress', children: [ - '/zh/reference/cli.md', - '/zh/reference/config.md', - '/zh/reference/frontmatter.md', - '/zh/reference/components.md', - '/zh/reference/plugin-api.md', - '/zh/reference/theme-api.md', - '/zh/reference/client-api.md', - '/zh/reference/node-api.md', + 'cli', + 'config', + 'frontmatter', + 'components', + 'plugin-api', + 'theme-api', + 'client-api', + 'node-api', ], }, { text: '打包工具', - children: [ - '/zh/reference/bundler/vite.md', - '/zh/reference/bundler/webpack.md', - ], + prefix: 'bundler/', + children: ['vite', 'webpack'], }, { text: '默认主题', + prefix: 'default-theme/', children: [ - '/zh/reference/default-theme/config.md', - '/zh/reference/default-theme/frontmatter.md', - '/zh/reference/default-theme/components.md', - '/zh/reference/default-theme/markdown.md', - '/zh/reference/default-theme/styles.md', - '/zh/reference/default-theme/extending.md', + 'config', + 'frontmatter', + 'components', + 'markdown', + 'styles', + 'extending', ], }, ], }, { text: '插件', + icon: 'fa6-solid:plug', + prefix: '/zh/reference/plugin/', children: [ { text: '常用功能', children: [ - '/zh/reference/plugin/back-to-top.md', - '/zh/reference/plugin/container.md', - '/zh/reference/plugin/external-link-icon.md', - '/zh/reference/plugin/google-analytics.md', - '/zh/reference/plugin/medium-zoom.md', - '/zh/reference/plugin/nprogress.md', - '/zh/reference/plugin/register-components.md', + 'back-to-top', + 'container', + 'external-link-icon', + 'google-analytics', + 'medium-zoom', + 'nprogress', + 'register-components', ], }, { text: '内容搜索', - children: [ - '/zh/reference/plugin/docsearch.md', - '/zh/reference/plugin/search.md', - ], + children: ['docsearch', 'search'], }, { text: 'PWA', - children: [ - '/zh/reference/plugin/pwa.md', - '/zh/reference/plugin/pwa-popup.md', - ], + children: ['pwa', 'pwa-popup'], }, { text: '语法高亮', - children: [ - '/zh/reference/plugin/prismjs.md', - '/zh/reference/plugin/shiki.md', - ], + children: ['prismjs', 'shiki'], }, { text: '主题开发', children: [ - '/zh/reference/plugin/active-header-links.md', - '/zh/reference/plugin/git.md', - '/zh/reference/plugin/palette.md', - '/zh/reference/plugin/theme-data.md', - '/zh/reference/plugin/toc.md', + 'active-header-links', + 'git', + 'palette', + 'theme-data', + 'toc', ], }, ], }, { text: '了解更多', + icon: 'fa6-solid:feather', children: [ { text: '深入', + prefix: '/zh/advanced/', children: [ - '/zh/advanced/architecture.md', - '/zh/advanced/plugin.md', - '/zh/advanced/theme.md', + 'architecture', + 'plugin', + 'theme', { text: 'Cookbook', - link: '/zh/advanced/cookbook/', + link: 'cookbook/', }, ], }, @@ -116,25 +113,33 @@ export const navbarZh: NavbarConfig = [ text: 'Awesome VuePress', link: 'https://github.com/vuepress/awesome-vuepress', }, + { + text: 'VuePress 市场', + link: 'https://marketplace.vuejs.press/zh/', + }, ], }, ], }, { text: `v${version}`, + icon: 'fa6-solid:tag', children: [ { text: '更新日志', + icon: 'fa6-solid:clock', link: 'https://github.com/vuepress/vuepress-next/blob/main/CHANGELOG.md', }, { text: 'v1.x', + icon: 'fa6-brands:vuejs', link: 'https://v1.vuepress.vuejs.org/zh/', }, { text: 'v0.x', + icon: 'fa6-brands:vuejs', link: 'https://v0.vuepress.vuejs.org/zh/', }, ], }, -] +]) diff --git a/docs/.vuepress/configs/sidebar/en.ts b/docs/.vuepress/configs/sidebar/en.ts index b358ab59..e4dad440 100644 --- a/docs/.vuepress/configs/sidebar/en.ts +++ b/docs/.vuepress/configs/sidebar/en.ts @@ -1,126 +1,123 @@ -import type { SidebarConfig } from '@vuepress/theme-default' +import { sidebar } from 'vuepress-theme-hope' -export const sidebarEn: SidebarConfig = { +export const enSidebar = sidebar({ '/guide/': [ - { - text: 'Guide', - children: [ - '/guide/README.md', - '/guide/getting-started.md', - '/guide/configuration.md', - '/guide/page.md', - '/guide/markdown.md', - '/guide/assets.md', - '/guide/i18n.md', - '/guide/deployment.md', - '/guide/theme.md', - '/guide/plugin.md', - '/guide/bundler.md', - '/guide/migration.md', - ], - }, + '', + 'getting-started', + 'configuration', + 'page', + 'markdown', + 'assets', + 'i18n', + 'deployment', + 'theme', + 'plugin', + 'bundler', + 'migration', ], '/advanced/': [ { text: 'Advanced', - children: [ - '/advanced/architecture.md', - '/advanced/plugin.md', - '/advanced/theme.md', - ], + icon: 'fa6-solid:gem', + children: ['architecture', 'plugin', 'theme'], }, { text: 'Cookbook', + icon: 'fa6-solid:signs-post', + prefix: 'cookbook/', children: [ - '/advanced/cookbook/README.md', - '/advanced/cookbook/usage-of-client-config.md', - '/advanced/cookbook/adding-extra-pages.md', - '/advanced/cookbook/making-a-theme-extendable.md', - '/advanced/cookbook/passing-data-to-client-code.md', - '/advanced/cookbook/markdown-and-vue-sfc.md', + '', + 'usage-of-client-config', + 'adding-extra-pages', + 'making-a-theme-extendable', + 'passing-data-to-client-code', + 'markdown-and-vue-sfc', ], }, ], '/reference/': [ { text: 'VuePress Reference', + icon: 'fa6-brands:vuejs', collapsible: true, children: [ - '/reference/cli.md', - '/reference/config.md', - '/reference/frontmatter.md', - '/reference/components.md', - '/reference/plugin-api.md', - '/reference/theme-api.md', - '/reference/client-api.md', - '/reference/node-api.md', + 'cli', + 'config', + 'frontmatter', + 'components', + 'plugin-api', + 'theme-api', + 'client-api', + 'node-api', ], }, { text: 'Bundlers Reference', + icon: 'fa6-solid:boxes-packing', + prefix: 'bundler/', collapsible: true, - children: ['/reference/bundler/vite.md', '/reference/bundler/webpack.md'], + children: ['vite', 'webpack'], }, { text: 'Default Theme Reference', + icon: 'fa6-solid:palette', + prefix: 'default-theme/', collapsible: true, children: [ - '/reference/default-theme/config.md', - '/reference/default-theme/frontmatter.md', - '/reference/default-theme/components.md', - '/reference/default-theme/markdown.md', - '/reference/default-theme/styles.md', - '/reference/default-theme/extending.md', + 'config', + 'frontmatter', + 'components', + 'markdown', + 'styles', + 'extending', ], }, { text: 'Official Plugins Reference', + icon: 'fa6-solid:plug', + prefix: 'plugin/', collapsible: true, children: [ { text: 'Common Features', children: [ - '/reference/plugin/back-to-top.md', - '/reference/plugin/container.md', - '/reference/plugin/external-link-icon.md', - '/reference/plugin/google-analytics.md', - '/reference/plugin/medium-zoom.md', - '/reference/plugin/nprogress.md', - '/reference/plugin/register-components.md', + 'back-to-top', + 'container', + 'external-link-icon', + 'google-analytics', + 'medium-zoom', + 'nprogress', + 'register-components', ], }, { text: 'Content Search', - children: [ - '/reference/plugin/docsearch.md', - '/reference/plugin/search.md', - ], + children: ['docsearch', 'search'], }, { text: 'PWA', - children: [ - '/reference/plugin/pwa.md', - '/reference/plugin/pwa-popup.md', - ], + children: ['pwa', 'pwa-popup'], }, { text: 'Syntax Highlighting', - children: [ - '/reference/plugin/prismjs.md', - '/reference/plugin/shiki.md', - ], + children: ['prismjs', 'shiki'], }, { text: 'Theme Development', children: [ - '/reference/plugin/active-header-links.md', - '/reference/plugin/git.md', - '/reference/plugin/palette.md', - '/reference/plugin/theme-data.md', - '/reference/plugin/toc.md', + 'active-header-links', + 'git', + 'palette', + 'theme-data', + 'toc', ], }, ], }, + { + text: 'VuePress MarketPlace', + icon: 'fa6-solid:cart-shopping', + link: 'https://marketplace.vuejs.press', + }, ], -} +}) diff --git a/docs/.vuepress/configs/sidebar/zh.ts b/docs/.vuepress/configs/sidebar/zh.ts index fc75e512..00d65c3d 100644 --- a/docs/.vuepress/configs/sidebar/zh.ts +++ b/docs/.vuepress/configs/sidebar/zh.ts @@ -1,129 +1,123 @@ -import type { SidebarConfig } from '@vuepress/theme-default' +import { sidebar } from 'vuepress-theme-hope' -export const sidebarZh: SidebarConfig = { +export const zhSidebar = sidebar({ '/zh/guide/': [ - { - text: '指南', - children: [ - '/zh/guide/README.md', - '/zh/guide/getting-started.md', - '/zh/guide/configuration.md', - '/zh/guide/page.md', - '/zh/guide/markdown.md', - '/zh/guide/assets.md', - '/zh/guide/i18n.md', - '/zh/guide/deployment.md', - '/zh/guide/theme.md', - '/zh/guide/plugin.md', - '/zh/guide/bundler.md', - '/zh/guide/migration.md', - ], - }, + '', + 'getting-started', + 'configuration', + 'page', + 'markdown', + 'assets', + 'i18n', + 'deployment', + 'theme', + 'plugin', + 'bundler', + 'migration', ], '/zh/advanced/': [ { text: '深入', - children: [ - '/zh/advanced/architecture.md', - '/zh/advanced/plugin.md', - '/zh/advanced/theme.md', - ], + icon: 'fa6-solid:gem', + children: ['architecture', 'plugin', 'theme'], }, { text: 'Cookbook', + icon: 'fa6-solid:signs-post', + prefix: 'cookbook/', children: [ - '/zh/advanced/cookbook/README.md', - '/zh/advanced/cookbook/usage-of-client-config.md', - '/zh/advanced/cookbook/adding-extra-pages.md', - '/zh/advanced/cookbook/making-a-theme-extendable.md', - '/zh/advanced/cookbook/passing-data-to-client-code.md', - '/zh/advanced/cookbook/markdown-and-vue-sfc.md', + '', + 'usage-of-client-config', + 'adding-extra-pages', + 'making-a-theme-extendable', + 'passing-data-to-client-code', + 'markdown-and-vue-sfc', ], }, ], '/zh/reference/': [ { text: 'VuePress 参考', + icon: 'fa6-brands:vuejs', collapsible: true, children: [ - '/zh/reference/cli.md', - '/zh/reference/config.md', - '/zh/reference/frontmatter.md', - '/zh/reference/components.md', - '/zh/reference/plugin-api.md', - '/zh/reference/theme-api.md', - '/zh/reference/client-api.md', - '/zh/reference/node-api.md', + '/zh/reference/cli', + '/zh/reference/config', + '/zh/reference/frontmatter', + '/zh/reference/components', + '/zh/reference/plugin-api', + '/zh/reference/theme-api', + '/zh/reference/client-api', + '/zh/reference/node-api', ], }, { text: '打包工具参考', + icon: 'fa6-solid:boxes-packing', + prefix: 'bundler/', collapsible: true, - children: [ - '/zh/reference/bundler/vite.md', - '/zh/reference/bundler/webpack.md', - ], + children: ['vite', 'webpack'], }, { text: '默认主题参考', + icon: 'fa6-solid:palette', + prefix: 'default-theme/', collapsible: true, children: [ - '/zh/reference/default-theme/config.md', - '/zh/reference/default-theme/frontmatter.md', - '/zh/reference/default-theme/components.md', - '/zh/reference/default-theme/markdown.md', - '/zh/reference/default-theme/styles.md', - '/zh/reference/default-theme/extending.md', + 'config', + 'frontmatter', + 'components', + 'markdown', + 'styles', + 'extending', ], }, { text: '官方插件参考', + icon: 'fa6-solid:plug', collapsible: true, + prefix: 'plugin/', children: [ { text: '常用功能', children: [ - '/zh/reference/plugin/back-to-top.md', - '/zh/reference/plugin/container.md', - '/zh/reference/plugin/external-link-icon.md', - '/zh/reference/plugin/google-analytics.md', - '/zh/reference/plugin/medium-zoom.md', - '/zh/reference/plugin/nprogress.md', - '/zh/reference/plugin/register-components.md', + 'back-to-top', + 'container', + 'external-link-icon', + 'google-analytics', + 'medium-zoom', + 'nprogress', + 'register-components', ], }, { text: '内容搜索', - children: [ - '/zh/reference/plugin/docsearch.md', - '/zh/reference/plugin/search.md', - ], + children: ['docsearch', 'search'], }, { text: 'PWA', - children: [ - '/zh/reference/plugin/pwa.md', - '/zh/reference/plugin/pwa-popup.md', - ], + children: ['pwa', 'pwa-popup'], }, { text: '语法高亮', - children: [ - '/zh/reference/plugin/prismjs.md', - '/zh/reference/plugin/shiki.md', - ], + children: ['prismjs', 'shiki'], }, { text: '主题开发', children: [ - '/zh/reference/plugin/active-header-links.md', - '/zh/reference/plugin/git.md', - '/zh/reference/plugin/palette.md', - '/zh/reference/plugin/theme-data.md', - '/zh/reference/plugin/toc.md', + 'active-header-links', + 'git', + 'palette', + 'theme-data', + 'toc', ], }, ], }, + { + text: 'VuePress 市场', + icon: 'fa6-solid:cart-shopping', + link: 'https://marketplace.vuejs.press/zh/', + }, ], -} +}) diff --git a/docs/.vuepress/theme.ts b/docs/.vuepress/theme.ts new file mode 100644 index 00000000..7f91f427 --- /dev/null +++ b/docs/.vuepress/theme.ts @@ -0,0 +1,61 @@ +import { hopeTheme } from 'vuepress-theme-hope' +import { enNavbar, enSidebar, zhNavbar, zhSidebar } from './configs/index.js' + +export default hopeTheme({ + hostname: 'https://vuejs.press', + iconAssets: 'iconify', + + logo: '/images/hero.png', + repo: 'vuepress/vuepress-next', + docsDir: 'docs', + + locales: { + '/': { + // navbar + navbar: enNavbar, + + // sidebar + sidebar: enSidebar, + + footer: + 'Theme by VuePress Theme Hope', + + copyright: 'MIT Licensed | Copyright © 2018-present Evan You', + + displayFooter: true, + + metaLocales: { + editLink: 'Edit this page on GitHub', + }, + }, + + /** + * Chinese locale config + */ + '/zh/': { + // navbar + navbar: zhNavbar, + + // sidebar + sidebar: zhSidebar, + + footer: + '主题使用 VuePress Theme Hope', + + copyright: 'MIT 协议 | 版权所有 © 2018-至今 尤雨溪', + + displayFooter: true, + + // page meta + metaLocales: { + editLink: '在 GitHub 上编辑此页', + }, + }, + }, + + plugins: { + mdEnhance: { + codetabs: true, + }, + }, +}) diff --git a/docs/README.md b/docs/README.md index b0378e61..48d7b4db 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,6 +1,7 @@ --- home: true title: Home +icon: fa6-solid:house heroImage: /images/hero.png actions: - text: Get Started @@ -9,18 +10,27 @@ actions: - text: Introduction link: /guide/ type: secondary + - text: Marketplace + link: https://marketplace.vuejs.press/ + type: secondary features: - title: Simplicity First + icon: fa6-solid:star details: Minimal setup with markdown-centered project structure helps you focus on writing. - title: Vue-Powered + icon: fa6-brands:vuejs details: Enjoy the dev experience of Vue, use Vue components in markdown, and develop custom themes with Vue. - title: Performant + icon: fa6-solid:bolt details: VuePress generates pre-rendered static HTML for each page, and runs as an SPA once a page is loaded. - title: Themes + icon: fa6-solid:palette details: Providing a default theme out of the box. You can also choose a community theme or create your own one. - title: Plugins + icon: fa6-solid:plug details: Flexible plugin API, allowing plugins to provide lots of plug-and-play features for your site. - title: Bundlers + icon: fa6-solid:boxes-packing details: Default bundler is Vite, while Webpack is also supported. Choose the one you like! -footer: MIT Licensed | Copyright © 2018-present VuePress Community +footer: MIT Licensed | Copyright © 2018-present VuePress Community | Theme by vuepress-theme-hope --- diff --git a/docs/advanced/architecture.md b/docs/advanced/architecture.md index b80f495a..85addc1f 100644 --- a/docs/advanced/architecture.md +++ b/docs/advanced/architecture.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:folder-tree +--- + # Architecture ## Overview @@ -33,4 +37,4 @@ The above figure shows the core process of VuePress Node App and the hooks of [P - In the **dev / build** stage: - Bundler will be resolved: - [extendsBundlerOptions](../reference/plugin-api.md#extendsbundleroptions) hook will be processed to create bundler configuration. - - [alias](../reference/plugin-api.md#alias) hook and [define](../reference/plugin-api.md#define) hook would be used in bundler configuration, so they will be processed here. \ No newline at end of file + - [alias](../reference/plugin-api.md#alias) hook and [define](../reference/plugin-api.md#define) hook would be used in bundler configuration, so they will be processed here. diff --git a/docs/advanced/cookbook/README.md b/docs/advanced/cookbook/README.md index da53257d..171c82cf 100644 --- a/docs/advanced/cookbook/README.md +++ b/docs/advanced/cookbook/README.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:circle-info +--- + # Introduction ## What's the Cookbook for? diff --git a/docs/advanced/cookbook/adding-extra-pages.md b/docs/advanced/cookbook/adding-extra-pages.md index 4725368d..7b6f08f3 100644 --- a/docs/advanced/cookbook/adding-extra-pages.md +++ b/docs/advanced/cookbook/adding-extra-pages.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:circle-plus +--- + # Adding Extra Pages Sometimes you might want to add some extra pages without creating a markdown file in the source directory. diff --git a/docs/advanced/cookbook/making-a-theme-extendable.md b/docs/advanced/cookbook/making-a-theme-extendable.md index 8214310f..f04aefd3 100644 --- a/docs/advanced/cookbook/making-a-theme-extendable.md +++ b/docs/advanced/cookbook/making-a-theme-extendable.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:clone +--- + # Making a Theme Extendable Sometimes users might want make some minor changes to a theme, but they don't want to fork and modify the entire project. diff --git a/docs/advanced/cookbook/markdown-and-vue-sfc.md b/docs/advanced/cookbook/markdown-and-vue-sfc.md index cdbc1771..05dd6163 100644 --- a/docs/advanced/cookbook/markdown-and-vue-sfc.md +++ b/docs/advanced/cookbook/markdown-and-vue-sfc.md @@ -1,3 +1,7 @@ +--- +icon: fa6-brands:vuejs +--- + # Markdown and Vue SFC Each Markdown file is first compiled into HTML, and then converted to a Vue SFC. In other words, you can write a Markdown file like a Vue SFC: @@ -60,13 +64,14 @@ _Current count is: {{ count }}_ diff --git a/docs/advanced/cookbook/passing-data-to-client-code.md b/docs/advanced/cookbook/passing-data-to-client-code.md index 28407066..f966f562 100644 --- a/docs/advanced/cookbook/passing-data-to-client-code.md +++ b/docs/advanced/cookbook/passing-data-to-client-code.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:right-to-bracket +--- + # Passing Data to Client Code As we know, VuePress plugin entries and theme entries are processed in Node side, but sometimes you might need to pass data to client side. For example, you want to generate different data when users use different options. diff --git a/docs/advanced/cookbook/usage-of-client-config.md b/docs/advanced/cookbook/usage-of-client-config.md index 8dd27dce..215dee80 100644 --- a/docs/advanced/cookbook/usage-of-client-config.md +++ b/docs/advanced/cookbook/usage-of-client-config.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:gear +--- + # Usage of Client Config You can make use of the [client config file](../../guide/configuration.md#client-config-file) directly in your project, or specify the file path in your plugin or theme via [clientConfigFile](../../reference/plugin-api.md#clientconfigfile) hook: @@ -12,7 +16,7 @@ const pluginOrTheme = { } ``` -Inside the client config file, `@vuepress/client` package provides a helper function [defineClientConfig](../../reference/client-api.md#defineclientconfig) to help you define the client config: +Inside the client config file, `@vuepress/client` package provides a helper function [defineClientConfig](../../reference/client-api.md#defineclientconfig) to help you define the client config: ```ts import { defineClientConfig } from '@vuepress/client' @@ -119,7 +123,7 @@ export default defineClientConfig({ // provide a value that can be injected by layouts, pages and other components const count = ref(0) provide('count', count) - } + }, }) ``` @@ -139,7 +143,7 @@ export default defineClientConfig({ // use DOM API after mounted document.querySelector('#app') }) - } + }, }) ``` diff --git a/docs/advanced/plugin.md b/docs/advanced/plugin.md index e0be81ba..9393376d 100644 --- a/docs/advanced/plugin.md +++ b/docs/advanced/plugin.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:plug +--- + # Writing a Plugin ::: tip diff --git a/docs/advanced/theme.md b/docs/advanced/theme.md index bb83bf16..70891bb9 100644 --- a/docs/advanced/theme.md +++ b/docs/advanced/theme.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:palette +--- + # Writing a Theme ::: tip diff --git a/docs/guide/README.md b/docs/guide/README.md index d04f0854..3b40a84a 100644 --- a/docs/guide/README.md +++ b/docs/guide/README.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:circle-info +--- + # Introduction VuePress is a markdown-centered static site generator. You can write your content (documentations, blogs, etc.) in [Markdown](https://en.wikipedia.org/wiki/Markdown), then VuePress will help you to generate a static site to host them. diff --git a/docs/guide/assets.md b/docs/guide/assets.md index 7d3abb7f..b21245c0 100644 --- a/docs/guide/assets.md +++ b/docs/guide/assets.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:photo-film +--- + # Assets ## Relative URLs diff --git a/docs/guide/bundler.md b/docs/guide/bundler.md index 1a8640dc..f4b57ea1 100644 --- a/docs/guide/bundler.md +++ b/docs/guide/bundler.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:boxes-packing +--- + # Bundler VuePress has been using [Webpack](https://webpack.js.org/) as the bundler to dev and build sites. Since VuePress v2, other bundlers are also supported, and now we are using [Vite](https://vitejs.dev/) as the default bundler. Of course, you can still choose to use Webpack. @@ -8,34 +12,30 @@ When using the [vuepress](https://www.npmjs.com/package/vuepress) package, Vite If you want to use Webpack bundler instead, you can remove it and install the [vuepress-webpack](https://www.npmjs.com/package/vuepress-webpack) package instead: - - +::: code-tabs#shell + +@tab:active PNPM ```bash pnpm remove vuepress pnpm add -D vuepress-webpack@next ``` - - - +@tab YARN ```bash yarn remove vuepress yarn add -D vuepress-webpack@next ``` - - - +@tab NPM ```bash npm uninstall vuepress npm install -D vuepress-webpack@next ``` - - +::: ::: tip In fact, the [vuepress](https://www.npmjs.com/package/vuepress) package is just a wrapper of the [vuepress-vite](https://www.npmjs.com/package/vuepress-vite) package. diff --git a/docs/guide/configuration.md b/docs/guide/configuration.md index f07eed61..f6ec33dc 100644 --- a/docs/guide/configuration.md +++ b/docs/guide/configuration.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:gear +--- + # Configuration ## Config File diff --git a/docs/guide/deployment.md b/docs/guide/deployment.md index 7f132b68..a6cd725d 100644 --- a/docs/guide/deployment.md +++ b/docs/guide/deployment.md @@ -1,3 +1,6 @@ +--- +icon: fa6-solid:rocket +--- # Deployment The following guides are based on some shared assumptions: diff --git a/docs/guide/getting-started.md b/docs/guide/getting-started.md index 944de1e5..55a46c19 100644 --- a/docs/guide/getting-started.md +++ b/docs/guide/getting-started.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:lightbulb +--- + # Getting Started ::: warning @@ -29,62 +33,54 @@ cd vuepress-starter - **Step 2**: Initialize your project - - +::: code-tabs#shell + +@tab:active PNPM ```bash git init pnpm init ``` - - - +@tab YARN ```bash git init yarn init ``` - - - +@tab NPM ```bash git init npm init ``` - - +::: - **Step 3**: Install VuePress locally - - +::: code-tabs#shell + +@tab:active PNPM ```bash pnpm add -D vuepress@next @vuepress/client@next vue ``` - - - +@tab YARN ```bash yarn add -D vuepress@next ``` - - - +@tab NPM ```bash npm install -D vuepress@next ``` - - +::: - **Step 4**: Add some [scripts](https://classic.yarnpkg.com/en/docs/package-json#toc-scripts) to `package.json` @@ -114,31 +110,27 @@ echo '# Hello VuePress' > docs/README.md - **Step 7**: Serve the documentation site in the local server - - +::: code-tabs#shell + +@tab:active PNPM ```bash pnpm docs:dev ``` - - - +@tab YARN ```bash yarn docs:dev ``` - - - +@tab NPM ```bash npm run docs:dev ``` - - +::: VuePress will start a hot-reloading development server at [http://localhost:8080](http://localhost:8080). When you modify your markdown files, the content in the browser will be auto updated. diff --git a/docs/guide/i18n.md b/docs/guide/i18n.md index 0ec8175b..12ebeb19 100644 --- a/docs/guide/i18n.md +++ b/docs/guide/i18n.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:language +--- + # I18n ## Site I18n Config diff --git a/docs/guide/markdown.md b/docs/guide/markdown.md index bb594785..1a28fba7 100644 --- a/docs/guide/markdown.md +++ b/docs/guide/markdown.md @@ -1,3 +1,7 @@ +--- +icon: fa6-brands:markdown +--- + # Markdown Make sure you already know Markdown well before reading this section. If not, please learn some [Markdown tutorials](https://commonmark.org/help/) first. diff --git a/docs/guide/migration.md b/docs/guide/migration.md index f0c15860..f1394f22 100644 --- a/docs/guide/migration.md +++ b/docs/guide/migration.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:code-compare +--- + # Migrating from v1 ::: warning diff --git a/docs/guide/page.md b/docs/guide/page.md index 2c627c8a..0c839b80 100644 --- a/docs/guide/page.md +++ b/docs/guide/page.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:file +--- + # Page VuePress is markdown-centered. Each markdown file inside your project is a standalone page. diff --git a/docs/guide/plugin.md b/docs/guide/plugin.md index 1af5d805..2566197e 100644 --- a/docs/guide/plugin.md +++ b/docs/guide/plugin.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:plug +--- + # Plugin With the help of [Plugin API](../reference/plugin-api.md), VuePress plugin can provide different features for you. @@ -14,7 +18,7 @@ import { googleAnalyticsPlugin } from '@vuepress/plugin-google-analytics' export default { plugins: [ googleAnalyticsPlugin({ - id: 'G-XXXXXXXXXX' + id: 'G-XXXXXXXXXX', }), ], } diff --git a/docs/guide/theme.md b/docs/guide/theme.md index 0271e3d9..b7616a95 100644 --- a/docs/guide/theme.md +++ b/docs/guide/theme.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:palette +--- + # Theme VuePress theme can provide layouts, styles and many other features for you, helping you to focus on writing Markdown content. diff --git a/docs/reference/bundler/vite.md b/docs/reference/bundler/vite.md index 5e12ff5e..ade9d3d4 100644 --- a/docs/reference/bundler/vite.md +++ b/docs/reference/bundler/vite.md @@ -1,3 +1,7 @@ +--- +icon: simple-icons:vite +--- + # Vite diff --git a/docs/reference/bundler/webpack.md b/docs/reference/bundler/webpack.md index bf8efecd..def4b12b 100644 --- a/docs/reference/bundler/webpack.md +++ b/docs/reference/bundler/webpack.md @@ -1,3 +1,7 @@ +--- +icon: mdi:webpack +--- + # Webpack diff --git a/docs/reference/cli.md b/docs/reference/cli.md index 19505457..acedde73 100644 --- a/docs/reference/cli.md +++ b/docs/reference/cli.md @@ -1,3 +1,7 @@ +--- +icon: bi:terminal-fill +--- + # Command Line Interface diff --git a/docs/reference/client-api.md b/docs/reference/client-api.md index c9f3d2ad..66d8dc0d 100644 --- a/docs/reference/client-api.md +++ b/docs/reference/client-api.md @@ -1,3 +1,7 @@ +--- +icon: fa6-brands:chrome +--- + # Client API diff --git a/docs/reference/components.md b/docs/reference/components.md index 64f5231a..fb6dd487 100644 --- a/docs/reference/components.md +++ b/docs/reference/components.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:puzzle-piece +--- + # Built-in Components diff --git a/docs/reference/config.md b/docs/reference/config.md index 7dc3bc98..fc436c65 100644 --- a/docs/reference/config.md +++ b/docs/reference/config.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:gear +--- + # Config diff --git a/docs/reference/default-theme/components.md b/docs/reference/default-theme/components.md index 931fb27b..479e7632 100644 --- a/docs/reference/default-theme/components.md +++ b/docs/reference/default-theme/components.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:puzzle-piece +--- + # Built-in Components @@ -87,31 +91,27 @@ npm install **Output** - - +::: code-tabs + +@tab PNPM ```bash:no-line-numbers pnpm install ``` - - - +@tab YARN ```bash:no-line-numbers yarn install ``` - - - +@tab:active NPM ```bash:no-line-numbers npm install ``` - - +::: ::: warning You must add an empty line between the starting tag of `` and the code fence, otherwise the code fence will not be parsed correctly by Markdown. diff --git a/docs/reference/default-theme/config.md b/docs/reference/default-theme/config.md index c34bc9ac..d7f88ed4 100644 --- a/docs/reference/default-theme/config.md +++ b/docs/reference/default-theme/config.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:gear +--- + # Config @@ -392,7 +396,10 @@ export default { { text: 'Bundlers Reference', collapsible: true, - children: ['/reference/bundler/vite.md', '/reference/bundler/webpack.md'], + children: [ + '/reference/bundler/vite.md', + '/reference/bundler/webpack.md', + ], }, ], }, diff --git a/docs/reference/default-theme/extending.md b/docs/reference/default-theme/extending.md index ffa3b5fb..50ca121f 100644 --- a/docs/reference/default-theme/extending.md +++ b/docs/reference/default-theme/extending.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:clone +--- + # Extending VuePress default theme is widely used by users, so it is designed to be extendable, allowing users to make their own customization with ease. diff --git a/docs/reference/default-theme/frontmatter.md b/docs/reference/default-theme/frontmatter.md index addc6cca..e3068236 100644 --- a/docs/reference/default-theme/frontmatter.md +++ b/docs/reference/default-theme/frontmatter.md @@ -1,3 +1,7 @@ +--- +icon: fa-solid:bars +--- + # Frontmatter diff --git a/docs/reference/default-theme/markdown.md b/docs/reference/default-theme/markdown.md index 09c31d66..87256075 100644 --- a/docs/reference/default-theme/markdown.md +++ b/docs/reference/default-theme/markdown.md @@ -1,3 +1,7 @@ +--- +icon: fa6-brands:markdown +--- + # Markdown @@ -15,18 +19,20 @@ The `type` is required, and the `title` and `content` are optional. Supported `type` : - - `tip` - - `warning` - - `danger` - - `details` - - Alias of [CodeGroup](./components.md#codegroup) and [CodeGroupItem](./components.md#codegroupitem): - - `code-group` - - `code-group-item` + + - `tip` + - `warning` + - `danger` + - `details` + - Alias of [CodeGroup](./components.md#codegroup) and [CodeGroupItem](./components.md#codegroupitem): + - `code-group` + - `code-group-item` - Example 1 (default title): **Input** + ```md ::: tip This is a tip @@ -112,15 +118,18 @@ const bar = 'bar' **Output** -:::: code-group -::: code-group-item FOO +:::: code-tabs + +@tab FOO + ```ts const foo = 'foo' ``` -::: -::: code-group-item BAR + +@tab BAR + ```ts const bar = 'bar' ``` + ::: -:::: diff --git a/docs/reference/default-theme/styles.md b/docs/reference/default-theme/styles.md index 02cce493..f6d2bbfc 100644 --- a/docs/reference/default-theme/styles.md +++ b/docs/reference/default-theme/styles.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:wand-magic-sparkles +--- + # Styles diff --git a/docs/reference/frontmatter.md b/docs/reference/frontmatter.md index 36020eb8..505e9233 100644 --- a/docs/reference/frontmatter.md +++ b/docs/reference/frontmatter.md @@ -1,3 +1,7 @@ +--- +icon: fa-solid:bars +--- + # Frontmatter @@ -39,15 +43,15 @@ - Example: -```md ---- -head: - - - meta - - name: foo - content: yaml array syntax - - [meta, { name: bar , content: square brackets syntax }] ---- -``` + ```md + --- + head: + - - meta + - name: foo + content: yaml array syntax + - [meta, { name: bar , content: square brackets syntax }] + --- + ``` Rendered as: @@ -160,12 +164,12 @@ layout: CustomLayout The page frontmatter is: -```md ---- -date: 2021-01-03 -permalinkPattern: :year/:month/:day/:slug.html ---- -``` + ```md + --- + date: 2021-01-03 + permalinkPattern: :year/:month/:day/:slug.html + --- + ``` Then the permalink of the page would be `2021/01/03/foo-bar.html`. @@ -175,11 +179,11 @@ permalinkPattern: :year/:month/:day/:slug.html The page frontmatter is: -```md ---- -permalinkPattern: :year/:month/:day/:slug.html ---- -``` + ```md + --- + permalinkPattern: :year/:month/:day/:slug.html + --- + ``` Then the permalink of the page would be `2021/01/03/bar-baz.html`. diff --git a/docs/reference/node-api.md b/docs/reference/node-api.md index 5fb978a9..c8e87b84 100644 --- a/docs/reference/node-api.md +++ b/docs/reference/node-api.md @@ -1,3 +1,7 @@ +--- +icon: fa6-brands:node-js +--- + # Node API @@ -357,7 +361,7 @@ export default { Hello, world. `, - }) + }), ) }, } diff --git a/docs/reference/plugin-api.md b/docs/reference/plugin-api.md index 7771d196..aa1524a7 100644 --- a/docs/reference/plugin-api.md +++ b/docs/reference/plugin-api.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:plug +--- + # Plugin API @@ -117,7 +121,7 @@ const __dirname = getDirname(import.meta.url) export default { clientConfigFile: path.resolve( __dirname, - './path/to/clientConfig.js' + './path/to/clientConfig.js', ), } ``` @@ -263,7 +267,7 @@ export default { Page options extension. This hook accepts a function that will receive the options of `createPage`. - + This hook can be used for modifying page options - Example: diff --git a/docs/reference/plugin/container.md b/docs/reference/plugin/container.md index 960db6a3..7ce039e2 100644 --- a/docs/reference/plugin/container.md +++ b/docs/reference/plugin/container.md @@ -66,23 +66,23 @@ This plugin can be used multiple times to support different types of containers. - Example: -```ts -export default { - plugins: [ - containerPlugin({ - type: 'tip', - locales: { - '/': { - defaultInfo: 'TIP', + ```ts + export default { + plugins: [ + containerPlugin({ + type: 'tip', + locales: { + '/': { + defaultInfo: 'TIP', + }, + '/zh/': { + defaultInfo: '提示', + }, }, - '/zh/': { - defaultInfo: '提示', - }, - }, - }), - ], -} -``` + }), + ], + } + ``` - Also see: - [Guide > I18n](../../guide/i18n.md) @@ -93,10 +93,12 @@ export default { - Default: -```ts -(info: string): string => - `
${info ? `

${info}

` : ''}\n` -``` + ```ts + (info: string): string => + `
${ + info ? `

${info}

` : '' + }\n` + ``` - Details: @@ -128,15 +130,15 @@ export default { - Type: -```ts -type MarkdownItContainerRenderFunction = ( - tokens: Token[], - index: number, - options: any, - env: MarkdownEnv, - self: Renderer -) => string -``` + ```ts + type MarkdownItContainerRenderFunction = ( + tokens: Token[], + index: number, + options: any, + env: MarkdownEnv, + self: Renderer, + ) => string + ``` - Details: diff --git a/docs/reference/plugin/pwa.md b/docs/reference/plugin/pwa.md index 12c3dd3c..8931cca7 100644 --- a/docs/reference/plugin/pwa.md +++ b/docs/reference/plugin/pwa.md @@ -125,7 +125,6 @@ But if you omit `skipWaiting` or set it to `false`, you have to activate the new - Details: Returns the event emitter of this plugin. - You can add listener function to events that provided by [register-service-worker](https://github.com/yyx990803/register-service-worker). - Example: @@ -147,7 +146,7 @@ export default { - Parameters: -| Parameter | Type | Description | +| Parameter | Type | Description | | ------------ | --------------------------- | -------------------------------------------------------- | | registration | `ServiceWorkerRegistration` | The registration of the service worker you want activate | @@ -158,10 +157,7 @@ export default { - Example: ```ts -import { - usePwaEvent, - useSkipWaiting, -} from '@vuepress/plugin-pwa/client' +import { usePwaEvent, useSkipWaiting } from '@vuepress/plugin-pwa/client' export default { setup() { diff --git a/docs/reference/plugin/register-components.md b/docs/reference/plugin/register-components.md index 8a9c87ca..f1a93373 100644 --- a/docs/reference/plugin/register-components.md +++ b/docs/reference/plugin/register-components.md @@ -99,12 +99,12 @@ import { defineAsyncComponent } from 'vue' app.component( 'FooBar', - defineAsyncComponent(() => import('/path/to/components/FooBar.vue')) + defineAsyncComponent(() => import('/path/to/components/FooBar.vue')), ) app.component( 'Baz', - defineAsyncComponent(() => import('/path/to/components/Baz.vue')) + defineAsyncComponent(() => import('/path/to/components/Baz.vue')), ) ``` @@ -129,7 +129,6 @@ app.component( - Details: A function to get component name from the filename. - It will only take effect on the files in the [componentsDir](#componentsdir) which are matched with the [componentsPatterns](#componentspatterns). Notice that the `filename` is a filepath relative to [componentsDir](#componentsdir). diff --git a/docs/reference/plugin/shiki.md b/docs/reference/plugin/shiki.md index 44bd5132..d9637de5 100644 --- a/docs/reference/plugin/shiki.md +++ b/docs/reference/plugin/shiki.md @@ -40,7 +40,7 @@ export default { Theme of shiki. - This option will be forwarded to `getHighlighter()` method of shiki. + This option will be forwarded to `getHighlighter()` method of shiki. - Also see: - [shiki > themes](https://github.com/shikijs/shiki/blob/master/docs/themes.md) @@ -55,7 +55,7 @@ export default { Languages of shiki. - This option will be forwarded to `getHighlighter()` method of shiki. + This option will be forwarded to `getHighlighter()` method of shiki. If no languages are provided, shiki will load all available languages automatically. diff --git a/docs/reference/theme-api.md b/docs/reference/theme-api.md index 5b5efed0..0ed46799 100644 --- a/docs/reference/theme-api.md +++ b/docs/reference/theme-api.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:palette +--- + # Theme API diff --git a/docs/zh/README.md b/docs/zh/README.md index 0a437d03..a9655d74 100644 --- a/docs/zh/README.md +++ b/docs/zh/README.md @@ -1,5 +1,6 @@ --- home: true +icon: fa6-solid:house title: 首页 heroImage: /images/hero.png actions: @@ -9,18 +10,27 @@ actions: - text: 项目简介 link: /zh/guide/ type: secondary + - text: 市场 + link: https://marketplace.vuejs.press/zh/ + type: secondary features: - title: 简洁至上 + icon: fa6-solid:star details: 以 Markdown 为中心的项目结构,以最少的配置帮助你专注于写作。 - title: Vue 驱动 + icon: fa6-brands:vuejs details: 享受 Vue 的开发体验,可以在 Markdown 中使用 Vue 组件,又可以使用 Vue 来开发自定义主题。 - title: 高性能 + icon: fa6-solid:bolt details: VuePress 会为每个页面预渲染生成静态的 HTML,同时,每个页面被加载的时候,将作为 SPA 运行。 - title: 主题 + icon: fa6-solid:palette details: 提供了一个开箱即用的默认主题。你也可以挑选一个社区主题,或者创建一个你自己的主题。 - title: 插件 + icon: fa6-solid:plug details: 灵活的插件API,使得插件可以为你的站点提供许多即插即用的功能。 - title: 打包工具 + icon: fa6-solid:boxes-packing details: 默认的打包工具是 Vite ,也同样支持 Webpack 。选一个你喜欢的来使用吧! -footer: MIT Licensed | Copyright © 2018-present VuePress Community +footer: MIT 协议 | 版权所有 © 2018-至今 VuePress Community | 使用 vuepress-theme-hope 主题 --- diff --git a/docs/zh/advanced/architecture.md b/docs/zh/advanced/architecture.md index 04b73f2d..584d0134 100644 --- a/docs/zh/advanced/architecture.md +++ b/docs/zh/advanced/architecture.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:folder-tree +--- + # 架构 ## 概览 diff --git a/docs/zh/advanced/cookbook/README.md b/docs/zh/advanced/cookbook/README.md index 8c108c03..206fe04c 100644 --- a/docs/zh/advanced/cookbook/README.md +++ b/docs/zh/advanced/cookbook/README.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:circle-info +--- + # 介绍 ## Cookbook 的目的是什么? diff --git a/docs/zh/advanced/cookbook/adding-extra-pages.md b/docs/zh/advanced/cookbook/adding-extra-pages.md index 0bdf787d..a32c4252 100644 --- a/docs/zh/advanced/cookbook/adding-extra-pages.md +++ b/docs/zh/advanced/cookbook/adding-extra-pages.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:circle-plus +--- + # 添加额外页面 有时你可能希望在不创建 Markdown 文件的情况下添加一些额外的页面。 diff --git a/docs/zh/advanced/cookbook/making-a-theme-extendable.md b/docs/zh/advanced/cookbook/making-a-theme-extendable.md index ae58b929..09846cc9 100644 --- a/docs/zh/advanced/cookbook/making-a-theme-extendable.md +++ b/docs/zh/advanced/cookbook/making-a-theme-extendable.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:clone +--- + # 开发一个可继承的主题 有时用户可能希望对一个主题进行一些小改动,但是又不想 Fork 并修改整个项目。 diff --git a/docs/zh/advanced/cookbook/markdown-and-vue-sfc.md b/docs/zh/advanced/cookbook/markdown-and-vue-sfc.md index d077f365..132158b3 100644 --- a/docs/zh/advanced/cookbook/markdown-and-vue-sfc.md +++ b/docs/zh/advanced/cookbook/markdown-and-vue-sfc.md @@ -1,3 +1,7 @@ +--- +icon: fa6-brands:vuejs +--- + # Markdown 与 Vue SFC 每一个 Markdown 文件,首先都会编译为 HTML ,然后转换为一个 Vue 单文件组件 (SFC) 。换句话说,你可以像写 Vue SFC 一样来写 Markdown 文件: @@ -27,13 +31,14 @@ _当前计数为: {{ count }}_ diff --git a/docs/zh/advanced/cookbook/passing-data-to-client-code.md b/docs/zh/advanced/cookbook/passing-data-to-client-code.md index e4b84c67..38b53266 100644 --- a/docs/zh/advanced/cookbook/passing-data-to-client-code.md +++ b/docs/zh/advanced/cookbook/passing-data-to-client-code.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:right-to-bracket +--- + # 向客户端代码传递数据 我们知道,VuePress 插件入口和主题入口是在 Node 端处理的,但有时候你可能需要向客户端动态传递数据。例如,你希望在用户传入不同的选项时生成不同的数据。 @@ -21,7 +25,6 @@ export default (options) => ({ 然后,在客户端代码中直接使用它们: - ```ts const foo = __FOO__ const obj = __OBJ__ diff --git a/docs/zh/advanced/cookbook/usage-of-client-config.md b/docs/zh/advanced/cookbook/usage-of-client-config.md index 98938cd6..a8449485 100644 --- a/docs/zh/advanced/cookbook/usage-of-client-config.md +++ b/docs/zh/advanced/cookbook/usage-of-client-config.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:gear +--- + # 客户端配置的使用方法 你可以直接在你的项目中使用 [客户端配置文件](../../guide/configuration.md#客户端配置文件) 。或者,在你的插件或者主题中,使用 [clientConfigFile](../../reference/plugin-api.md#clientconfigfile) Hook 来指定客户端配置文件的路径: @@ -119,7 +123,7 @@ export default defineClientConfig({ // 供给一个值,可以被布局、页面和其他组件注入 const count = ref(0) provide('count', count) - } + }, }) ``` @@ -139,7 +143,7 @@ export default defineClientConfig({ // 在 mounted 之后使用 DOM API document.querySelector('#app') }) - } + }, }) ``` diff --git a/docs/zh/advanced/plugin.md b/docs/zh/advanced/plugin.md index 5cae7723..bfbddcbc 100644 --- a/docs/zh/advanced/plugin.md +++ b/docs/zh/advanced/plugin.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:plug +--- + # 开发插件 ::: tip diff --git a/docs/zh/advanced/theme.md b/docs/zh/advanced/theme.md index deba1404..c8c12059 100644 --- a/docs/zh/advanced/theme.md +++ b/docs/zh/advanced/theme.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:palette +--- + # 开发主题 ::: tip diff --git a/docs/zh/guide/README.md b/docs/zh/guide/README.md index baf7d5a4..f1fc3e79 100644 --- a/docs/zh/guide/README.md +++ b/docs/zh/guide/README.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:circle-info +--- + # 介绍 VuePress 是一个以 Markdown 为中心的静态网站生成器。你可以使用 [Markdown](https://zh.wikipedia.org/wiki/Markdown) 来书写内容(如文档、博客等),然后 VuePress 会帮助你生成一个静态网站来展示它们。 @@ -12,7 +16,7 @@ VuePress 诞生的初衷是为了支持 Vue.js 及其子项目的文档需求, 在开发过程中,我们启动一个常规的开发服务器 (dev-server) ,并将 VuePress 站点作为一个常规的 SPA。如果你以前使用过 Vue 的话,你在使用时会感受到非常熟悉的开发体验。 -在构建过程中,我们会为 VuePress 站点创建一个服务端渲染 (SSR) 的版本,然后通过虚拟访问每一条路径来渲染对应的 HTML 。这种做法的灵感来源于 [Nuxt](https://nuxtjs.org/) 的 `nuxt generate` 命令,以及其他的一些项目,比如 [Gatsby](https://www.gatsbyjs.org/)。 +在构建过程中,我们会为 VuePress 站点创建一个服务端渲染 (SSR) 的版本,然后通过虚拟访问每一条路径来渲染对应的 HTML 。这种做法的灵感来源于 [Nuxt](https://nuxtjs.org/) 的 `nuxt generate` 命令,以及其他的一些项目,比如 [Gatsby](https://www.gatsbyjs.org/)。 ## 为什么不是 ...? diff --git a/docs/zh/guide/assets.md b/docs/zh/guide/assets.md index 80df50b7..1480bbb4 100644 --- a/docs/zh/guide/assets.md +++ b/docs/zh/guide/assets.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:photo-film +--- + # 静态资源 ## 相对路径 @@ -117,5 +121,7 @@ export default { ``` ::: tip + 配置参考: [alias](../reference/plugin-api.md#alias) + ::: diff --git a/docs/zh/guide/bundler.md b/docs/zh/guide/bundler.md index 8579829d..5be6d4ef 100644 --- a/docs/zh/guide/bundler.md +++ b/docs/zh/guide/bundler.md @@ -1,6 +1,10 @@ +--- +icon: fa6-solid:boxes-packing +--- + # 打包工具 -VuePress 一直以来都在使用 [Webpack](https://webpack.js.org/) 作为打包工具来进行网站的开发和构建。从 VuePress v2 开始,我们还支持使用其他的打包工具,并且现在使用 [Vite](https://vitejs.dev/) 作为默认的打包工具。当然,你仍然可以选择使用 Webpack 。 +VuePress 一直以来都在使用 [Webpack](https://webpack.js.org/) 作为打包工具来进行网站的开发和构建。从 VuePress v2 开始,我们还支持使用其他的打包工具,并且现在使用 [Vite](https://vitejs.dev/) 作为默认的打包工具。当然,你仍然可以选择使用 Webpack 。 ## 选择一个打包工具 @@ -8,34 +12,30 @@ VuePress 一直以来都在使用 [Webpack](https://webpack.js.org/) 作为打 如果你想改为使用 Webpack 打包工具,那么你可以移除它,改为安装 [vuepress-webpack](https://www.npmjs.com/package/vuepress-webpack) 包: - - +::: code-tabs#shell + +@tab:active PNPM ```bash pnpm uninstall vuepress pnpm add -D vuepress-webpack@next ``` - - - +@tab YARN ```bash yarn remove vuepress yarn add -D vuepress-webpack@next ``` - - - +@tab NPM ```bash npm uninstall vuepress npm install -D vuepress-webpack@next ``` - - +::: ::: tip 实际上, [vuepress](https://www.npmjs.com/package/vuepress) 包只是 [vuepress-vite](https://www.npmjs.com/package/vuepress-vite) 包的一个封装而已。 diff --git a/docs/zh/guide/configuration.md b/docs/zh/guide/configuration.md index d127edb8..6dc85ace 100644 --- a/docs/zh/guide/configuration.md +++ b/docs/zh/guide/configuration.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:gear +--- + # 配置 ## 配置文件 diff --git a/docs/zh/guide/deployment.md b/docs/zh/guide/deployment.md index 1e7515d7..71bd9eb7 100644 --- a/docs/zh/guide/deployment.md +++ b/docs/zh/guide/deployment.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:rocket +--- + # 部署 下述的指南基于以下条件: @@ -19,13 +23,13 @@ 1. 设置正确的 [base](../reference/config.md#base) 选项。 - 如果你准备发布到 `https://.github.io/` ,你可以省略这一步,因为 `base` 默认就是 `"/"` 。 + 如果你准备发布到 `https://.github.io/` ,你可以省略这一步,因为 `base` 默认就是 `"/"` 。 - 如果你准备发布到 `https://.github.io//` ,也就是说你的仓库地址是 `https://github.com//` ,则将 `base` 设置为 `"//"`。 + 如果你准备发布到 `https://.github.io//` ,也就是说你的仓库地址是 `https://github.com//` ,则将 `base` 设置为 `"//"`。 2. 选择你想要使用的 CI 工具。这里我们以 [GitHub Actions](https://github.com/features/actions) 为例。 - 创建 `.github/workflows/docs.yml` 文件来配置工作流。 + 创建 `.github/workflows/docs.yml` 文件来配置工作流。 ::: details 点击展开配置样例 ```yaml @@ -91,9 +95,9 @@ jobs: 1. 设置正确的 [base](../reference/config.md#base) 选项。 - 如果你准备发布到 `https://.gitlab.io/` ,你可以省略这一步,因此 `base` 默认就是 `"/"` 。 + 如果你准备发布到 `https://.gitlab.io/` ,你可以省略这一步,因此 `base` 默认就是 `"/"` 。 - 如果你准备发布到 `https://.gitlab.io//` ,也就是说你的仓库地址是 `https://gitlab.com//` ,则将 `base` 设置为 `"//"`。 + 如果你准备发布到 `https://.gitlab.io//` ,也就是说你的仓库地址是 `https://gitlab.com//` ,则将 `base` 设置为 `"//"`。 2. 创建 `.gitlab-ci.yml` 文件来配置 [GitLab CI](https://about.gitlab.com/stages-devops-lifecycle/continuous-integration/) 工作流。 diff --git a/docs/zh/guide/getting-started.md b/docs/zh/guide/getting-started.md index 0cbc1e4e..f7338d7c 100644 --- a/docs/zh/guide/getting-started.md +++ b/docs/zh/guide/getting-started.md @@ -1,9 +1,12 @@ +--- +icon: fa6-solid:lightbulb +--- + # 快速上手 ::: warning VuePress v2 目前仍处于 RC (Release Candidate) 阶段。你已经可以用它来构建你的站点,但是它的配置和 API 还不够稳定,有可能会发生一些微小的 Breaking Changes 。因此,在每次更新 RC 版本之后,请一定要仔细阅读 [更新日志](https://github.com/vuepress/vuepress-next/blob/main/CHANGELOG.md)。 ::: - ## 依赖环境 - [Node.js v18.16.0+](https://nodejs.org/) @@ -29,62 +32,54 @@ cd vuepress-starter - **步骤 2**: 初始化项目 - - +::: code-tabs#shell + +@tab:active PNPM ```bash git init pnpm init ``` - - - +@tab YARN ```bash git init yarn init ``` - - - +@tab NPM ```bash git init npm init ``` - - +::: - **步骤 3**: 将 VuePress 安装为本地依赖 - - +::: code-tabs#shell + +@tab:active PNPM ```bash pnpm add -D vuepress@next @vuepress/client@next vue ``` - - - +@tab YARN ```bash yarn add -D vuepress@next ``` - - - +@tab NPM ```bash npm install -D vuepress@next ``` - - +::: - **步骤 4**: 在 `package.json` 中添加一些 [scripts](https://classic.yarnpkg.com/zh-Hans/docs/package-json#toc-scripts) @@ -114,31 +109,27 @@ echo '# Hello VuePress' > docs/README.md - **步骤 7**: 在本地启动服务器来开发你的文档网站 - - +::: code-tabs#shell + +@tab:active PNPM ```bash pnpm docs:dev ``` - - - +@tab YARN ```bash yarn docs:dev ``` - - - +@tab NPM ```bash npm run docs:dev ``` - - +::: VuePress 会在 [http://localhost:8080](http://localhost:8080) 启动一个热重载的开发服务器。当你修改你的 Markdown 文件时,浏览器中的内容也会自动更新。 diff --git a/docs/zh/guide/i18n.md b/docs/zh/guide/i18n.md index 276164a0..c3f2da15 100644 --- a/docs/zh/guide/i18n.md +++ b/docs/zh/guide/i18n.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:language +--- + # 多语言支持 ## 站点多语言配置 diff --git a/docs/zh/guide/markdown.md b/docs/zh/guide/markdown.md index bee8e9ce..ceaae834 100644 --- a/docs/zh/guide/markdown.md +++ b/docs/zh/guide/markdown.md @@ -1,3 +1,7 @@ +--- +icon: fa6-brands:markdown +--- + # Markdown 在阅读本章节之前,请确保你已经对 Markdown 有所了解。如果你还不了解 Markdown ,请先学习一些 [Markdown 教程](https://commonmark.org/help/)。 @@ -243,9 +247,9 @@ const line3 = 'This is line 3' 为了避免你的代码块被 Vue 编译, VuePress 默认会在你的代码块添加 [v-pre](https://v3.vuejs.org/api/directives.html#v-pre) 指令。这一默认行为可以在配置中关闭。 - 你可以在代码块添加 `:v-pre` / `:no-v-pre` 标记来覆盖配置项中的设置。 + ::: warning 模板语法的字符有可能会被语法高亮器解析,比如 "Mustache" 语法(即双花括号)。因此,就像下面的例子一样,在某些语言中 `:no-v-pre` 可能并不能生效。 diff --git a/docs/zh/guide/migration.md b/docs/zh/guide/migration.md index 50a86492..e28d6f86 100644 --- a/docs/zh/guide/migration.md +++ b/docs/zh/guide/migration.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:code-compare +--- + # 从 v1 迁移 ::: warning diff --git a/docs/zh/guide/page.md b/docs/zh/guide/page.md index 195aa649..fb662bb2 100644 --- a/docs/zh/guide/page.md +++ b/docs/zh/guide/page.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:file +--- + # 页面 VuePress 是以 Markdown 为中心的。你项目中的每一个 Markdown 文件都是一个单独的页面。 @@ -52,6 +56,7 @@ description: 页面的描述 同样的,VuePress 有一些内置支持的 Frontmatter 字段,而你使用的主题也可能有它自己的特殊 Frontmatter 。 ::: tip + 前往 [Frontmatter 参考](../reference/frontmatter.md) 查看 VuePress 支持的 Frontmatter 配置。 前往 [默认主题 > Frontmatter 参考](../reference/default-theme/frontmatter.md) 查看默认主题的 Frontmatter 配置。 diff --git a/docs/zh/guide/plugin.md b/docs/zh/guide/plugin.md index bef30308..02e448fe 100644 --- a/docs/zh/guide/plugin.md +++ b/docs/zh/guide/plugin.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:plug +--- + # 插件 借助于 [插件 API](../reference/plugin-api.md) , VuePress 插件可以为你提供各种不同的功能。 @@ -14,7 +18,7 @@ import { googleAnalyticsPlugin } from '@vuepress/plugin-google-analytics' export default { plugins: [ googleAnalyticsPlugin({ - id: 'G-XXXXXXXXXX' + id: 'G-XXXXXXXXXX', }), ], } diff --git a/docs/zh/guide/theme.md b/docs/zh/guide/theme.md index c459dc22..ea7adb45 100644 --- a/docs/zh/guide/theme.md +++ b/docs/zh/guide/theme.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:palette +--- + # 主题 VuePress 主题为你提供了布局、样式和其他功能,帮助你专注于 Markdown 内容的写作。 diff --git a/docs/zh/reference/bundler/vite.md b/docs/zh/reference/bundler/vite.md index 178b08b9..5d339b38 100644 --- a/docs/zh/reference/bundler/vite.md +++ b/docs/zh/reference/bundler/vite.md @@ -1,3 +1,7 @@ +--- +icon: simple-icons:vite +--- + # Vite diff --git a/docs/zh/reference/bundler/webpack.md b/docs/zh/reference/bundler/webpack.md index e1c68b18..5447cc0d 100644 --- a/docs/zh/reference/bundler/webpack.md +++ b/docs/zh/reference/bundler/webpack.md @@ -1,3 +1,7 @@ +--- +icon: mdi:webpack +--- + # Webpack diff --git a/docs/zh/reference/cli.md b/docs/zh/reference/cli.md index 5e162cae..b32a4219 100644 --- a/docs/zh/reference/cli.md +++ b/docs/zh/reference/cli.md @@ -1,3 +1,7 @@ +--- +icon: bi:terminal-fill +--- + # 命令行接口 diff --git a/docs/zh/reference/client-api.md b/docs/zh/reference/client-api.md index 11a23f4b..9e8a48a5 100644 --- a/docs/zh/reference/client-api.md +++ b/docs/zh/reference/client-api.md @@ -1,3 +1,7 @@ +--- +icon: fa6-brands:chrome +--- + # 客户端 API diff --git a/docs/zh/reference/components.md b/docs/zh/reference/components.md index 3b2a3145..9a3418d3 100644 --- a/docs/zh/reference/components.md +++ b/docs/zh/reference/components.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:puzzle-piece +--- + # 内置组件 @@ -18,7 +22,7 @@ 如果一个组件在 `setup()` 中直接使用 浏览器 / DOM API ,它会导致构建过程报错,因为这些 API 在 Node.js 的环境中是无法使用的。在这种情况下,你可以选择一种方式: - - 修改这个组件,只在 `onBeforeMount()` 或 `onMounted()` Hook 中使用 浏览器 / DOM API 。 + - 修改这个组件,只在 `onBeforeMount()` 或 `onMounted()` Hook 中使用 浏览器 / DOM API 。 - 使用 `` 包裹这个组件。 ## Content diff --git a/docs/zh/reference/config.md b/docs/zh/reference/config.md index b5a323ed..a6065a24 100644 --- a/docs/zh/reference/config.md +++ b/docs/zh/reference/config.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:gear +--- + # 配置 diff --git a/docs/zh/reference/default-theme/components.md b/docs/zh/reference/default-theme/components.md index cad204ba..71d82963 100644 --- a/docs/zh/reference/default-theme/components.md +++ b/docs/zh/reference/default-theme/components.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:puzzle-piece +--- + # 内置组件 @@ -87,31 +91,27 @@ npm install **输出** - - +::: code-tabs + +@tab PNPM ```bash:no-line-numbers pnpm install ``` - - - +@tab YARN ```bash:no-line-numbers yarn install ``` - - - +@tab:active NPM ```bash:no-line-numbers npm install ``` - - +::: ::: warning 你必须在 `` 的开始标签和代码块之间添加一个空行,否则代码块无法被 Markdown 正确解析。 diff --git a/docs/zh/reference/default-theme/config.md b/docs/zh/reference/default-theme/config.md index 28a69f93..9c5f1cf0 100644 --- a/docs/zh/reference/default-theme/config.md +++ b/docs/zh/reference/default-theme/config.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:gear +--- + # 配置 @@ -392,7 +396,10 @@ export default { { text: 'Bundlers Reference', collapsible: true, - children: ['/reference/bundler/vite.md', '/reference/bundler/webpack.md'], + children: [ + '/reference/bundler/vite.md', + '/reference/bundler/webpack.md', + ], }, ], }, diff --git a/docs/zh/reference/default-theme/extending.md b/docs/zh/reference/default-theme/extending.md index e961a266..4e7a5cd4 100644 --- a/docs/zh/reference/default-theme/extending.md +++ b/docs/zh/reference/default-theme/extending.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:clone +--- + # 继承 VuePress 默认主题有着大量的用户,因此我们对它进行了一些便于继承的设计,以便用户轻松进行定制化。 diff --git a/docs/zh/reference/default-theme/frontmatter.md b/docs/zh/reference/default-theme/frontmatter.md index d81dc16d..9877a0f1 100644 --- a/docs/zh/reference/default-theme/frontmatter.md +++ b/docs/zh/reference/default-theme/frontmatter.md @@ -1,3 +1,7 @@ +--- +icon: fa-solid:bars +--- + # Frontmatter diff --git a/docs/zh/reference/default-theme/markdown.md b/docs/zh/reference/default-theme/markdown.md index 46318309..04d9ce7d 100644 --- a/docs/zh/reference/default-theme/markdown.md +++ b/docs/zh/reference/default-theme/markdown.md @@ -1,3 +1,7 @@ +--- +icon: fa6-brands:markdown +--- + # Markdown @@ -15,13 +19,14 @@ `type` 是必需的, `title` 和 `content` 是可选的。 支持的 `type` 有: - - `tip` - - `warning` - - `danger` - - `details` - - [CodeGroup](./components.md#codegroup) 和 [CodeGroupItem](./components.md#codegroupitem) 的别名: - - `code-group` - - `code-group-item` + + - `tip` + - `warning` + - `danger` + - `details` + - [CodeGroup](./components.md#codegroup) 和 [CodeGroupItem](./components.md#codegroupitem) 的别名: + - `code-group` + - `code-group-item` - 示例 1 (默认标题): @@ -112,15 +117,18 @@ const bar = 'bar' **输出** -:::: code-group -::: code-group-item FOO +:::: code-tabs + +@tab FOO + ```ts const foo = 'foo' ``` -::: -::: code-group-item BAR + +@tab BAR + ```ts const bar = 'bar' ``` + ::: -:::: diff --git a/docs/zh/reference/default-theme/styles.md b/docs/zh/reference/default-theme/styles.md index 9de408a6..b6ea7f46 100644 --- a/docs/zh/reference/default-theme/styles.md +++ b/docs/zh/reference/default-theme/styles.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:wand-magic-sparkles +--- + # 样式 diff --git a/docs/zh/reference/frontmatter.md b/docs/zh/reference/frontmatter.md index a79fbc4f..df53e4b8 100644 --- a/docs/zh/reference/frontmatter.md +++ b/docs/zh/reference/frontmatter.md @@ -1,3 +1,7 @@ +--- +icon: fa-solid:bars +--- + # Frontmatter diff --git a/docs/zh/reference/node-api.md b/docs/zh/reference/node-api.md index d877f187..e6e217c0 100644 --- a/docs/zh/reference/node-api.md +++ b/docs/zh/reference/node-api.md @@ -1,3 +1,7 @@ +--- +icon: fa6-brands:node-js +--- + # Node API @@ -187,6 +191,7 @@ const dev = async () => { ### dir - 工具函数: + - `dir.cache()`: 解析至缓存目录 - `dir.temp()`: 解析至临时文件目录 - `dir.source()`: 解析至源文件目录 @@ -240,8 +245,8 @@ writeTemp(file: string, content: string): Promise export default { // 在 onPrepared hook 中写入临时文件 async onPrepared() { - await app.writeTemp('foo.js', 'export const foo = \'bar\'') - } + await app.writeTemp('foo.js', "export const foo = 'bar'") + }, } ``` @@ -326,10 +331,10 @@ const createPage: (app: App, options: PageOptions) => Promise - 参数: -| 参数 | 类型 | 描述 | -|-----------|---------------|----------------------------| -| app | `App` | VuePress App 实例。 | -| options | `PageOptions` | 创建 VuePress Page 的选项。 | +| 参数 | 类型 | 描述 | +| ------- | ------------- | --------------------------- | +| app | `App` | VuePress App 实例。 | +| options | `PageOptions` | 创建 VuePress Page 的选项。 | - 详情: @@ -354,7 +359,7 @@ export default { 你好,世界。 `, - }) + }), ) }, } @@ -533,7 +538,6 @@ interface MarkdownLink { 该 Page 内容中包含的链接。 - ### markdownEnv - 类型: `Record` @@ -599,7 +603,6 @@ interface MarkdownLink { - [Frontmatter > permalink](./frontmatter.md#permalink) - [Frontmatter > permalinkPattern](./frontmatter.md#permalinkpattern) - ### routeMeta - 类型: `Record` diff --git a/docs/zh/reference/plugin-api.md b/docs/zh/reference/plugin-api.md index cfbc3fd7..441b5552 100644 --- a/docs/zh/reference/plugin-api.md +++ b/docs/zh/reference/plugin-api.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:plug +--- + # 插件 API @@ -115,10 +119,7 @@ import { getDirname, path } from '@vuepress/utils' const __dirname = getDirname(import.meta.url) export default { - clientConfigFile: path.resolve( - __dirname, - './path/to/clientConfig.js' - ), + clientConfigFile: path.resolve(__dirname, './path/to/clientConfig.js'), } ``` diff --git a/docs/zh/reference/plugin/container.md b/docs/zh/reference/plugin/container.md index 8836c527..fd0aa8dd 100644 --- a/docs/zh/reference/plugin/container.md +++ b/docs/zh/reference/plugin/container.md @@ -31,6 +31,7 @@ export default { ```md ::: [info] [content] + ::: ``` @@ -95,7 +96,9 @@ export default { ```ts (info: string): string => - `
${info ? `

${info}

` : ''}\n` + `
${ + info ? `

${info}

` : '' + }\n` ``` - 详情: @@ -134,7 +137,7 @@ type MarkdownItContainerRenderFunction = ( index: number, options: any, env: MarkdownEnv, - self: Renderer + self: Renderer, ) => string ``` diff --git a/docs/zh/reference/plugin/git.md b/docs/zh/reference/plugin/git.md index 8dc98697..fd658561 100644 --- a/docs/zh/reference/plugin/git.md +++ b/docs/zh/reference/plugin/git.md @@ -68,7 +68,6 @@ export default { 是否收集页面的贡献者。 - ## Frontmatter ### gitInclude diff --git a/docs/zh/reference/plugin/google-analytics.md b/docs/zh/reference/plugin/google-analytics.md index d1301c73..05e6939c 100644 --- a/docs/zh/reference/plugin/google-analytics.md +++ b/docs/zh/reference/plugin/google-analytics.md @@ -75,4 +75,4 @@ export default { }), ], } -``` \ No newline at end of file +``` diff --git a/docs/zh/reference/plugin/pwa.md b/docs/zh/reference/plugin/pwa.md index 8f774743..50d6733f 100644 --- a/docs/zh/reference/plugin/pwa.md +++ b/docs/zh/reference/plugin/pwa.md @@ -147,9 +147,9 @@ export default { - 参数: -| 参数 | 类型 | 描述 | -| ------------ | --------------------------- | ----------------------------------------- | -| registration | `ServiceWorkerRegistration` | 你想要激活的 Service Worker 的 Registration | +| 参数 | 类型 | 描述 | +| ------------ | --------------------------- | ------------------------------------------- | +| registration | `ServiceWorkerRegistration` | 你想要激活的 Service Worker 的 Registration | - 详情: @@ -158,10 +158,7 @@ export default { - 示例: ```ts -import { - usePwaEvent, - useSkipWaiting, -} from '@vuepress/plugin-pwa/client' +import { usePwaEvent, useSkipWaiting } from '@vuepress/plugin-pwa/client' export default { setup() { diff --git a/docs/zh/reference/plugin/register-components.md b/docs/zh/reference/plugin/register-components.md index 072af502..622158e1 100644 --- a/docs/zh/reference/plugin/register-components.md +++ b/docs/zh/reference/plugin/register-components.md @@ -99,12 +99,12 @@ import { defineAsyncComponent } from 'vue' app.component( 'FooBar', - defineAsyncComponent(() => import('/path/to/components/FooBar.vue')) + defineAsyncComponent(() => import('/path/to/components/FooBar.vue')), ) app.component( 'Baz', - defineAsyncComponent(() => import('/path/to/components/Baz.vue')) + defineAsyncComponent(() => import('/path/to/components/Baz.vue')), ) ``` @@ -129,7 +129,7 @@ app.component( - 详情: 用于从文件名获取对应组件名称的函数。 - + 它只会对 [componentsDir](#componentsdir) 目录下匹配了 [componentsPatterns](#componentspatterns) 的文件生效。 注意,这里的 `filename` 是相对于 [componentsPatterns](#componentspatterns) 目录的文件路径。 diff --git a/docs/zh/reference/theme-api.md b/docs/zh/reference/theme-api.md index 5d3ff9cf..2134818d 100644 --- a/docs/zh/reference/theme-api.md +++ b/docs/zh/reference/theme-api.md @@ -1,3 +1,7 @@ +--- +icon: fa6-solid:palette +--- + # 主题 API diff --git a/package.json b/package.json index de24e19c..4d8eb0e6 100644 --- a/package.json +++ b/package.json @@ -3,13 +3,18 @@ "version": "2.0.0-rc.0", "private": true, "type": "module", + "homepage": "https://vuejs.press", + "repository": { + "url": "https://github.com/vuepress/docs.git" + }, "scripts": { "docs:build": "vuepress-cli build docs --clean-cache --clean-temp", "docs:build-webpack": "DOCS_BUNDLER=webpack pnpm docs:build", "docs:clean": "rimraf docs/.vuepress/.temp docs/.vuepress/.cache docs/.vuepress/dist", "docs:dev": "vuepress-cli dev docs --clean-cache --clean-temp", "docs:dev-webpack": "DOCS_BUNDLER=webpack pnpm docs:dev", - "docs:serve": "anywhere -s -h localhost -d docs/.vuepress/dist" + "docs:serve": "anywhere -s -h localhost -d docs/.vuepress/dist", + "docs:lint": "prettier --check --write ." }, "commitlint": { "extends": [ @@ -42,7 +47,8 @@ "@vuepress/utils": "2.0.0-rc.0", "anywhere": "^1.6.0", "sass-loader": "^13.3.2", - "vue": "^3.3.9" + "vue": "^3.3.9", + "vuepress-theme-hope": "2.0.0-rc.2" }, "devDependencies": { "@commitlint/cli": "^18.4.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f24aa7a2..86dffa15 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -65,6 +65,9 @@ dependencies: vue: specifier: ^3.3.9 version: 3.3.9(typescript@5.3.2) + vuepress-theme-hope: + specifier: 2.0.0-rc.2 + version: 2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2) devDependencies: '@commitlint/cli': @@ -1945,6 +1948,16 @@ packages: resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} dev: false + /@lit-labs/ssr-dom-shim@1.1.2: + resolution: {integrity: sha512-jnOD+/+dSrfTWYfSXBXlo5l5f0q1UuJo3tkbMDCYA2lKUYq79jaxqtGEvnRoh049nt1vdo1+45RinipU6FGY2g==} + dev: false + + /@lit/reactive-element@1.6.3: + resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} + dependencies: + '@lit-labs/ssr-dom-shim': 1.1.2 + dev: false + /@mdit-vue/plugin-component@1.0.0: resolution: {integrity: sha512-ZXsJwxkG5yyTHARIYbR74cT4AZ0SfMokFFjiHYCbypHIeYWgJhso4+CZ8+3V9EWFG3EHlGoKNGqKp9chHnqntQ==} dependencies: @@ -2008,6 +2021,284 @@ packages: resolution: {integrity: sha512-xeF5+sHLzRNF7plbksywKCph4qli20l72of2fMlZQQ7RECvXYrRkE9+bjRFQCyULC7B8ydUYbpbkux5xJlVWyw==} dev: false + /@mdit/plugin-alert@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-5+xY/F/aY22cqFslFgKXXBGYkjsBjUOpoyTMkW3xSIBa1Vp1t48RoNmsv1CULhJH/hlHhJU0NFSj4xplUbrI+w==} + peerDependencies: + markdown-it: ^13.0.2 + peerDependenciesMeta: + markdown-it: + optional: true + dependencies: + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + dev: false + + /@mdit/plugin-align@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-Yr1+bh2zeDm/lmeT72+oWD0UsU9rYQQG44gIOT+LaVqNN0Uj5mcFbhHAbgyX3O28yy+i3WpE41orezNzwLaGFg==} + engines: {node: '>= 18'} + peerDependencies: + markdown-it: ^13.0.2 + peerDependenciesMeta: + markdown-it: + optional: true + dependencies: + '@mdit/plugin-container': 0.7.5(markdown-it@13.0.2) + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + dev: false + + /@mdit/plugin-attrs@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-sI6xFfpaA3IvX13Vn4jz8nVaiDihiRI9v6ZJCUrUKxuhOSi8L9+Ig77D8XsnN9I50tqNXAdTXIh1zvCd9r+DBA==} + engines: {node: '>= 18'} + peerDependencies: + markdown-it: ^13.0.2 + peerDependenciesMeta: + markdown-it: + optional: true + dependencies: + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + dev: false + + /@mdit/plugin-container@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-2SyaDa/5Ndgbhdg5MOXZs5dUb0g/Kv3bkrwo2Xfk7XIyPFkItMNN3G1atpkmu/iHlEBghM6qTCBz/3H9X+mpjw==} + engines: {node: '>= 18'} + peerDependencies: + markdown-it: ^13.0.2 + peerDependenciesMeta: + markdown-it: + optional: true + dependencies: + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + dev: false + + /@mdit/plugin-demo@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-tlfgkT8NTEzK7MyoklwKKgd1244wzyZrkqhLSKq2k8ALDpy9KTa0G/QUlPcxJo9iO9JAAiY1yZrfYfFBLu6bPA==} + peerDependencies: + markdown-it: ^13.0.2 + peerDependenciesMeta: + markdown-it: + optional: true + dependencies: + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + dev: false + + /@mdit/plugin-figure@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-okCiYXfbxvLIYJIk9/Pe+S+OvbgDEq1GVdPi7yFLXmA3s6YDq89b1GUI7NSo1h+ZdajtIUElhXrll/dkFSJ+8Q==} + engines: {node: '>= 18'} + peerDependencies: + markdown-it: ^13.0.2 + peerDependenciesMeta: + markdown-it: + optional: true + dependencies: + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + dev: false + + /@mdit/plugin-footnote@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-TO4nytkKgX3bKGZ+ViMfCB/4qXi6Za1kgI7KhjFJEolS3lUl+ykW7oxz9KFAh7TxIir6BblBwi9D4Tbap0bWyg==} + engines: {node: '>= 18'} + peerDependencies: + markdown-it: ^13.0.2 + dependencies: + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + dev: false + + /@mdit/plugin-img-lazyload@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-Cpb4fiJO1zpnEX0nfhizOAZeqRdO7cL11iPz3J5liBmlqkhOpxz1ddAf8kfc4vaLAeNIK6hpgEDVHp/PInImLw==} + engines: {node: '>= 18'} + peerDependencies: + markdown-it: ^13.0.2 + peerDependenciesMeta: + markdown-it: + optional: true + dependencies: + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + dev: false + + /@mdit/plugin-img-mark@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-X46NDPCC9ZUGXD3+bGvr8jbebazL67pcGeXMA2y9uHhd0gS5yZrZw//P1d10Q+JllH57ccNpFpTdVIPFB0FNWA==} + engines: {node: '>= 18'} + peerDependencies: + markdown-it: ^13.0.2 + peerDependenciesMeta: + markdown-it: + optional: true + dependencies: + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + dev: false + + /@mdit/plugin-img-size@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-c64l/xSLosjCJvquezhYif7I6Tc2Vnsi8wjuXYhwNYIpdLE0jbQrB6m8Hhw/RMzskm/NhseptIitUnSoDjgweg==} + engines: {node: '>= 18'} + peerDependencies: + markdown-it: ^13.0.2 + peerDependenciesMeta: + markdown-it: + optional: true + dependencies: + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + dev: false + + /@mdit/plugin-include@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-U7fivuMk9NBpksD1BSrMFDVJwTVzxGg0GHfnmkJEobT35v6qIa6wvGyz7igHOrXRUF3Jh01sHGR3YGonja+CbQ==} + peerDependencies: + markdown-it: ^13.0.2 + peerDependenciesMeta: + markdown-it: + optional: true + dependencies: + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + upath: 2.0.1 + dev: false + + /@mdit/plugin-katex@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-6r+A5NesR55g6vITIS7zT/VnH+/mWU4GUlsutZo1DkktkEw4aAnJtkGy/8GAl/AdzDrN6qzwFF0jL1cyEOgh3g==} + engines: {node: '>= 18'} + peerDependencies: + katex: ^0.16.9 + markdown-it: ^13.0.2 + peerDependenciesMeta: + katex: + optional: true + markdown-it: + optional: true + dependencies: + '@mdit/plugin-tex': 0.7.5(markdown-it@13.0.2) + '@types/katex': 0.16.7 + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + dev: false + + /@mdit/plugin-mark@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-vPiw8Gj3CLg1biwduXAyeDyLzCZ+Sowbee2JRmzK6ZbImRzNK+0p9wjRrLu7yjn2b8bR5n3iKQWZzw9Wh/ACBQ==} + engines: {node: '>= 18'} + peerDependencies: + markdown-it: ^13.0.2 + peerDependenciesMeta: + markdown-it: + optional: true + dependencies: + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + dev: false + + /@mdit/plugin-mathjax@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-9DkfoDm3nbzLaZC5uoCz+fD3g0JVodh8d8xAeN2oa9Z0fw1FS58hJJ0tXh5JSxxbS6EYK8k6m8jujYIsc83fmA==} + engines: {node: '>= 18'} + peerDependencies: + markdown-it: ^13.0.2 + mathjax-full: ^3.2.2 + peerDependenciesMeta: + markdown-it: + optional: true + mathjax-full: + optional: true + dependencies: + '@mdit/plugin-tex': 0.7.5(markdown-it@13.0.2) + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + upath: 2.0.1 + dev: false + + /@mdit/plugin-stylize@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-+yJKp6iAdA69lP6MkScaBlowLReqXo0vMsKJ1mfdB6c78604Y8+SMAFhj1d2xmDgiysEFHZfnOR2E+XFOwr/ag==} + engines: {node: '>= 18'} + peerDependencies: + markdown-it: ^13.0.2 + peerDependenciesMeta: + markdown-it: + optional: true + dependencies: + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + dev: false + + /@mdit/plugin-sub@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-0W/ra3chwbZ9apu/V7pYrr5SZzKSVn/v8cRYWwGwdBTLqtD+i343vkJPvw+BQZlZqVSOTYDmszExt/TAk/9Ehw==} + engines: {node: '>= 18'} + peerDependencies: + markdown-it: ^13.0.2 + peerDependenciesMeta: + markdown-it: + optional: true + dependencies: + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + dev: false + + /@mdit/plugin-sup@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-nVg1JZ1xgv0aUWHZl4AdCVyi9eHeZ11IsiqqaJ4dYvkU/HOKFqP0yO5Gcwj2rMRWVfveAqR0Hvl6I6X11ynmRg==} + engines: {node: '>= 18'} + peerDependencies: + markdown-it: ^13.0.2 + peerDependenciesMeta: + markdown-it: + optional: true + dependencies: + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + dev: false + + /@mdit/plugin-tab@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-hAhp/dj0E67r/aycPcVVAd1Lhr6v/kwd1+kAdxClG1tENneUpl9QrLsJOj5ijrWCWfDpOsNtmK6o3v7Z3Guzgw==} + peerDependencies: + markdown-it: ^13.0.2 + peerDependenciesMeta: + markdown-it: + optional: true + dependencies: + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + dev: false + + /@mdit/plugin-tasklist@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-kBtHU4pUwwEMtSTdwU1Y+CMAGLLQONcnxoOFFVwW6u8BOTpIFBQR99VX9uBa6pV+JHgqeNYAlzFvkDA49Za4Ag==} + engines: {node: '>= 18'} + peerDependencies: + markdown-it: ^13.0.2 + peerDependenciesMeta: + markdown-it: + optional: true + dependencies: + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + dev: false + + /@mdit/plugin-tex@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-76aRjqXZd5F5Xf20Z01uOwH98LkBhlyQqSjhN/BekJt72+iCIEsX8QyPDBtegniSPjA6z9kgb9ks1ap1w1ufGg==} + engines: {node: '>= 18'} + peerDependencies: + markdown-it: ^13.0.2 + peerDependenciesMeta: + markdown-it: + optional: true + dependencies: + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + dev: false + + /@mdit/plugin-uml@0.7.5(markdown-it@13.0.2): + resolution: {integrity: sha512-xRuBr0mbueVYpV0BvdWO/VmqHbMeKfHflTN5dFazFFclk7a/5XR/XcmCJG0VaFHxDIWkSH7+BxcgjsugbSBcWQ==} + engines: {node: '>= 18'} + peerDependencies: + markdown-it: ^13.0.2 + peerDependenciesMeta: + markdown-it: + optional: true + dependencies: + '@types/markdown-it': 13.0.7 + markdown-it: 13.0.2 + dev: false + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -2188,6 +2479,10 @@ packages: engines: {node: '>=18'} dev: false + /@stackblitz/sdk@1.9.0: + resolution: {integrity: sha512-3m6C7f8pnR5KXys/Hqx2x6ylnpqOak6HtnZI6T5keEO0yT+E4Spkw37VEbdwuC+2oxmjdgq6YZEgiKX7hM1GmQ==} + dev: false + /@surma/rollup-plugin-off-main-thread@2.2.3: resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} dependencies: @@ -2307,6 +2602,10 @@ packages: '@types/node': 20.10.2 dev: false + /@types/katex@0.16.7: + resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} + dev: false + /@types/linkify-it@3.0.5: resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} dev: false @@ -2350,6 +2649,10 @@ packages: '@types/node': 20.10.2 dev: false + /@types/node@17.0.45: + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + dev: false + /@types/node@18.19.1: resolution: {integrity: sha512-mZJ9V11gG5Vp0Ox2oERpeFDl+JvCwK24PGy76vVY/UgBtjwJWc5rYBThFxmbnYOm9UPZNm6wEl/sxHt2SU7x9A==} dependencies: @@ -2383,6 +2686,12 @@ packages: resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} dev: false + /@types/sax@1.2.7: + resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} + dependencies: + '@types/node': 20.10.2 + dev: false + /@types/semver@7.5.6: resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} dev: true @@ -3413,6 +3722,10 @@ packages: - supports-color dev: false + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: false + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: @@ -3524,6 +3837,12 @@ packages: engines: {node: '>=0.10.0'} dev: true + /artplayer@5.0.9: + resolution: {integrity: sha512-IM/DShYdmKFEA9jl08LYbTK2Jfz9s7qIjEH0xWjnxvVArUKZZKcoqwr6i54U0c4grtc/Uvb4wtCd78kvtSVlgw==} + dependencies: + option-validator: 2.0.6 + dev: false + /assign-symbols@1.0.0: resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} engines: {node: '>=0.10.0'} @@ -3603,6 +3922,10 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + /balloon-css@1.2.0: + resolution: {integrity: sha512-urXwkHgwp6GsXVF+it01485Z2Cj4pnW02ICnM0TemOlkKmCNnDLmyy+ZZiRXBpwldUXO+aRNr7Hdia4CBvXJ5A==} + dev: false + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false @@ -3624,6 +3947,11 @@ packages: resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} dev: false + /bcrypt-ts@5.0.0: + resolution: {integrity: sha512-0+VFzpOk0oIw8W8DfcCl0+xYbM04ib1u9IqkJCQQr+Vx8Pie4wzXmow+4zEnU0SP72QgPACDn0ARybH7q95Cbw==} + engines: {node: '>=18'} + dev: false + /big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} dev: false @@ -3800,7 +4128,6 @@ packages: /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} - dev: true /caniuse-lite@1.0.30001565: resolution: {integrity: sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==} @@ -3825,6 +4152,30 @@ packages: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + /cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + dependencies: + boolbase: 1.0.0 + css-select: 5.1.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + dev: false + + /cheerio@1.0.0-rc.12: + resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} + engines: {node: '>= 6'} + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.1.0 + htmlparser2: 8.0.2 + parse5: 7.1.2 + parse5-htmlparser2-tree-adapter: 7.0.0 + dev: false + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -3881,6 +4232,14 @@ packages: string-width: 5.1.2 dev: true + /cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: false + /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -4113,6 +4472,10 @@ packages: path-type: 4.0.0 typescript: 5.3.2 + /create-codepen@1.0.1: + resolution: {integrity: sha512-XzSWwGCFNeOnNGp3KdCDGaKq4Cp1SvjzpPGQqO0tj1HT3BhksLdl/xQ2ZEY4+0MQ3m1I/K1Fvpm4GGMthtamyA==} + dev: false + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -4153,6 +4516,16 @@ packages: nth-check: 2.1.1 dev: false + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + dev: false + /css-tree@2.2.1: resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} @@ -4187,6 +4560,10 @@ packages: engines: {node: '>=8'} dev: true + /dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + dev: false + /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -4231,7 +4608,6 @@ packages: /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} - dev: true /decode-uri-component@0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} @@ -4331,6 +4707,10 @@ packages: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} dev: false + /dijkstrajs@1.0.3: + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + dev: false + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -4376,6 +4756,14 @@ packages: entities: 2.2.0 dev: false + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: false + /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: false @@ -4387,6 +4775,13 @@ packages: domelementtype: 2.3.0 dev: false + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: false + /domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} dependencies: @@ -4395,6 +4790,14 @@ packages: domhandler: 4.3.1 dev: false + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: false + /dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: @@ -4434,7 +4837,6 @@ packages: /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} @@ -4445,6 +4847,10 @@ packages: engines: {node: '>= 4'} dev: false + /encode-utf8@1.0.3: + resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} + dev: false + /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -4467,6 +4873,11 @@ packages: engines: {node: '>=0.12'} dev: false + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: false + /envinfo@7.11.0: resolution: {integrity: sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==} engines: {node: '>=4'} @@ -5087,6 +5498,10 @@ packages: websocket-driver: 0.7.4 dev: false + /fflate@0.8.1: + resolution: {integrity: sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ==} + dev: false + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -5152,7 +5567,6 @@ packages: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - dev: true /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} @@ -5287,7 +5701,6 @@ packages: /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - dev: true /get-intrinsic@1.2.2: resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} @@ -5331,6 +5744,12 @@ packages: engines: {node: '>=0.10.0'} dev: false + /giscus@1.3.0: + resolution: {integrity: sha512-A3tVLgSmpnh2sX9uGjo9MbzmTTEJirSyFUPRvkipvy37y9rhxUYDoh9kO37QVrP7Sc7QuJ+gihB6apkO0yDyTw==} + dependencies: + lit: 2.8.0 + dev: false + /git-hooks-list@3.1.0: resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==} dev: true @@ -5612,6 +6031,15 @@ packages: entities: 2.2.0 dev: false + /htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + dev: false + /http-deceiver@1.2.7: resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} dev: false @@ -5892,7 +6320,6 @@ packages: /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - dev: true /is-fullwidth-code-point@4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} @@ -6289,7 +6716,29 @@ packages: wrap-ansi: 8.1.0 dev: true - /loader-runner@4.3.0: + /lit-element@3.3.3: + resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} + dependencies: + '@lit-labs/ssr-dom-shim': 1.1.2 + '@lit/reactive-element': 1.6.3 + lit-html: 2.8.0 + dev: false + + /lit-html@2.8.0: + resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} + dependencies: + '@types/trusted-types': 2.0.7 + dev: false + + /lit@2.8.0: + resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} + dependencies: + '@lit/reactive-element': 1.6.3 + lit-element: 3.3.3 + lit-html: 2.8.0 + dev: false + + /loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} dev: false @@ -6308,7 +6757,6 @@ packages: engines: {node: '>=8'} dependencies: p-locate: 4.1.0 - dev: true /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} @@ -6890,6 +7338,12 @@ packages: is-wsl: 2.2.0 dev: false + /option-validator@2.0.6: + resolution: {integrity: sha512-tmZDan2LRIRQyhUGvkff68/O0R8UmF+Btmiiz0SmSw2ng3CfPZB9wJlIjHpe/MKUZqyIZkVIXCrwr1tIN+0Dzg==} + dependencies: + kind-of: 6.0.3 + dev: false + /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -6922,7 +7376,6 @@ packages: engines: {node: '>=6'} dependencies: p-try: 2.2.0 - dev: true /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} @@ -6936,7 +7389,6 @@ packages: engines: {node: '>=8'} dependencies: p-limit: 2.3.0 - dev: true /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} @@ -6956,7 +7408,6 @@ packages: /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - dev: true /param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} @@ -6980,6 +7431,19 @@ packages: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + /parse5-htmlparser2-tree-adapter@7.0.0: + resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} + dependencies: + domhandler: 5.0.3 + parse5: 7.1.2 + dev: false + + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 + dev: false + /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -7000,7 +7464,6 @@ packages: /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - dev: true /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} @@ -7038,6 +7501,11 @@ packages: engines: {node: '>=12'} dev: false + /photoswipe@5.4.3: + resolution: {integrity: sha512-9UC6oJBK4oXFZ5HcdlcvGkfEHsVrmE4csUdCQhEjHYb3PvPLO3PG7UhnPuOgjxwmhq5s17Un5NUdum01LgBDng==} + engines: {node: '>= 0.12.0'} + dev: false + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: false @@ -7052,6 +7520,11 @@ packages: hasBin: true dev: true + /pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + dev: false + /posix-character-classes@0.1.1: resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} engines: {node: '>=0.10.0'} @@ -7213,6 +7686,17 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + /qrcode@1.5.3: + resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + dijkstrajs: 1.0.3 + encode-utf8: 1.0.3 + pngjs: 5.0.0 + yargs: 15.4.1 + dev: false + /qs@6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} @@ -7391,12 +7875,15 @@ packages: /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - dev: true /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + dev: false + /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: false @@ -7584,6 +8071,10 @@ packages: source-map-js: 1.0.2 dev: false + /sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + dev: false + /schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} @@ -7703,6 +8194,10 @@ packages: - supports-color dev: false + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: false + /set-function-length@1.1.1: resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} engines: {node: '>= 0.4'} @@ -7782,6 +8277,17 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + /sitemap@7.1.1: + resolution: {integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==} + engines: {node: '>=12.0.0', npm: '>=5.6.0'} + hasBin: true + dependencies: + '@types/node': 17.0.45 + '@types/sax': 1.2.7 + arg: 5.0.2 + sax: 1.3.0 + dev: false + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -8022,7 +8528,6 @@ packages: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - dev: true /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} @@ -8145,6 +8650,10 @@ packages: engines: {node: '>=8'} dev: true + /striptags@3.2.0: + resolution: {integrity: sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==} + dev: false + /style-loader@3.3.3(webpack@5.89.0): resolution: {integrity: sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==} engines: {node: '>= 12.13.0'} @@ -8684,6 +9193,672 @@ packages: typescript: 5.3.2 dev: false + /vuepress-plugin-auto-catalog@2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2): + resolution: {integrity: sha512-PD/E5f42o2Z1i/g8WTdpFRZWPwAGj/PLkNVsITnyalqgLWFSJ0nYptEbffvLcOq1yJXNwxaAiWx/mZt8xV7nYw==} + engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + peerDependencies: + sass-loader: ^13.3.2 + vuepress: 2.0.0-rc.0 + vuepress-vite: 2.0.0-rc.0 + vuepress-webpack: 2.0.0-rc.0 + peerDependenciesMeta: + sass-loader: + optional: true + vuepress: + optional: true + vuepress-vite: + optional: true + vuepress-webpack: + optional: true + dependencies: + '@vuepress/client': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/core': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/shared': 2.0.0-rc.0 + '@vuepress/utils': 2.0.0-rc.0 + sass-loader: 13.3.2(webpack@5.89.0) + vue: 3.3.9(typescript@5.3.2) + vue-router: 4.2.5(vue@3.3.9) + vuepress-plugin-components: 2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2) + vuepress-plugin-sass-palette: 2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2) + vuepress-shared: 2.0.0-rc.2(typescript@5.3.2) + transitivePeerDependencies: + - '@vue/composition-api' + - dashjs + - hls.js + - mpegts.js + - plyr + - supports-color + - typescript + - vidstack + dev: false + + /vuepress-plugin-blog2@2.0.0-rc.2(typescript@5.3.2): + resolution: {integrity: sha512-YzEEAI3hEkuCfWw2x54z11Z180RVAoMxvv5Mc0CgzbAIe9oGjSpbbRq3+PSX8EEEzn1lnHw8E5L9+ix3WI4Szg==} + engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + peerDependencies: + vuepress: 2.0.0-rc.0 + vuepress-vite: 2.0.0-rc.0 + vuepress-webpack: 2.0.0-rc.0 + peerDependenciesMeta: + vuepress: + optional: true + vuepress-vite: + optional: true + vuepress-webpack: + optional: true + dependencies: + '@vuepress/client': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/core': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/shared': 2.0.0-rc.0 + '@vuepress/utils': 2.0.0-rc.0 + chokidar: 3.5.3 + vue: 3.3.9(typescript@5.3.2) + vue-router: 4.2.5(vue@3.3.9) + vuepress-shared: 2.0.0-rc.2(typescript@5.3.2) + transitivePeerDependencies: + - '@vue/composition-api' + - supports-color + - typescript + dev: false + + /vuepress-plugin-comment2@2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2): + resolution: {integrity: sha512-eREPtXX2JUxjqwWUpx6iJ5bKLEG5BVndhBFOjxm7yeyg0SWLCDHmuv8odZ5DTjL50k5hRuP1jVJkB7Caonkv+Q==} + engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + peerDependencies: + '@waline/client': ^2.15.8 + artalk: ^2.6.4 + sass-loader: ^13.3.2 + twikoo: ^1.6.26 + vuepress: 2.0.0-rc.0 + vuepress-vite: 2.0.0-rc.0 + vuepress-webpack: 2.0.0-rc.0 + peerDependenciesMeta: + '@waline/client': + optional: true + artalk: + optional: true + sass-loader: + optional: true + twikoo: + optional: true + vuepress: + optional: true + vuepress-vite: + optional: true + vuepress-webpack: + optional: true + dependencies: + '@vuepress/client': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/shared': 2.0.0-rc.0 + '@vuepress/utils': 2.0.0-rc.0 + giscus: 1.3.0 + sass-loader: 13.3.2(webpack@5.89.0) + vue: 3.3.9(typescript@5.3.2) + vue-router: 4.2.5(vue@3.3.9) + vuepress-plugin-sass-palette: 2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2) + vuepress-shared: 2.0.0-rc.2(typescript@5.3.2) + transitivePeerDependencies: + - '@vue/composition-api' + - supports-color + - typescript + dev: false + + /vuepress-plugin-components@2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2): + resolution: {integrity: sha512-ejTbnaOmYvPlX1FwzlD8v/v8/hUGld3QzKfcvFkhHVn4ddhze5/NQj3cqHFfnT7fR23UKs8BI7L1L/0SFZiFGA==} + engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + peerDependencies: + dashjs: ^4.7.2 + hls.js: ^1.4.12 + mpegts.js: ^1.7.3 + plyr: ^3.7.8 + sass-loader: ^13.3.2 + vidstack: ^1.8.1 + vuepress: 2.0.0-rc.0 + vuepress-vite: 2.0.0-rc.0 + vuepress-webpack: 2.0.0-rc.0 + peerDependenciesMeta: + dashjs: + optional: true + hls.js: + optional: true + mpegts.js: + optional: true + plyr: + optional: true + sass-loader: + optional: true + vidstack: + optional: true + vuepress: + optional: true + vuepress-vite: + optional: true + vuepress-webpack: + optional: true + dependencies: + '@stackblitz/sdk': 1.9.0 + '@vuepress/client': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/shared': 2.0.0-rc.0 + '@vuepress/utils': 2.0.0-rc.0 + '@vueuse/core': 10.6.1(vue@3.3.9) + artplayer: 5.0.9 + balloon-css: 1.2.0 + create-codepen: 1.0.1 + qrcode: 1.5.3 + sass-loader: 13.3.2(webpack@5.89.0) + vue: 3.3.9(typescript@5.3.2) + vue-router: 4.2.5(vue@3.3.9) + vuepress-plugin-reading-time2: 2.0.0-rc.2(typescript@5.3.2) + vuepress-plugin-sass-palette: 2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2) + vuepress-shared: 2.0.0-rc.2(typescript@5.3.2) + transitivePeerDependencies: + - '@vue/composition-api' + - supports-color + - typescript + dev: false + + /vuepress-plugin-copy-code2@2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2): + resolution: {integrity: sha512-+wvfD54h4CMZPRl5pat5OP8dpl1PlXHYwY7Eba69GYXAtjj55L5IFva+FWWfSgyMFcdzWMkeNxNZK4bIjHqqXw==} + engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + peerDependencies: + sass-loader: ^13.3.2 + vuepress: 2.0.0-rc.0 + vuepress-vite: 2.0.0-rc.0 + vuepress-webpack: 2.0.0-rc.0 + peerDependenciesMeta: + sass-loader: + optional: true + vuepress: + optional: true + vuepress-vite: + optional: true + vuepress-webpack: + optional: true + dependencies: + '@vuepress/client': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/shared': 2.0.0-rc.0 + '@vuepress/utils': 2.0.0-rc.0 + '@vueuse/core': 10.6.1(vue@3.3.9) + balloon-css: 1.2.0 + sass-loader: 13.3.2(webpack@5.89.0) + vue: 3.3.9(typescript@5.3.2) + vue-router: 4.2.5(vue@3.3.9) + vuepress-plugin-sass-palette: 2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2) + vuepress-shared: 2.0.0-rc.2(typescript@5.3.2) + transitivePeerDependencies: + - '@vue/composition-api' + - supports-color + - typescript + dev: false + + /vuepress-plugin-copyright2@2.0.0-rc.2(typescript@5.3.2): + resolution: {integrity: sha512-6xJ14bVcaxNciC0UTdvaHg1R/uh5BUUA/UFOBYqYamhzveyQrgSInleghmYcbTH8hTh3+V5PCOLJENhH6wU7zQ==} + engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + peerDependencies: + vuepress: 2.0.0-rc.0 + vuepress-vite: 2.0.0-rc.0 + vuepress-webpack: 2.0.0-rc.0 + peerDependenciesMeta: + vuepress: + optional: true + vuepress-vite: + optional: true + vuepress-webpack: + optional: true + dependencies: + '@vuepress/client': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/shared': 2.0.0-rc.0 + '@vuepress/utils': 2.0.0-rc.0 + '@vueuse/core': 10.6.1(vue@3.3.9) + vue: 3.3.9(typescript@5.3.2) + vue-router: 4.2.5(vue@3.3.9) + vuepress-shared: 2.0.0-rc.2(typescript@5.3.2) + transitivePeerDependencies: + - '@vue/composition-api' + - supports-color + - typescript + dev: false + + /vuepress-plugin-feed2@2.0.0-rc.2(typescript@5.3.2): + resolution: {integrity: sha512-xuMi9YAw8i/uRrwvQ+1hIdtVs2NXmi6g6YbCU6wuX1Ig1U/tKGUg4fNzA2M6w3Mg8fpA60fDY4FUpDmN05FpBA==} + engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + peerDependencies: + vuepress: 2.0.0-rc.0 + vuepress-vite: 2.0.0-rc.0 + vuepress-webpack: 2.0.0-rc.0 + peerDependenciesMeta: + vuepress: + optional: true + vuepress-vite: + optional: true + vuepress-webpack: + optional: true + dependencies: + '@vuepress/shared': 2.0.0-rc.0 + '@vuepress/utils': 2.0.0-rc.0 + cheerio: 1.0.0-rc.12 + vuepress-shared: 2.0.0-rc.2(typescript@5.3.2) + xml-js: 1.6.11 + transitivePeerDependencies: + - '@vue/composition-api' + - supports-color + - typescript + dev: false + + /vuepress-plugin-md-enhance@2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2): + resolution: {integrity: sha512-5yqU18oyYbn//n/bDSFBa3uLNgnuB3i+0BjcI0pVeV+eejHW31O8cLKKuoYlGiWlQrChiRWfNe/RyAMa9H1lmA==} + engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + peerDependencies: + '@types/reveal.js': ^4.4.5 + '@vue/repl': ^3.0.0 + chart.js: ^4.4.0 + echarts: ^5.4.3 + flowchart.ts: ^2.0.0 + katex: ^0.16.9 + kotlin-playground: ^1.29.0 + markmap-lib: ^0.15.7 + markmap-toolbar: ^0.15.6 + markmap-view: ^0.15.6 + mathjax-full: ^3.2.2 + mermaid: ^10.6.1 + reveal.js: ^5.0.2 + sass-loader: ^13.3.2 + vuepress: 2.0.0-rc.0 + vuepress-vite: 2.0.0-rc.0 + vuepress-webpack: 2.0.0-rc.0 + peerDependenciesMeta: + '@types/reveal.js': + optional: true + '@vue/repl': + optional: true + chart.js: + optional: true + echarts: + optional: true + flowchart.ts: + optional: true + katex: + optional: true + kotlin-playground: + optional: true + markmap-lib: + optional: true + markmap-toolbar: + optional: true + markmap-view: + optional: true + mathjax-full: + optional: true + mermaid: + optional: true + reveal.js: + optional: true + sass-loader: + optional: true + vuepress: + optional: true + vuepress-vite: + optional: true + vuepress-webpack: + optional: true + dependencies: + '@mdit/plugin-alert': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-align': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-attrs': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-container': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-demo': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-figure': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-footnote': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-img-lazyload': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-img-mark': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-img-size': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-include': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-katex': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-mark': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-mathjax': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-stylize': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-sub': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-sup': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-tab': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-tasklist': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-tex': 0.7.5(markdown-it@13.0.2) + '@mdit/plugin-uml': 0.7.5(markdown-it@13.0.2) + '@types/markdown-it': 13.0.7 + '@vuepress/client': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/shared': 2.0.0-rc.0 + '@vuepress/utils': 2.0.0-rc.0 + '@vueuse/core': 10.6.1(vue@3.3.9) + balloon-css: 1.2.0 + js-yaml: 4.1.0 + markdown-it: 13.0.2 + sass-loader: 13.3.2(webpack@5.89.0) + vue: 3.3.9(typescript@5.3.2) + vue-router: 4.2.5(vue@3.3.9) + vuepress-plugin-sass-palette: 2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2) + vuepress-shared: 2.0.0-rc.2(typescript@5.3.2) + transitivePeerDependencies: + - '@vue/composition-api' + - supports-color + - typescript + dev: false + + /vuepress-plugin-photo-swipe@2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2): + resolution: {integrity: sha512-D2ipqEHsVfU3k4cYIi4CWTZiI+KwnZ1ywfgo55IYV9JmiCBbhhK47iAdq66BbUEyv0y1oKVq7ZlDznFW+KCGDg==} + engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + peerDependencies: + sass-loader: ^13.3.2 + vuepress: 2.0.0-rc.0 + vuepress-vite: 2.0.0-rc.0 + vuepress-webpack: 2.0.0-rc.0 + peerDependenciesMeta: + sass-loader: + optional: true + vuepress: + optional: true + vuepress-vite: + optional: true + vuepress-webpack: + optional: true + dependencies: + '@vuepress/client': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/shared': 2.0.0-rc.0 + '@vuepress/utils': 2.0.0-rc.0 + '@vueuse/core': 10.6.1(vue@3.3.9) + photoswipe: 5.4.3 + sass-loader: 13.3.2(webpack@5.89.0) + vue: 3.3.9(typescript@5.3.2) + vue-router: 4.2.5(vue@3.3.9) + vuepress-plugin-sass-palette: 2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2) + vuepress-shared: 2.0.0-rc.2(typescript@5.3.2) + transitivePeerDependencies: + - '@vue/composition-api' + - supports-color + - typescript + dev: false + + /vuepress-plugin-pwa2@2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2): + resolution: {integrity: sha512-a8XMjR9UOCF1y5eGO3cTfznIDD2PgioreZrgI5FWCJRgZwXwcP1P1LohI3cQq6jXd8L3ZKpDxBSioSQMmBuD8g==} + engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + peerDependencies: + sass-loader: ^13.3.2 + vuepress: 2.0.0-rc.0 + vuepress-vite: 2.0.0-rc.0 + vuepress-webpack: 2.0.0-rc.0 + peerDependenciesMeta: + sass-loader: + optional: true + vuepress: + optional: true + vuepress-vite: + optional: true + vuepress-webpack: + optional: true + dependencies: + '@vuepress/client': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/shared': 2.0.0-rc.0 + '@vuepress/utils': 2.0.0-rc.0 + '@vueuse/core': 10.6.1(vue@3.3.9) + mitt: 3.0.1 + register-service-worker: 1.7.2 + sass-loader: 13.3.2(webpack@5.89.0) + vue: 3.3.9(typescript@5.3.2) + vue-router: 4.2.5(vue@3.3.9) + vuepress-plugin-sass-palette: 2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2) + vuepress-shared: 2.0.0-rc.2(typescript@5.3.2) + workbox-build: 7.0.0 + transitivePeerDependencies: + - '@types/babel__core' + - '@vue/composition-api' + - supports-color + - typescript + dev: false + + /vuepress-plugin-reading-time2@2.0.0-rc.2(typescript@5.3.2): + resolution: {integrity: sha512-EuMXOOsZh9YRC4yH7edeoNbCjsc/aekQ24HJ+zgOnDZWpF4HfQ6MYYZTM4KVJDxwCGCF8/o93z0ux8VP0PbJ4A==} + engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + peerDependencies: + vuepress: 2.0.0-rc.0 + vuepress-vite: 2.0.0-rc.0 + vuepress-webpack: 2.0.0-rc.0 + peerDependenciesMeta: + vuepress: + optional: true + vuepress-vite: + optional: true + vuepress-webpack: + optional: true + dependencies: + '@vuepress/client': 2.0.0-rc.0(typescript@5.3.2) + vue: 3.3.9(typescript@5.3.2) + vuepress-shared: 2.0.0-rc.2(typescript@5.3.2) + transitivePeerDependencies: + - '@vue/composition-api' + - supports-color + - typescript + dev: false + + /vuepress-plugin-rtl@2.0.0-rc.2(typescript@5.3.2): + resolution: {integrity: sha512-TUJjnPrOwWLsOYhwhoBUzVKySsB/dUW8pr2Azval96gombpnml3r8xt1b3pF1bV6vDP9o2ZZaYV6YBRe8Zl3YQ==} + engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + peerDependencies: + vuepress: 2.0.0-rc.0 + vuepress-vite: 2.0.0-rc.0 + vuepress-webpack: 2.0.0-rc.0 + peerDependenciesMeta: + vuepress: + optional: true + vuepress-vite: + optional: true + vuepress-webpack: + optional: true + dependencies: + '@vuepress/client': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/shared': 2.0.0-rc.0 + '@vuepress/utils': 2.0.0-rc.0 + vue: 3.3.9(typescript@5.3.2) + vuepress-shared: 2.0.0-rc.2(typescript@5.3.2) + transitivePeerDependencies: + - '@vue/composition-api' + - supports-color + - typescript + dev: false + + /vuepress-plugin-sass-palette@2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2): + resolution: {integrity: sha512-CHPAsn/DfwgQjY6FpuuGZtc0PI3leKnN9yKhMGmwfAyrVuXd1+8IIWosG/6Ob38yLPiybmcp+3DlQNJPBGjxnA==} + engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + peerDependencies: + sass-loader: ^13.3.2 + vuepress: 2.0.0-rc.0 + vuepress-vite: 2.0.0-rc.0 + vuepress-webpack: 2.0.0-rc.0 + peerDependenciesMeta: + sass-loader: + optional: true + vuepress: + optional: true + vuepress-vite: + optional: true + vuepress-webpack: + optional: true + dependencies: + '@vuepress/shared': 2.0.0-rc.0 + '@vuepress/utils': 2.0.0-rc.0 + chokidar: 3.5.3 + sass: 1.69.5 + sass-loader: 13.3.2(webpack@5.89.0) + vuepress-shared: 2.0.0-rc.2(typescript@5.3.2) + transitivePeerDependencies: + - '@vue/composition-api' + - supports-color + - typescript + dev: false + + /vuepress-plugin-seo2@2.0.0-rc.2(typescript@5.3.2): + resolution: {integrity: sha512-9L3Te7RQHQIzkhwB26PHa6YmmY+kgL+IPB4529VwL78UwHTQcVVn7YVKGxweybAbf47fcTUCCA5kMkFZYYDl5w==} + engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + peerDependencies: + vuepress: 2.0.0-rc.0 + vuepress-vite: 2.0.0-rc.0 + vuepress-webpack: 2.0.0-rc.0 + peerDependenciesMeta: + vuepress: + optional: true + vuepress-vite: + optional: true + vuepress-webpack: + optional: true + dependencies: + '@vuepress/shared': 2.0.0-rc.0 + '@vuepress/utils': 2.0.0-rc.0 + vuepress-shared: 2.0.0-rc.2(typescript@5.3.2) + transitivePeerDependencies: + - '@vue/composition-api' + - supports-color + - typescript + dev: false + + /vuepress-plugin-sitemap2@2.0.0-rc.2(typescript@5.3.2): + resolution: {integrity: sha512-2AwB5vvdjcjkCGiwXYS+elZRDGb3HnkXETPjkp2qZLM5sxlcFJVbEVOf8p1XN2nTReL7tdMT2hoKGrJEwTESeA==} + engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + peerDependencies: + vuepress: 2.0.0-rc.0 + vuepress-vite: 2.0.0-rc.0 + vuepress-webpack: 2.0.0-rc.0 + peerDependenciesMeta: + vuepress: + optional: true + vuepress-vite: + optional: true + vuepress-webpack: + optional: true + dependencies: + '@vuepress/shared': 2.0.0-rc.0 + '@vuepress/utils': 2.0.0-rc.0 + sitemap: 7.1.1 + vuepress-shared: 2.0.0-rc.2(typescript@5.3.2) + transitivePeerDependencies: + - '@vue/composition-api' + - supports-color + - typescript + dev: false + + /vuepress-shared@2.0.0-rc.2(typescript@5.3.2): + resolution: {integrity: sha512-N1R/izhfxCtAWAqTFTcedOj6P4kvHhVKU/XARjeb/F9opU81u7X5jtyTQsOyc8nhdC+BfCV2iD/mnnF/02AL2w==} + engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + peerDependencies: + vuepress: 2.0.0-rc.0 + vuepress-vite: 2.0.0-rc.0 + vuepress-webpack: 2.0.0-rc.0 + peerDependenciesMeta: + vuepress: + optional: true + vuepress-vite: + optional: true + vuepress-webpack: + optional: true + dependencies: + '@vuepress/client': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/shared': 2.0.0-rc.0 + '@vuepress/utils': 2.0.0-rc.0 + '@vueuse/core': 10.6.1(vue@3.3.9) + cheerio: 1.0.0-rc.12 + dayjs: 1.11.10 + execa: 8.0.1 + fflate: 0.8.1 + gray-matter: 4.0.3 + semver: 7.5.4 + striptags: 3.2.0 + vue: 3.3.9(typescript@5.3.2) + vue-router: 4.2.5(vue@3.3.9) + transitivePeerDependencies: + - '@vue/composition-api' + - supports-color + - typescript + dev: false + + /vuepress-theme-hope@2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2): + resolution: {integrity: sha512-rrKgxcwLdIdR/57hA9VDacrn+YP2FpMpSWUNwmRzrehj2tq3z0nFYn8bn1+qC0gPUoroVPHULx8MscwA6CyrjQ==} + engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + peerDependencies: + sass-loader: ^13.3.2 + vuepress: 2.0.0-rc.0 + vuepress-vite: 2.0.0-rc.0 + vuepress-webpack: 2.0.0-rc.0 + peerDependenciesMeta: + sass-loader: + optional: true + vuepress: + optional: true + vuepress-vite: + optional: true + vuepress-webpack: + optional: true + dependencies: + '@vuepress/cli': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/client': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/core': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/plugin-active-header-links': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/plugin-container': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/plugin-external-link-icon': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/plugin-git': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/plugin-nprogress': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/plugin-prismjs': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/plugin-theme-data': 2.0.0-rc.0(typescript@5.3.2) + '@vuepress/shared': 2.0.0-rc.0 + '@vuepress/utils': 2.0.0-rc.0 + '@vueuse/core': 10.6.1(vue@3.3.9) + balloon-css: 1.2.0 + bcrypt-ts: 5.0.0 + cheerio: 1.0.0-rc.12 + chokidar: 3.5.3 + gray-matter: 4.0.3 + sass-loader: 13.3.2(webpack@5.89.0) + vue: 3.3.9(typescript@5.3.2) + vue-router: 4.2.5(vue@3.3.9) + vuepress-plugin-auto-catalog: 2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2) + vuepress-plugin-blog2: 2.0.0-rc.2(typescript@5.3.2) + vuepress-plugin-comment2: 2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2) + vuepress-plugin-components: 2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2) + vuepress-plugin-copy-code2: 2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2) + vuepress-plugin-copyright2: 2.0.0-rc.2(typescript@5.3.2) + vuepress-plugin-feed2: 2.0.0-rc.2(typescript@5.3.2) + vuepress-plugin-md-enhance: 2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2) + vuepress-plugin-photo-swipe: 2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2) + vuepress-plugin-pwa2: 2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2) + vuepress-plugin-reading-time2: 2.0.0-rc.2(typescript@5.3.2) + vuepress-plugin-rtl: 2.0.0-rc.2(typescript@5.3.2) + vuepress-plugin-sass-palette: 2.0.0-rc.2(sass-loader@13.3.2)(typescript@5.3.2) + vuepress-plugin-seo2: 2.0.0-rc.2(typescript@5.3.2) + vuepress-plugin-sitemap2: 2.0.0-rc.2(typescript@5.3.2) + vuepress-shared: 2.0.0-rc.2(typescript@5.3.2) + transitivePeerDependencies: + - '@types/babel__core' + - '@types/reveal.js' + - '@vue/composition-api' + - '@vue/repl' + - '@waline/client' + - artalk + - chart.js + - dashjs + - echarts + - flowchart.ts + - hls.js + - katex + - kotlin-playground + - markmap-lib + - markmap-toolbar + - markmap-view + - mathjax-full + - mermaid + - mpegts.js + - plyr + - reveal.js + - supports-color + - twikoo + - typescript + - vidstack + dev: false + /watchpack@2.4.0: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} engines: {node: '>=10.13.0'} @@ -8867,6 +10042,10 @@ packages: is-string: 1.0.7 is-symbol: 1.0.4 + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + dev: false + /which-typed-array@1.1.13: resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} engines: {node: '>= 0.4'} @@ -9034,6 +10213,15 @@ packages: workbox-core: 7.0.0 dev: false + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: false + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -9068,11 +10256,22 @@ packages: optional: true dev: false + /xml-js@1.6.11: + resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} + hasBin: true + dependencies: + sax: 1.3.0 + dev: false + /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} dev: true + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + dev: false + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -9089,6 +10288,14 @@ packages: resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} engines: {node: '>= 14'} + /yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: false + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -9099,6 +10306,23 @@ packages: engines: {node: '>=12'} dev: true + /yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + dev: false + /yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'}