From 37888762ab17e2a9b004b1493fa078811352e5c6 Mon Sep 17 00:00:00 2001 From: wuyuan Date: Thu, 17 Sep 2026 18:29:32 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=8D=87=E7=BA=A7=E4=B8=BA?= =?UTF-8?q?=E6=9C=80=E6=96=B0=E7=89=88=20vite-press?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build.yml | 77 +- .gitignore | 9 + .vitepress/config.mts | 170 + .vitepress/markdown/legacy-code-tabs.ts | 60 + .vitepress/markdown/legacy-links.ts | 142 + .vitepress/rewrites.generated.json | 361 + .vitepress/sidebar.ts | 152 + .vitepress/theme/components/DocHeader.vue | 339 + .../components/EmbeddedSidebarButton.vue | 47 + .vitepress/theme/components/HomeHero.vue | 78 + .../theme/components/SidebarActions.vue | 307 + .vitepress/theme/components/SiteFooter.vue | 210 + .vitepress/theme/components/SiteNavbar.vue | 797 ++ .vitepress/theme/custom.css | 211 + .vitepress/theme/index.ts | 46 + Dockerfile | 1 + LOCALES/en.json | 44 - LOCALES/zh.json | 44 - addTime.js | 111 - docs/.vuepress/config.js | 138 - docs/.vuepress/enhanceApp.js | 9 - .../plugins/auto-add-title-order/index.js | 75 - .../plugins/auto-complete-url/index.js | 88 - docs/.vuepress/plugins/code-tabs/index.js | 45 - docs/.vuepress/plugins/code-tabs/tabs.js | 301 - .../plugins/disable-url-encode/index.js | 60 - docs/.vuepress/plugins/footnote/index.js | 415 - .../fulltext-search/components/SearchBox.vue | 529 - .../plugins/fulltext-search/index.js | 131 - .../fulltext-search/services/flexsearchSvc.js | 252 - docs/.vuepress/plugins/love-me/index.js | 18 - docs/.vuepress/plugins/love-me/love-me.js | 62 - docs/.vuepress/plugins/mermaidjs/index.js | 14 - docs/.vuepress/plugins/mermaidjs/loading.vue | 46 - .../plugins/mermaidjs/markdownItFence.js | 94 - .../plugins/mermaidjs/markdownItPlugin.js | 19 - docs/.vuepress/plugins/mermaidjs/mermaidjs.js | 90 - .../plugins/one-click-copy/bin/Message.js | 49 - .../one-click-copy/bin/assets/css/message.css | 60 - .../one-click-copy/bin/assets/css/style.css | 48 - .../one-click-copy/bin/clientRootMixin.js | 73 - .../.vuepress/plugins/one-click-copy/index.js | 25 - docs/.vuepress/plugins/todo/index.js | 90 - docs/.vuepress/plugins/todo/old.js | 78 - .../plugins/vuepress-keyword/index.js | 28 - .../plugins/vuepress-keyword/updateMeta.js | 152 - docs/.vuepress/styles/index.styl | 123 - docs/.vuepress/styles/palette.styl | 67 - docs/{README.md => index.md} | 15 +- docs/public/img/deepflow-icon.svg | 53 + docs/{.vuepress => }/public/img/favicon.ico | Bin docs/{.vuepress => }/public/img/lang.svg | 0 docs/{.vuepress => }/public/img/logo.png | Bin docs/{.vuepress => }/public/img/logo.svg | 0 docs/{.vuepress => }/public/img/nav.svg | 0 .../assets => public/img}/search.svg | 0 docs/{.vuepress => }/public/img/side.svg | 0 docs/public/img/yunshan-logo-white.png | Bin 0 -> 30418 bytes docs/zh/07-configuration/README.md | 5 - docs/zh/{README.md => index.md} | 15 +- downloadFile.js | 7 +- nginx/zh-only-redirects.conf | 4 + package.json | 55 +- pnpm-lock.yaml | 11194 +++------------- scripts/baseline-urls.json | 1082 ++ scripts/check-urls.mjs | 34 + scripts/gen-rewrites.mjs | 145 + scripts/lib/corpus.mjs | 76 + .../translated/07-configuration/README.md | 8 - vdoing/LICENSE | 21 - vdoing/README.md | 7 - vdoing/assets/images/lang.svg | 6 - vdoing/assets/images/logo.svg | 103 - vdoing/assets/images/nav.svg | 20 - vdoing/components/AlgoliaSearchBox.vue | 167 - vdoing/components/ArticleInfo.vue | 167 - vdoing/components/BodyBgImg.vue | 53 - vdoing/components/Buttons.vue | 264 - vdoing/components/DropdownLink.vue | 228 - vdoing/components/DropdownTransition.vue | 32 - vdoing/components/Footer.vue | 266 - vdoing/components/Home.vue | 153 - vdoing/components/MainLayout.vue | 59 - vdoing/components/NavLink.vue | 54 - vdoing/components/NavLinks.vue | 154 - vdoing/components/Navbar.vue | 494 - vdoing/components/Page.vue | 304 - vdoing/components/PageEdit.vue | 116 - vdoing/components/PageNav.vue | 212 - vdoing/components/RightMenu.vue | 221 - vdoing/components/Sidebar.vue | 94 - vdoing/components/SidebarButton.vue | 65 - vdoing/components/SidebarGroup.vue | 143 - vdoing/components/SidebarLink.vue | 200 - vdoing/components/SidebarLinks.vue | 125 - vdoing/config.js | 4 - vdoing/enhanceApp.js | 123 - vdoing/font/font_1678482_4tbhmh589x.styl | 196 - vdoing/font/font_1678482_4tbhmh589x.ttf | Bin 13272 -> 0 bytes vdoing/font/font_1678482_4tbhmh589x.woff | Bin 9176 -> 0 bytes vdoing/font/font_1678482_4tbhmh589x.woff2 | Bin 7940 -> 0 bytes vdoing/global-components/Badge.vue | 44 - vdoing/global-components/CodeBlock.vue | 38 - vdoing/global-components/CodeGroup.vue | 99 - vdoing/global-components/CodeTabs.vue | 163 - vdoing/index.js | 328 - vdoing/layouts/404.vue | 65 - vdoing/layouts/Layout.vue | 413 - vdoing/locales/en.js | 16 - vdoing/locales/index.js | 6 - vdoing/locales/zh.js | 16 - vdoing/mixins/titleBadge.js | 28 - vdoing/node_utils/handlePage.js | 53 - vdoing/node_utils/index.js | 230 - vdoing/node_utils/modules/filename.js | 147 - vdoing/node_utils/modules/fn.js | 28 - vdoing/noopModule.js | 1 - vdoing/package.json | 52 - vdoing/page-locales/index.js | 8 - vdoing/styles/arrow.styl | 22 - vdoing/styles/code-theme.styl | 274 - vdoing/styles/code.styl | 142 - vdoing/styles/config.styl | 1 - vdoing/styles/custom-blocks.styl | 98 - vdoing/styles/footer.styl | 72 - vdoing/styles/header.styl | 340 - vdoing/styles/index.styl | 414 - vdoing/styles/markdown-container.styl | 211 - vdoing/styles/mobile.styl | 97 - vdoing/styles/palette.styl | 86 - vdoing/styles/toast.styl | 150 - vdoing/styles/toc.styl | 3 - vdoing/styles/wrapper.styl | 16 - vdoing/templates/dev.html | 20 - vdoing/templates/ssr.html | 46 - vdoing/types/index.ts | 162 - vdoing/util/header.js | 96 - vdoing/util/index.js | 302 - vdoing/util/init.js | 255 - vitepress-migration-plan.md | 601 + 140 files changed, 7027 insertions(+), 21245 deletions(-) create mode 100644 .vitepress/config.mts create mode 100644 .vitepress/markdown/legacy-code-tabs.ts create mode 100644 .vitepress/markdown/legacy-links.ts create mode 100644 .vitepress/rewrites.generated.json create mode 100644 .vitepress/sidebar.ts create mode 100644 .vitepress/theme/components/DocHeader.vue create mode 100644 .vitepress/theme/components/EmbeddedSidebarButton.vue create mode 100644 .vitepress/theme/components/HomeHero.vue create mode 100644 .vitepress/theme/components/SidebarActions.vue create mode 100644 .vitepress/theme/components/SiteFooter.vue create mode 100644 .vitepress/theme/components/SiteNavbar.vue create mode 100644 .vitepress/theme/custom.css create mode 100644 .vitepress/theme/index.ts delete mode 100644 LOCALES/en.json delete mode 100644 LOCALES/zh.json delete mode 100644 addTime.js delete mode 100644 docs/.vuepress/config.js delete mode 100644 docs/.vuepress/enhanceApp.js delete mode 100644 docs/.vuepress/plugins/auto-add-title-order/index.js delete mode 100644 docs/.vuepress/plugins/auto-complete-url/index.js delete mode 100644 docs/.vuepress/plugins/code-tabs/index.js delete mode 100644 docs/.vuepress/plugins/code-tabs/tabs.js delete mode 100644 docs/.vuepress/plugins/disable-url-encode/index.js delete mode 100644 docs/.vuepress/plugins/footnote/index.js delete mode 100644 docs/.vuepress/plugins/fulltext-search/components/SearchBox.vue delete mode 100644 docs/.vuepress/plugins/fulltext-search/index.js delete mode 100644 docs/.vuepress/plugins/fulltext-search/services/flexsearchSvc.js delete mode 100644 docs/.vuepress/plugins/love-me/index.js delete mode 100644 docs/.vuepress/plugins/love-me/love-me.js delete mode 100644 docs/.vuepress/plugins/mermaidjs/index.js delete mode 100644 docs/.vuepress/plugins/mermaidjs/loading.vue delete mode 100644 docs/.vuepress/plugins/mermaidjs/markdownItFence.js delete mode 100644 docs/.vuepress/plugins/mermaidjs/markdownItPlugin.js delete mode 100644 docs/.vuepress/plugins/mermaidjs/mermaidjs.js delete mode 100644 docs/.vuepress/plugins/one-click-copy/bin/Message.js delete mode 100644 docs/.vuepress/plugins/one-click-copy/bin/assets/css/message.css delete mode 100644 docs/.vuepress/plugins/one-click-copy/bin/assets/css/style.css delete mode 100644 docs/.vuepress/plugins/one-click-copy/bin/clientRootMixin.js delete mode 100644 docs/.vuepress/plugins/one-click-copy/index.js delete mode 100644 docs/.vuepress/plugins/todo/index.js delete mode 100644 docs/.vuepress/plugins/todo/old.js delete mode 100644 docs/.vuepress/plugins/vuepress-keyword/index.js delete mode 100644 docs/.vuepress/plugins/vuepress-keyword/updateMeta.js delete mode 100644 docs/.vuepress/styles/index.styl delete mode 100644 docs/.vuepress/styles/palette.styl rename docs/{README.md => index.md} (63%) create mode 100644 docs/public/img/deepflow-icon.svg rename docs/{.vuepress => }/public/img/favicon.ico (100%) rename docs/{.vuepress => }/public/img/lang.svg (100%) rename docs/{.vuepress => }/public/img/logo.png (100%) rename docs/{.vuepress => }/public/img/logo.svg (100%) rename docs/{.vuepress => }/public/img/nav.svg (100%) rename docs/{.vuepress/plugins/fulltext-search/assets => public/img}/search.svg (100%) rename docs/{.vuepress => }/public/img/side.svg (100%) create mode 100644 docs/public/img/yunshan-logo-white.png delete mode 100644 docs/zh/07-configuration/README.md rename docs/zh/{README.md => index.md} (61%) create mode 100644 nginx/zh-only-redirects.conf create mode 100644 scripts/baseline-urls.json create mode 100644 scripts/check-urls.mjs create mode 100644 scripts/gen-rewrites.mjs create mode 100644 scripts/lib/corpus.mjs delete mode 100644 translate/translated/07-configuration/README.md delete mode 100644 vdoing/LICENSE delete mode 100644 vdoing/README.md delete mode 100644 vdoing/assets/images/lang.svg delete mode 100644 vdoing/assets/images/logo.svg delete mode 100644 vdoing/assets/images/nav.svg delete mode 100644 vdoing/components/AlgoliaSearchBox.vue delete mode 100644 vdoing/components/ArticleInfo.vue delete mode 100644 vdoing/components/BodyBgImg.vue delete mode 100644 vdoing/components/Buttons.vue delete mode 100644 vdoing/components/DropdownLink.vue delete mode 100644 vdoing/components/DropdownTransition.vue delete mode 100644 vdoing/components/Footer.vue delete mode 100644 vdoing/components/Home.vue delete mode 100644 vdoing/components/MainLayout.vue delete mode 100644 vdoing/components/NavLink.vue delete mode 100644 vdoing/components/NavLinks.vue delete mode 100644 vdoing/components/Navbar.vue delete mode 100644 vdoing/components/Page.vue delete mode 100644 vdoing/components/PageEdit.vue delete mode 100644 vdoing/components/PageNav.vue delete mode 100644 vdoing/components/RightMenu.vue delete mode 100644 vdoing/components/Sidebar.vue delete mode 100644 vdoing/components/SidebarButton.vue delete mode 100644 vdoing/components/SidebarGroup.vue delete mode 100644 vdoing/components/SidebarLink.vue delete mode 100644 vdoing/components/SidebarLinks.vue delete mode 100644 vdoing/config.js delete mode 100644 vdoing/enhanceApp.js delete mode 100644 vdoing/font/font_1678482_4tbhmh589x.styl delete mode 100644 vdoing/font/font_1678482_4tbhmh589x.ttf delete mode 100644 vdoing/font/font_1678482_4tbhmh589x.woff delete mode 100644 vdoing/font/font_1678482_4tbhmh589x.woff2 delete mode 100644 vdoing/global-components/Badge.vue delete mode 100644 vdoing/global-components/CodeBlock.vue delete mode 100644 vdoing/global-components/CodeGroup.vue delete mode 100644 vdoing/global-components/CodeTabs.vue delete mode 100644 vdoing/index.js delete mode 100644 vdoing/layouts/404.vue delete mode 100644 vdoing/layouts/Layout.vue delete mode 100644 vdoing/locales/en.js delete mode 100644 vdoing/locales/index.js delete mode 100644 vdoing/locales/zh.js delete mode 100644 vdoing/mixins/titleBadge.js delete mode 100644 vdoing/node_utils/handlePage.js delete mode 100644 vdoing/node_utils/index.js delete mode 100644 vdoing/node_utils/modules/filename.js delete mode 100644 vdoing/node_utils/modules/fn.js delete mode 100644 vdoing/noopModule.js delete mode 100644 vdoing/package.json delete mode 100644 vdoing/page-locales/index.js delete mode 100644 vdoing/styles/arrow.styl delete mode 100644 vdoing/styles/code-theme.styl delete mode 100644 vdoing/styles/code.styl delete mode 100644 vdoing/styles/config.styl delete mode 100644 vdoing/styles/custom-blocks.styl delete mode 100644 vdoing/styles/footer.styl delete mode 100644 vdoing/styles/header.styl delete mode 100644 vdoing/styles/index.styl delete mode 100644 vdoing/styles/markdown-container.styl delete mode 100644 vdoing/styles/mobile.styl delete mode 100644 vdoing/styles/palette.styl delete mode 100644 vdoing/styles/toast.styl delete mode 100644 vdoing/styles/toc.styl delete mode 100644 vdoing/styles/wrapper.styl delete mode 100644 vdoing/templates/dev.html delete mode 100644 vdoing/templates/ssr.html delete mode 100644 vdoing/types/index.ts delete mode 100644 vdoing/util/header.js delete mode 100644 vdoing/util/index.js delete mode 100644 vdoing/util/init.js create mode 100644 vitepress-migration-plan.md diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 95f08492..897b1de5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,4 +1,4 @@ -# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node +# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code, and run tests across different versions of node # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions name: Build CI @@ -28,87 +28,62 @@ jobs: strategy: matrix: node-version: - - 12.x + - 22.x # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - - name: Install pnpm - run: npm install -g pnpm@6 - - - name: Get pnpm store directory - id: pnpm-cache - run: | - echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" + uses: pnpm/action-setup@v4 - - uses: actions/cache@v3 - name: Setup pnpm cache + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 with: - path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} - key: docs-${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - docs-${{ runner.os }}-pnpm-store- + node-version: ${{ matrix.node-version }} + cache: 'pnpm' - name: Get current branch id: get_branch run: | if [ "$GITHUB_EVENT_NAME" == "push" ]; then - echo "BRANCH=${GITHUB_REF##*/}" >> $GITHUB_ENV + echo "BRANCH=${GITHUB_REF##*/}" >> $GITHUB_ENV elif [ "$GITHUB_EVENT_NAME" == "pull_request" ]; then - echo "BRANCH=$GITHUB_HEAD_REF" >> $GITHUB_ENV + echo "BRANCH=$GITHUB_HEAD_REF" >> $GITHUB_ENV fi - name: Node build shell: bash - env: - NODE_OPTIONS: "--max-old-space-size=4096" run: | - # 清理缓存以释放内存 - pnpm store prune || true - # 安装依赖 - pnpm install gray-matter json2yaml - # 显示内存使用情况 - free -h - # 执行构建步骤 - node --max-old-space-size=4096 addTime.js - node --max-old-space-size=4096 addTime.js ./translate/translated - node --max-old-space-size=4096 copy-file.js ./docs/zh ./translate/translated false + pnpm install --frozen-lockfile + # 英文翻译树:补充中文侧资源后合并进 docs/(英文页位于根路径) + node copy-file.js ./docs/zh ./translate/translated false rm -rf translate/translated/README.md mv translate/translated/* ./docs rm -rf ./docs/map.txt - pnpm install - node --max-old-space-size=4096 downloadFile.js ${{ env.BRANCH }} - node --max-old-space-size=4096 downloadCSV.js ${{ env.BRANCH }} - # 清理内存 - node --max-old-space-size=4096 -e "if (global.gc) global.gc()" + node downloadFile.js ${{ env.BRANCH }} + node downloadCSV.js ${{ env.BRANCH }} + # VitePress 构建(自带死链检测,产物输出 dist/;vdoing 旧语法 + # (code-tabs、相对链接)由 .vitepress/markdown/ 下的适配插件在渲染期转换) + pnpm run build pnpm run build - node --max-old-space-size=4096 copy-file.js + # 资源文件(json/txt/图片等)按去序号路径拷贝到 dist + node copy-file.js - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v3 - name: Log in to ALIYUN Docker Registry if: ${{ github.repository == 'deepflowio/docs'}} - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: "${{ secrets.REGISTRY_ALIYUN_ADDR }}" username: "${{ secrets.REGISTRY_ALIYUN_USER }}" password: "${{ secrets.ALIYUN_DF_CLOUD_REGISTRY_PASSWORD }}" - # - name: debug - # shell: bash - # run: | - # more $GITHUB_EVENT_PATH - - name: set env if: ${{ github.event_name == 'pull_request' && github.repository == 'deepflowio/docs' && github.event.pull_request.base.ref == 'main' }} run: | @@ -125,8 +100,8 @@ jobs: echo "IMAGE_TAG_PREFIX=${{ github.ref_name }}"|sed 's|main|latest|' >> $GITHUB_ENV - name: Build and push docs image - if: ${{ github.repository == 'deepflowio/docs'}} - uses: docker/build-push-action@v2 + if: ${{ github.repository == 'deepflowio/docs'}} + uses: docker/build-push-action@v6 with: context: . file: Dockerfile @@ -152,7 +127,7 @@ jobs: shell: bash if: ${{ github.repository == 'deepflowio/docs'}} run: | - curl -X POST -H "Content-Type: application/json" -d \ + curl -X POST -H "Content-Type: application/json" -d \ '{"msg_type":"interactive","card": { "config": { @@ -191,7 +166,7 @@ jobs: kubectl set image -n deepservice-test deployment deepservice-docs deepservice-docs=${{ secrets.REGISTRY_ALIYUN_ADDR }}/deepservice/${{ env.IMAGE }}:${{ env.IMAGE_TAG_PREFIX }}-${{ github.run_id }}-${{ github.run_attempt }} - name: update - if: ${{ github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main' && github.repository == 'deepflowio/docs' }} + if: ${{ github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main' && github.repository == 'deepflowio/docs' }} shell: bash run: | kubectl set image -n deepservice deployment deepservice-docs deepservice-docs=${{ secrets.REGISTRY_ALIYUN_ADDR }}/deepservice/${{ env.IMAGE }}:${{ env.IMAGE_TAG_PREFIX }}-${{ github.run_id }}-${{ github.run_attempt }} diff --git a/.gitignore b/.gitignore index 8f0b2b6f..1fd114d7 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,12 @@ node_modules #build /dist/ +/dist-doc-only/ + +# CI/本地经 downloadFile.js 下载生成的 Agent 配置页(downloadFile.json) +/docs/07-configuration/ +/docs/zh/07-configuration/ + +# vitepress +.vitepress/cache/ +/cache/ diff --git a/.vitepress/config.mts b/.vitepress/config.mts new file mode 100644 index 00000000..50390410 --- /dev/null +++ b/.vitepress/config.mts @@ -0,0 +1,170 @@ +import { defineConfig } from 'vitepress' +import footnote from 'markdown-it-footnote' +import taskLists from 'markdown-it-task-lists' +import container from 'markdown-it-container' +import { withMermaid } from 'vitepress-plugin-mermaid' +import rewrites from './rewrites.generated.json' +import { sidebar } from './sidebar' +import { legacyCodeTabs } from './markdown/legacy-code-tabs' +import { legacyLinks } from './markdown/legacy-links' + +const GITHUB_DOCS = 'https://github.com/deepflowio/docs' + +// 构建变体(由 package.json 的 dev:doc-only / build:doc-only / +// preview:doc-only 注入 DOCS_MODE=doc-only): +// 默认 —— 供主站嵌入,全站导航栏/页脚始终隐藏(产物 dist); +// doc-only —— 独立文档站,渲染 doc 专属顶栏(DocHeader)、无页脚 +// (产物 dist-doc-only)。差异均由构建期写进 head 的 +// html 类标记驱动,见下方 head 与 theme/custom.css +const DOC_ONLY = process.env.DOCS_MODE === 'doc-only' + +export default withMermaid( + defineConfig({ + lang: 'en-US', + title: 'DeepFlow', + description: + 'DeepFlow leverages eBPF and Wasm to achieve zero-code and full-stack observability, enabling continuous innovation in cloud-native and AI applications.', + + srcDir: 'docs', + // 产物输出到仓库根 dist(默认是 .vitepress/dist),与 Dockerfile 的 COPY ./dist + // 及 df-help 企业版 CI 的 mv ./docs/dist/* 对齐;doc-only 变体单独输出到 + // dist-doc-only,避免两种形态互相覆盖 + outDir: DOC_ONLY ? 'dist-doc-only' : 'dist', + base: '/docs/', + // 主题默认 dark(旧站观感)。'dark' 下 VitePress 优先读 localStorage + // (vitepress-theme-appearance),无记录时回退此默认值,切换时写回; + // 切换入口为侧边栏搜索栏左侧的主题按钮(SidebarActions)。 + // 注意 appearance 是根级配置项,放在 themeConfig 下不会生效(源码读 + // userConfig.appearance) + appearance: 'dark', + cleanUrls: true, + lastUpdated: true, + // 死链豁免:Agent 配置页(/configuration/agent)由 CI 构建前的 + // downloadFile.js 从 deepflow 主仓库下载生成(见 downloadFile.json 与 + // .github/workflows/build.yml),提交态仓库中无此文件,指向它的链接在 + // 本地构建时必然悬空。仅本地(无 CI 环境变量)豁免这两个精确地址; + // CI 下不豁免,下载步骤失效时构建仍以死链失败兜底。本地要构建出该 + // 页面的完整产物,可先手动执行 `node downloadFile.js main` + ignoreDeadLinks: process.env.CI ? [] : ['/configuration/agent', '/zh/configuration/agent'], + sitemap: { hostname: 'https://deepflow.io' }, + + // URL 模型(与迁移前线上一致): + // 英文页(CI 时由 translate/translated 合并进 docs/)位于根路径 clean URL; + // 中文页位于 /zh/ 前缀下。映射由 scripts/gen-rewrites.mjs 生成。 + rewrites: rewrites as Record, + + locales: { + root: { + label: 'English', + lang: 'en-US', + description: + 'DeepFlow leverages eBPF and Wasm to achieve zero-code and full-stack observability, enabling continuous innovation in cloud-native and AI applications.', + themeConfig: { + nav: [ + { text: 'Quick Start', link: '/guide/quick-start/5w-method' }, + { text: 'Features', link: '/features/l7-protocols/overview' }, + { text: 'Release Notes', link: '/release-notes/release-7.2-ce' } + ] + } + }, + zh: { + label: '简体中文', + lang: 'zh-CN', + description: + 'DeepFlow 旨在为复杂的云原生和 AI 应用提供深度可观测性。DeepFlow 基于 eBPF 实现了应用性能指标、分布式追踪、持续性能剖析等观测信号的零侵扰(Zero Code)采集,并结合智能标签(SmartEncoding)技术实现了所有观测信号的全栈(Full Stack)关联和高效存取。', + themeConfig: { + nav: [ + { text: '快速开始', link: '/zh/guide/quick-start/5w-method' }, + { text: '功能特性', link: '/zh/features/l7-protocols/overview' }, + { text: '版本发布', link: '/zh/release-notes/release-7.2-ce' } + ], + outline: { level: [2, 3], label: '本页目录' }, + lastUpdated: { text: '上次更新' }, + docFooter: { prev: '上一篇', next: '下一篇' }, + returnToTopLabel: '回到顶部', + sidebarMenuLabel: '菜单', + darkModeSwitchLabel: '主题', + lightModeSwitchTitle: '切换到浅色模式', + darkModeSwitchTitle: '切换到深色模式', + // 中文内容为源文件,英文为 CI 生成的机器翻译,只开放中文侧的编辑入口 + editLink: { + pattern: `${GITHUB_DOCS}/edit/main/docs/:path`, + text: '编辑此页' + } + } + } + }, + + head: [ + ['link', { rel: 'icon', href: '/img/favicon.ico' }], + ['meta', { name: 'theme-color', content: '#0a72ef' }], + // html 类标记(内联在 head 中于首帧前执行,无闪烁),配合 + // theme/custom.css 控制全站 chrome 的显隐: + // - embedded:隐藏全站导航栏/页脚(SiteNavbar/SiteFooter)并清空其 + // 占位。首行的 iframe 检测保留(参考 eaf3930)——后续若恢复 + // "仅 iframe 嵌入时隐藏"的策略,删掉下方无条件标记即可; + // 目前常规构建也始终隐藏 + // - doc-only:仅 doc-only 变体添加,恢复 doc 专属顶栏(DocHeader) + // 的高度占位,页脚保持隐藏 + [ + 'script', + {}, + [ + "if (window.self !== window.top) document.documentElement.classList.add('embedded');", + "document.documentElement.classList.add('embedded');", + DOC_ONLY ? "document.documentElement.classList.add('doc-only');" : '' + ] + .filter(Boolean) + .join('') + ] + ], + + markdown: { + lineNumbers: true, + config: (md) => { + // vdoing 时代语法的运行时适配(内容文件保持原样,不改写) + md.use(legacyCodeTabs) + md.use(legacyLinks) + md.use(footnote) + md.use(taskLists) + // 自定义容器示例:通过 markdown-it-container 注册(2.0 起可改为声明式 + // markdown.container.customContainers) + md.use(container, 'success', { + render: (tokens, idx) => + tokens[idx].nesting === 1 + ? '

SUCCESS

\n' + : '
\n' + }) + } + }, + + // mermaid 由插件客户端代码动态 import,逃过 Vite 依赖扫描,未预构建时 + // 其内部对 dayjs(UMD)的 ESM 具名导入会在 dev 下报错,强制预构建修复 + vite: { + optimizeDeps: { + include: ['mermaid', 'dayjs'] + } + }, + + themeConfig: { + logo: '/img/logo.png', + socialLinks: [{ icon: 'github', link: 'https://github.com/deepflowio/deepflow' }], + sidebar, + + search: { + provider: 'local', + options: { + // MiniSearch 默认按空白分词,中文整句无法命中,改用 Intl.Segmenter 分词 + miniSearch: { + options: { + tokenize: (text: string) => + [...new Intl.Segmenter('zh-CN', { granularity: 'word' }).segment(text)].map( + (s) => s.segment + ) + } + } + } + } + } + }) +) diff --git a/.vitepress/markdown/legacy-code-tabs.ts b/.vitepress/markdown/legacy-code-tabs.ts new file mode 100644 index 00000000..7007843a --- /dev/null +++ b/.vitepress/markdown/legacy-code-tabs.ts @@ -0,0 +1,60 @@ +// vdoing 时代 code-tabs 语法的运行时适配(内容文件保持原语法,不改写): +// +// ::: code-tabs#shell +// @tab 标题 +// ```bash +// ... +// ``` +// ::: +// +// 转换发生在 markdown-it 解析之后的 token 层: +// 1. @tab 段落被移除,标题写入其后第一个围栏的 info(bash [标题]) +// 2. 容器 token 改名为 container_code-group_*,直接复用 VitePress +// 内置 code-group 的渲染(标签页 UI、active 态、复制按钮全部原生) +import container from 'markdown-it-container' +import type MarkdownIt from 'markdown-it' + +const TAB_RE = /^@tab\s+(.+)$/ + +export function legacyCodeTabs(md: MarkdownIt): void { + md.use(container as any, 'code-tabs', { + validate: (params: string) => /^code-tabs(#[\w-]+)?\s*$/.test(params.trim()) + }) + + md.core.ruler.push('legacy_code_tabs', (state) => { + const tokens = state.tokens + const removals: number[] = [] + + for (let i = 0; i < tokens.length; i++) { + if (tokens[i].type !== 'container_code-tabs_open') continue + + let title: string | null = null + let j = i + 1 + for (; tokens[j].type !== 'container_code-tabs_close'; j++) { + const t = tokens[j] + // @tab 行解析为 paragraph_open + inline + paragraph_close + if (t.type === 'paragraph_open' && tokens[j + 1]?.type === 'inline') { + const m = tokens[j + 1].content.match(TAB_RE) + if (m) { + title = m[1].trim() + removals.push(j, j + 1, j + 2) + j += 2 + continue + } + } + if (t.type === 'fence' && title !== null) { + t.info = `${t.info.trim()} [${title}]` + title = null + } + } + + // 交给 VitePress 内置 code-group 渲染规则接管 + tokens[i].type = 'container_code-group_open' + tokens[j].type = 'container_code-group_close' + + i = j + } + + for (const idx of removals.sort((a, b) => b - a)) tokens.splice(idx, 1) + }) +} diff --git a/.vitepress/markdown/legacy-links.ts b/.vitepress/markdown/legacy-links.ts new file mode 100644 index 00000000..10f77a99 --- /dev/null +++ b/.vitepress/markdown/legacy-links.ts @@ -0,0 +1,142 @@ +// vdoing 时代相对链接的运行时适配(内容文件保持原语法,不改写)。 +// +// 移植自旧版 docs/.vuepress/plugins/auto-complete-url 插件:旧站链接按 +// 「源文件目录(去掉数字前缀)」解析,再映射到目标页 permalink。本插件在 +// 渲染期做同样的解析,并按新的双语 URL 模型输出最终地址: +// - 中文页(docs/zh/**)上的链接 -> /zh/ +// - 英文页(CI 合并后的 docs/<编号目录>/**)上的链接 -> / +// - 目标仅有另一语言版本时自动回退 +// +// 解析失败仅告警并保留原链接,不阻断构建(死链检测仍会兜底)。 +// 另:去掉 vdoing 图片语法 ?align=xxx 查询参数。 +import type MarkdownIt from 'markdown-it' +import { collectMaps } from '../../scripts/lib/corpus.mjs' + +const enMap: Map = new Map() +const zhMap: Map = new Map() +let mapsReady = false + +function ensureMaps() { + if (mapsReady) return + const maps = collectMaps() + for (const [k, v] of maps.enMap) enMap.set(k, v) + for (const [k, v] of maps.zhMap) zhMap.set(k, v) + mapsReady = true +} + +/** 与资源后缀(含 .md/.pcap 等)的链接交给 VitePress 原生处理 */ +const ASSET_RE = /\.[a-z0-9]+([?#]|$)/i + +/** 源文件路径 -> 去 数字前缀 后的目录段(旧插件的解析基准) */ +function strippedDir(relativePath: string): string[] { + return relativePath + .split('/') + .slice(0, -1) + .map((seg) => seg.replace(/^\d+-/, '')) +} + +function resolveTarget( + relativePath: string, + href: string, + indexPage = false +): string | null { + const parts = strippedDir(relativePath) + // README/index 页经 rewrites 折叠后,页面 URL 即其目录本身,目录层级比源 + // 文件少一段;这类页面上的首个 ../ 按旧站 URL 相对语义不应再向上弹一级 + let firstDotDot = indexPage + for (const seg of href.split('/')) { + if (seg === '..') { + if (firstDotDot) { + firstDotDot = false + continue + } + parts.pop() + } else if (seg !== '.' && seg !== '') parts.push(seg) + } + let url = parts.join('/') + if (url.startsWith('zh/')) url = url.slice(3) + if (!url) return null + + const isZhPage = relativePath.startsWith('zh/') + if (isZhPage) { + if (zhMap.has(url)) return '/zh/' + url + if (enMap.has(url)) return '/' + url + } else { + if (enMap.has(url)) return '/' + url + if (zhMap.has(url)) return '/zh/' + url + } + return null +} + +/** + * 绝对链接(/guide/x/、/zh/guide/x)的适配: + * 旧站单树模型下绝对路径通用;新双语模型里中文页位于 /zh/ 前缀下,且尾斜杠 + * 会被 VitePress 按 <目录>/index 页解析(死链)。这里按当前页面语言补前缀, + * 并归一化尾斜杠与 .md 后缀。企业版文档大量使用这种写法。 + */ +function resolveAbsoluteTarget(relativePath: string, href: string): string | null { + let url = href.replace(/^\/+|\/+$/g, '').replace(/\.md$/, '') + if (url.startsWith('zh/')) url = url.slice(3) + if (!url) return null + + const isZhPage = relativePath.startsWith('zh/') + if (isZhPage) { + if (zhMap.has(url)) return '/zh/' + url + if (enMap.has(url)) return '/' + url + } else { + if (enMap.has(url)) return '/' + url + if (zhMap.has(url)) return '/zh/' + url + } + return null +} + +export function legacyLinks(md: MarkdownIt): void { + ensureMaps() + + const prevLink = md.renderer.rules.link_open + md.renderer.rules.link_open = (tokens, idx, options, env, self) => { + const token = tokens[idx] + const i = token.attrIndex('href') + const href = i >= 0 ? token.attrs![i][1] : '' + const relativePath: string = env?.relativePath || '' + + if (relativePath && href && !/^(https?:|mailto:|#|\/\/)/i.test(href)) { + // 先切出路径部分再做资源后缀判断:锚点里常出现 ".raw" 这类 + // 形似扩展名的片段(如 ../configuration/agent/#processors.xxx.raw), + // 用完整 href 判断会把页面链接误当成资源跳过 + const qIdx = href.search(/[?#]/) + const pathPart = qIdx === -1 ? href : href.slice(0, qIdx) + const rest = qIdx === -1 ? '' : href.slice(qIdx) + if (pathPart && !ASSET_RE.test(pathPart)) { + // realPath 为 rewrites 生效前的源文件路径,据此识别 README/index 页 + const realPath: string = env?.realPath || '' + const indexPage = /\/(README|index)\.md$/.test(realPath) + const target = href.startsWith('/') + ? resolveAbsoluteTarget(relativePath, pathPart) + : resolveTarget(relativePath, pathPart, indexPage) + if (target) { + token.attrs![i][1] = target + rest + } else { + console.warn(`[legacy-links] 未解析链接,保留原样: ${relativePath}: ${href}`) + } + } + } + + return prevLink + ? prevLink(tokens, idx, options, env, self) + : self.renderToken(tokens, idx, options) + } + + const prevImage = md.renderer.rules.image + md.renderer.rules.image = (tokens, idx, options, env, self) => { + const token = tokens[idx] + const i = token.attrIndex('src') + if (i >= 0) { + // vdoing 的 ?align=center 图片参数在 VitePress 下会破坏资源解析 + token.attrs![i][1] = token.attrs![i][1].replace(/\?align=[\w-]+/, '') + } + return prevImage + ? prevImage(tokens, idx, options, env, self) + : self.renderToken(tokens, idx, options) + } +} diff --git a/.vitepress/rewrites.generated.json b/.vitepress/rewrites.generated.json new file mode 100644 index 00000000..80355c68 --- /dev/null +++ b/.vitepress/rewrites.generated.json @@ -0,0 +1,361 @@ +{ + "01-about/01-overview.md": "about/overview.md", + "01-about/02-architecture.md": "about/architecture.md", + "01-about/03-features.md": "about/features.md", + "01-about/04-milestone.md": "about/milestone.md", + "01-about/05-editions.md": "about/editions.md", + "01-about/06-users.md": "about/users.md", + "02-ce-install/01-overview.md": "ce-install/overview.md", + "02-ce-install/02-all-in-one.md": "ce-install/all-in-one.md", + "02-ce-install/03-single-k8s.md": "ce-install/single-k8s.md", + "02-ce-install/04-multi-k8s.md": "ce-install/multi-k8s.md", + "02-ce-install/05-legacy-host.md": "ce-install/legacy-host.md", + "02-ce-install/06-cloud-host.md": "ce-install/cloud-host.md", + "02-ce-install/07-managed-k8s.md": "ce-install/managed-k8s.md", + "02-ce-install/08-serverless-pod.md": "ce-install/serverless-pod.md", + "02-ce-install/09-ai-agent.md": "ce-install/ai-agent.md", + "02-ce-install/99-upgrade.md": "ce-install/upgrade.md", + "03-ee-install/01-saas/01-cloud.md": "ee-install/saas/cloud.md", + "03-ee-install/01-saas/02-k8s.md": "ee-install/saas/k8s.md", + "03-ee-install/01-saas/03-cloud-host.md": "ee-install/saas/cloud-host.md", + "03-ee-install/01-saas/04-check.md": "ee-install/saas/check.md", + "03-ee-install/02-on-prem/01-k8s.md": "ee-install/on-prem/k8s.md", + "03-ee-install/02-on-prem/02-cloud-host.md": "ee-install/on-prem/cloud-host.md", + "03-ee-install/02-on-prem/03-legacy-host.md": "ee-install/on-prem/legacy-host.md", + "04-best-practice/01-agent-advanced-config.md": "best-practice/agent-advanced-config.md", + "04-best-practice/02-server-advanced-config.md": "best-practice/server-advanced-config.md", + "04-best-practice/03-special-environment-deployment.md": "best-practice/special-environment-deployment.md", + "04-best-practice/04-reduce-storage-overhead.md": "best-practice/reduce-storage-overhead.md", + "04-best-practice/05-agent-performance-tuning.md": "best-practice/agent-performance-tuning.md", + "04-best-practice/06-production-deployment.md": "best-practice/production-deployment.md", + "04-best-practice/07-storage-engine-use-byconity.md": "best-practice/storage-engine-use-byconity.md", + "05-features/01-l7-protocols/01-overview.md": "features/l7-protocols/overview.md", + "05-features/01-l7-protocols/02-http.md": "features/l7-protocols/http.md", + "05-features/01-l7-protocols/03-rpc.md": "features/l7-protocols/rpc.md", + "05-features/01-l7-protocols/04-sql.md": "features/l7-protocols/sql.md", + "05-features/01-l7-protocols/05-nosql.md": "features/l7-protocols/nosql.md", + "05-features/01-l7-protocols/06-mq.md": "features/l7-protocols/mq.md", + "05-features/01-l7-protocols/07-network.md": "features/l7-protocols/network.md", + "05-features/01-l7-protocols/08-otel.md": "features/l7-protocols/otel.md", + "05-features/01-l7-protocols/09-skywalking.md": "features/l7-protocols/skywalking.md", + "05-features/02-universal-map/01-auto-metrics.md": "features/universal-map/auto-metrics.md", + "05-features/02-universal-map/02-application-metrics.md": "features/universal-map/application-metrics.md", + "05-features/02-universal-map/03-request-log.md": "features/universal-map/request-log.md", + "05-features/02-universal-map/04-network-metrics.md": "features/universal-map/network-metrics.md", + "05-features/02-universal-map/05-flow-log.md": "features/universal-map/flow-log.md", + "05-features/02-universal-map/07-metrics-and-operators.md": "features/universal-map/metrics-and-operators.md", + "05-features/03-distributed-tracing/01-auto-tracing.md": "features/distributed-tracing/auto-tracing.md", + "05-features/03-distributed-tracing/02-spring-boot-demo.md": "features/distributed-tracing/spring-boot-demo.md", + "05-features/03-distributed-tracing/03-istio-bookinfo-demo.md": "features/distributed-tracing/istio-bookinfo-demo.md", + "05-features/04-continuous-profiling/01-auto-profiling.md": "features/continuous-profiling/auto-profiling.md", + "05-features/04-continuous-profiling/02-configuration.md": "features/continuous-profiling/configuration.md", + "05-features/04-continuous-profiling/03-data.md": "features/continuous-profiling/data.md", + "05-features/05-auto-tagging/01-eliminate-data-silos.md": "features/auto-tagging/eliminate-data-silos.md", + "05-features/05-auto-tagging/02-smart-encoding.md": "features/auto-tagging/smart-encoding.md", + "05-features/05-auto-tagging/03-meta-tags.md": "features/auto-tagging/meta-tags.md", + "05-features/05-auto-tagging/04-custom-tags.md": "features/auto-tagging/custom-tags.md", + "05-features/05-auto-tagging/05-process-tags.md": "features/auto-tagging/process-tags.md", + "05-features/05-auto-tagging/06-additional-cloud-tags.md": "features/auto-tagging/additional-cloud-tags.md", + "05-features/05-auto-tagging/07-cmdb-tags.md": "features/auto-tagging/cmdb-tags.md", + "05-features/05-auto-tagging/08-k8s-crd.md": "features/auto-tagging/k8s-crd.md", + "06-guide/01-quick-start/01-5w-method.md": "guide/quick-start/5w-method.md", + "06-guide/02-ee-tenant/01-query/01-overview.md": "guide/ee-tenant/query/overview.md", + "06-guide/02-ee-tenant/01-query/02-service-search.md": "guide/ee-tenant/query/service-search.md", + "06-guide/02-ee-tenant/01-query/03-path-search.md": "guide/ee-tenant/query/path-search.md", + "06-guide/02-ee-tenant/01-query/04-log-search.md": "guide/ee-tenant/query/log-search.md", + "06-guide/02-ee-tenant/01-query/05-metric-search.md": "guide/ee-tenant/query/metric-search.md", + "06-guide/02-ee-tenant/01-query/06-history.md": "guide/ee-tenant/query/history.md", + "06-guide/02-ee-tenant/01-query/07-left-quick-filter.md": "guide/ee-tenant/query/left-quick-filter.md", + "06-guide/02-ee-tenant/02-dashboard/01-overview.md": "guide/ee-tenant/dashboard/overview.md", + "06-guide/02-ee-tenant/02-dashboard/02-list.md": "guide/ee-tenant/dashboard/list.md", + "06-guide/02-ee-tenant/02-dashboard/03-use.md": "guide/ee-tenant/dashboard/use.md", + "06-guide/02-ee-tenant/02-dashboard/04-add-panel.md": "guide/ee-tenant/dashboard/add-panel.md", + "06-guide/02-ee-tenant/02-dashboard/05-variable-template.md": "guide/ee-tenant/dashboard/variable-template.md", + "06-guide/02-ee-tenant/02-dashboard/06-right-slide-box.md": "guide/ee-tenant/dashboard/right-slide-box.md", + "06-guide/02-ee-tenant/02-dashboard/99-panel/01-overview.md": "guide/ee-tenant/dashboard/panel/overview.md", + "06-guide/02-ee-tenant/02-dashboard/99-panel/02-topology.md": "guide/ee-tenant/dashboard/panel/topology.md", + "06-guide/02-ee-tenant/02-dashboard/99-panel/03-flame.md": "guide/ee-tenant/dashboard/panel/flame.md", + "06-guide/02-ee-tenant/02-dashboard/99-panel/04-line.md": "guide/ee-tenant/dashboard/panel/line.md", + "06-guide/02-ee-tenant/02-dashboard/99-panel/05-bar.md": "guide/ee-tenant/dashboard/panel/bar.md", + "06-guide/02-ee-tenant/02-dashboard/99-panel/06-pie.md": "guide/ee-tenant/dashboard/panel/pie.md", + "06-guide/02-ee-tenant/02-dashboard/99-panel/07-histogram.md": "guide/ee-tenant/dashboard/panel/histogram.md", + "06-guide/02-ee-tenant/02-dashboard/99-panel/08-table.md": "guide/ee-tenant/dashboard/panel/table.md", + "06-guide/02-ee-tenant/02-dashboard/99-panel/09-stat.md": "guide/ee-tenant/dashboard/panel/stat.md", + "06-guide/02-ee-tenant/02-dashboard/99-panel/10-text.md": "guide/ee-tenant/dashboard/panel/text.md", + "06-guide/02-ee-tenant/03-universal-map/01-overview.md": "guide/ee-tenant/universal-map/overview.md", + "06-guide/02-ee-tenant/03-universal-map/02-business-def.md": "guide/ee-tenant/universal-map/business-def.md", + "06-guide/02-ee-tenant/03-universal-map/03-service-list.md": "guide/ee-tenant/universal-map/service-list.md", + "06-guide/02-ee-tenant/03-universal-map/04-service-map.md": "guide/ee-tenant/universal-map/service-map.md", + "06-guide/02-ee-tenant/04-tracing/01-overview.md": "guide/ee-tenant/tracing/overview.md", + "06-guide/02-ee-tenant/04-tracing/02-service-list.md": "guide/ee-tenant/tracing/service-list.md", + "06-guide/02-ee-tenant/04-tracing/03-service-statistics.md": "guide/ee-tenant/tracing/service-statistics.md", + "06-guide/02-ee-tenant/04-tracing/04-path-topology.md": "guide/ee-tenant/tracing/path-topology.md", + "06-guide/02-ee-tenant/04-tracing/05-call-log.md": "guide/ee-tenant/tracing/call-log.md", + "06-guide/02-ee-tenant/04-tracing/06-call-chain-tracing.md": "guide/ee-tenant/tracing/call-chain-tracing.md", + "06-guide/02-ee-tenant/04-tracing/07-file-reading-and-writing.md": "guide/ee-tenant/tracing/file-reading-and-writing.md", + "06-guide/02-ee-tenant/04-tracing/08-right-sliding-box.md": "guide/ee-tenant/tracing/right-sliding-box.md", + "06-guide/02-ee-tenant/05-profiling/01-continue-profile.md": "guide/ee-tenant/profiling/continue-profile.md", + "06-guide/02-ee-tenant/06-network/01-overview.md": "guide/ee-tenant/network/overview.md", + "06-guide/02-ee-tenant/06-network/02-service-statistics.md": "guide/ee-tenant/network/service-statistics.md", + "06-guide/02-ee-tenant/06-network/03-network-path.md": "guide/ee-tenant/network/network-path.md", + "06-guide/02-ee-tenant/06-network/04-network-map.md": "guide/ee-tenant/network/network-map.md", + "06-guide/02-ee-tenant/06-network/05-flow-log.md": "guide/ee-tenant/network/flow-log.md", + "06-guide/02-ee-tenant/06-network/06-NAT-traversal.md": "guide/ee-tenant/network/NAT-traversal.md", + "06-guide/02-ee-tenant/06-network/07-resource-inventory.md": "guide/ee-tenant/network/resource-inventory.md", + "06-guide/02-ee-tenant/06-network/08-pacp-strategy.md": "guide/ee-tenant/network/pacp-strategy.md", + "06-guide/02-ee-tenant/06-network/09-pcap-download.md": "guide/ee-tenant/network/pcap-download.md", + "06-guide/02-ee-tenant/07-metrics/01-overview.md": "guide/ee-tenant/metrics/overview.md", + "06-guide/02-ee-tenant/07-metrics/02-host.md": "guide/ee-tenant/metrics/host.md", + "06-guide/02-ee-tenant/07-metrics/03-container.md": "guide/ee-tenant/metrics/container.md", + "06-guide/02-ee-tenant/07-metrics/04-metrics-viewing.md": "guide/ee-tenant/metrics/metrics-viewing.md", + "06-guide/02-ee-tenant/07-metrics/05-metric-summary.md": "guide/ee-tenant/metrics/metric-summary.md", + "06-guide/02-ee-tenant/07-metrics/06-metrics-template.md": "guide/ee-tenant/metrics/metrics-template.md", + "06-guide/02-ee-tenant/08-log/01-log.md": "guide/ee-tenant/log/log.md", + "06-guide/02-ee-tenant/09-alert/01-overview.md": "guide/ee-tenant/alert/overview.md", + "06-guide/02-ee-tenant/09-alert/02-alert-policy.md": "guide/ee-tenant/alert/alert-policy.md", + "06-guide/02-ee-tenant/09-alert/03-push-endpoint.md": "guide/ee-tenant/alert/push-endpoint.md", + "06-guide/02-ee-tenant/09-alert/04-alert-event.md": "guide/ee-tenant/alert/alert-event.md", + "06-guide/02-ee-tenant/10-report/01-report.md": "guide/ee-tenant/report/report.md", + "06-guide/02-ee-tenant/11-resources/01-overview.md": "guide/ee-tenant/resources/overview.md", + "06-guide/02-ee-tenant/11-resources/02-summary.md": "guide/ee-tenant/resources/summary.md", + "06-guide/02-ee-tenant/11-resources/03-resource-changes.md": "guide/ee-tenant/resources/resource-changes.md", + "06-guide/02-ee-tenant/11-resources/04-resource-pool.md": "guide/ee-tenant/resources/resource-pool.md", + "06-guide/02-ee-tenant/11-resources/05-computing-resources.md": "guide/ee-tenant/resources/computing-resources.md", + "06-guide/02-ee-tenant/11-resources/06-network-resources.md": "guide/ee-tenant/resources/network-resources.md", + "06-guide/02-ee-tenant/11-resources/07-network-services.md": "guide/ee-tenant/resources/network-services.md", + "06-guide/02-ee-tenant/11-resources/08-storage-services.md": "guide/ee-tenant/resources/storage-services.md", + "06-guide/02-ee-tenant/11-resources/09-container-resources.md": "guide/ee-tenant/resources/container-resources.md", + "06-guide/02-ee-tenant/11-resources/10-process-resources.md": "guide/ee-tenant/resources/process-resources.md", + "06-guide/02-ee-tenant/11-resources/11-other-resources.md": "guide/ee-tenant/resources/other-resources.md", + "06-guide/02-ee-tenant/12-system/01-overview.md": "guide/ee-tenant/system/overview.md", + "06-guide/02-ee-tenant/12-system/02-agent.md": "guide/ee-tenant/system/agent.md", + "06-guide/02-ee-tenant/12-system/03-data-node.md": "guide/ee-tenant/system/data-node.md", + "06-guide/02-ee-tenant/12-system/04-account-management.md": "guide/ee-tenant/system/account-management.md", + "06-guide/02-ee-tenant/12-system/05-operation-log.md": "guide/ee-tenant/system/operation-log.md", + "06-guide/02-ee-tenant/13-configuration/01-settings.md": "guide/ee-tenant/configuration/settings.md", + "08-integration/01-process/01-wasm-plugin.md": "integration/process/wasm-plugin.md", + "08-integration/02-input/01-metrics/01-metrics-auto-tagging.md": "integration/input/metrics/metrics-auto-tagging.md", + "08-integration/02-input/01-metrics/02-prometheus.md": "integration/input/metrics/prometheus.md", + "08-integration/02-input/01-metrics/03-telegraf.md": "integration/input/metrics/telegraf.md", + "08-integration/02-input/01-metrics/04-grafana-agent.md": "integration/input/metrics/grafana-agent.md", + "08-integration/02-input/02-tracing/01-full-stack-distributed-tracing.md": "integration/input/tracing/full-stack-distributed-tracing.md", + "08-integration/02-input/02-tracing/02-traccing-auto-tagging.md": "integration/input/tracing/traccing-auto-tagging.md", + "08-integration/02-input/02-tracing/03-apm-trace-api.md": "integration/input/tracing/apm-trace-api.md", + "08-integration/02-input/02-tracing/04-opentelemetry.md": "integration/input/tracing/opentelemetry.md", + "08-integration/02-input/02-tracing/05-skywalking.md": "integration/input/tracing/skywalking.md", + "08-integration/02-input/03-profile/01-profile-auto-tagging.md": "integration/input/profile/profile-auto-tagging.md", + "08-integration/02-input/03-profile/02-profile.md": "integration/input/profile/profile.md", + "08-integration/02-input/04-log/01-log-auto-tagging.md": "integration/input/log/log-auto-tagging.md", + "08-integration/02-input/04-log/02-vector.md": "integration/input/log/vector.md", + "08-integration/03-output/01-query/01-sql.md": "integration/output/query/sql.md", + "08-integration/03-output/01-query/02-promql.md": "integration/output/query/promql.md", + "08-integration/03-output/01-query/03-trace-completion.md": "integration/output/query/trace-completion.md", + "08-integration/03-output/01-query/04-mcp-server.md": "integration/output/query/mcp-server.md", + "08-integration/03-output/02-export/01-opentelemetry-exporter.md": "integration/output/export/opentelemetry-exporter.md", + "08-integration/03-output/02-export/02-prom-remote-write.md": "integration/output/export/prometheus-remote-write.md", + "08-integration/03-output/02-export/03-kafka-exporter.md": "integration/output/export/kafka-exporter.md", + "08-integration/03-output/02-export/04-exporter-config.md": "integration/output/export/exporter-config.md", + "09-diagnose/01-FAQ.md": "diagnose/FAQ.md", + "09-diagnose/02-grafana.md": "diagnose/grafana.md", + "09-diagnose/03-deepflow-agent.md": "diagnose/agent.md", + "09-diagnose/04-deepflow-server.md": "diagnose/how-to-profile-deepflow-server-ingester.md", + "10-release-notes/01-versioning.md": "release-notes/versioning.md", + "10-release-notes/02-release-timeline.md": "release-notes/release-timeline.md", + "10-release-notes/03-ce-7.1-release.md": "release-notes/release-7.1-ce.md", + "10-release-notes/04-ee-7.1-release.md": "release-notes/release-7.1-ee.md", + "10-release-notes/05-ce-7.0-release.md": "release-notes/release-7.0-ce.md", + "10-release-notes/06-ee-7.0-release.md": "release-notes/release-7.0-ee.md", + "10-release-notes/07-ce-6.6-release.md": "release-notes/release-6.6-ce.md", + "10-release-notes/08-ee-6.6-release.md": "release-notes/release-6.6-ee.md", + "10-release-notes/09-ce-6.5-release.md": "release-notes/release-6.5-ce.md", + "10-release-notes/10-ee-6.5-release.md": "release-notes/release-6.5-ee.md", + "10-release-notes/11-ce-6.4-release.md": "release-notes/release-6.4-ce.md", + "10-release-notes/12-ee-6.4-release.md": "release-notes/release-6.4-ee.md", + "10-release-notes/13-ce-6.3-release.md": "release-notes/release-6.3-ce.md", + "10-release-notes/14-ee-6.3-release.md": "release-notes/release-6.3-ee.md", + "10-release-notes/15-ce-6.2-release.md": "release-notes/release-6.2-ce.md", + "10-release-notes/16-ee-6.2-release.md": "release-notes/release-6.2-ee.md", + "10-release-notes/17-ce-6.1-release.md": "release-notes/release-6.1-ce.md", + "10-release-notes/18-ee-6.1-release.md": "release-notes/release-6.1-ee.md", + "07-configuration/01-agent.md": "configuration/agent.md", + "zh/01-about/01-overview.md": "zh/about/overview.md", + "zh/01-about/02-architecture.md": "zh/about/architecture.md", + "zh/01-about/03-features.md": "zh/about/features.md", + "zh/01-about/04-milestone.md": "zh/about/milestone.md", + "zh/01-about/05-editions.md": "zh/about/editions.md", + "zh/01-about/06-users.md": "zh/about/users.md", + "zh/02-ce-install/01-overview.md": "zh/ce-install/overview.md", + "zh/02-ce-install/02-all-in-one.md": "zh/ce-install/all-in-one.md", + "zh/02-ce-install/03-single-k8s.md": "zh/ce-install/single-k8s.md", + "zh/02-ce-install/04-multi-k8s.md": "zh/ce-install/multi-k8s.md", + "zh/02-ce-install/05-legacy-host.md": "zh/ce-install/legacy-host.md", + "zh/02-ce-install/06-cloud-host.md": "zh/ce-install/cloud-host.md", + "zh/02-ce-install/07-managed-k8s.md": "zh/ce-install/managed-k8s.md", + "zh/02-ce-install/08-serverless-pod.md": "zh/ce-install/serverless-pod.md", + "zh/02-ce-install/09-ai-agent.md": "zh/ce-install/ai-agent.md", + "zh/02-ce-install/99-upgrade.md": "zh/ce-install/upgrade.md", + "zh/03-ee-install/01-saas/01-cloud.md": "zh/ee-install/saas/cloud.md", + "zh/03-ee-install/01-saas/02-k8s.md": "zh/ee-install/saas/k8s.md", + "zh/03-ee-install/01-saas/03-cloud-host.md": "zh/ee-install/saas/cloud-host.md", + "zh/03-ee-install/01-saas/04-check.md": "zh/ee-install/saas/check.md", + "zh/03-ee-install/02-on-prem/01-k8s.md": "zh/ee-install/on-prem/k8s.md", + "zh/03-ee-install/02-on-prem/02-cloud-host.md": "zh/ee-install/on-prem/cloud-host.md", + "zh/03-ee-install/02-on-prem/03-legacy-host.md": "zh/ee-install/on-prem/legacy-host.md", + "zh/04-best-practice/01-agent-advanced-config.md": "zh/best-practice/agent-advanced-config.md", + "zh/04-best-practice/02-server-advanced-config.md": "zh/best-practice/server-advanced-config.md", + "zh/04-best-practice/03-special-environment-deployment.md": "zh/best-practice/special-environment-deployment.md", + "zh/04-best-practice/04-reduce-storage-overhead.md": "zh/best-practice/reduce-storage-overhead.md", + "zh/04-best-practice/05-agent-performance-tuning.md": "zh/best-practice/agent-performance-tuning.md", + "zh/04-best-practice/06-production-deployment.md": "zh/best-practice/production-deployment.md", + "zh/04-best-practice/07-storage-engine-use-byconity.md": "zh/best-practice/storage-engine-use-byconity.md", + "zh/05-features/01-l7-protocols/01-overview.md": "zh/features/l7-protocols/overview.md", + "zh/05-features/01-l7-protocols/02-http.md": "zh/features/l7-protocols/http.md", + "zh/05-features/01-l7-protocols/03-rpc.md": "zh/features/l7-protocols/rpc.md", + "zh/05-features/01-l7-protocols/04-sql.md": "zh/features/l7-protocols/sql.md", + "zh/05-features/01-l7-protocols/05-nosql.md": "zh/features/l7-protocols/nosql.md", + "zh/05-features/01-l7-protocols/06-mq.md": "zh/features/l7-protocols/mq.md", + "zh/05-features/01-l7-protocols/07-network.md": "zh/features/l7-protocols/network.md", + "zh/05-features/01-l7-protocols/08-otel.md": "zh/features/l7-protocols/otel.md", + "zh/05-features/01-l7-protocols/09-skywalking.md": "zh/features/l7-protocols/skywalking.md", + "zh/05-features/02-universal-map/01-auto-metrics.md": "zh/features/universal-map/auto-metrics.md", + "zh/05-features/02-universal-map/02-application-metrics.md": "zh/features/universal-map/application-metrics.md", + "zh/05-features/02-universal-map/03-request-log.md": "zh/features/universal-map/request-log.md", + "zh/05-features/02-universal-map/04-network-metrics.md": "zh/features/universal-map/network-metrics.md", + "zh/05-features/02-universal-map/05-flow-log.md": "zh/features/universal-map/flow-log.md", + "zh/05-features/02-universal-map/07-metrics-and-operators.md": "zh/features/universal-map/metrics-and-operators.md", + "zh/05-features/03-distributed-tracing/01-auto-tracing.md": "zh/features/distributed-tracing/auto-tracing.md", + "zh/05-features/03-distributed-tracing/02-spring-boot-demo.md": "zh/features/distributed-tracing/spring-boot-demo.md", + "zh/05-features/03-distributed-tracing/03-istio-bookinfo-demo.md": "zh/features/distributed-tracing/istio-bookinfo-demo.md", + "zh/05-features/04-continuous-profiling/01-auto-profiling.md": "zh/features/continuous-profiling/auto-profiling.md", + "zh/05-features/04-continuous-profiling/02-configuration.md": "zh/features/continuous-profiling/configuration.md", + "zh/05-features/04-continuous-profiling/03-data.md": "zh/features/continuous-profiling/data.md", + "zh/05-features/05-auto-tagging/01-eliminate-data-silos.md": "zh/features/auto-tagging/eliminate-data-silos.md", + "zh/05-features/05-auto-tagging/02-smart-encoding.md": "zh/features/auto-tagging/smart-encoding.md", + "zh/05-features/05-auto-tagging/03-meta-tags.md": "zh/features/auto-tagging/meta-tags.md", + "zh/05-features/05-auto-tagging/04-custom-tags.md": "zh/features/auto-tagging/custom-tags.md", + "zh/05-features/05-auto-tagging/05-process-tags.md": "zh/features/auto-tagging/process-tags.md", + "zh/05-features/05-auto-tagging/06-additional-cloud-tags.md": "zh/features/auto-tagging/additional-cloud-tags.md", + "zh/05-features/05-auto-tagging/07-cmdb-tags.md": "zh/features/auto-tagging/cmdb-tags.md", + "zh/05-features/05-auto-tagging/08-k8s-crd.md": "zh/features/auto-tagging/k8s-crd.md", + "zh/06-guide/01-quick-start/01-5w-method.md": "zh/guide/quick-start/5w-method.md", + "zh/06-guide/02-ee-tenant/01-query/01-overview.md": "zh/guide/ee-tenant/query/overview.md", + "zh/06-guide/02-ee-tenant/01-query/02-service-search.md": "zh/guide/ee-tenant/query/service-search.md", + "zh/06-guide/02-ee-tenant/01-query/03-path-search.md": "zh/guide/ee-tenant/query/path-search.md", + "zh/06-guide/02-ee-tenant/01-query/04-log-search.md": "zh/guide/ee-tenant/query/log-search.md", + "zh/06-guide/02-ee-tenant/01-query/05-metric-search.md": "zh/guide/ee-tenant/query/metric-search.md", + "zh/06-guide/02-ee-tenant/01-query/06-history.md": "zh/guide/ee-tenant/query/history.md", + "zh/06-guide/02-ee-tenant/01-query/07-left-quick-filter.md": "zh/guide/ee-tenant/query/left-quick-filter.md", + "zh/06-guide/02-ee-tenant/02-dashboard/01-overview.md": "zh/guide/ee-tenant/dashboard/overview.md", + "zh/06-guide/02-ee-tenant/02-dashboard/02-list.md": "zh/guide/ee-tenant/dashboard/list.md", + "zh/06-guide/02-ee-tenant/02-dashboard/03-use.md": "zh/guide/ee-tenant/dashboard/use.md", + "zh/06-guide/02-ee-tenant/02-dashboard/04-add-panel.md": "zh/guide/ee-tenant/dashboard/add-panel.md", + "zh/06-guide/02-ee-tenant/02-dashboard/05-variable-template.md": "zh/guide/ee-tenant/dashboard/variable-template.md", + "zh/06-guide/02-ee-tenant/02-dashboard/06-right-slide-box.md": "zh/guide/ee-tenant/dashboard/right-slide-box.md", + "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/01-overview.md": "zh/guide/ee-tenant/dashboard/panel/overview.md", + "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/02-topology.md": "zh/guide/ee-tenant/dashboard/panel/topology.md", + "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/03-flame.md": "zh/guide/ee-tenant/dashboard/panel/flame.md", + "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/04-line.md": "zh/guide/ee-tenant/dashboard/panel/line.md", + "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/05-bar.md": "zh/guide/ee-tenant/dashboard/panel/bar.md", + "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/06-pie.md": "zh/guide/ee-tenant/dashboard/panel/pie.md", + "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/07-histogram.md": "zh/guide/ee-tenant/dashboard/panel/histogram.md", + "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/08-table.md": "zh/guide/ee-tenant/dashboard/panel/table.md", + "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/09-stat.md": "zh/guide/ee-tenant/dashboard/panel/stat.md", + "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/10-text.md": "zh/guide/ee-tenant/dashboard/panel/text.md", + "zh/06-guide/02-ee-tenant/03-universal-map/01-overview.md": "zh/guide/ee-tenant/universal-map/overview.md", + "zh/06-guide/02-ee-tenant/03-universal-map/02-business-def.md": "zh/guide/ee-tenant/universal-map/business-def.md", + "zh/06-guide/02-ee-tenant/03-universal-map/03-service-list.md": "zh/guide/ee-tenant/universal-map/service-list.md", + "zh/06-guide/02-ee-tenant/03-universal-map/04-service-map.md": "zh/guide/ee-tenant/universal-map/service-map.md", + "zh/06-guide/02-ee-tenant/04-tracing/01-overview.md": "zh/guide/ee-tenant/tracing/overview.md", + "zh/06-guide/02-ee-tenant/04-tracing/02-service-list.md": "zh/guide/ee-tenant/tracing/service-list.md", + "zh/06-guide/02-ee-tenant/04-tracing/03-service-statistics.md": "zh/guide/ee-tenant/tracing/service-statistics.md", + "zh/06-guide/02-ee-tenant/04-tracing/04-path-topology.md": "zh/guide/ee-tenant/tracing/path-topology.md", + "zh/06-guide/02-ee-tenant/04-tracing/05-call-log.md": "zh/guide/ee-tenant/tracing/call-log.md", + "zh/06-guide/02-ee-tenant/04-tracing/06-call-chain-tracing.md": "zh/guide/ee-tenant/tracing/call-chain-tracing.md", + "zh/06-guide/02-ee-tenant/04-tracing/07-file-reading-and-writing.md": "zh/guide/ee-tenant/tracing/file-reading-and-writing.md", + "zh/06-guide/02-ee-tenant/04-tracing/08-right-sliding-box.md": "zh/guide/ee-tenant/tracing/right-sliding-box.md", + "zh/06-guide/02-ee-tenant/05-profiling/01-continue-profile.md": "zh/guide/ee-tenant/profiling/continue-profile.md", + "zh/06-guide/02-ee-tenant/06-network/01-overview.md": "zh/guide/ee-tenant/network/overview.md", + "zh/06-guide/02-ee-tenant/06-network/02-service-statistics.md": "zh/guide/ee-tenant/network/service-statistics.md", + "zh/06-guide/02-ee-tenant/06-network/03-network-path.md": "zh/guide/ee-tenant/network/network-path.md", + "zh/06-guide/02-ee-tenant/06-network/04-network-map.md": "zh/guide/ee-tenant/network/network-map.md", + "zh/06-guide/02-ee-tenant/06-network/05-flow-log.md": "zh/guide/ee-tenant/network/flow-log.md", + "zh/06-guide/02-ee-tenant/06-network/06-NAT-traversal.md": "zh/guide/ee-tenant/network/NAT-traversal.md", + "zh/06-guide/02-ee-tenant/06-network/07-resource-inventory.md": "zh/guide/ee-tenant/network/resource-inventory.md", + "zh/06-guide/02-ee-tenant/06-network/08-pacp-strategy.md": "zh/guide/ee-tenant/network/pacp-strategy.md", + "zh/06-guide/02-ee-tenant/06-network/09-pcap-download.md": "zh/guide/ee-tenant/network/pcap-download.md", + "zh/06-guide/02-ee-tenant/07-metrics/01-overview.md": "zh/guide/ee-tenant/metrics/overview.md", + "zh/06-guide/02-ee-tenant/07-metrics/02-host.md": "zh/guide/ee-tenant/metrics/host.md", + "zh/06-guide/02-ee-tenant/07-metrics/03-container.md": "zh/guide/ee-tenant/metrics/container.md", + "zh/06-guide/02-ee-tenant/07-metrics/04-metrics-viewing.md": "zh/guide/ee-tenant/metrics/metrics-viewing.md", + "zh/06-guide/02-ee-tenant/07-metrics/05-metric-summary.md": "zh/guide/ee-tenant/metrics/metric-summary.md", + "zh/06-guide/02-ee-tenant/07-metrics/06-metrics-template.md": "zh/guide/ee-tenant/metrics/metrics-template.md", + "zh/06-guide/02-ee-tenant/08-log/01-log.md": "zh/guide/ee-tenant/log/log.md", + "zh/06-guide/02-ee-tenant/09-alert/01-overview.md": "zh/guide/ee-tenant/alert/overview.md", + "zh/06-guide/02-ee-tenant/09-alert/02-alert-policy.md": "zh/guide/ee-tenant/alert/alert-policy.md", + "zh/06-guide/02-ee-tenant/09-alert/03-push-endpoint.md": "zh/guide/ee-tenant/alert/push-endpoint.md", + "zh/06-guide/02-ee-tenant/09-alert/04-alert-event.md": "zh/guide/ee-tenant/alert/alert-event.md", + "zh/06-guide/02-ee-tenant/10-report/01-report.md": "zh/guide/ee-tenant/report/report.md", + "zh/06-guide/02-ee-tenant/11-resources/01-overview.md": "zh/guide/ee-tenant/resources/overview.md", + "zh/06-guide/02-ee-tenant/11-resources/02-summary.md": "zh/guide/ee-tenant/resources/summary.md", + "zh/06-guide/02-ee-tenant/11-resources/03-resource-changes.md": "zh/guide/ee-tenant/resources/resource-changes.md", + "zh/06-guide/02-ee-tenant/11-resources/04-resource-pool.md": "zh/guide/ee-tenant/resources/resource-pool.md", + "zh/06-guide/02-ee-tenant/11-resources/05-computing-resources.md": "zh/guide/ee-tenant/resources/computing-resources.md", + "zh/06-guide/02-ee-tenant/11-resources/06-network-resources.md": "zh/guide/ee-tenant/resources/network-resources.md", + "zh/06-guide/02-ee-tenant/11-resources/07-network-services.md": "zh/guide/ee-tenant/resources/network-services.md", + "zh/06-guide/02-ee-tenant/11-resources/08-storage-services.md": "zh/guide/ee-tenant/resources/storage-services.md", + "zh/06-guide/02-ee-tenant/11-resources/09-container-resources.md": "zh/guide/ee-tenant/resources/container-resources.md", + "zh/06-guide/02-ee-tenant/11-resources/10-process-resources.md": "zh/guide/ee-tenant/resources/process-resources.md", + "zh/06-guide/02-ee-tenant/11-resources/11-other-resources.md": "zh/guide/ee-tenant/resources/other-resources.md", + "zh/06-guide/02-ee-tenant/12-system/01-overview.md": "zh/guide/ee-tenant/system/overview.md", + "zh/06-guide/02-ee-tenant/12-system/02-agent.md": "zh/guide/ee-tenant/system/agent.md", + "zh/06-guide/02-ee-tenant/12-system/03-data-node.md": "zh/guide/ee-tenant/system/data-node.md", + "zh/06-guide/02-ee-tenant/12-system/04-account-management.md": "zh/guide/ee-tenant/system/account-management.md", + "zh/06-guide/02-ee-tenant/12-system/05-operation-log.md": "zh/guide/ee-tenant/system/operation-log.md", + "zh/06-guide/02-ee-tenant/13-configuration/01-settings.md": "zh/guide/ee-tenant/configuration/settings.md", + "zh/08-integration/01-process/01-wasm-plugin.md": "zh/integration/process/wasm-plugin.md", + "zh/08-integration/02-input/01-metrics/01-metrics-auto-tagging.md": "zh/integration/input/metrics/metrics-auto-tagging.md", + "zh/08-integration/02-input/01-metrics/02-prometheus.md": "zh/integration/input/metrics/prometheus.md", + "zh/08-integration/02-input/01-metrics/03-telegraf.md": "zh/integration/input/metrics/telegraf.md", + "zh/08-integration/02-input/01-metrics/04-grafana-agent.md": "zh/integration/input/metrics/grafana-agent.md", + "zh/08-integration/02-input/02-tracing/01-full-stack-distributed-tracing.md": "zh/integration/input/tracing/full-stack-distributed-tracing.md", + "zh/08-integration/02-input/02-tracing/02-traccing-auto-tagging.md": "zh/integration/input/tracing/traccing-auto-tagging.md", + "zh/08-integration/02-input/02-tracing/03-apm-trace-api.md": "zh/integration/input/tracing/apm-trace-api.md", + "zh/08-integration/02-input/02-tracing/04-opentelemetry.md": "zh/integration/input/tracing/opentelemetry.md", + "zh/08-integration/02-input/02-tracing/05-skywalking.md": "zh/integration/input/tracing/skywalking.md", + "zh/08-integration/02-input/03-profile/01-profile-auto-tagging.md": "zh/integration/input/profile/profile-auto-tagging.md", + "zh/08-integration/02-input/03-profile/02-profile.md": "zh/integration/input/profile/profile.md", + "zh/08-integration/02-input/04-log/01-log-auto-tagging.md": "zh/integration/input/log/log-auto-tagging.md", + "zh/08-integration/02-input/04-log/02-vector.md": "zh/integration/input/log/vector.md", + "zh/08-integration/03-output/01-query/01-sql.md": "zh/integration/output/query/sql.md", + "zh/08-integration/03-output/01-query/02-promql.md": "zh/integration/output/query/promql.md", + "zh/08-integration/03-output/01-query/03-trace-completion.md": "zh/integration/output/query/trace-completion.md", + "zh/08-integration/03-output/01-query/04-mcp-server.md": "zh/integration/output/query/mcp-server.md", + "zh/08-integration/03-output/02-export/01-opentelemetry-exporter.md": "zh/integration/output/export/opentelemetry-exporter.md", + "zh/08-integration/03-output/02-export/02-prom-remote-write.md": "zh/integration/output/export/prometheus-remote-write.md", + "zh/08-integration/03-output/02-export/03-kafka-exporter.md": "zh/integration/output/export/kafka-exporter.md", + "zh/08-integration/03-output/02-export/04-exporter-config.md": "zh/integration/output/export/exporter-config.md", + "zh/09-diagnose/01-FAQ.md": "zh/diagnose/FAQ.md", + "zh/09-diagnose/02-grafana.md": "zh/diagnose/grafana.md", + "zh/09-diagnose/03-deepflow-agent.md": "zh/diagnose/agent.md", + "zh/09-diagnose/04-deepflow-server.md": "zh/diagnose/how-to-profile-deepflow-server-ingester.md", + "zh/10-release-notes/01-versioning.md": "zh/release-notes/versioning.md", + "zh/10-release-notes/02-release-timeline.md": "zh/release-notes/release-timeline.md", + "zh/10-release-notes/03-ee-7.2-release.md": "zh/release-notes/release-7.2-ee.md", + "zh/10-release-notes/04-ce-7.1-release.md": "zh/release-notes/release-7.1-ce.md", + "zh/10-release-notes/05-ee-7.1-release.md": "zh/release-notes/release-7.1-ee.md", + "zh/10-release-notes/06-ce-7.0-release.md": "zh/release-notes/release-7.0-ce.md", + "zh/10-release-notes/07-ee-7.0-release.md": "zh/release-notes/release-7.0-ee.md", + "zh/10-release-notes/08-ce-6.6-release.md": "zh/release-notes/release-6.6-ce.md", + "zh/10-release-notes/09-ee-6.6-release.md": "zh/release-notes/release-6.6-ee.md", + "zh/10-release-notes/10-ce-6.5-release.md": "zh/release-notes/release-6.5-ce.md", + "zh/10-release-notes/11-ee-6.5-release.md": "zh/release-notes/release-6.5-ee.md", + "zh/10-release-notes/12-ce-6.4-release.md": "zh/release-notes/release-6.4-ce.md", + "zh/10-release-notes/13-ee-6.4-release.md": "zh/release-notes/release-6.4-ee.md", + "zh/10-release-notes/14-ce-6.3-release.md": "zh/release-notes/release-6.3-ce.md", + "zh/10-release-notes/15-ee-6.3-release.md": "zh/release-notes/release-6.3-ee.md", + "zh/10-release-notes/16-ce-6.2-release.md": "zh/release-notes/release-6.2-ce.md", + "zh/10-release-notes/17-ee-6.2-release.md": "zh/release-notes/release-6.2-ee.md", + "zh/10-release-notes/18-ce-6.1-release.md": "zh/release-notes/release-6.1-ce.md", + "zh/10-release-notes/19-ee-6.1-release.md": "zh/release-notes/release-6.1-ee.md", + "zh/07-configuration/01-agent.md": "zh/configuration/agent.md" +} diff --git a/.vitepress/sidebar.ts b/.vitepress/sidebar.ts new file mode 100644 index 00000000..4aa57654 --- /dev/null +++ b/.vitepress/sidebar.ts @@ -0,0 +1,152 @@ +// 侧边栏生成器:在配置加载期(Node 环境)直接读取源码目录生成结构化侧边栏, +// 替代 vdoing 主题的 "structuring" 机制。排序沿用目录/文件名的数字前缀。 +// +// 数据来源与 .vitepress/config.mts 的 rewrites 一致: +// - 中文:docs/zh/**(提交态即存在) +// - 英文:CI 构建时 translate/translated 会被合并进 docs/,故优先读 docs/ +// 下的编号目录,本地 dev 回退读 translate/translated +// - downloadFile.json 中声明的 CI 下载页面(如 Agent 配置)静态并入 +import fs from 'node:fs' +import path from 'node:path' +import rewrites from './rewrites.generated.json' + +const ROOT = path.resolve(import.meta.dirname, '..') + +/** 分区清单:文档信息架构的唯一人工维护来源 */ +const SECTIONS: Record = { + '01-about': { en: 'About', zh: '关于 DeepFlow' }, + '02-ce-install': { en: 'Community Edition Installation', zh: '社区版安装' }, + '03-ee-install': { en: 'Enterprise Edition Installation', zh: '企业版安装' }, + '04-best-practice': { en: 'Best Practices', zh: '最佳实践' }, + '05-features': { en: 'Features', zh: '功能特性' }, + '06-guide': { en: 'Guide', zh: '使用指南' }, + '07-configuration': { en: 'Configuration', zh: '配置说明' }, + '08-integration': { en: 'Integration', zh: '集成' }, + '09-diagnose': { en: 'Troubleshooting', zh: '故障诊断' }, + '10-release-notes': { en: 'Release Notes', zh: '版本发布笔记' } +} + +/** 常见缩写,避免 humanize 出现 "Ee Tenant" 这类展示名 */ +const ACRONYMS: Record = { + ce: 'CE', + ee: 'EE', + k8s: 'K8s', + api: 'API', + sql: 'SQL', + os: 'OS', + id: 'ID', + saas: 'SaaS' +} + +interface LinkItem { + text: string + link: string +} +interface GroupItem { + text: string + collapsed: boolean + items: (LinkItem | GroupItem)[] +} + +/** 解析 frontmatter 的简单字符串字段 */ +function parseFrontmatter(file: string): Record { + const m = fs.readFileSync(file, 'utf8').match(/^---\r?\n([\s\S]*?)\r?\n---/) + const out: Record = {} + if (m) { + for (const line of m[1].split(/\r?\n/)) { + const kv = line.match(/^(\w+):\s*(.*)$/) + if (kv) out[kv[1]] = kv[2].trim().replace(/^['"]|['"]$/g, '') + } + } + return out +} + +/** 数字前缀排序:01-x < 02-x < ... < 99-x */ +function byNumericPrefix(a: string, b: string): number { + const na = parseInt(a.match(/^(\d+)-/)?.[1] ?? '999', 10) + const nb = parseInt(b.match(/^(\d+)-/)?.[1] ?? '999', 10) + return na !== nb ? na - nb : a.localeCompare(b) +} + +/** 去掉数字前缀并把 kebab-case 转为首字母大写,用于目录展示名 */ +function humanizeDir(name: string): string { + return name + .replace(/^\d+-/, '') + .split('-') + .map((w) => ACRONYMS[w] ?? w.charAt(0).toUpperCase() + w.slice(1)) + .join(' ') +} + +/** 源文件路径(srcDir 相对)-> 站点 URL(基于已生成的 rewrites) */ +function linkFor(relPath: string): string | null { + const target = (rewrites as Record)[relPath] + if (!target) return null + return '/' + target.replace(/\.md$/, '') +} + +function walkDir(dir: string, relBase: string): (LinkItem | GroupItem)[] { + const items: (LinkItem | GroupItem)[] = [] + const entries = fs.readdirSync(dir).filter((n) => !n.startsWith('.')).sort(byNumericPrefix) + for (const name of entries) { + const full = path.join(dir, name) + const rel = `${relBase}/${name}` + if (fs.statSync(full).isDirectory()) { + const children = walkDir(full, rel) + if (children.length) items.push({ text: humanizeDir(name), collapsed: true, items: children }) + continue + } + if (!name.endsWith('.md') || name === 'README.md' || name === 'index.md') continue + const link = linkFor(rel) + if (!link) { + console.warn(`[sidebar] 无 rewrites 映射,跳过: ${rel}`) + continue + } + const title = parseFrontmatter(full).title || humanizeDir(name.replace(/\.md$/, '')) + items.push({ text: title, link }) + } + return items +} + +function buildSidebar(treeRoot: string, prefix: string, lang: 'en' | 'zh'): GroupItem[] { + const result: GroupItem[] = [] + for (const [dir, labels] of Object.entries(SECTIONS)) { + const sectionDir = path.join(treeRoot, dir) + if (!fs.existsSync(sectionDir)) continue + const items = walkDir(sectionDir, `${prefix}${dir}`) + if (items.length) result.push({ text: labels[lang], collapsed: true, items }) + } + return result +} + +/** downloadFile.json 声明的 CI 下载页面静态并入(本地 dev 时文件尚不存在) */ +function mergeDownloadedPages(items: GroupItem[]): void { + const jsonPath = path.join(ROOT, 'downloadFile.json') + if (!fs.existsSync(jsonPath)) return + for (const { output, meta } of JSON.parse(fs.readFileSync(jsonPath, 'utf8'))) { + const rel = output.replace(/^\.\//, '').replace(/^docs\//, '') + const section = rel.replace(/^zh\//, '').split('/')[0] + let group = items.find((g) => g.text === SECTIONS[section]?.en || g.text === SECTIONS[section]?.zh) + if (!group) { + group = { text: SECTIONS[section]?.en ?? section, collapsed: true, items: [] } + items.push(group) + } + const link = linkFor(rel) + if (!link) continue + group.items.push({ text: meta.title || humanizeDir(path.basename(rel)), link }) + } +} + +// 英文源树:CI 合并后位于 docs/<编号目录>,本地 dev 时回退到 translate/translated +const enRoot = fs.existsSync(path.join(ROOT, 'docs/01-about')) + ? path.join(ROOT, 'docs') + : path.join(ROOT, 'translate/translated') + +const enSidebar = buildSidebar(enRoot, '', 'en') +mergeDownloadedPages(enSidebar) +const zhSidebar = buildSidebar(path.join(ROOT, 'docs/zh'), 'zh/', 'zh') +mergeDownloadedPages(zhSidebar) + +export const sidebar = { + '/zh/': zhSidebar, + '/': enSidebar +} diff --git a/.vitepress/theme/components/DocHeader.vue b/.vitepress/theme/components/DocHeader.vue new file mode 100644 index 00000000..04b83802 --- /dev/null +++ b/.vitepress/theme/components/DocHeader.vue @@ -0,0 +1,339 @@ + + + + + diff --git a/.vitepress/theme/components/EmbeddedSidebarButton.vue b/.vitepress/theme/components/EmbeddedSidebarButton.vue new file mode 100644 index 00000000..0fdb84a2 --- /dev/null +++ b/.vitepress/theme/components/EmbeddedSidebarButton.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/.vitepress/theme/components/HomeHero.vue b/.vitepress/theme/components/HomeHero.vue new file mode 100644 index 00000000..edb646ad --- /dev/null +++ b/.vitepress/theme/components/HomeHero.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/.vitepress/theme/components/SidebarActions.vue b/.vitepress/theme/components/SidebarActions.vue new file mode 100644 index 00000000..474e8f70 --- /dev/null +++ b/.vitepress/theme/components/SidebarActions.vue @@ -0,0 +1,307 @@ + + + + + diff --git a/.vitepress/theme/components/SiteFooter.vue b/.vitepress/theme/components/SiteFooter.vue new file mode 100644 index 00000000..1a004d7c --- /dev/null +++ b/.vitepress/theme/components/SiteFooter.vue @@ -0,0 +1,210 @@ + + + + + diff --git a/.vitepress/theme/components/SiteNavbar.vue b/.vitepress/theme/components/SiteNavbar.vue new file mode 100644 index 00000000..c1f09867 --- /dev/null +++ b/.vitepress/theme/components/SiteNavbar.vue @@ -0,0 +1,797 @@ + + + + + diff --git a/.vitepress/theme/custom.css b/.vitepress/theme/custom.css new file mode 100644 index 00000000..fb6d4e44 --- /dev/null +++ b/.vitepress/theme/custom.css @@ -0,0 +1,211 @@ +/* 品牌色:对齐旧版 vdoing 主题 accentColor(#396aff) */ +:root { + --vp-c-brand-1: #396aff; + --vp-c-brand-2: #2757d6; + --vp-c-brand-3: #6b93ff; + --vp-c-brand-soft: rgba(57, 106, 255, 0.14); +} + +/* ===== 自定义导航栏(替代默认 navbar) ===== + 默认导航整体隐藏,由 SiteNavbar.vue 经 layout-top 插槽渲染旧版 + DeepFlow 渐变色导航;内容区顶部偏移改为自定义栏的高度 */ +.VPNav { + display: none; +} +:root { + /* 新版 global-nav 高度:68px(≤640px 时 56px) */ + --vp-nav-height: 68px; + --df-nav-height-mobile: 68px; +} +@media (max-width: 640px) { + :root { + --df-nav-height-mobile: 56px; + } +} +@media (max-width: 959px) { + .VPContent { + padding-top: var(--df-nav-height-mobile); + } + /* 移动端文档页的"菜单"吸顶条避开自定义导航栏 */ + .Layout .VPLocalNav.VPLocalNav { + top: var(--df-nav-height-mobile); + } +} + +/* ===== embedded:全站 chrome 隐藏(参考 eaf3930) ===== + 带 embedded 类时隐藏全站导航栏(SiteNavbar)/页脚(SiteFooter) + 并清空其占位间距;移动端以内容区左上角的悬浮按钮 + (EmbeddedSidebarButton,doc-top 插槽)展开侧边栏。 + 该类由 head 内联脚本标记(见 config.mts):iframe 检测保留,但目前 + 常规构建也无条件标记,即导航栏/页脚始终隐藏;doc-only 变体在此基础上 + 通过 doc-only 类恢复 doc 专属顶栏(见下方 doc-only 段) */ +html.embedded .df-navbar, +html.embedded .df-footer { + display: none; +} +html.embedded { + /* 导航高度归零:内容区/侧边栏/首页 hero 的顶部占位全部随之清空 */ + --vp-nav-height: 0px; + --df-nav-height-mobile: 0px; +} +/* 嵌入式下隐藏"菜单"吸顶条:桌面端侧边栏常驻可见无需它, + 移动端由悬浮按钮承担(该条隐藏后其菜单按钮仍在 DOM 中,供程序化点击) */ +html.embedded .VPLocalNav { + display: none; +} +/* 嵌入式桌面端导航高度归零后侧边栏内容会顶到视口边缘, + 给顶部(搜索/语言切换区)补回间距 */ +@media (min-width: 960px) { + html.embedded .VPSidebar nav { + padding-top: 24px; + } +} +/* 嵌入式首页 hero 顶部间距收敛 */ +html.embedded .Layout .VPHero.VPHero { + padding-top: 2rem; +} +@media (max-width: 959px) { + /* 给内容区左上角的悬浮按钮留位 */ + html.embedded .VPContent { + padding-top: 48px; + } + html.embedded .embedded-sidebar-button { + display: flex; + } + /* 侧边栏展开后隐藏按钮,通过点击蒙层关闭 */ + html.embedded:has(.VPSidebar.open) .embedded-sidebar-button { + display: none; + } +} + +/* ===== doc-only 变体(build:doc-only,独立文档站形态) ===== + 该形态下 同时带 embedded 与 doc-only 类(构建期写死,见 + config.mts 的 head 脚本):复用上方 embedded 的导航栏/页脚隐藏与占位 + 清零,页脚保持隐藏;doc 专属顶栏(DocHeader,layout-top 插槽)为固定 + 定位,其高度写回 --vp-nav-height / --df-nav-height-mobile 后,内容区/ + 侧边栏/首页 hero 的顶部留白机制与 SiteNavbar 在位时一致 */ +html.doc-only { + --df-doc-header-height: 64px; + --vp-nav-height: var(--df-doc-header-height); +} +@media (max-width: 959px) { + html.doc-only { + --df-doc-header-height: 56px; + --df-nav-height-mobile: var(--df-doc-header-height); + } +} +/* 常规(非 doc-only)构建同样渲染了 DocHeader,但始终不显示 */ +html:not(.doc-only) .doc-header { + display: none; +} +/* 侧边栏内容已由 .VPSidebar 的 padding-top(--vp-nav-height)避让顶栏, + 去掉 embedded 为高度归零补偿的 24px 顶部间距 */ +@media (min-width: 960px) { + html.doc-only .VPSidebar nav { + padding-top: 0; + } +} +/* 侧边栏顶部的搜索/主题(SidebarActions)与顶栏能力重复,隐藏(组件保留) */ +html.doc-only .sidebar-actions { + display: none; +} +/* 首页 hero:embedded 的 2rem 收敛值未计入顶栏高度,按原"顶栏高度+间距" + 恢复(hero 自带的负 margin 会抵消内容区的 padding-top,不重复计算) */ +@media (min-width: 640px) { + html.doc-only .Layout .VPHero.VPHero { + padding-top: calc(var(--vp-nav-height) + 7rem); + } +} +@media (max-width: 639px) { + html.doc-only .Layout .VPHero.VPHero { + padding-top: calc(var(--vp-nav-height) + 2rem); + } +} +/* 移动端:内容避让固定顶栏(在 embedded 的 48px 基础上改为顶栏高度+余量, + 同时保证悬浮按钮不压到正文),悬浮按钮随顶栏下移 */ +@media (max-width: 959px) { + html.doc-only .VPContent { + padding-top: calc(var(--df-nav-height-mobile) + 16px); + } + html.doc-only .embedded-sidebar-button { + top: calc(var(--df-nav-height-mobile) + 10px); + } +} + +/* ===== 首页:对齐旧版 vdoing Home 布局 ===== + 覆盖默认主题组件的 scoped 样式,选择器多带一层祖先保证优先级 */ +.VPHero .container { + text-align: center; +} +.VPHero .container .main { + width: 100%; +} +@media (min-width: 640px) { + .Layout .VPHero.VPHero { + padding-top: calc(var(--vp-nav-height) + 7rem); + } +} +/* 旧版首页 features 距 footer 约 2rem,去掉默认主题 96px 的大间距 */ +.Layout .VPHome.VPHome { + margin-bottom: 2rem; +} + +/* 旧版 features:三列纯文本布局,去掉默认卡片外壳。 + 注意:卡片灰底/边框/圆角在 .VPFeature 根元素上(不在内层 .box), + 必须覆写根元素才能去掉 var(--vp-c-bg-soft) 的灰色背景 */ +.Layout .VPFeatures .container { + max-width: 1100px; +} +.Layout .VPFeatures .items { + border-top: 1px solid var(--vp-c-divider); + margin-top: 2.5rem; + padding-top: 1.2rem; +} +.Layout .VPFeatures .item .VPFeature { + border: none; + border-radius: 0; + background-color: transparent; + transition: none; +} +.Layout .VPFeatures .item .VPFeature .box { + padding: 6px 4px; +} +.Layout .VPFeatures .VPFeature .box .title { + font-size: 1.4rem; + font-weight: 500; + line-height: 1.4; + color: var(--vp-c-text-1); + border-bottom: none; + padding-bottom: 0; + margin: 0 0 0.5rem; +} +.Layout .VPFeatures .VPFeature .box .details { + color: var(--vp-c-text-2); + font-size: 0.9375rem; + line-height: 1.7; +} + +/* downloadCSV.js 在构建期把 [csv-x](url) 替换为 markdown 表格, + 外层包
,沿用旧版样式 */ +.csv-box { + display: inline-block; + max-width: 100%; + overflow-x: auto; +} +.csv-box > table { + margin-bottom: 0; +} +.csv-box > p.csv-url { + margin: 0; + text-align: center; + color: #999; + font-size: 14px; +} + +/* mermaid 图居中并限制宽度 */ +.vp-doc .mermaid { + text-align: center; +} +.vp-doc .mermaid svg { + max-width: 100%; +} diff --git a/.vitepress/theme/index.ts b/.vitepress/theme/index.ts new file mode 100644 index 00000000..416090bc --- /dev/null +++ b/.vitepress/theme/index.ts @@ -0,0 +1,46 @@ +import { h, nextTick, onMounted, watch } from 'vue' +import { useRoute } from 'vitepress' +import DefaultTheme from 'vitepress/theme' +import mediumZoom from 'medium-zoom' +import SiteNavbar from './components/SiteNavbar.vue' +import DocHeader from './components/DocHeader.vue' +import SiteFooter from './components/SiteFooter.vue' +import HomeHero from './components/HomeHero.vue' +import EmbeddedSidebarButton from './components/EmbeddedSidebarButton.vue' +import SidebarActions from './components/SidebarActions.vue' +import './custom.css' + +export default { + extends: DefaultTheme, + Layout: () => { + const route = useRoute() + const initZoom = () => + mediumZoom('.vp-doc img:not(.no-zoom)', { background: 'var(--vp-c-bg)' }) + onMounted(initZoom) + watch( + () => route.path, + () => nextTick(initZoom) + ) + return h(DefaultTheme.Layout, null, { + // 顶部导航:还原旧版 DeepFlow 自定义导航栏(替代 VitePress 默认 navbar, + // 默认导航已在 custom.css 中隐藏) + 'layout-top': () => [ + h(SiteNavbar), + // doc-only 变体的 doc 专属顶栏:常规构建也渲染,但 html 未标记 + // doc-only 时由 custom.css 隐藏(显隐机制与 SiteNavbar 一致) + h(DocHeader) + ], + // 首页 hero:还原旧版 vdoing Home 布局(单行大标题 + 描述) + 'home-hero-info': () => h(HomeHero), + // 页脚:旧版深色链接矩阵 footer。组件内部按官方 VPFooter 的规则 + // 只在无侧边栏的页面(首页/404)渲染,内容页不显示 + 'layout-bottom': () => h(SiteFooter), + // 嵌入式(iframe)移动端:内容区左上角的侧边栏悬浮按钮(默认隐藏, + // 仅 html.embedded 且 <960px 显示,见 custom.css) + 'doc-top': () => h(EmbeddedSidebarButton), + // 侧边栏菜单上方的搜索 + 语言切换(自 SiteNavbar 迁来):iframe 嵌入 + // 模式下导航栏整体隐藏,这两项能力常驻侧边栏保持可用 + 'sidebar-nav-before': () => h(SidebarActions) + }) + } +} diff --git a/Dockerfile b/Dockerfile index 35068781..a95d0af6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,3 +11,4 @@ RUN ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime \ && rm -rf /var/lib/apt/lists/* COPY ./nginx/default.conf /etc/nginx/conf.d/docs.conf +COPY ./nginx/zh-only-redirects.conf /etc/nginx/conf.d/zh-only-redirects.conf diff --git a/LOCALES/en.json b/LOCALES/en.json deleted file mode 100644 index 9b7e32ca..00000000 --- a/LOCALES/en.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "about": "About DeepFlow", - "ce-install": "Install (Community Edition)", - "ee-install": "Install (Enterprise Edition)", - "ee-install/saas": "SaaS", - "ee-install/on-prem": "On-Prem", - "best-practice": "Best Practice", - "features": "Features", - "features/l7-protocols": "Application Protocols", - "features/universal-map": "Universal Map", - "features/distributed-tracing": "Distributed Tracing", - "features/continuous-profiling": "Continuous Profiling", - "features/auto-tagging": "AutoTagging", - "guide": "User Guide", - "guide/quick-start": "Quick Start", - "guide/ee-tenant": "Tenant (Enterprise Edition)", - "guide/ee-tenant/query": "Data Query", - "guide/ee-tenant/dashboard": "Dashboard", - "guide/ee-tenant/dashboard/panel": "Panel", - "guide/ee-tenant/universal-map": "Universal Map", - "guide/ee-tenant/tracing": "Tracing", - "guide/ee-tenant/profiling": "Profiling", - "guide/ee-tenant/network": "Network", - "guide/ee-tenant/metrics": "Metrics", - "guide/ee-tenant/log": "Log", - "guide/ee-tenant/alert": "Alert", - "guide/ee-tenant/report": "Report", - "guide/ee-tenant/resources": "Resources", - "guide/ee-tenant/system": "System", - "guide/ee-tenant/configuration": "Configuration", - "configuration": "Configuration", - "integration": "Integration", - "integration/process": "Process", - "integration/input": "Input", - "integration/input/metrics": "Metrics Collector", - "integration/input/tracing": "Tracing Collector", - "integration/input/profile": "Profile Collector", - "integration/input/log": "Log Collector", - "integration/output": "Output", - "integration/output/query": "Query API", - "integration/output/export": "Exporter", - "diagnose": "Diagnose", - "release-notes": "Release Notes" -} diff --git a/LOCALES/zh.json b/LOCALES/zh.json deleted file mode 100644 index 73637af5..00000000 --- a/LOCALES/zh.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "about": "关于 DeepFlow", - "ce-install": "安装社区版", - "ee-install": "安装企业版", - "ee-install/saas": "SaaS", - "ee-install/on-prem": "On-Prem", - "best-practice": "最佳实践", - "features": "核心特性", - "features/l7-protocols": "应用协议", - "features/universal-map": "服务全景图", - "features/distributed-tracing": "分布式追踪", - "features/continuous-profiling": "持续性能剖析", - "features/auto-tagging": "AutoTagging", - "guide": "使用帮助", - "guide/quick-start": "快速上手", - "guide/ee-tenant": "企业版租户页面", - "guide/ee-tenant/query": "数据搜索", - "guide/ee-tenant/dashboard": "视图列表", - "guide/ee-tenant/dashboard/panel": "图表", - "guide/ee-tenant/universal-map": "业务观测", - "guide/ee-tenant/tracing": "应用观测", - "guide/ee-tenant/profiling": "代码观测", - "guide/ee-tenant/network": "网络观测", - "guide/ee-tenant/metrics": "指标中心", - "guide/ee-tenant/log": "日志中心", - "guide/ee-tenant/alert": "告警管理", - "guide/ee-tenant/report": "报表管理", - "guide/ee-tenant/resources": "资产列表", - "guide/ee-tenant/system": "系统管理", - "guide/ee-tenant/configuration": "个人设置", - "configuration": "配置手册", - "integration": "开发与集成", - "integration/process": "数据处理", - "integration/input": "数据输入", - "integration/input/metrics": "导入 Metrics", - "integration/input/tracing": "导入 Tracing", - "integration/input/profile": "导入 Profile", - "integration/input/log": "导入 Log", - "integration/output": "数据输出", - "integration/output/query": "查询 API", - "integration/output/export": "导出输出", - "diagnose": "故障处理", - "release-notes": "发行注记" -} diff --git a/addTime.js b/addTime.js deleted file mode 100644 index 56964d30..00000000 --- a/addTime.js +++ /dev/null @@ -1,111 +0,0 @@ -const { exec } = require("child_process"); -const fs = require("fs"); // 文件模块 -const path = require("path"); // 路径模块 -const matter = require("gray-matter"); // -const jsonToYaml = require("json2yaml"); -const os = require("os"); - -// 第3个参数 环境 -const targetFile = process.argv[2] || "docs"; // cloud df-help - -// 小于10补0 -function zero(d) { - return d.toString().padStart(2, "0"); -} - -function dateFormat(date) { - return `${date.getFullYear()}-${zero(date.getMonth() + 1)}-${zero( - date.getDate() - )}`; -} - -const getFileCreateTime = (filePath) => { - return new Promise((r, j) => { - // 获取文件最早提交(创建)时间 - exec( - "git log --diff-filter=A --format=%aD -- " + filePath, - (err, stdout, stderr) => { - if (err) { - // 错误处理 返回最新时间 - r(dateFormat(new Date())); - } else { - const createdTime = stdout.split("\n")[0]; // 提取最早的日期 - if (dateFormat(new Date(createdTime)) === "NaN-NaN-NaN") { - console.log("git log --diff-filter=A --format=%aD -- " + filePath); - throw new Error("==="); - } - r(dateFormat(new Date(createdTime))); - } - } - ); - }); -}; - -const getFileUpdateTime = (filePath) => { - return new Promise((r, j) => { - // 获取文件最近提交(修改)时间 - exec("git log --format=%aD -- " + filePath, (err, stdout, stderr) => { - if (err) { - // 错误处理 返回最新时间 - r(dateFormat(new Date())); - } else { - const modifiedTime = stdout.split("\n")[0]; // 提取最新的日期 - r(dateFormat(new Date(modifiedTime))); - } - }); - }); -}; - -const getZhUrl = (url) => { - const zh = path.sep + "zh" + path.sep; - // 如果不是带了 /zh/ 的地址,需要转为对应的中文的地址 - if (url.includes(zh)) { - return path.relative(__dirname, url); - } - const translatedUrl = `${path.sep}translate${path.sep}translated${path.sep}`; - const replaceUrl = `${path.sep}docs${path.sep}zh${path.sep}`; - return path.relative(__dirname, url.replace(translatedUrl, replaceUrl)); -}; - -const run = (sourceDir) => { - // 开始循环处理file - const files = fs.readdirSync(sourceDir); - files.forEach(async (item) => { - const filePath = path.join(sourceDir, item); - const stat = fs.statSync(filePath); - if (stat.isDirectory()) { - run(filePath); - return; - } - if (!item.endsWith(".md")) { - return false; - } - const fileContent = fs.readFileSync(filePath, "utf8"); - const { data: matterData, content } = matter(fileContent, {}); - - // 英文的是在 translate 下的,故需要使用中文版的创建时间和更新时间 - const zhFilePath = getZhUrl(filePath); - // 增加创建时间和修改时间 - const [createAt, updateAt] = await Promise.all([ - getFileCreateTime(zhFilePath), - getFileUpdateTime(zhFilePath), - ]); - - // 如果没有permalink 则需要回写到md中 - matterData.createAt = createAt; - matterData.updateAt = updateAt; - - // 写入指定文件内即可 - - // 拼接新的content - let newFileContent = jsonToYaml - .stringify(matterData) - .replace(/\n\s{2}/g, "\n") - .replace(/"/g, ""); - newFileContent += "---" + os.EOL + content; - // 把地址写入文件内 - fs.writeFileSync(filePath, newFileContent); - }); -}; - -run(path.join(__dirname, targetFile)); diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js deleted file mode 100644 index 9cbffedd..00000000 --- a/docs/.vuepress/config.js +++ /dev/null @@ -1,138 +0,0 @@ -const { resolve } = require("path"); -const json5 = require("json5"); - -const locales = { - "/": { - lang: "en-US", - title: "Instant Observability for Cloud & AI Applications", - keyword: - "Observability, eBPF, Wasm, Cloud-Native, Distributed Tracing, Continuous Profiling", - description: - "DeepFlow leverages eBPF and Wasm to achieve zero-code and full-stack observability, enabling continuous innovation in cloud-native and AI applications.", - }, - "/zh/": { - lang: "zh-CN", - title: - "云原生-可观测性-零侵扰采集-全栈可观测-分布式追踪-eBPF-Wasm-DeepFlow可观测性平台", - keyword: - "云原生,可观测性,零侵扰采集,全栈可观测,全链路追踪,分布式追踪,服务全景图、eBPF,Wasm,DeepFlow可观测性平台", - description: - "DeepFlow 旨在为复杂的云原生和 AI 应用提供深度可观测性。DeepFlow 基于 eBPF 实现了应用性能指标、分布式追踪、持续性能剖析等观测信号的零侵扰(Zero Code)采集,并结合智能标签(SmartEncoding)技术实现了所有观测信号的全栈(Full Stack)关联和高效存取。", - }, -}; - -module.exports = { - theme: resolve(__dirname, "../../vdoing"), // 使用本地主题包 - dest: "dist", - - locales, - shouldPrefetch: false, - - base: "/docs/", // 默认'/'。如果你想将你的网站部署到如 https://foo.github.io/bar/,那么 base 应该被设置成 "/bar/",(否则页面将失去样式等文件) - - // 主题配置 - themeConfig: { - // 更新域名需要更新此地址 - home: "https://deepflow.io", - locales, - // 导航配置 - nav: [ - { - text: "PS", - link: "/PS/0.0/", //目录页链接,此处link是vdoing主题新增的配置项,有二级导航时,可以点击一级导航跳到目录页 - }, - ], - sidebarDepth: 2, // 侧边栏显示深度,默认1,最大2(显示到h3标题) - logo: "/img/logo.png", // 导航栏logo - // repo: 'xugaoyi/vuepress-theme-vdoing', // 导航栏右侧生成Github链接 - searchMaxSuggestions: 10, // 搜索结果显示最大数 - lastUpdated: "上次更新", // 开启更新时间,并配置前缀文字 string | boolean (取值为git提交时间) - docsDir: "docs", // 编辑的文件夹 - editLinks: true, // 启用编辑 - editLinkText: "编辑", - - // 侧边栏 'structuring' | { mode: 'structuring', collapsable: Boolean} | 'auto' | <自定义> 温馨提示:目录页数据依赖于结构化的侧边栏数据,如果你不设置为'structuring',将无法使用目录页 - sidebar: "structuring", - - // 页脚信息 - footer: { - createYear: 2014, // 博客创建年份 - copyrightInfo: " YUNSHAN Networks | 京 ICP 备 14036633号-4 京公网安备 ", // 博客版权信息,支持a标签或换行标签
- }, - - // 扩展自动生成frontmatter。(当md文件的frontmatter不存在相应的字段时将自动添加。不会覆盖已有的数据。) - extendFrontmatter: {}, - }, - - // 注入到页面中的标签,格式[tagName, { attrName: attrValue }, innerHTML?] - head: [ - ["link", { rel: "icon", href: "/img/favicon.ico" }], //favicons,资源放在public文件夹 - ["meta", { name: "theme-color", content: "#0a72ef" }], // 移动浏览器主题颜色 - ], - - // 插件配置 - plugins: [ - require("./plugins/fulltext-search/index.js"), - require("./plugins/vuepress-keyword/index.js"), - [ - require("./plugins/one-click-copy/index.js"), - { - en: { - copyMessage: "Copied successfully!", - toolTipMessage: "Copy to clipboard", - }, - zh: { - copyMessage: "复制成功", - toolTipMessage: "复制代码", - }, - }, - ], - [ - require("./plugins/mermaidjs/index.js"), - { - themeVariables: { - critBorderColor: "red", // crit 对应的颜色 - critBkgColor: "red", // crit 对应的背景色 - doneTaskBorderColor: "grey", // done 对应的颜色 - doneTaskBkgColor: "lightgrey", // done 对应的背景颜色 - activeTaskBorderColor: "#46bd87", // active 对应的颜色 - activeTaskBkgColor: "#46bd87", // active 对应的颜色 - taskBorderColor: "#46bd87", // 无状态 对应的颜色 - taskBkgColor: "#46bd87", // 无状态 对应的颜色 - }, - }, - ], - ], - - markdown: { - lineNumbers: true, - extractHeaders: ["h1", "h2", "h3", "h4", "h5", "h6"], // 提取标题到侧边栏的级别,默认['h2', 'h3'] - chainMarkdown: (md) => { - md.plugin("ys-todo").use(require("./plugins/todo/index")).end(); - }, - extendMarkdown: (md) => { - md.use(require("./plugins/code-tabs/index")); - md.use(require("./plugins/disable-url-encode/index")); - md.use(require("./plugins/auto-complete-url/index")); - md.use(require("./plugins/auto-add-title-order/index")); - md.use(require("./plugins/footnote/index")); - }, - }, - - // 监听文件变化并重新构建 - extraWatchFiles: ["./../.vuepress/config.js"], - - configureWebpack: { - module: { - rules: [ - { - test: /\.json$/, - type: "json", - parser: { - parse: json5.parse, - }, - }, - ], - }, - }, -}; diff --git a/docs/.vuepress/enhanceApp.js b/docs/.vuepress/enhanceApp.js deleted file mode 100644 index 1589fa48..00000000 --- a/docs/.vuepress/enhanceApp.js +++ /dev/null @@ -1,9 +0,0 @@ -// import vue from 'vue/dist/vue.esm.browser' -export default ({ - Vue, // VuePress 正在使用的 Vue 构造函数 - options, // 附加到根实例的一些选项 - router, // 当前应用的路由实例 - siteData // 站点元数据 -}) => { - // window.Vue = vue // 使页面中可以使用Vue构造函数 (使页面中的vue demo生效) -} diff --git a/docs/.vuepress/plugins/auto-add-title-order/index.js b/docs/.vuepress/plugins/auto-add-title-order/index.js deleted file mode 100644 index 17d4bb56..00000000 --- a/docs/.vuepress/plugins/auto-add-title-order/index.js +++ /dev/null @@ -1,75 +0,0 @@ -const isValid = (content) => { - return /\{#(.+?)\}$/.test(content); -}; -// 自动补全title序号 -module.exports = function (md, config) { - const cacheTitleOrder = []; - let latest = ""; - md.renderer.rules.heading_open = (tokens, idx, options, env, self) => { - const token = tokens[idx]; - const titleToken = tokens[idx + 1]; - - // 检查标题内容是否包含自定义 ID - const customIdMatch = titleToken.content.match(/\{#(.+?)\}$/); - if (customIdMatch) { - const customId = customIdMatch[1]; // 获取自定义 ID - - token.attrSet("id", customId); // 设置 ID 属性 - titleToken.children[0].attrSet("href", "#" + customId); // href - - // 找到符合的 content 替换下内容 - const index2 = titleToken.children.findIndex( - (c) => c.content && isValid(c.content) - ); - - if (index2 !== -1) { - titleToken.children[index2].content = titleToken.children[ - index2 - ].content - .replace(/\{#(.+?)\}$/, "") - .trim(); - } - } - - const { relativePath } = env; - if (!relativePath) { - return self.renderToken(tokens, idx, options, env); - } - if (relativePath !== latest) { - latest = relativePath; - cacheTitleOrder.splice(0, cacheTitleOrder.length); - } - /** - * 找到这个,然后把idx+1的xx内容修改为1.xx - * 1. 找到token,并解析出级别,级别需要-1,从0开始 - * 2. 如果当前级别存在,则+1,同时清空cacheTitleIndex leavel后面的数据;不存在则赋值为1 - */ - let [, leavel] = token.tag.split(""); - leavel = leavel - 1; // - if (cacheTitleOrder[leavel]) { - cacheTitleOrder[leavel] = cacheTitleOrder[leavel] + 1; - // 后面的清除掉 - cacheTitleOrder.splice(leavel + 1, cacheTitleOrder.length - leavel); - } else { - do { - cacheTitleOrder[leavel--] = 1; - } while (!cacheTitleOrder[leavel] && leavel >= 0); - } - - const _cacheTitleOrder = cacheTitleOrder.filter(Boolean); // [null, 1] - - const currentLeavel = - _cacheTitleOrder.join(".") + (_cacheTitleOrder.length === 1 ? ". " : " "); // 1. 2.2 - const nextToken = tokens[idx + 1]; - nextToken.content = currentLeavel + nextToken.content; - - // 如果标题中出现了 `` 会有格式问题 - // 找到第一个text的即可 - const index = nextToken.children.findIndex((c) => c.type === "text"); - - nextToken.children[index].content = - currentLeavel + nextToken.children[index].content; - - return self.renderToken(tokens, idx, options, env); - }; -}; diff --git a/docs/.vuepress/plugins/auto-complete-url/index.js b/docs/.vuepress/plugins/auto-complete-url/index.js deleted file mode 100644 index 45ea2f2e..00000000 --- a/docs/.vuepress/plugins/auto-complete-url/index.js +++ /dev/null @@ -1,88 +0,0 @@ -// 自动补全相对路径 -const ignoreFileSuffix = ['.pcap'] -module.exports = function (md, config) { - const original = md.renderer.rules.link_open - md.renderer.rules.link_open = (tokens, idx, options, env, self) => { - const { relativePath } = env - if (relativePath) { - const token = tokens[idx] - const hrefIndex = token.attrIndex('href') - if (hrefIndex >= 0) { - const link = token.attrs[hrefIndex] - const href = link[1] - const isExternal = /^https?:/.test(href) - /** - * 1. 不是https/http - * 2. 不是#开头 - * 3. 不是/开头 - * 4. 非ignoreFileSuffix忽略的文件后缀 - */ - if (!isExternal && !href.startsWith('#') && !href.startsWith('/') && !ignoreFileSuffix.some(etx => href.endsWith(etx))) { - // 需要去掉目录的序号 01-about=>about - const relativePaths = relativePath.split('/').map(key => { - const pth = key.split('-') - if (pth.length > 1) { - pth.shift() - } - return pth.join('-') - }) - // 最后一层(文件名称)去掉 - // ./A/ 是寻找当前文件(B)的上一级目录下的A,故需要去掉B这一层 - relativePaths.pop(); - // 第一个插入空元素 - relativePaths.unshift(''); - const hrefs = href.split('/'); - hrefs.forEach(element => { - if (element === '..') { - relativePaths.pop() - return - } - if (element !== '.') { - relativePaths.push(element) - } - }); - link[1] = addSuffixAndCheckValidUrl(relativePaths.join('/'), options.sidebar, '/', { relativePath, idx }) - } - } - } - - return original.call(null, tokens, idx, options, env, self) - } -} - -/** - * 自动补全/ 以及判断是否是一个有效的地址 - * 有效理由:现有的页面列表中存在当前地址 - * @param { string} url - * @param { array} sidebar - * @param { string} suffix - */ -function addSuffixAndCheckValidUrl (url = '', sidebar = {}, suffix = '/', { relativePath, idx } = {}) { - const totalPage = [] - Object.keys(sidebar).map(key => { - sidebar[key].forEach(path => { - if(!path.new){ - return false - } - // 补全 / 后缀 - let newPath = path.new.endsWith(suffix) ? path.new : path.new + suffix - // 去掉第一个 / 然后添加语言 - newPath = key + newPath.slice(1) - totalPage.push(newPath) - }) - }) - let reallyUrl = url.split('?')[0].split('#')[0] - // url的其他数据 - const otherUrl = url.split(reallyUrl)[1] || '' - // 如果不是/结尾的,补充一下 - reallyUrl = reallyUrl.endsWith(suffix) ? reallyUrl : reallyUrl + suffix - // 补充以后还找不到链接,那么就是无效的地址 - if (!totalPage.includes(reallyUrl)) { - console.log('当前sidebar==', JSON.stringify(sidebar)) - // console.log('当前页面地址==', totalPage) - console.log('无效的目的页面地址==', reallyUrl) - console.log('md==', relativePath) - throw new Error('无效的目的页面地址') - } - return reallyUrl + otherUrl -} \ No newline at end of file diff --git a/docs/.vuepress/plugins/code-tabs/index.js b/docs/.vuepress/plugins/code-tabs/index.js deleted file mode 100644 index c2cf16a5..00000000 --- a/docs/.vuepress/plugins/code-tabs/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const tabs = require('./tabs') - -module.exports = (md) => { - tabs(md, { - name: "code-tabs", - component: "CodeTabs", - getter: (tokens, index) => { - let inCodeTab = false; - let foundFence = false; - const codeTabsData = []; - - for (let i = index; i < tokens.length; i++) { - const { block, type } = tokens[i]; - - if (block) { - if (type === "code-tabs_tabs_close") { - break; - } - - if (type === "tab_close") { - inCodeTab = false; - continue; - } - - if (type === "tab_open") { - // found a code tab - inCodeTab = true; - foundFence = false; - continue; - } - - if (inCodeTab && type === "fence" && !foundFence) { - foundFence = true; - continue; - } - - tokens[i].type = "code_tab_empty"; - tokens[i].hidden = true; - } - } - - return codeTabsData; - }, - }); -}; diff --git a/docs/.vuepress/plugins/code-tabs/tabs.js b/docs/.vuepress/plugins/code-tabs/tabs.js deleted file mode 100644 index 24a741f2..00000000 --- a/docs/.vuepress/plugins/code-tabs/tabs.js +++ /dev/null @@ -1,301 +0,0 @@ - -module.exports = ( - md, - { name, component, getter } = { - name: "tabs", - component: "Tabs", - getter: () => [], - } -) => { - const CODETAB_MARKER = `@tab`; - - const tabsRule = (state, startLine, endLine, silent) => { - let start = state.bMarks[startLine] + state.tShift[startLine]; - let max = state.eMarks[startLine]; - - // Check out the first character quickly, - // this should filter out most of non-containers - if (state.src[start] !== ":") return false; - - let pos = start + 1; - - // Check out the rest of the marker string - while (pos <= max) { - if (state.src[pos] !== ":") break; - pos += 1; - } - - const markerCount = pos - start; - - if (markerCount < 3) return false; - - const markup = state.src.slice(start, pos); - const params = state.src.slice(pos, max); - - const [containerName, id = ""] = params.split("#", 2); - - if (containerName.trim() !== name) return false; - - // Since start is found, we can report success here in validation mode - if (silent) return true; - - // Search for the end of the block - let nextLine = startLine; - let autoClosed = false; - - // Search for the end of the block - while ( - // unclosed block should be autoclosed by end of document. - // also block seems to be autoclosed by end of parent - nextLine < endLine - ) { - nextLine += 1; - start = state.bMarks[nextLine] + state.tShift[nextLine]; - max = state.eMarks[nextLine]; - - if (start < max && state.sCount[nextLine] < state.blkIndent) - // non-empty line with negative indent should stop the list: - // - ``` - // test - break; - - if ( - // match start - - state.src[start] === ":" && - // closing fence should be indented less than 4 spaces - state.sCount[nextLine] - state.blkIndent < 4 - ) { - // check rest of marker - for (pos = start + 1; pos <= max; pos++) - if (state.src[pos] !== ":") break; - - // closing code fence must be at least as long as the opening one - if (pos - start >= markerCount) { - // make sure tail has spaces only - pos = state.skipSpaces(pos); - - if (pos >= max) { - // found! - autoClosed = true; - break; - } - } - } - } - - const oldParent = state.parentType; - const oldLineMax = state.lineMax; - - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-expect-error - state.parentType = `${name}_tabs`; - - // this will prevent lazy continuations from ever going past our end marker - state.lineMax = nextLine - (autoClosed ? 1 : 0); - - const openToken = state.push(`${name}_tabs_open`, component, 1); - - openToken.markup = markup; - openToken.block = true; - openToken.info = containerName; - openToken.meta = { id: id.trim() }; - openToken.map = [startLine, nextLine - (autoClosed ? 1 : 0)]; - - state.md.block.tokenize( - state, - startLine + 1, - nextLine - (autoClosed ? 1 : 0) - ); - - const closeToken = state.push(`${name}_tabs_close`, component, -1); - - closeToken.markup = state.src.slice(start, pos); - closeToken.block = true; - - state.parentType = oldParent; - state.lineMax = oldLineMax; - state.line = nextLine + (autoClosed ? 1 : 0); - - return true; - }; - - const tabRule = (state, startLine, endLine, silent) => { - let start = state.bMarks[startLine] + state.tShift[startLine]; - let max = state.eMarks[startLine]; - - /* - * Check out the first character quickly, - * this should filter out most of non-uml blocks - */ - if (state.src.charAt(start) !== "@") return false; - - let index; - - // Check out the rest of the marker string - for (index = 0; index < CODETAB_MARKER.length; index++) - if (CODETAB_MARKER[index] !== state.src[start + index]) return false; - - const markup = state.src.slice(start, start + index); - const info = state.src.slice(start + index, max); - - // Since start is found, we can report success here in validation mode - if (silent) return true; - - let nextLine = startLine; - let autoClosed = false; - - // Search for the end of the block - while ( - // unclosed block should be autoclosed by end of document. - // also block seems to be autoclosed by end of parent - nextLine < endLine - ) { - nextLine += 1; - start = state.bMarks[nextLine] + state.tShift[nextLine]; - max = state.eMarks[nextLine]; - - if (start < max && state.sCount[nextLine] < state.blkIndent) - // non-empty line with negative indent should stop the list: - // - ``` - // test - break; - - if ( - // match start - state.src[start] === "@" && - // marker should not be indented with respect of opening fence - state.sCount[nextLine] <= state.sCount[startLine] - ) { - let openMakerMatched = true; - - for (index = 0; index < CODETAB_MARKER.length; index++) - if (CODETAB_MARKER[index] !== state.src[start + index]) { - openMakerMatched = false; - break; - } - - if (openMakerMatched) { - // found! - autoClosed = true; - nextLine -= 1; - break; - } - } - } - - const oldParent = state.parentType; - const oldLineMax = state.lineMax; - - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-expect-error - state.parentType = `tab`; - - // this will prevent lazy continuations from ever going past our end marker - state.lineMax = nextLine; - - const openToken = state.push("tab_open", "template", 1); - - const [title, id] = info.replace(/^:active/, "").split("#", 2); - - openToken.block = true; - openToken.markup = markup; - openToken.info = title.trim(); - openToken.meta = { - active: info.includes(":active"), - }; - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - if (id) openToken.meta.value = id.trim(); - openToken.map = [startLine, nextLine]; - - state.md.block.tokenize(state, startLine + 1, nextLine); - - const closeToken = state.push("tab_close", "template", -1); - - closeToken.block = true; - closeToken.markup = ""; - - state.parentType = oldParent; - state.lineMax = oldLineMax; - state.line = nextLine + (autoClosed ? 1 : 0); - - return true; - }; - - md.block.ruler.before("fence", `${name}_tabs`, tabsRule, { - alt: ["paragraph", "reference", "blockquote", "list"], - }); - - // WARNING: Here we use an internal variable to make sure tab rule is not registered - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - // eslint-disable-next-line - if (!md.block.ruler.__rules__.find(({ name }) => name === "tab")) - md.block.ruler.before("fence", "tab", tabRule, { - alt: ["paragraph", "reference", "blockquote", "list"], - }); - - md.renderer.rules[`${name}_tabs_open`] = ( - tokens, - index, - options, - env, - self - ) => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - const { meta } = tokens[index]; - const basicData = []; - const customData = getter(tokens, index, options, env, self); - let activeIndex = -1; - let isTabstart = false; - - for (let i = index; i < tokens.length; i++) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - const { block, meta, type, info } = tokens[i]; - - if (block) { - if (type === `${name}_tabs_close`) break; - if (type === `${name}_tabs_open`) continue; - - if (type === "tab_open") { - // code tab is active - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - if (meta.active) activeIndex = basicData.length; - - tokens[i].attrPush([ - `#tab${basicData.length}`, - "{ title, value, isActive }", - ]); - - isTabstart = true; - basicData.push({ - title: info, - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - ...(meta.value ? { value: meta.value } : {}), - }); - - continue; - } - - if (type === "tab_close") continue; - - if (!isTabstart) { - tokens[i].type = `${name}_tabs_empty`; - tokens[i].hidden = true; - } - } - } - - return `<${component} :data='${ - // single quote will break @vue/compiler-sfc - JSON.stringify( - basicData.map((item, index) => ({ ...item, ...customData[index] })) - ).replace(/'/g, "'") - }'${activeIndex !== -1 ? ` :active="${activeIndex}"` : ""}${ - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - meta.id ? ` tab-id="${meta.id}"` : "" - }>\n`; - }; - - md.renderer.rules[`${name}_tabs_close`] = () => `\n`; -}; diff --git a/docs/.vuepress/plugins/disable-url-encode/index.js b/docs/.vuepress/plugins/disable-url-encode/index.js deleted file mode 100644 index b24200d3..00000000 --- a/docs/.vuepress/plugins/disable-url-encode/index.js +++ /dev/null @@ -1,60 +0,0 @@ -/*************************************************** - * Created by nanyuantingfeng on 2020/3/1 10:10. * - ***************************************************/ -var mdurl = require("mdurl"); - -function isNeedDecode(url, config) { - config = config || "*"; - - if (config === "*") { - return true; - } - - if (config === "./" || config === ".") { - return !/^(\w+?:\/)?\//.test(url); - } - - if (config instanceof RegExp) { - return config.test(url); - } - - config = [].concat(config); - return config.some(a => url.startsWith(a)); -} - -function decodeURL(url, config) { - url = isNeedDecode(url, config) ? mdurl.decode(url) : url; - return /^(\w+?:\/)?\.?\//.test(url) ? url : "./" + url; -} - -function getUrlParam(string, name) { - return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(string) || [, ""])[1].replace(/\+/g, '%20')) || null -} - -// The reason why the URL needs to use the upper level is because test After MD is packaged, the file will be marked as test/index HTML, so you need to add `../`. Except absolute path -// 为什么url需要使用上一级,是因为test.md打包后文件会被打成test/index.html,故需要增加`../`。但绝对路径除外 -module.exports = function(md, config) { - md.renderer.rules.image = function(tokens, idx) { - var token = tokens[idx]; - var srcIndex = token.attrIndex("src"); - var url = token.attrs[srcIndex][1]; - var caption = md.utils.escapeHtml(token.content); - var w, h, align, styleString = '' - url = decodeURL(url, config); - // 存在?且存在w h - if (url && url.indexOf('?') > -1) { - w = getUrlParam(url, 'w') - h = getUrlParam(url, 'h') - align = getUrlParam(url, 'align') - w && (styleString += `width:${w}px`) - h && (styleString += `height:${h}px`) - } - - if (!align) { - align = "left" - } - - return `
${caption}

${caption}

` - // return `${caption}` - }; -}; diff --git a/docs/.vuepress/plugins/footnote/index.js b/docs/.vuepress/plugins/footnote/index.js deleted file mode 100644 index 95fca89e..00000000 --- a/docs/.vuepress/plugins/footnote/index.js +++ /dev/null @@ -1,415 +0,0 @@ -const Token = require('markdown-it/lib/token') -const parseLinkLabel = require('markdown-it/lib/helpers/parse_link_label') - -const getIDSuffix = (tokens, index) => - // add suffix when multiple id was found - tokens[index].meta.subId > 0 ? `:${tokens[index].meta.subId}` : ""; - -const renderFootnoteAnchorName = ( - tokens, - index, - _options, - env -) => - `${ - // prefix - typeof env.docId === "string" ? `-${env.docId}-` : "" - }${ - // increasing id - (tokens[index].meta.id + 1).toString() - }`; - -const renderFootnoteCaption = ( - tokens, - index -) => - `[${ - // number - (tokens[index].meta.id + 1).toString() - }${getIDSuffix(tokens, index)}]`; - -const renderFootnoteRef = ( - tokens, - index, - options, - env, - self -) => { - const id = self.rules["footnoteAnchorName"]( - tokens, - index, - options, - env, - self - ); - const caption = self.rules["footnoteCaption"]( - tokens, - index, - options, - env, - self - ); - - return `${caption}`; -}; - -const renderFootnoteBlockOpen = ( - _tokens, - _index, - options -) => - `${options.xhtmlOut - ? '
\n' - : '
\n' - }
\n
    \n`; - -const renderFootnoteBlockClose = () => "
\n
\n"; - -const renderFootnoteOpen = ( - tokens, - index, - options, - env, - self -) => - `
  • `; - -const renderFootnoteClose = () => "
  • \n"; - -const renderFootnoteAnchor = ( - tokens, - index, - options, - env, - self -) => { - return `
    \u21a9\uFE0E`; -}; - -// Process footnote block definition -const footnoteDef = ( - state, - startLine, - endLine, - silent -) => { - let pos; - let token; - let offset; - let ch; - const start = state.bMarks[startLine] + state.tShift[startLine]; - const max = state.eMarks[startLine]; - - // line should be at least 5 chars - "[^x]:" - if (start + 4 > max) return false; - - if (state.src.charAt(start) !== "[") return false; - - if (state.src.charAt(start + 1) !== "^") return false; - - for (pos = start + 2; pos < max; pos++) { - if (state.src.charAt(pos) === " ") return false; - if (state.src.charAt(pos) === "]") break; - } - - // no empty footnote labels - if (pos === start + 2) return false; - - if (pos + 1 >= max || state.src.charAt(++pos) !== ":") return false; - - if (silent) return true; - pos += 1; - - if (!state.env.footnotes) state.env.footnotes = {}; - if (!state.env.footnotes.refs) state.env.footnotes.refs = {}; - const label = state.src.slice(start + 2, pos - 2); - - state.env.footnotes.refs[`:${label}`] = -1; - - token = new Token("footnoteReferenceOpen", "", 1); - token.meta = { label }; - token.level = state.level++; - state.tokens.push(token); - - const oldBMark = state.bMarks[startLine]; - const oldTShift = state.tShift[startLine]; - const oldSCount = state.sCount[startLine]; - const oldParentType = state.parentType; - const posAfterColon = pos; - const initial = - state.sCount[startLine] + - pos - - (state.bMarks[startLine] + state.tShift[startLine]); - - offset = - state.sCount[startLine] + - pos - - (state.bMarks[startLine] + state.tShift[startLine]); - - while (pos < max) { - ch = state.src.charAt(pos); - - if (ch === "\t") offset += 4 - (offset % 4); - else if (ch === " ") offset += 1; - else break; - - pos += 1; - } - - state.tShift[startLine] = pos - posAfterColon; - state.sCount[startLine] = offset - initial; - - state.bMarks[startLine] = posAfterColon; - state.blkIndent += 4; - state.parentType = "footnote"; - - if (state.sCount[startLine] < state.blkIndent) - state.sCount[startLine] += state.blkIndent; - - state.md.block.tokenize(state, startLine, endLine); - - state.parentType = oldParentType; - state.blkIndent -= 4; - state.tShift[startLine] = oldTShift; - state.sCount[startLine] = oldSCount; - state.bMarks[startLine] = oldBMark; - - token = new Token("footnoteReferenceClose", "", -1); - token.level = --state.level; - state.tokens.push(token); - - return true; -}; - -// Process inline footnotes (^[...]) -const footnoteInline = (state, silent) => { - let footnoteId; - let token; - let tokens; - const max = state.posMax; - const start = state.pos; - - if (start + 2 >= max) return false; - if (state.src.charAt(start) !== "^") return false; - - if (state.src.charAt(start + 1) !== "[") return false; - - const labelStart = start + 2; - const labelEnd = parseLinkLabel(state, start + 1); - - // parser failed to find ']', so it’s not a valid note - if (labelEnd < 0) return false; - - /* - * We found the end of the link, and know for a fact it’s a valid link; - * so all that’s left to do is to call tokenizer. - * - */ - if (!silent) { - if (!state.env.footnotes) state.env.footnotes = {}; - if (!state.env.footnotes.list) state.env.footnotes.list = []; - footnoteId = state.env.footnotes.list.length; - - state.md.inline.parse( - state.src.slice(labelStart, labelEnd), - state.md, - state.env, - (tokens = []) - ); - - token = state.push("footnoteRef", "", 0); - token.meta = { id: footnoteId }; - - state.env.footnotes.list[footnoteId] = { - content: state.src.slice(labelStart, labelEnd), - tokens, - }; - } - - state.pos = labelEnd + 1; - state.posMax = max; - - return true; -}; - -// Process footnote references ([^...]) -const footnoteRef = (state, silent) => { - let pos; - let footnoteId; - let footnoteSubId; - let token; - const max = state.posMax; - const start = state.pos; - - // should be at least 4 chars - "[^x]" - if (start + 3 > max) return false; - - if (!state.env.footnotes || !state.env.footnotes.refs) return false; - if (state.src.charAt(start) !== "[") return false; - - if (state.src.charAt(start + 1) !== "^") return false; - - for (pos = start + 2; pos < max; pos++) { - if (state.src.charAt(pos) === " ") return false; - if (state.src.charAt(pos) === "\n") return false; - if (state.src.charAt(pos) === "]") break; - } - - if (pos === start + 2) return false; // no empty footnote labels - if (pos >= max) return false; - - pos += 1; - - const label = state.src.slice(start + 2, pos - 1); - - if (typeof state.env.footnotes.refs[`:${label}`] === "undefined") - return false; - - if (!silent) { - if (!state.env.footnotes.list) state.env.footnotes.list = []; - - if (state.env.footnotes.refs[`:${label}`] < 0) { - footnoteId = state.env.footnotes.list.length; - state.env.footnotes.list[footnoteId] = { label, count: 0 }; - state.env.footnotes.refs[`:${label}`] = footnoteId; - } else footnoteId = state.env.footnotes.refs[`:${label}`]; - - footnoteSubId = state.env.footnotes.list[footnoteId].count; - state.env.footnotes.list[footnoteId].count = - (state.env.footnotes.list[footnoteId].count) + 1; - - token = state.push("footnoteRef", "", 0); - token.meta = { id: footnoteId, subId: footnoteSubId, label }; - } - - state.pos = pos; - state.posMax = max; - - return true; -}; - -// Glue footnote tokens to end of token stream -const footnoteTail = (state) => { - let lastParagraph - let token; - let tokens; - let current; - let currentLabel; - let insideRef = false; - const refTokens = {}; - - if (!state.env.footnotes) return false; - - state.tokens = state.tokens.filter((stateToken) => { - if (stateToken.type === "footnoteReferenceOpen") { - insideRef = true; - current = []; - currentLabel = stateToken.meta.label; - - return false; - } - if (stateToken.type === "footnoteReferenceClose") { - insideRef = false; - // prepend ':' to avoid conflict with Object.prototype members - refTokens[`:${currentLabel}`] = current; - - return false; - } - if (insideRef) current.push(stateToken); - - return !insideRef; - }); - - if (!state.env.footnotes.list) return false; - const { list } = state.env.footnotes; - - token = new Token("footnoteBlockOpen", "", 1); - state.tokens.push(token); - - for (let i = 0, { length } = list; i < length; i++) { - token = new Token("footnoteOpen", "", 1); - token.meta = { id: i, label: list[i].label }; - state.tokens.push(token); - - if (list[i].tokens) { - tokens = []; - - token = new Token("paragraph_open", "p", 1); - token.block = true; - tokens.push(token); - - token = new Token("inline", "", 0); - token.children = list[i].tokens - token.content = list[i].content - tokens.push(token); - - token = new Token("paragraph_close", "p", -1); - token.block = true; - tokens.push(token); - } else if (list[i].label) tokens = refTokens[`:${list[i].label}`]; - else tokens = []; - - if (tokens) state.tokens = state.tokens.concat(tokens); - if (state.tokens[state.tokens.length - 1].type === "paragraph_close") - lastParagraph = state.tokens.pop() || null; - else lastParagraph = null; - - for ( - let j = 0; - j < (Number(list[i].count) > 0 ? (list[i].count) : 1); - j++ - ) { - token = new Token("footnoteAnchor", "", 0); - token.meta = { id: i, subId: j, label: list[i].label }; - state.tokens.push(token); - } - - if (lastParagraph) state.tokens.push(lastParagraph); - - token = new Token("footnoteClose", "", -1); - state.tokens.push(token); - } - - token = new Token("footnoteBlockClose", "", -1); - state.tokens.push(token); - - return true; -}; - -module.exports = (md) => { - md.renderer.rules["footnoteRef"] = renderFootnoteRef; - md.renderer.rules["footnoteBlockOpen"] = renderFootnoteBlockOpen; - md.renderer.rules["footnoteBlockClose"] = renderFootnoteBlockClose; - md.renderer.rules["footnoteOpen"] = renderFootnoteOpen; - md.renderer.rules["footnoteClose"] = renderFootnoteClose; - md.renderer.rules["footnoteAnchor"] = renderFootnoteAnchor; - - // helpers (only used in other rules, no tokens are attached to those) - // helpers (only used in other rules, no tokens are attached to those) - md.renderer.rules["footnoteCaption"] = renderFootnoteCaption; - md.renderer.rules["footnoteAnchorName"] = renderFootnoteAnchorName; - - md.block.ruler.before("reference", "footnoteDef", footnoteDef, { - alt: ["paragraph", "reference"], - }); - md.inline.ruler.after("image", "footnoteInline", footnoteInline); - md.inline.ruler.after("footnoteInline", "footnoteRef", footnoteRef); - md.core.ruler.after("inline", "footnoteTail", footnoteTail); -}; diff --git a/docs/.vuepress/plugins/fulltext-search/components/SearchBox.vue b/docs/.vuepress/plugins/fulltext-search/components/SearchBox.vue deleted file mode 100644 index 3e44a6be..00000000 --- a/docs/.vuepress/plugins/fulltext-search/components/SearchBox.vue +++ /dev/null @@ -1,529 +0,0 @@ - - - - - - diff --git a/docs/.vuepress/plugins/fulltext-search/index.js b/docs/.vuepress/plugins/fulltext-search/index.js deleted file mode 100644 index 21715159..00000000 --- a/docs/.vuepress/plugins/fulltext-search/index.js +++ /dev/null @@ -1,131 +0,0 @@ -const { path } = require('@vuepress/shared-utils') -const { htmlToText } = require('html-to-text') -const _ = require('lodash') - -let customTitles = null - -let SEARCH_DATA = {} -module.exports = (options, ctx, globalCtx) => ({ - name: 'fulltext-search', - extendPageData ($page) { - try { - const { html } = $page._context.markdown.render($page._strippedContent || '') - if (!customTitles) customTitles = getCustomTitles(globalCtx) - - const plaintext = htmlToText(html, { - wordwrap: null, - hideLinkHrefIfSameAsText: true, - ignoreImage: true, - ignoreHref: true, - uppercaseHeadings: false, - tables: true, - }) - - for (const h of $page.headers || []) { - const titlePlaintext = $page._context.markdown.renderInline(h.title) - h.normalizedTitle = normalizeText(titlePlaintext) - h.charIndex = plaintext.indexOf(titlePlaintext) - if (h.charIndex === -1) h.charIndex = null - } - - SEARCH_DATA[$page.key] = { - charsets: getCharsets(plaintext), - title: $page.title || customTitles[normalizePath($page.path)], - headersStr: $page.headers ? $page.headers.map(h => h.title).join(' ') : null, - content: plaintext, - normalizedContent: normalizeText(plaintext) - } - - // Take title from sidebar if it's missing on the page itself - if (!$page.title) $page.title = customTitles[normalizePath($page.path)] - } catch (e) { - // incorrect markdown - console.error('Error when applying fulltext-search plugin:', e) - } - }, - alias: { - '@SearchBox': path.resolve(__dirname, 'components/SearchBox.vue'), - }, - clientDynamicModules () { - return { - name: 'searchData.js', - content: `export const SEARCH_DATA = ${JSON.stringify(SEARCH_DATA)}` - } - }, - define () { - return { - OPTIONS: options, - } - }, -}) - -function normalizeText (text) { - return text - .toLowerCase() - .normalize('NFD') - .replace(/[\u0300-\u036f]/g, '') -} - -function getCustomTitles (globalCtx) { - try { - const sidebarConfig = _.get(globalCtx, '_pluginContext.themeConfig.sidebar') - if (!sidebarConfig) return {} - - let sidebars = [sidebarConfig] - if (_.isPlainObject(sidebarConfig)) sidebars = _.values(sidebarConfig) - - sidebars = sidebars.filter(sb => _.isArray(sb)) - - const result = {} - for (const sb of sidebars) { - for (const page of sb) { - if (_.isArray(page)) { - const [pathWithExtension, title] = page - const normalizedPath = normalizePath(pathWithExtension) - if (normalizedPath && title) result[normalizedPath] = title - continue - } - if (!_.isObjectLike(page)) continue - - if (page.relativePath && page.title) { - const normalizedPath = normalizePath(page.relativePath) - if (normalizedPath) result[normalizedPath] = page.title - } - if (page.children) { - for (const c of page.children) { - if (_.isArray(c)) { - const [pathWithExtension, title] = c - const normalizedPath = normalizePath(pathWithExtension) - if (normalizedPath && title) result[normalizedPath] = title - } - } - } - } - } - return result - } catch (e) { - console.error('[fulltext-search] Error while getting sidebar paths:', e) - return {} - } -} - -function normalizePath (rawPath) { - if (!rawPath) return null - try { - const parsedPath = path.parse(rawPath) - return path.join(parsedPath.dir, parsedPath.name) - } catch (e) { - console.error(`[fulltext-search] Error while normalizing path ${rawPath}:`, e) - return null - } -} - -function getCharsets (text) { - const cyrillicRegex = /[\u0400-\u04FF]/iu - const cjkRegex = /[\u3131-\u314e|\u314f-\u3163|\uac00-\ud7a3]|[\u4E00-\u9FCC\u3400-\u4DB5\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\ud840-\ud868][\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|[\ud86a-\ud86c][\udc00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d]|[\u3041-\u3096]|[\u30A1-\u30FA]/iu - - const result = {} - if (cyrillicRegex.test(text)) result.cyrillic = true - if (cjkRegex.test(text)) result.cjk = true - return result -} diff --git a/docs/.vuepress/plugins/fulltext-search/services/flexsearchSvc.js b/docs/.vuepress/plugins/fulltext-search/services/flexsearchSvc.js deleted file mode 100644 index cee65311..00000000 --- a/docs/.vuepress/plugins/fulltext-search/services/flexsearchSvc.js +++ /dev/null @@ -1,252 +0,0 @@ -import FlexSearch from 'flexsearch' -// Use when flexSearch v0.7.0 will be available -// import cyrillicCharset from 'flexsearch/dist/lang/cyrillic/default.min.js' -// import cjkCharset from 'flexsearch/dist/lang/cjk/default.min.js' -import _ from 'lodash' - -let index = null -let cyrillicIndex = null -let cjkIndex = null -let pagesByPath = null - -const cjkRegex = /[\u3131-\u314e|\u314f-\u3163|\uac00-\ud7a3]|[\u4E00-\u9FCC\u3400-\u4DB5\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\ud840-\ud868][\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|[\ud86a-\ud86c][\udc00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d]|[\u3041-\u3096]|[\u30A1-\u30FA]/giu - -let init = false -export default { - buildIndex (allPages, options, searchData) { - if (init == true) { - return false - } - init = true - const pages = allPages.filter(p => !p.frontmatter || p.frontmatter.search !== false).reverse().map(item => { - return { - ...item, - ...searchData[item.key] - } - }) - const indexSettings = { - encode: options.encode || 'simple', - tokenize: options.tokenize || 'forward', - split: options.split || /\W+/, - async: true, - doc: { - id: 'key', - // here you choose the fields you want to index. - // for me I will search in the title and the content of each page. - // of course I stripped the content before so I use the plain text content not the markdown text - field: ['title', 'headersStr', 'content'], - }, - } - index = new FlexSearch(indexSettings) - index.add(pages) - - const cyrillicPages = pages.filter(p => p.charsets.cyrillic) - const cjkPages = pages.filter(p => p.charsets.cjk) - - if (cyrillicPages.length) { - cyrillicIndex = new FlexSearch({ - ...indexSettings, - encode: 'icase', - split: /\s+/, - tokenize: 'forward', - }) - cyrillicIndex.add(cyrillicPages) - } - if (cjkPages.length) { - cjkIndex = new FlexSearch({ - ...indexSettings, - encode: false, - tokenize: function (str) { - const cjkWords = [] - let m = null - do { - m = cjkRegex.exec(str) - if (m) { - cjkWords.push(m[0]) - } - } while (m) - return cjkWords - }, - }) - cjkIndex.add(cjkPages) - } - pagesByPath = _.keyBy(pages, 'path') - }, - async match (queryString, queryTerms, limit = 7) { - const searchParams = [ - { - field: 'title', - query: queryString, - limit, - boost: 10, - }, - { - field: 'headersStr', - query: queryString, - limit, - boost: 7, - }, - { - field: 'content', - query: queryString, - limit, - }, - ] - const searchResult1 = await index.search(searchParams) - const searchResult2 = cyrillicIndex ? await cyrillicIndex.search(searchParams) : [] - const searchResult3 = cjkIndex ? await cjkIndex.search(searchParams) : [] - const searchResult = _.uniqBy([...searchResult1, ...searchResult2, ...searchResult3], 'path') - const result = searchResult.map(page => ({ - ...page, - parentPageTitle: getParentPageTitle(page), - ...getAdditionalInfo(page, normalizeString(queryString), queryTerms), - })) - - const resultByParent = _.groupBy(result, 'parentPageTitle') - return _.values(resultByParent) - .map(arr => - arr.map((x, i) => { - if (i === 0) return x - return { ...x, parentPageTitle: null } - }), - ) - .flat() - }, - normalizeString, -} - -function getParentPageTitle (page) { - const pathParts = page.path.split('/') - let parentPagePath = '/' - if (pathParts[1]) parentPagePath = `/${pathParts[1]}/` - - const parentPage = pagesByPath[parentPagePath] || page - return parentPage.title -} - -function getAdditionalInfo (page, queryString, queryTerms) { - const query = queryString.toLowerCase() - const match = getMatch(page, query, queryTerms) - if (!match) - return { - ...getFullHeading(page), - slug: '', - contentStr: null, - } - - if (match.headerIndex != null) { - // header match - return { - ...getFullHeading(page, match.headerIndex, match), - slug: '#' + page.headers[match.headerIndex].slug, - contentStr: null, - } - } - - // content match - let headerIndex = _.findLastIndex(page.headers || [], h => h.charIndex != null && h.charIndex < match.charIndex) - if (headerIndex === -1) headerIndex = null - - return { - ...getFullHeading(page, headerIndex), - slug: headerIndex == null ? '' : '#' + page.headers[headerIndex].slug, - ...getContentStr(page, match), - } -} - -function getFullHeading (page, headerIndex, match) { - if (headerIndex == null) return { headingStr: page.title } - const headersPath = [] - while (headerIndex != null) { - const header = page.headers[headerIndex] - headersPath.unshift(header) - headerIndex = _.findLastIndex(page.headers, h => h.level === header.level - 1, headerIndex - 1) - if (headerIndex === -1) headerIndex = null - } - - const headingStr = headersPath.map(h => h.title).join(' > ') - const prefixPath = headersPath.slice(0, -1) - const prefixLength = _.sum(prefixPath.map(p => (p.title || '').length)) + prefixPath.length * 3 - const headingHighlight = match && match.headerIndex != null && [match.charIndex + prefixLength, match.termLength] - return { headingStr, headingHighlight } -} - -function getMatch (page, query, terms) { - const matches = terms - .map(t => { - return getHeaderMatch(page, t) || getContentMatch(page, t) - }) - .filter(m => m) - if (matches.length === 0) return null - - if (matches.every(m => m.headerIndex != null)) { - return getHeaderMatch(page, query) || matches[0] - } - - return getContentMatch(page, query) || matches.find(m => m.headerIndex == null) -} - -function getHeaderMatch (page, term) { - if (!page.headers) return null - for (let i = 0; i < page.headers.length; i++) { - const h = page.headers[i] - const charIndex = h.normalizedTitle.indexOf(term) - if (charIndex === -1) continue - return { - headerIndex: i, - charIndex, - termLength: term.length, - } - } - return null -} - -function getContentMatch (page, term) { - if (!page.normalizedContent) return null - const charIndex = page.normalizedContent.indexOf(term) - if (charIndex === -1) return null - - return { headerIndex: null, charIndex, termLength: term.length } -} - -function getContentStr (page, match) { - const snippetLength = 120 - const { charIndex, termLength } = match - - let lineStartIndex = page.content.lastIndexOf('\n', charIndex) - let lineEndIndex = page.content.indexOf('\n', charIndex) - - if (lineStartIndex === -1) lineStartIndex = 0 - if (lineEndIndex === -1) lineEndIndex = page.content.length - - const line = page.content.slice(lineStartIndex, lineEndIndex) - const lineCharIndex = charIndex - lineStartIndex - const contentHighlight = [lineCharIndex, termLength] - - if (snippetLength >= line.length) return { contentStr: line, contentHighlight } - - const additionalCharactersFromStart = _.round((snippetLength - termLength) / 2) - const snippetStart = Math.max(lineCharIndex - additionalCharactersFromStart, 0) - const snippetEnd = Math.min(snippetStart + snippetLength, line.length) - let contentStr = line.slice(snippetStart, snippetEnd) - contentHighlight[0] = contentHighlight[0] - snippetStart - - if (snippetStart > 0) { - contentStr = '...' + contentStr - contentHighlight[0] = contentHighlight[0] + 3 - } - if (snippetEnd < line.length) contentStr = contentStr + '...' - return { - contentStr, - contentHighlight, - } -} - -function normalizeString (str) { - if (!str) return str - return str - .trim() - .toLowerCase() - .normalize('NFD') - .replace(/[\u0300-\u036f]/g, '') -} diff --git a/docs/.vuepress/plugins/love-me/index.js b/docs/.vuepress/plugins/love-me/index.js deleted file mode 100644 index dd686c46..00000000 --- a/docs/.vuepress/plugins/love-me/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { resolve } =require('path') -const LoveMyPlugin = (options = {}) => ({ - define() { - const COLOR = - options.color || - "rgb(" + - ~~(255 * Math.random()) + - "," + - ~~(255 * Math.random()) + - "," + - ~~(255 * Math.random()) + - ")"; - const EXCLUDECLASS = options.excludeClassName || ""; - return { COLOR, EXCLUDECLASS }; - }, - enhanceAppFiles: resolve(__dirname, 'love-me.js'), -}); -module.exports = LoveMyPlugin; diff --git a/docs/.vuepress/plugins/love-me/love-me.js b/docs/.vuepress/plugins/love-me/love-me.js deleted file mode 100644 index f93855e6..00000000 --- a/docs/.vuepress/plugins/love-me/love-me.js +++ /dev/null @@ -1,62 +0,0 @@ -export default () => { - if (typeof window !== "undefined") { - (function(e, t, a) { - function r() { - for (var e = 0; e < s.length; e++) s[e].alpha <= 0 ? (t.body.removeChild(s[e].el), s.splice(e, 1)) : (s[e].y--, s[e].scale += .004, s[e].alpha -= .013, s[e].el.style.cssText = "left:" + s[e].x + "px;top:" + s[e].y + "px;opacity:" + s[e].alpha + ";transform:scale(" + s[e].scale + "," + s[e].scale + ") rotate(45deg);background:" + s[e].color + ";z-index:99999"); - requestAnimationFrame(r) - } - function n() { - var t = "function" == typeof e.onclick && e.onclick; - - e.onclick = function(e) { - // 过滤指定元素 - let mark = true; - EXCLUDECLASS && e.path && e.path.forEach((item) =>{ - if(item.nodeType === 1) { - typeof item.className === 'string' && item.className.indexOf(EXCLUDECLASS) > -1 ? mark = false : '' - } - }) - - if(mark) { - t && t(), - o(e) - } - } - } - function o(e) { - var a = t.createElement("div"); - a.className = "heart", - s.push({ - el: a, - x: e.clientX - 5, - y: e.clientY - 5, - scale: 1, - alpha: 1, - color: COLOR - }), - t.body.appendChild(a) - } - function i(e) { - var a = t.createElement("style"); - a.type = "text/css"; - try { - a.appendChild(t.createTextNode(e)) - } catch(t) { - a.styleSheet.cssText = e - } - t.getElementsByTagName("head")[0].appendChild(a) - } - // function c() { - // return "rgb(" + ~~ (255 * Math.random()) + "," + ~~ (255 * Math.random()) + "," + ~~ (255 * Math.random()) + ")" - // } - var s = []; - e.requestAnimationFrame = e.requestAnimationFrame || e.webkitRequestAnimationFrame || e.mozRequestAnimationFrame || e.oRequestAnimationFrame || e.msRequestAnimationFrame || - function(e) { - setTimeout(e, 1e3 / 60) - }, - i(".heart{width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}.heart:after,.heart:before{content: '';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 50%;-moz-border-radius: 50%;position: fixed;}.heart:after{top: -5px;}.heart:before{left: -5px;}"), - n(), - r() - })(window, document) - } -} \ No newline at end of file diff --git a/docs/.vuepress/plugins/mermaidjs/index.js b/docs/.vuepress/plugins/mermaidjs/index.js deleted file mode 100644 index c9bcf047..00000000 --- a/docs/.vuepress/plugins/mermaidjs/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { resolve } =require('path') - -module.exports = (options, ctx) => { - return { - name: "vuepress-plugin-mermaidjs", - define: { - MERMAID_OPTIONS: options, - }, - extendMarkdown(md) { - md.use(require("./markdownItPlugin")); - }, - enhanceAppFiles: resolve(__dirname, 'mermaidjs.js'), - }; -}; diff --git a/docs/.vuepress/plugins/mermaidjs/loading.vue b/docs/.vuepress/plugins/mermaidjs/loading.vue deleted file mode 100644 index fa3b3eb4..00000000 --- a/docs/.vuepress/plugins/mermaidjs/loading.vue +++ /dev/null @@ -1,46 +0,0 @@ - - - - - diff --git a/docs/.vuepress/plugins/mermaidjs/markdownItFence.js b/docs/.vuepress/plugins/mermaidjs/markdownItFence.js deleted file mode 100644 index 5d61176d..00000000 --- a/docs/.vuepress/plugins/mermaidjs/markdownItFence.js +++ /dev/null @@ -1,94 +0,0 @@ -module.exports = function markdownItFence(md, name, opts) { - - function defaultValidate(params) { - return params.trim().split(' ', 2)[0] === name - } - - const defaultRender = (tokens, idx, _options, env, self) => { - if (tokens[idx].nesting === 1) { - tokens[idx].attrPush(['class', name]) - } - return self.renderToken(tokens, idx, _options) - } - - const options = Object.assign({ - validate: defaultValidate, - render: defaultRender - }, opts) - - const fence = (state, startLine, endLine, silent) => { - const optionMarker = options.marker || '`' - let pos = state.bMarks[startLine] + state.tShift[startLine] - let max = state.eMarks[startLine] - let haveEndMarker = false - - if (state.sCount[startLine] - state.blkIndent >= 4) return false - - if (pos + 3 > max) return false - - const marker = state.src.charCodeAt(pos) - - if (marker !== optionMarker.charCodeAt(0)) return false - - let mem = pos - pos = state.skipChars(pos, marker) - - let len = pos - mem - - if (len < 3) return false - - const markup = state.src.slice(mem, pos) - const params = state.src.slice(pos, max) - - if (params.indexOf(String.fromCharCode(marker)) >= 0) return false - - // Since start is found, we can report success here in validation mode - if (silent) { return true; } - - let nextLine = startLine - - for (;;) { - nextLine++ - if (nextLine >= endLine) break - - pos = mem = state.bMarks[nextLine] + state.tShift[nextLine] - max = state.eMarks[nextLine] - - if (pos < max && state.sCount[nextLine] < state.blkIndent) break - if (state.src.charCodeAt(pos) !== marker) continue - if (state.sCount[nextLine] - state.blkIndent >= 4) continue - - pos = state.skipChars(pos, marker) - - if (pos - mem < len) continue - - pos = state.skipSpaces(pos) - - if (pos < max) continue - - haveEndMarker = true - - break - } - - len = state.sCount[startLine] - - state.line = nextLine + (haveEndMarker ? 1 : 0) - - let token - if (options.validate(params)) token = state.push(name, 'div', 0) - else token = state.push('fence', 'code', 0) - token.info = params - token.content = state.getLines(startLine + 1, nextLine, len, true) - token.markup = markup - token.map = [startLine, state.line] - - return true - } - - md.block.ruler.before('fence', name, fence, { - alt: ['paragraph', 'reference', 'blockquote', 'list'] - }) - md.renderer.rules[name] = options.render - } - \ No newline at end of file diff --git a/docs/.vuepress/plugins/mermaidjs/markdownItPlugin.js b/docs/.vuepress/plugins/mermaidjs/markdownItPlugin.js deleted file mode 100644 index c3c46573..00000000 --- a/docs/.vuepress/plugins/mermaidjs/markdownItPlugin.js +++ /dev/null @@ -1,19 +0,0 @@ -const { hash } = require('@vuepress/shared-utils') -const markdownItFence = require('./markdownItFence') - -module.exports = function mermaidjsPlugin (md) { - return markdownItFence(md, 'mermaid-fence', { - render: (tokens, idx, _options, env, self) => { - const token = tokens[idx] - const key = `mermaid_${hash(idx)}` - const { content } = token - - md.$dataBlock[key] = content - - return `` - }, - validate: (params) => { - return params.trim().split(' ').includes('mermaid') - } - }) -} diff --git a/docs/.vuepress/plugins/mermaidjs/mermaidjs.js b/docs/.vuepress/plugins/mermaidjs/mermaidjs.js deleted file mode 100644 index 32b71d27..00000000 --- a/docs/.vuepress/plugins/mermaidjs/mermaidjs.js +++ /dev/null @@ -1,90 +0,0 @@ -import Loading from './loading.vue' - -const Mermaid = { - name: 'Mermaid', - props: { - id: { - type: String, - required: false, - default () { - return 'diagram_' + Date.now() - } - }, - graph: { - type: String, - required: false - } - }, - data () { - return { - rendered: false - // id: Math.random().toString(16) - } - }, - computed: { - graphData () { - if (this.graph) { - return this.graph - } - - return this.$slots.default[0].text - } - }, - render (h) { - if (this.rendered === false) { - return h('Loading') - } - - return h('div', { - class: ['mermaid-diagram'], - domProps: { - id: this.id, - style: 'width: 100%' - } - }) - }, - mounted () { - import('mermaid/dist/mermaid.min').then(mermaid => { - mermaid.initialize({ startOnLoad: false, ...MERMAID_OPTIONS }) - mermaid.render( - this.id, - this.graphData, - (svg) => { - const reomve = appendCanvasChild('canvas_' + this.id) - svg = addHeightSvg(svg) - window._YS_RENDER_IMAGE(svg, 'canvas_' + this.id, svg => { - this.rendered = true - this.$nextTick(() => { - document.getElementById(this.id).appendChild(svg) - }) - reomve() - }) - }, - document.querySelector('.mermaid-contianer') - ) - }) - }, - components: { - Loading - } -} - -export default ({ Vue }) => { - Vue.component(Mermaid.name, Mermaid) -} - -function addHeightSvg (svg = '') { - let index = svg.indexOf('style="max-width') - index = index + 'style="'.length - return svg.slice(0, index) + 'height: auto;' + svg.slice(index) -} - -function appendCanvasChild (id) { - const canvas = document.createElement('canvas') - canvas.id = id - canvas.style = 'position: absolute;top: -9999px; left: -9999px;' - document.body.appendChild(canvas) - return () => { - canvas.remove() - } -} \ No newline at end of file diff --git a/docs/.vuepress/plugins/one-click-copy/bin/Message.js b/docs/.vuepress/plugins/one-click-copy/bin/Message.js deleted file mode 100644 index ef82bee2..00000000 --- a/docs/.vuepress/plugins/one-click-copy/bin/Message.js +++ /dev/null @@ -1,49 +0,0 @@ -import './assets/css/message.css' -export default class Message { - constructor() { - const containerId = 'message-container'; - this.containerEl = document.getElementById(containerId); - - if (!this.containerEl) { - this.containerEl = document.createElement('div'); - this.containerEl.id = containerId; - document.body.appendChild(this.containerEl); - } - } - - show({ - text = '', - duration = 3000 - }) { - let messageEl = document.createElement('div'); - messageEl.className = 'message move-in'; - messageEl.innerHTML = ` - - - -
    ${text}
    - `; - this.containerEl.appendChild(messageEl); - - if (duration > 0) { - // 用setTimeout来做一个定时器 - setTimeout(() => { - this.close(messageEl); - }, duration); - } - } - - close(messageEl) { - // 首先把move-in这个弹出动画类给移除掉,要不然会有问题,可以自己测试下 - messageEl.className = messageEl.className.replace('move-in', ''); - // 增加一个move-out类 - messageEl.className += 'move-out'; - - // 这个地方是监听动画结束事件,在动画结束后把消息从dom树中移除。 - // 如果你是在增加move-out后直接调用messageEl.remove,那么你不会看到任何动画效果 - messageEl.addEventListener('animationend', () => { - // Element对象内部有一个remove方法,调用之后可以将该元素从dom树种移除! - messageEl.remove(); - }); - } -} diff --git a/docs/.vuepress/plugins/one-click-copy/bin/assets/css/message.css b/docs/.vuepress/plugins/one-click-copy/bin/assets/css/message.css deleted file mode 100644 index a4c2f3fb..00000000 --- a/docs/.vuepress/plugins/one-click-copy/bin/assets/css/message.css +++ /dev/null @@ -1,60 +0,0 @@ -@keyframes message-move-in { - 0% { - opacity: 0; - transform: translateY(-100%); - } - - 100% { - opacity: 1; - transform: translateY(0); - } -} - -#message-container .message.move-in { - animation: message-move-in 0.3s ease-in-out; -} - -@keyframes message-move-out { - 0% { - opacity: 1; - transform: translateY(0); - } - - 100% { - opacity: 0; - transform: translateY(-100%); - } -} - -#message-container .message.move-out { - animation: message-move-out 0.3s ease-in-out; - animation-fill-mode: forwards; -} - -#message-container .message { - background: #fff; - margin: 10px 0; - padding: 0 10px; - height: 40px; - box-shadow: 0 0 10px 0 #ccc; - font-size: 14px; - border-radius: 3px; - display: flex; - align-items: center; - transition: height 0.2s ease-in-out, margin 0.2s ease-in-out; -} - -#message-container { - position: fixed; - left: 0; - top: 100px; - right: 0; - display: flex; - flex-direction: column; - align-items: center; -} - -#message-container .message .text { - color: #333; - padding: 0 20px 0 5px; -} diff --git a/docs/.vuepress/plugins/one-click-copy/bin/assets/css/style.css b/docs/.vuepress/plugins/one-click-copy/bin/assets/css/style.css deleted file mode 100644 index 01f32c3a..00000000 --- a/docs/.vuepress/plugins/one-click-copy/bin/assets/css/style.css +++ /dev/null @@ -1,48 +0,0 @@ -.code-copy { - color: #aaa; - fill: #aaa; - font-size: 14px; - display: inline-block; - cursor: pointer; -} - -div[class*="language-"] .code-copy, -div[class*="aside-code"] .code-copy { - position: absolute; - z-index: 1000; - top: 7px; - right: 35px; - opacity: 0; - font-size: 16px; -} - -div[class*="language-"]:hover .code-copy, -div[class*="aside-code"]:hover .code-copy { - opacity: 1; -} - -.content pre, -.content pre[class*="language-"] { - overflow-y: hidden; -} - -div[class*="language-"] pre, -div[class*="language-"] pre[class*="language-"] { - position: static !important; -} - -div[class~="language-text"]:before { - content: "text"; -} - -div[class~="language-yml"]:before { - content: "yml"; -} - -div[class*="language-"] pre { - user-select: text; -} - -p code { - user-select: all; -} diff --git a/docs/.vuepress/plugins/one-click-copy/bin/clientRootMixin.js b/docs/.vuepress/plugins/one-click-copy/bin/clientRootMixin.js deleted file mode 100644 index 1c0ae2c6..00000000 --- a/docs/.vuepress/plugins/one-click-copy/bin/clientRootMixin.js +++ /dev/null @@ -1,73 +0,0 @@ -import './assets/css/style.css' -import Message from './Message' - -export default { - mounted () { - const isMobile = !!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( - navigator.userAgent - ); - if (!isMobile) { - this.updateCopy() - } - }, - - updated () { - const isMobile = !!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( - navigator.userAgent - ); - if (!isMobile && typeof window !== 'undefined') { - this.updateCopy() - } - }, - - methods: { - updateCopy () { - setTimeout(() => { - if (typeof COPY_SELECTOR === 'string') { - document.querySelectorAll(COPY_SELECTOR).forEach(this.generateCopyButton) - } else if (COPY_SELECTOR instanceof Array || Array.isArray(COPY_SELECTOR)) { - COPY_SELECTOR.forEach(item => { - document.querySelectorAll(item).forEach(this.generateCopyButton) - }) - } - }, 1000) - }, - generateCopyButton (parent) { - parent = parent.parentNode - if (parent.classList.contains('codecopy-enabled')) return - const copyElement = document.createElement('i') - copyElement.className = 'code-copy' - copyElement.innerHTML = '' - copyElement.title = window.location.href.includes('/zh/') ? ZH_TOOL_TIP_MESSAGE : EN_TOOL_TIP_MESSAGE, - copyElement.addEventListener('click', () => { - this.copyToClipboard(parent.querySelector('pre').innerText) - }) - parent.appendChild(copyElement) - parent.classList.add('codecopy-enabled') - }, - copyToClipboard (str) { - const el = document.createElement('textarea') - el.value = str - el.setAttribute('readonly', '') - el.style.position = 'absolute' - el.style.left = '-9999px' - document.body.appendChild(el) - const selected = - document.getSelection().rangeCount > 0 ? - document.getSelection().getRangeAt(0) : - false - el.select() - document.execCommand('copy') - const message = new Message() - message.show({ - text: window.location.href.includes('/zh/') ? ZH_COPY_MESSAGE : EN_COPY_MESSAGE, - duration: DURATION - }) - document.body.removeChild(el) - if (selected) { - document.getSelection().removeAllRanges() - document.getSelection().addRange(selected) - } - } - } -} diff --git a/docs/.vuepress/plugins/one-click-copy/index.js b/docs/.vuepress/plugins/one-click-copy/index.js deleted file mode 100644 index d6b4839d..00000000 --- a/docs/.vuepress/plugins/one-click-copy/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { - resolve -} = require('path') - -module.exports = (options, context) => ({ - define () { - const { - copySelector, - duration, - en, - zh - } = options - - return { - COPY_SELECTOR: copySelector || ['div[class*="language-"] pre', 'div[class*="aside-code"] aside'], - EN_COPY_MESSAGE: en.copyMessage || 'Copied successfully!', - ZH_COPY_MESSAGE: zh.copyMessage || 'Copied successfully!', - EN_TOOL_TIP_MESSAGE: en.toolTipMessage || 'Copy to clipboard', - ZH_TOOL_TIP_MESSAGE: zh.toolTipMessage || 'Copy to clipboard', - DURATION: duration || 3000 - } - }, - - clientRootMixin: resolve(__dirname, './bin/clientRootMixin.js') -}) diff --git a/docs/.vuepress/plugins/todo/index.js b/docs/.vuepress/plugins/todo/index.js deleted file mode 100644 index 4416911d..00000000 --- a/docs/.vuepress/plugins/todo/index.js +++ /dev/null @@ -1,90 +0,0 @@ -// Modified from https://github.com/revin/markdown-it-task-lists/blob/master/index.js - -/* eslint-disable */ -module.exports = function (md, options = {}) { - const { - listClass = 'todo-list', - listItemClass = 'todo-list-item', - renderCheckbox = (type) => - ``, - } = options; - - function attrSet (token, name, value) { - const index = token.attrIndex(name); - const attr = [name, value]; - - if (index < 0) { - token.attrPush(attr); - } else { - token.attrs[index] = attr; - } - } - - function parentToken (tokens, index) { - const targetLevel = tokens[index].level - 1; - for (let i = index - 1; i >= 0; i--) { - if (tokens[i].level === targetLevel) { - return i; - } - } - return -1; - } - - function isTodoItem (tokens, index) { - return ( - isInline(tokens[index]) && - isParagraph(tokens[index - 1]) && - isListItem(tokens[index - 2]) && - startsWithTodoMarkdown(tokens[index]) - ); - } - - function todoify (token, TokenConstructor) { - token.children.unshift(makeCheckbox(token, TokenConstructor)); - token.children[1].content = token.children[1].content.slice(3); - token.content = token.content.slice(3); - } - - function makeCheckbox (token, TokenConstructor) { - const checkbox = new TokenConstructor('html_inline', '', 0); - - if (token.content.startsWith('[ ] ')) { - checkbox.content = renderCheckbox('todo'); - } else if (token.content.startsWith('[x] ') || token.content.startsWith('[X] ')) { - checkbox.content = renderCheckbox('completed'); - } - - return checkbox; - } - - function isInline (token) { - return token.type === 'inline'; - } - function isParagraph (token) { - return token.type === 'paragraph_open'; - } - function isListItem (token) { - return token.type === 'list_item_open'; - } - - function startsWithTodoMarkdown (token) { - // leading whitespace in a list item is already trimmed off by markdown-it - return ( - token.content.startsWith('[ ] ') || - token.content.startsWith('[x] ') || - token.content.startsWith('[X] ') - ); - } - - md.core.ruler.after('inline', 'v-md-task-lists', (state) => { - const { tokens } = state; - for (let i = 2; i < tokens.length; i++) { - if (isTodoItem(tokens, i)) { - todoify(tokens[i], state.Token); - attrSet(tokens[i - 2], 'class', listItemClass); - attrSet(tokens[parentToken(tokens, i - 2)], 'class', listClass); - } - } - }); -} diff --git a/docs/.vuepress/plugins/todo/old.js b/docs/.vuepress/plugins/todo/old.js deleted file mode 100644 index 9b5909fd..00000000 --- a/docs/.vuepress/plugins/todo/old.js +++ /dev/null @@ -1,78 +0,0 @@ -// 实现todo样式 自己实现的 -module.exports = function (md, config) { - md.renderer.rules.bullet_list_open = (tokens, idx, options, env, self) => { - const parentToken = tokens[idx] - const contentToken = tokens[idx + 3] - const needDisabledAddInput = contentToken.content.startsWith('[x] ') - const needAddInput = contentToken.content.startsWith('[ ] ') - if (needDisabledAddInput || needAddInput) { - // 先给li 增加一个标签 - parentToken.attrs = [['class', 'todo-list']] - } - return self.renderToken(tokens, idx, options, env); - } - md.renderer.rules.list_item_open = (tokens, idx, options, env, self) => { - const token = tokens[idx] - const contentToken = tokens[idx + 2] - const needDisabledAddInput = contentToken.content.startsWith('[x] ') - const needAddInput = contentToken.content.startsWith('[ ] ') - if (needDisabledAddInput || needAddInput) { - // 先给li 增加一个标签 - token.attrs = [['class', 'todo-list-item']] - // 处理内容 - contentToken.content = contentToken.content.slice(4) - contentToken.children[0].content = contentToken.children[0].content.slice(4) - tokens.splice(idx + 1, 1, { - attrs: null, - block: false, - content: '', - hidden: false, - children: [{ - attrs: [[ - 'type', - 'checkbox' - ], [ - 'class', - 'todo-list-checkbox' - ], needDisabledAddInput ? ['checked', 'checked'] : [], needDisabledAddInput ? [ - 'disabled', - 'disabled' - ] : []], - block: false, - content: '', - hidden: false, - info: '', - leavel: 1, - map: [], - markup: null, - meta: null, - nesting: 0, - tag: 'input', - type: 'ys_todo_input' - }, { - attrs: null, - block: false, - content: '', - hidden: false, - info: '', - leavel: 1, - map: [], - markup: null, - meta: null, - nesting: -1, - tag: 'input', - type: 'ys_todo_input' - }], - info: '', - leavel: 1, - map: [], - markup: null, - meta: null, - nesting: 0, - tag: 'input', - type: 'inline' - }) - } - return self.renderToken(tokens, idx, options, env); - } -} \ No newline at end of file diff --git a/docs/.vuepress/plugins/vuepress-keyword/index.js b/docs/.vuepress/plugins/vuepress-keyword/index.js deleted file mode 100644 index 86f5624a..00000000 --- a/docs/.vuepress/plugins/vuepress-keyword/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { - codegen: { pathsToModuleCode }, -} = require("@vuepress/shared-utils"); -const path = require("path"); - -/** - * @type {import('@vuepress/types').Plugin<{}, import('@vuepress/types').DefaultThemeConfig>} - */ -module.exports = (options, ctx, api) => ({ - name: "internal-root-mixins", - - // @internal/root-mixins - async clientDynamicModules() { - const builtInRootMixins = [path.resolve(__dirname, "updateMeta.js")]; - - const rootMixins = [ - ...builtInRootMixins, - ...api.options.clientRootMixin.values, - ]; - - const rootMixinsCode = pathsToModuleCode(rootMixins); - return { - name: "root-mixins.js", - content: rootMixinsCode, - dirname: "internal", - }; - }, -}); diff --git a/docs/.vuepress/plugins/vuepress-keyword/updateMeta.js b/docs/.vuepress/plugins/vuepress-keyword/updateMeta.js deleted file mode 100644 index f58d197b..00000000 --- a/docs/.vuepress/plugins/vuepress-keyword/updateMeta.js +++ /dev/null @@ -1,152 +0,0 @@ -import unionBy from "lodash/unionBy"; -import escape from "escape-html"; - -export default { - // created will be called on both client and ssr - created() { - this.siteMeta = this.$site.headTags - .filter(([headerType]) => headerType === "meta") - .map(([_, headerValue]) => headerValue); - - if (this.$ssrContext) { - const mergedMetaItems = this.getMergedMetaTags(); - - this.$ssrContext.title = this.$title; - this.$ssrContext.lang = this.$lang; - this.$ssrContext.pageMeta = renderPageMeta(mergedMetaItems); - this.$ssrContext.canonicalLink = renderCanonicalLink( - this.$themeConfig.home + this.$site.base.slice(0, -1) + this.$page.path - ); - } - }, - // Other life cycles will only be called at client - mounted() { - // init currentMetaTags from DOM - this.currentMetaTags = [...document.querySelectorAll("meta")]; - - // update title / meta tags - this.updateMeta(); - this.updateCanonicalLink(); - }, - - methods: { - updateMeta() { - document.title = this.$title; - document.documentElement.lang = this.$lang; - - const newMetaTags = this.getMergedMetaTags(); - this.currentMetaTags = updateMetaTags(newMetaTags, this.currentMetaTags); - }, - - getMergedMetaTags() { - const pageMeta = this.$page.frontmatter.meta || []; - // pageMetaTags have higher priority than siteMetaTags - // description needs special attention as it has too many entries - return unionBy( - [{ name: "description", content: this.$themeLocaleConfig.description }], - [{ name: "Keywords", content: this.$themeLocaleConfig.keyword }], - pageMeta, - this.siteMeta, - metaIdentifier - ); - }, - - updateCanonicalLink() { - removeCanonicalLink(); - - if (!this.$canonicalUrl) { - return; - } - - document.head.insertAdjacentHTML( - "beforeend", - renderCanonicalLink(this.$canonicalUrl) - ); - }, - }, - - watch: { - $page() { - this.updateMeta(); - this.updateCanonicalLink(); - }, - }, - - beforeDestroy() { - updateMetaTags(null, this.currentMetaTags); - removeCanonicalLink(); - }, -}; - -function removeCanonicalLink() { - const canonicalEl = document.querySelector("link[rel='canonical']"); - - if (canonicalEl) { - canonicalEl.remove(); - } -} - -function renderCanonicalLink(link = "") { - if (!link) { - return ""; - } - return ``; -} - -/** - * Replace currentMetaTags with newMetaTags - * @param {Array} newMetaTags - * @param {Array} currentMetaTags - * @returns {Array} - */ -function updateMetaTags(newMetaTags, currentMetaTags) { - if (currentMetaTags) { - [...currentMetaTags] - .filter((c) => c.parentNode === document.head) - .forEach((c) => document.head.removeChild(c)); - } - if (newMetaTags) { - return newMetaTags.map((m) => { - const tag = document.createElement("meta"); - Object.keys(m).forEach((key) => { - tag.setAttribute(key, m[key]); - }); - document.head.appendChild(tag); - return tag; - }); - } -} - -/** - * Try to identify a meta tag by name, property or itemprop - * - * Return a complete string if none provided - * @param {Object} tag from frontmatter or siteMetaTags - * @returns {String} - */ -function metaIdentifier(tag) { - for (const item of ["name", "property", "itemprop"]) { - if (tag.hasOwnProperty(item)) return tag[item] + item; - } - return JSON.stringify(tag); -} - -/** - * Render meta tags - * - * @param {Array} meta - * @returns {String} - */ - -function renderPageMeta(meta) { - if (!meta) return ""; - return meta - .map((m) => { - let res = ` { - res += ` ${key}="${escape(m[key])}"`; - }); - return res + `>`; - }) - .join("\n "); -} diff --git a/docs/.vuepress/styles/index.styl b/docs/.vuepress/styles/index.styl deleted file mode 100644 index a33de4bd..00000000 --- a/docs/.vuepress/styles/index.styl +++ /dev/null @@ -1,123 +0,0 @@ - -// 评论区颜色重置 -.gt-container - .gt-ico-tip - &::after - content: '。( Win + . ) 或 ( ⌃ + ⌘ + ␣ ) 打开表情' - color: #999 - font-size: .8rem - .gt-meta - border-color var(--borderColor)!important - .gt-comments-null - color var(--textColor) - opacity .5 - .gt-header-textarea - color var(--textColor) - background rgba(180,180,180,0.1)!important - .gt-btn - border-color $accentColor!important - background-color $accentColor!important - .gt-btn-preview - background-color rgba(255,255,255,0)!important - color $accentColor!important - a - color $accentColor!important - .gt-svg svg - fill $accentColor!important - .gt-comment-content,.gt-comment-admin .gt-comment-content - background-color rgba(150,150,150,0.1)!important - &:hover - box-shadow 0 0 25px rgba(150,150,150,.5)!important - .gt-comment-body - color var(--textColor)!important - - -// qq徽章 -.qq - position: relative; -.qq::after - content: "可撩"; - background: $accentColor; - color:#fff; - padding: 0 5px; - border-radius: 10px; - font-size:12px; - position: absolute; - top: -4px; - right: -35px; - transform:scale(0.85); - -// demo模块图标颜色 -body .vuepress-plugin-demo-block__wrapper - &,.vuepress-plugin-demo-block__display - border-color rgba(160,160,160,.3) - .vuepress-plugin-demo-block__footer:hover - .vuepress-plugin-demo-block__expand::before - border-top-color: $accentColor !important; - border-bottom-color: $accentColor !important; - svg - fill: $accentColor !important; - -// 全文搜索框 -.suggestions - overflow: auto - max-height: calc(100vh - 6rem) - @media (max-width: 719px) { - width: 90vw; - min-width: 90vw!important; - margin-right: -20px; - } - .highlight - color: $accentColor - font-weight: bold - -.todo-list - padding-left: 0 - -.todo-list .todo-list-item - list-style-type: none; - position: relative; - min-height: 22px; - margin-left: 0 !important; - -.todo-list-checkbox - position: relative; - display: inline-block; - width: 15px; - height: 15px; - margin-top: -3px; - margin-right: 4px; - vertical-align: middle; - border-style: solid; - border-width: 1px; - border-radius: 2px; - -ul.todo-list li.todo-list-item>.todo-list-checkbox.checked - border-color: #396aff; - background-color: #396aff; - -.todo-list-checkbox.checked:after - position: absolute; - top: 2px; - left: 5px; - display: table; - width: 3px; - height: 7px; - border: 2px solid #fff; - border-top: 0; - border-left: 0; - -webkit-transform: rotate(45deg) scale(1); - transform: rotate(45deg) scale(1); - -webkit-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; - content: ""; - -.theme-vdoing-content img - background-color #fff - -.mermaid-diagram>svg - height auto - -.footnote-anchor - margin-top: -3.1rem; - padding-top: 4rem; \ No newline at end of file diff --git a/docs/.vuepress/styles/palette.styl b/docs/.vuepress/styles/palette.styl deleted file mode 100644 index 6dc75791..00000000 --- a/docs/.vuepress/styles/palette.styl +++ /dev/null @@ -1,67 +0,0 @@ -//***vdoing主题-样式变量(你可以修改这些变量值以覆盖主题使用的样式变量)***// - -// 以下注释的变量仅供参考,主题使用的最新变量请查看:https://github.com/xugaoyi/vuepress-theme-vdoing/blob/master/theme-vdoing/styles/palette.styl - -// // 颜色 - -// $bannerTextColor = #fff // 首页banner区(博客标题)文本颜色 - $accentColor = #396aff // 主题色 -// $activeColor = #ff5722 - $arrowBgColor = #6d7278 -// $badgeTipColor = #42b983 -// $badgeWarningColor = darken(#ffe564, 35%) -// $badgeErrorColor = #DA5961 - -// // 布局 -// $navbarHeight = 3.6rem - $sidebarWidth = 250px -// $contentWidth = 860px -// $homePageWidth = 1100px -// $rightMenuWidth = 230px // 右侧菜单 - -// // 代码块 -// $lineNumbersWrapperWidth = 2.5rem - -// // 浅色模式 -.theme-mode-light -// --bodyBg: #f4f4f4 -// --mainBg: rgba(255,255,255,1) -// --sidebarBg: rgba(255,255,255,.8) -// --blurBg: rgba(255,255,255,.9) - --textColor: #111 -// --textLightenColor: #0085AD -// --borderColor: rgba(0,0,0,.15) -// // 代码块浅色主题 -// --codeBg: #f6f6f6 -// --codeColor: #525252 -// codeThemeLight() -// // // 代码块深色主题 -// // --codeBg: #252526 -// // --codeColor: #fff -// // codeThemeDark() - -// // 深色模式 -// .theme-mode-dark -// --bodyBg: rgb(39,39,43) -// --mainBg: rgba(30,30,34,1) -// --sidebarBg: rgba(30,30,34,.8) -// --blurBg: rgba(30,30,34,.8) -// --textColor: rgb(140,140,150) -// --textLightenColor: #0085AD -// --borderColor: #2C2C3A -// --codeBg: #252526 -// --codeColor: #fff -// codeThemeDark() - -// // 阅读模式 -// .theme-mode-read -// --bodyBg: rgb(240,240,208) -// --mainBg: rgba(245,245,213,1) -// --sidebarBg: rgba(245,245,213,.8) -// --blurBg: rgba(245,245,213,.9) -// --textColor: #004050 -// --textLightenColor: #0085AD -// --borderColor: rgba(0,0,0,.15) -// --codeBg: #282c34 -// --codeColor: #fff -// codeThemeDark() diff --git a/docs/README.md b/docs/index.md similarity index 63% rename from docs/README.md rename to docs/index.md index ce5ed278..fc8d8e15 100644 --- a/docs/README.md +++ b/docs/index.md @@ -1,17 +1,14 @@ --- -home: true +layout: home -# This file is very important, do not delete +hero: + name: DeepFlow + text: Achieve Observability Instantly + tagline: Achieve zero-intrusion (Zero Code) and full-stack (Full Stack) observability instantly using eBPF and Wasm technologies, enabling continuous innovation for cloud-native and AI applications. -# Title and Description -heroText: DeepFlow - Achieve Observability Instantly -description: Achieve zero-intrusion (Zero Code) and full-stack (Full Stack) observability instantly using eBPF and Wasm technologies, enabling continuous innovation for cloud-native and AI applications. - -# Button Links and Text -actionLink: /about/overview/ actionText: Read Now → +actionLink: /about/overview -# Features features: - title: Universal Service Map details: Based on the leading AutoMetrics mechanism, it uses eBPF and Wasm technologies to draw a zero-intrusion universal map of the production environment, leaving no service behind. diff --git a/docs/public/img/deepflow-icon.svg b/docs/public/img/deepflow-icon.svg new file mode 100644 index 00000000..185a7bef --- /dev/null +++ b/docs/public/img/deepflow-icon.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/.vuepress/public/img/favicon.ico b/docs/public/img/favicon.ico similarity index 100% rename from docs/.vuepress/public/img/favicon.ico rename to docs/public/img/favicon.ico diff --git a/docs/.vuepress/public/img/lang.svg b/docs/public/img/lang.svg similarity index 100% rename from docs/.vuepress/public/img/lang.svg rename to docs/public/img/lang.svg diff --git a/docs/.vuepress/public/img/logo.png b/docs/public/img/logo.png similarity index 100% rename from docs/.vuepress/public/img/logo.png rename to docs/public/img/logo.png diff --git a/docs/.vuepress/public/img/logo.svg b/docs/public/img/logo.svg similarity index 100% rename from docs/.vuepress/public/img/logo.svg rename to docs/public/img/logo.svg diff --git a/docs/.vuepress/public/img/nav.svg b/docs/public/img/nav.svg similarity index 100% rename from docs/.vuepress/public/img/nav.svg rename to docs/public/img/nav.svg diff --git a/docs/.vuepress/plugins/fulltext-search/assets/search.svg b/docs/public/img/search.svg similarity index 100% rename from docs/.vuepress/plugins/fulltext-search/assets/search.svg rename to docs/public/img/search.svg diff --git a/docs/.vuepress/public/img/side.svg b/docs/public/img/side.svg similarity index 100% rename from docs/.vuepress/public/img/side.svg rename to docs/public/img/side.svg diff --git a/docs/public/img/yunshan-logo-white.png b/docs/public/img/yunshan-logo-white.png new file mode 100644 index 0000000000000000000000000000000000000000..9e1104234bb3c823703f849fd442c679d90754db GIT binary patch literal 30418 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�aZxH2dDfL4_9~We`t$VFmiNUy1X(P*z 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 literal 0 HcmV?d00001 diff --git a/docs/zh/07-configuration/README.md b/docs/zh/07-configuration/README.md deleted file mode 100644 index 8ea070fb..00000000 --- a/docs/zh/07-configuration/README.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -permalink: /zh/configuration ---- - -# 配置手册 diff --git a/docs/zh/README.md b/docs/zh/index.md similarity index 61% rename from docs/zh/README.md rename to docs/zh/index.md index 1a1c384a..bf4d9931 100644 --- a/docs/zh/README.md +++ b/docs/zh/index.md @@ -1,17 +1,14 @@ --- -home: true +layout: home -# 此文件很重要 切勿删除 +hero: + name: DeepFlow + text: 即刻实现可观测性 + tagline: 使用 eBPF 和 Wasm 技术,即刻实现零侵扰(Zero Code)和全栈(Full Stack)的可观测性,让云原生和 AI 应用持续创新。 -# 标题以及描述 -heroText: DeepFlow - 即刻实现可观测性 -description: 使用 eBPF 和 Wasm 技术,即刻实现零侵扰(Zero Code)和全栈(Full Stack)的可观测性,让云原生和 AI 应用持续创新。 - -# 按钮的链接以及文字 -actionLink: /zh/about/overview/ actionText: 马上阅读 → +actionLink: /zh/about/overview -# 特性 features: - title: 服务全景图 details: 基于领先的 AutoMetrics 机制,利用 eBPF 和 Wasm 技术零侵扰绘制生产环境全景图,不遗漏任何服务。 diff --git a/downloadFile.js b/downloadFile.js index 904387db..36277b74 100644 --- a/downloadFile.js +++ b/downloadFile.js @@ -47,6 +47,8 @@ const downloadFile = (fileUrl, outputPath, cb) => { fileUrl = fileUrl.replace(/\/, branch); const url = new URL(fileUrl); const h = fileUrl.startsWith("https") ? https : http; + // 目标目录可能不存在(如 07-configuration 在提交态无文件),先递归创建 + fs.mkdirSync(path.dirname(outputPath), { recursive: true }); const file = fs.createWriteStream(outputPath); h.get(url, (response) => { @@ -64,8 +66,11 @@ const downloadFile = (fileUrl, outputPath, cb) => { cb(); }); }).on("error", (err) => { - fs.unlink(outputPath); // 删除文件 + // 删除下载失败留下的空文件:文件缺失会让后续构建死链检测报错, + // 而不是把空页面静默发布;unlink 在 Node 10+ 必须传回调 + fs.unlink(outputPath, () => {}); console.error(`下载失败: ${err.message}`); + process.exitCode = 1; }); }; diff --git a/nginx/zh-only-redirects.conf b/nginx/zh-only-redirects.conf new file mode 100644 index 00000000..646db29f --- /dev/null +++ b/nginx/zh-only-redirects.conf @@ -0,0 +1,4 @@ +# 本文件由 scripts/gen-rewrites.mjs 生成,勿手改。 +# 仅中文版本(暂无英文翻译)的页面:旧根路径 URL -> /zh/ 新路径。 +rewrite ^/docs/release-notes/release-7.2-ee/?$ /docs/zh/release-notes/release-7.2-ee? permanent; +rewrite ^/docs/release-notes/release-7.2-ee\.html$ /docs/zh/release-notes/release-7.2-ee? permanent; diff --git a/package.json b/package.json index 8c02a39c..19b93a10 100644 --- a/package.json +++ b/package.json @@ -1,39 +1,30 @@ { - "name": "theme-vdoing-blog", + "name": "deepflow-docs", "version": "1.0.0", + "private": true, + "description": "DeepFlow documentation site, powered by VitePress", + "packageManager": "pnpm@10.33.2", + "engines": { + "node": ">=18" + }, "scripts": { - "dev": "set NODE_OPTIONS=--openssl-legacy-provider && vuepress dev docs", - "build": "set NODE_OPTIONS=--openssl-legacy-provider --max-old-space-size=4096 && vuepress build docs --max-concurrency=500", - "deploy": "bash deploy.sh", - "editFm": "node --max-old-space-size=4096 utils/editFrontmatter.js", - "baiduPush": "node --max-old-space-size=4096 utils/baiduPush.js https://xugaoyi.com && bash baiduPush.sh", - "publish": "cd ./vdoing && npm publish && cd .. && yarn updateTheme", - "updateTheme": "yarn remove vuepress-theme-vdoing && rm -rf node_modules && yarn && yarn add vuepress-theme-vdoing -D" + "dev": "vitepress dev", + "build": "vitepress build", + "preview": "vitepress preview", + "dev:doc-only": "DOCS_MODE=doc-only vitepress dev", + "build:doc-only": "DOCS_MODE=doc-only vitepress build", + "preview:doc-only": "DOCS_MODE=doc-only vitepress preview", + "gen:rewrites": "node scripts/gen-rewrites.mjs" }, - "license": "MIT", "devDependencies": { - "dayjs": "^1.9.7", - "html-to-text": "^7.0.0", - "inquirer": "^7.1.0", - "json2yaml": "^1.1.0", - "mdurl": "1.0.1", - "vuepress": "1.9.7", - "vuepress-plugin-demo-block": "^0.7.2", - "vuepress-plugin-one-click-copy": "^1.0.2", - "vuepress-plugin-thirdparty-search": "^1.0.2", - "vuepress-plugin-zooming": "^1.1.7", - "yamljs": "^0.3.0" - }, - "dependencies": { - "@vuepress/shared-utils": "^1.9.7", - "axios": "^1.2.1", - "better-scroll": "^2.4.2", - "clipboard": "^2.0.10", - "flexsearch": "^0.6.23", - "good-storage": "^1.1.1", - "gray-matter": "^4.0.3", - "json5": "^2.2.1", - "mermaid": "8.14.0", - "viewerjs": "^1.11.6" + "axios": "^1.7.0", + "markdown-it-container": "^4.0.0", + "markdown-it-footnote": "^4.0.0", + "markdown-it-task-lists": "^2.1.1", + "medium-zoom": "^1.1.0", + "mermaid": "^11.4.0", + "vitepress": "^1.6.4", + "vitepress-plugin-mermaid": "^2.0.16", + "vue": "^3.5.43" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 686cfd30..0714dad3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,9893 +1,2769 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -dependencies: - '@vuepress/shared-utils': - specifier: ^1.9.7 - version: 1.9.7 - axios: - specifier: ^1.2.1 - version: 1.2.1 - better-scroll: - specifier: ^2.4.2 - version: 2.4.2 - clipboard: - specifier: ^2.0.10 - version: 2.0.11 - flexsearch: - specifier: ^0.6.23 - version: 0.6.32 - good-storage: - specifier: ^1.1.1 - version: 1.1.1 - gray-matter: - specifier: ^4.0.3 - version: 4.0.3 - json5: - specifier: ^2.2.1 - version: 2.2.1 - mermaid: - specifier: 8.14.0 - version: 8.14.0 - viewerjs: - specifier: ^1.11.6 - version: 1.11.6 - -devDependencies: - dayjs: - specifier: ^1.9.7 - version: 1.11.5 - html-to-text: - specifier: ^7.0.0 - version: 7.1.3 - inquirer: - specifier: ^7.1.0 - version: 7.3.3 - json2yaml: - specifier: ^1.1.0 - version: 1.1.0 - mdurl: - specifier: 1.0.1 - version: 1.0.1 - vuepress: - specifier: 1.9.7 - version: 1.9.7 - vuepress-plugin-demo-block: - specifier: ^0.7.2 - version: 0.7.2 - vuepress-plugin-one-click-copy: - specifier: ^1.0.2 - version: 1.0.6 - vuepress-plugin-thirdparty-search: - specifier: ^1.0.2 - version: 1.0.2 - vuepress-plugin-zooming: - specifier: ^1.1.7 - version: 1.1.8 - yamljs: - specifier: ^0.3.0 - version: 0.3.0 +importers: + + .: + devDependencies: + axios: + specifier: ^1.7.0 + version: 1.20.0 + markdown-it-container: + specifier: ^4.0.0 + version: 4.0.0 + markdown-it-footnote: + specifier: ^4.0.0 + version: 4.0.0 + markdown-it-task-lists: + specifier: ^2.1.1 + version: 2.1.1 + medium-zoom: + specifier: ^1.1.0 + version: 1.1.0 + mermaid: + specifier: ^11.4.0 + version: 11.17.2 + vitepress: + specifier: ^1.6.4 + version: 1.6.4(@algolia/client-search@5.59.0)(axios@1.20.0)(postcss@8.5.28)(search-insights@2.17.3) + vitepress-plugin-mermaid: + specifier: ^2.0.16 + version: 2.0.17(mermaid@11.17.2)(vitepress@1.6.4(@algolia/client-search@5.59.0)(axios@1.20.0)(postcss@8.5.28)(search-insights@2.17.3)) + vue: + specifier: ^3.5.43 + version: 3.5.43 packages: - /@ampproject/remapping@2.2.0: - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.15 - dev: true - - /@babel/code-frame@7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - dev: true - - /@babel/compat-data@7.19.0: - resolution: {integrity: sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/core@7.19.0: - resolution: {integrity: sha512-reM4+U7B9ss148rh2n1Qs9ASS+w94irYXga7c2jaQv9RVzpS7Mv1a9rnYYwuDa45G+DkORt9g6An2k/V4d9LbQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.19.0 - '@babel/helper-compilation-targets': 7.19.0(@babel/core@7.19.0) - '@babel/helper-module-transforms': 7.19.0 - '@babel/helpers': 7.19.0 - '@babel/parser': 7.19.0 - '@babel/template': 7.18.10 - '@babel/traverse': 7.19.0 - '@babel/types': 7.19.0 - convert-source-map: 1.8.0 - debug: 4.3.4(supports-color@6.1.0) - gensync: 1.0.0-beta.2 - json5: 2.2.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/generator@7.19.0: - resolution: {integrity: sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.0 - '@jridgewell/gen-mapping': 0.3.2 - jsesc: 2.5.2 - dev: true - - /@babel/helper-annotate-as-pure@7.18.6: - resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.0 - dev: true - - /@babel/helper-builder-binary-assignment-operator-visitor@7.18.9: - resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.19.0 - dev: true - - /@babel/helper-compilation-targets@7.19.0(@babel/core@7.19.0): - resolution: {integrity: sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.19.0 - '@babel/core': 7.19.0 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.3 - semver: 6.3.0 - dev: true - - /@babel/helper-create-class-features-plugin@7.19.0(@babel/core@7.19.0): - resolution: {integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-member-expression-to-functions': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.18.9 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-create-regexp-features-plugin@7.19.0(@babel/core@7.19.0): - resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.1.0 - dev: true - - /@babel/helper-define-polyfill-provider@0.3.2(@babel/core@7.19.0): - resolution: {integrity: sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-compilation-targets': 7.19.0(@babel/core@7.19.0) - '@babel/helper-plugin-utils': 7.19.0 - debug: 4.3.4(supports-color@6.1.0) - lodash.debounce: 4.0.8 - resolve: 1.22.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-environment-visitor@7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-explode-assignable-expression@7.18.6: - resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.0 - dev: true - - /@babel/helper-function-name@7.19.0: - resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.19.0 - dev: true - - /@babel/helper-hoist-variables@7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.0 - dev: true - - /@babel/helper-member-expression-to-functions@7.18.9: - resolution: {integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.0 - dev: true - - /@babel/helper-module-imports@7.18.6: - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.0 - dev: true - - /@babel/helper-module-transforms@7.19.0: - resolution: {integrity: sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.18.6 - '@babel/template': 7.18.10 - '@babel/traverse': 7.19.0 - '@babel/types': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-optimise-call-expression@7.18.6: - resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.0 - dev: true - - /@babel/helper-plugin-utils@7.19.0: - resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.19.0): - resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-wrap-function': 7.19.0 - '@babel/types': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-replace-supers@7.18.9: - resolution: {integrity: sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-member-expression-to-functions': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/traverse': 7.19.0 - '@babel/types': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-simple-access@7.18.6: - resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.0 - dev: true - - /@babel/helper-skip-transparent-expression-wrappers@7.18.9: - resolution: {integrity: sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.0 - dev: true - - /@babel/helper-split-export-declaration@7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.0 - dev: true - - /@babel/helper-string-parser@7.18.10: - resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-identifier@7.18.6: - resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-option@7.18.6: - resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-wrap-function@7.19.0: - resolution: {integrity: sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-function-name': 7.19.0 - '@babel/template': 7.18.10 - '@babel/traverse': 7.19.0 - '@babel/types': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helpers@7.19.0: - resolution: {integrity: sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.10 - '@babel/traverse': 7.19.0 - '@babel/types': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/highlight@7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.18.6 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - - /@babel/parser@7.19.0: - resolution: {integrity: sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.19.0 - dev: true - - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.18.9(@babel/core@7.19.0): - resolution: {integrity: sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - '@babel/plugin-proposal-optional-chaining': 7.18.9(@babel/core@7.19.0) - dev: true - - /@babel/plugin-proposal-async-generator-functions@7.19.0(@babel/core@7.19.0): - resolution: {integrity: sha512-nhEByMUTx3uZueJ/QkJuSlCfN4FGg+xy+vRsfGQGzSauq5ks2Deid2+05Q3KhfaUjvec1IGhw/Zm3cFm8JigTQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.19.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.19.0) - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.19.0) - '@babel/helper-plugin-utils': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-class-static-block@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.19.0) - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.19.0) - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-decorators@7.19.0(@babel/core@7.19.0): - resolution: {integrity: sha512-Bo5nOSjiJccjv00+BrDkmfeBLBi2B0qe8ygj24KdL8VdwtZz+710NCwehF+x/Ng+0mkHx5za2eAofmvVFLF4Fg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.19.0) - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-replace-supers': 7.18.9 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/plugin-syntax-decorators': 7.19.0(@babel/core@7.19.0) - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.19.0) - dev: true - - /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.19.0): - resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.19.0) - dev: true - - /@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.19.0) - dev: true - - /@babel/plugin-proposal-logical-assignment-operators@7.18.9(@babel/core@7.19.0): - resolution: {integrity: sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.19.0) - dev: true - - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.19.0) - dev: true - - /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.19.0) - dev: true - - /@babel/plugin-proposal-object-rest-spread@7.18.9(@babel/core@7.19.0): - resolution: {integrity: sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.19.0 - '@babel/core': 7.19.0 - '@babel/helper-compilation-targets': 7.19.0(@babel/core@7.19.0) - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.19.0) - '@babel/plugin-transform-parameters': 7.18.8(@babel/core@7.19.0) - dev: true - - /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.19.0) - dev: true - - /@babel/plugin-proposal-optional-chaining@7.18.9(@babel/core@7.19.0): - resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.19.0) - dev: true - - /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.19.0) - '@babel/helper-plugin-utils': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-private-property-in-object@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.19.0) - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.19.0) - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.19.0) - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.19.0): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.19.0): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.19.0): - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-syntax-decorators@7.19.0(@babel/core@7.19.0): - resolution: {integrity: sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.19.0): - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.19.0): - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-syntax-import-assertions@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@algolia/abtesting@1.25.0': + resolution: {integrity: sha512-rSTin9Uta23uaewYVQEp8XI9T3iA/zrg0/1G2vhf8oFFDxFL5vybnZ5IQwsVAg4JpKxPX4/WYNKdcfWrZymk7w==} + engines: {node: '>= 14.0.0'} - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.19.0): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@algolia/autocomplete-core@1.17.7': + resolution: {integrity: sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==} - /@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} - engines: {node: '>=6.9.0'} + '@algolia/autocomplete-plugin-algolia-insights@1.17.7': + resolution: {integrity: sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + search-insights: '>= 1 < 3' - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.19.0): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + '@algolia/autocomplete-preset-algolia@1.17.7': + resolution: {integrity: sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.19.0): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + '@algolia/autocomplete-shared@1.17.7': + resolution: {integrity: sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.19.0): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@algolia/client-abtesting@5.59.0': + resolution: {integrity: sha512-bm2XN0hCSMYwStSsCBT0/PUB2BDxoyR1Lnub3c392HMEy9bi8PUSW8vR6zltVEKWG2t4PQFWMD5C07bmJxGgPg==} + engines: {node: '>= 14.0.0'} - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.19.0): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@algolia/client-analytics@5.59.0': + resolution: {integrity: sha512-XOFPOTa69WuqHR6c5tMgnUUwwqQgNSzMpxmhrgA9KmxRf8WIqEa0cokHJvohk5CYb7CZx0xeSL6Bk2IUJ7Lv7Q==} + engines: {node: '>= 14.0.0'} - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.19.0): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@algolia/client-common@5.59.0': + resolution: {integrity: sha512-PC8ipLOYFKRTfIUY1J3FJxS6ryzWziaXmIX9/sNMoUR8L+XhF7hX2QAeUI87YVl5zujvlYTSOb+HAIqKXDjyHQ==} + engines: {node: '>= 14.0.0'} - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.19.0): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@algolia/client-insights@5.59.0': + resolution: {integrity: sha512-yFNcCMM5fHiyoR0HuxMrzy+VjDcmhFUZTm2IJ2DHwGsVH3B5SEob4zTmeEZ3j/AZqNnmrJOCKl/tJnBg7+84bA==} + engines: {node: '>= 14.0.0'} - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.19.0): - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@algolia/client-personalization@5.59.0': + resolution: {integrity: sha512-GYja6HkDt2VrQhWmB2cLx3Z5fDwI9no7q+xwCWcFrTPm5CLH9QZvK0XLO9co1FcNIDxxkMaP3AXM39/XcecEOg==} + engines: {node: '>= 14.0.0'} - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.19.0): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@algolia/client-query-suggestions@5.59.0': + resolution: {integrity: sha512-Wofg7bMpWh8N5qDDZs0wy6whc+KMmdNsxgrIGp9Ug2s1Bka0uq7AjyckdxReKPHLA0Q1qH8X/SNh0wn2t2X2Lw==} + engines: {node: '>= 14.0.0'} - /@babel/plugin-transform-arrow-functions@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@algolia/client-search@5.59.0': + resolution: {integrity: sha512-fHnALZfbEnODczGk14Y/1YBRApp6UEpZUTexGcMUPzY7RDc7q4HN2Y6jh0KUG8Jo9B+q+wOoQEc3ziR0ErbuFg==} + engines: {node: '>= 14.0.0'} - /@babel/plugin-transform-async-to-generator@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.19.0) - transitivePeerDependencies: - - supports-color - dev: true + '@algolia/ingestion@1.59.0': + resolution: {integrity: sha512-Fa38s1mHgoaLCT117sfJ6P78rtxUt93CYxBYpq1VOIcslaF+cH+1h5uikAPsKfxLnsuEDZHiBiaI6eNPTsQMRA==} + engines: {node: '>= 14.0.0'} - /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@algolia/monitoring@1.59.0': + resolution: {integrity: sha512-NyNsRSqM2tF1MX7ZGw/j4rduoEJiQ5wfvbSo/CFVdEzYCjyxbGFRPOZyS/GETJG9rk1TdHOq8NZqKqk/u1fm4g==} + engines: {node: '>= 14.0.0'} - /@babel/plugin-transform-block-scoping@7.18.9(@babel/core@7.19.0): - resolution: {integrity: sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@algolia/recommend@5.59.0': + resolution: {integrity: sha512-nXBK2uygWtvbCOffMWqqfjjcEtp9enDKY5/2Pw/Hhw8VVaOyK2ThbGK04bNX/Le+qoK1VHYkodWGVTKfw0Otkw==} + engines: {node: '>= 14.0.0'} - /@babel/plugin-transform-classes@7.19.0(@babel/core@7.19.0): - resolution: {integrity: sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.19.0(@babel/core@7.19.0) - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-replace-supers': 7.18.9 - '@babel/helper-split-export-declaration': 7.18.6 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true + '@algolia/requester-browser-xhr@5.59.0': + resolution: {integrity: sha512-yb+4afX/zja8QwX0KmV4/ae2kyYkRknsE79CRusYS2U5D8qwn2wq0cn1x12f3tm3F3+5FgmDdbuGdQTuCLSKMQ==} + engines: {node: '>= 14.0.0'} - /@babel/plugin-transform-computed-properties@7.18.9(@babel/core@7.19.0): - resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@algolia/requester-fetch@5.59.0': + resolution: {integrity: sha512-Lp52TmpA1QtNmdHzs505Xwf4tgII7RAapkDSF9AAtWIBETcGaTIaXci4Rd9nS6SdaWK1BWTSqAPp5wzh6UN3Ag==} + engines: {node: '>= 14.0.0'} - /@babel/plugin-transform-destructuring@7.18.13(@babel/core@7.19.0): - resolution: {integrity: sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.19.0) - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.19.0): - resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-for-of@7.18.8(@babel/core@7.19.0): - resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.19.0): - resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-compilation-targets': 7.19.0(@babel/core@7.19.0) - '@babel/helper-function-name': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-literals@7.18.9(@babel/core@7.19.0): - resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-modules-amd@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-commonjs@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-simple-access': 7.18.6 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-systemjs@7.19.0(@babel/core@7.19.0): - resolution: {integrity: sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-validator-identifier': 7.18.6 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-named-capturing-groups-regex@7.19.0(@babel/core@7.19.0): - resolution: {integrity: sha512-HDSuqOQzkU//kfGdiHBt71/hkDTApw4U/cMVgKgX7PqfB3LOaK+2GtCEsBu1dL9CkswDm0Gwehht1dCr421ULQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.19.0) - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-new-target@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-replace-supers': 7.18.9 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-parameters@7.18.8(@babel/core@7.19.0): - resolution: {integrity: sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-regenerator@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - regenerator-transform: 0.15.0 - dev: true - - /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-runtime@7.18.10(@babel/core@7.19.0): - resolution: {integrity: sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - babel-plugin-polyfill-corejs2: 0.3.2(@babel/core@7.19.0) - babel-plugin-polyfill-corejs3: 0.5.3(@babel/core@7.19.0) - babel-plugin-polyfill-regenerator: 0.4.0(@babel/core@7.19.0) - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-spread@7.19.0(@babel/core@7.19.0): - resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - dev: true - - /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.19.0): - resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.19.0): - resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-unicode-escapes@7.18.10(@babel/core@7.19.0): - resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.19.0): - resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.19.0) - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/preset-env@7.19.0(@babel/core@7.19.0): - resolution: {integrity: sha512-1YUju1TAFuzjIQqNM9WsF4U6VbD/8t3wEAlw3LFYuuEr+ywqLRcSXxFKz4DCEj+sN94l/XTDiUXYRrsvMpz9WQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.19.0 - '@babel/core': 7.19.0 - '@babel/helper-compilation-targets': 7.19.0(@babel/core@7.19.0) - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9(@babel/core@7.19.0) - '@babel/plugin-proposal-async-generator-functions': 7.19.0(@babel/core@7.19.0) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-proposal-class-static-block': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.19.0) - '@babel/plugin-proposal-json-strings': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-proposal-logical-assignment-operators': 7.18.9(@babel/core@7.19.0) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-proposal-object-rest-spread': 7.18.9(@babel/core@7.19.0) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-proposal-optional-chaining': 7.18.9(@babel/core@7.19.0) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-proposal-private-property-in-object': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.19.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.19.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.19.0) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.19.0) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.19.0) - '@babel/plugin-syntax-import-assertions': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.19.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.19.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.19.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.19.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.19.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.19.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.19.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.19.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.19.0) - '@babel/plugin-transform-arrow-functions': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-transform-async-to-generator': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-transform-block-scoping': 7.18.9(@babel/core@7.19.0) - '@babel/plugin-transform-classes': 7.19.0(@babel/core@7.19.0) - '@babel/plugin-transform-computed-properties': 7.18.9(@babel/core@7.19.0) - '@babel/plugin-transform-destructuring': 7.18.13(@babel/core@7.19.0) - '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-transform-duplicate-keys': 7.18.9(@babel/core@7.19.0) - '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-transform-for-of': 7.18.8(@babel/core@7.19.0) - '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.19.0) - '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.19.0) - '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-transform-modules-amd': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-transform-modules-commonjs': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-transform-modules-systemjs': 7.19.0(@babel/core@7.19.0) - '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.19.0(@babel/core@7.19.0) - '@babel/plugin-transform-new-target': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-transform-parameters': 7.18.8(@babel/core@7.19.0) - '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-transform-regenerator': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-transform-spread': 7.19.0(@babel/core@7.19.0) - '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.19.0) - '@babel/plugin-transform-typeof-symbol': 7.18.9(@babel/core@7.19.0) - '@babel/plugin-transform-unicode-escapes': 7.18.10(@babel/core@7.19.0) - '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.19.0) - '@babel/preset-modules': 0.1.5(@babel/core@7.19.0) - '@babel/types': 7.19.0 - babel-plugin-polyfill-corejs2: 0.3.2(@babel/core@7.19.0) - babel-plugin-polyfill-corejs3: 0.5.3(@babel/core@7.19.0) - babel-plugin-polyfill-regenerator: 0.4.0(@babel/core@7.19.0) - core-js-compat: 3.25.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/preset-modules@0.1.5(@babel/core@7.19.0): - resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.19.0) - '@babel/types': 7.19.0 - esutils: 2.0.3 - dev: true - - /@babel/runtime@7.19.0: - resolution: {integrity: sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.9 - dev: true - - /@babel/template@7.18.10: - resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.19.0 - '@babel/types': 7.19.0 - dev: true - - /@babel/traverse@7.19.0: - resolution: {integrity: sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.19.0 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.19.0 - '@babel/types': 7.19.0 - debug: 4.3.4(supports-color@6.1.0) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types@7.19.0: - resolution: {integrity: sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.18.10 - '@babel/helper-validator-identifier': 7.18.6 - to-fast-properties: 2.0.0 - dev: true - - /@better-scroll/core@2.4.2: - resolution: {integrity: sha512-IqVZLnh04YpaEAy9wJDxtFK/stxVQjB9A9Wcr3Uwkj7Av1TtFpin+t/TObl53diNDG5ZJ+vck/OAthphpuugLA==} - dependencies: - '@better-scroll/shared-utils': 2.4.2 - dev: false - - /@better-scroll/indicators@2.4.2: - resolution: {integrity: sha512-dScI0HIt06L1thLO+1W7w1enqRtegWF1izKYhswiyTXLgagLh2QbAi+oexNiPSOGBuNz8w1mO7hZvVJez/ZFkw==} - dependencies: - '@better-scroll/core': 2.4.2 - dev: false - - /@better-scroll/infinity@2.4.2: - resolution: {integrity: sha512-KGpCWLTyMzcGBT59c3N/JaVauLmi0jG2YZApdnqON+Oz4AJiHnzGkzWc4EJxcxR3Vy+m5Jp91y6xrpsvRmOdIg==} - dependencies: - '@better-scroll/core': 2.4.2 - dev: false - - /@better-scroll/mouse-wheel@2.4.2: - resolution: {integrity: sha512-dLc8vlYkSYN9AQEo4NDPQloPhscCV17TY98JUBcio4I2STDlYYIQqofqm1GQPfByfK9f057DnrcgZ/bPVx7PTA==} - dependencies: - '@better-scroll/core': 2.4.2 - dev: false - - /@better-scroll/movable@2.4.2: - resolution: {integrity: sha512-y4FbKx9FTUfAfM6wW+PCKA3CONc4nfjaE4N1ImGsIorzkSWV2eGO+LTD6FVv5+gVINI/o9Xj/gHmEJUaupUeSg==} - dependencies: - '@better-scroll/core': 2.4.2 - dev: false - - /@better-scroll/nested-scroll@2.4.2: - resolution: {integrity: sha512-JnC2sqtDqVkj9F5J39u52b6qDsMqXbnURG67dHf97tYoYP2dluwjkvhhxjSFrghREoQzT/KWcDbkfcGy47lQwQ==} - dependencies: - '@better-scroll/core': 2.4.2 - dev: false - - /@better-scroll/observe-dom@2.4.2: - resolution: {integrity: sha512-eeS77CZs+V72dkya10e5ptndBAbhQVcXoYGvfoIihOJgCPqO5MdYTpzRmlbshYCEE5juUMLe82Kx8FSbOejpAw==} - dependencies: - '@better-scroll/core': 2.4.2 - dev: false - - /@better-scroll/observe-image@2.4.2: - resolution: {integrity: sha512-ToYVf5vn0cio5B9uaL5NyvFX3JNU6L0Po20Lw7uxa0+FE+kMvSAMJN+9POg6G+cfIqI8GVHhyyR+4Ev8v2Nl5Q==} - dependencies: - '@better-scroll/core': 2.4.2 - dev: false - - /@better-scroll/pull-down@2.4.2: - resolution: {integrity: sha512-bqMLk33o4oesTXIIOteBKHQgfVKjIVvity39TM/MfzkbY1WDBxD+HFS7ySgoqw7Kl2Wiv/U76Wfqzmm6yDdg7Q==} - dependencies: - '@better-scroll/core': 2.4.2 - dev: false - - /@better-scroll/pull-up@2.4.2: - resolution: {integrity: sha512-07Cke3oa96lN9/inxJZ0ixh0nBbbqxOi2IKcBGtD6dP+susiMcdhgd/c7zNRjXkwlw0vzTNfXTgExIOEWzLHYg==} - dependencies: - '@better-scroll/core': 2.4.2 - dev: false - - /@better-scroll/scroll-bar@2.4.2: - resolution: {integrity: sha512-zZd0+sWfzTCXJeuA001o5bea7AvLYz7BCE7dolxFbPTIPnV5V5UEH8LLdXQ/HIwgxI0Pj9PoY9njSuhooh6lfg==} - dependencies: - '@better-scroll/core': 2.4.2 - dev: false - - /@better-scroll/shared-utils@2.4.2: - resolution: {integrity: sha512-Gy/Jfbpu+hq0u+PcjkTqyXGqAf+0dexTzEZ5IDXEVwJVLmd3cx8A73oTcAZ8QZgk4wSHvlMjXecSaptkhnNPEw==} - dev: false - - /@better-scroll/slide@2.4.2: - resolution: {integrity: sha512-VfdFHm/meo4nEyfx0JLn8rUHfQdQCnoBHs/BsV+vmjVivKg+cVgfS+QaytrIulWKqNAWNlfXbAaNtZMv8gNKZg==} - dependencies: - '@better-scroll/core': 2.4.2 - dev: false - - /@better-scroll/wheel@2.4.2: - resolution: {integrity: sha512-oJw68glWbrYBbRK8RJnKo3Fw9bU7Cd4zDbBHbKZ062/YJAJUZW9wF/3Lout4PnolkjuJIp2TZiEgJNtuRd+Njg==} - dependencies: - '@better-scroll/core': 2.4.2 - dev: false - - /@better-scroll/zoom@2.4.2: - resolution: {integrity: sha512-rN/BTE3lf2sNNvKowGL/tUKZ/BgdZcZa0pjE/rVW0tBL/7x68cBowWQD5HF2Z2Bge8OPXRjkwN/xN1aFYhEtWA==} - dependencies: - '@better-scroll/core': 2.4.2 - dev: false - - /@braintree/sanitize-url@3.1.0: - resolution: {integrity: sha512-GcIY79elgB+azP74j8vqkiXz8xLFfIzbQJdlwOPisgbKT00tviJQuEghOXSMVxJ00HoYJbGswr4kcllUc4xCcg==} - deprecated: Potential XSS vulnerability patched in v6.0.0. - dev: false - - /@jridgewell/gen-mapping@0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - - /@jridgewell/gen-mapping@0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.15 - dev: true - - /@jridgewell/resolve-uri@3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/sourcemap-codec@1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: true - - /@jridgewell/trace-mapping@0.3.15: - resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - - /@mrmlnc/readdir-enhanced@2.2.1: - resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==} - engines: {node: '>=4'} - dependencies: - call-me-maybe: 1.0.1 - glob-to-regexp: 0.3.0 - - /@nodelib/fs.stat@1.1.3: - resolution: {integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==} - engines: {node: '>= 6'} - - /@sindresorhus/is@0.14.0: - resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} - engines: {node: '>=6'} - dev: true - - /@szmarczak/http-timer@1.1.2: - resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} - engines: {node: '>=6'} - dependencies: - defer-to-connect: 1.1.3 - dev: true - - /@types/body-parser@1.19.2: - resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} - dependencies: - '@types/connect': 3.4.35 - '@types/node': 18.7.16 - dev: true - - /@types/connect-history-api-fallback@1.3.5: - resolution: {integrity: sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==} - dependencies: - '@types/express-serve-static-core': 4.17.30 - '@types/node': 18.7.16 - dev: true - - /@types/connect@3.4.35: - resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} - dependencies: - '@types/node': 18.7.16 - dev: true - - /@types/express-serve-static-core@4.17.30: - resolution: {integrity: sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==} - dependencies: - '@types/node': 18.7.16 - '@types/qs': 6.9.7 - '@types/range-parser': 1.2.4 - dev: true - - /@types/express@4.17.13: - resolution: {integrity: sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==} - dependencies: - '@types/body-parser': 1.19.2 - '@types/express-serve-static-core': 4.17.30 - '@types/qs': 6.9.7 - '@types/serve-static': 1.15.0 - dev: true - - /@types/glob@7.2.0: - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 18.7.16 - - /@types/highlight.js@9.12.4: - resolution: {integrity: sha512-t2szdkwmg2JJyuCM20e8kR2X59WCE5Zkl4bzm1u1Oukjm79zpbiAv+QjnwLnuuV0WHEcX2NgUItu0pAMKuOPww==} - dev: true - - /@types/http-proxy@1.17.9: - resolution: {integrity: sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==} - dependencies: - '@types/node': 18.7.16 - dev: true - - /@types/json-schema@7.0.11: - resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} - dev: true - - /@types/keyv@3.1.4: - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - dependencies: - '@types/node': 18.7.16 - dev: true - - /@types/linkify-it@3.0.2: - resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==} - dev: true - - /@types/markdown-it@10.0.3: - resolution: {integrity: sha512-daHJk22isOUvNssVGF2zDnnSyxHhFYhtjeX4oQaKD6QzL3ZR1QSgiD1g+Q6/WSWYVogNXYDXODtbgW/WiFCtyw==} - dependencies: - '@types/highlight.js': 9.12.4 - '@types/linkify-it': 3.0.2 - '@types/mdurl': 1.0.2 - highlight.js: 9.18.5 - dev: true - - /@types/mdurl@1.0.2: - resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} - dev: true - - /@types/mime@3.0.1: - resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} - dev: true - - /@types/minimatch@5.1.2: - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - - /@types/node@18.7.16: - resolution: {integrity: sha512-EQHhixfu+mkqHMZl1R2Ovuvn47PUw18azMJOTwSZr9/fhzHNGXAJ0ma0dayRVchprpCj0Kc1K1xKoWaATWF1qg==} - - /@types/q@1.5.5: - resolution: {integrity: sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==} - dev: true - - /@types/qs@6.9.7: - resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} - dev: true - - /@types/range-parser@1.2.4: - resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} - dev: true - - /@types/responselike@1.0.3: - resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - dependencies: - '@types/node': 18.7.16 - dev: true - - /@types/serve-static@1.15.0: - resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} - dependencies: - '@types/mime': 3.0.1 - '@types/node': 18.7.16 - dev: true - - /@types/source-list-map@0.1.2: - resolution: {integrity: sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==} - dev: true - - /@types/tapable@1.0.8: - resolution: {integrity: sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==} - dev: true - - /@types/uglify-js@3.17.0: - resolution: {integrity: sha512-3HO6rm0y+/cqvOyA8xcYLweF0TKXlAxmQASjbOi49Co51A1N4nR4bEwBgRoD9kNM+rqFGArjKr654SLp2CoGmQ==} - dependencies: - source-map: 0.6.1 - dev: true - - /@types/webpack-dev-server@3.11.6: - resolution: {integrity: sha512-XCph0RiiqFGetukCTC3KVnY1jwLcZ84illFRMbyFzCcWl90B/76ew0tSqF46oBhnLC4obNDG7dMO0JfTN0MgMQ==} - dependencies: - '@types/connect-history-api-fallback': 1.3.5 - '@types/express': 4.17.13 - '@types/serve-static': 1.15.0 - '@types/webpack': 4.41.32 - http-proxy-middleware: 1.3.1 - transitivePeerDependencies: - - debug - dev: true - - /@types/webpack-sources@3.2.0: - resolution: {integrity: sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==} - dependencies: - '@types/node': 18.7.16 - '@types/source-list-map': 0.1.2 - source-map: 0.7.4 - dev: true - - /@types/webpack@4.41.32: - resolution: {integrity: sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==} - dependencies: - '@types/node': 18.7.16 - '@types/tapable': 1.0.8 - '@types/uglify-js': 3.17.0 - '@types/webpack-sources': 3.2.0 - anymatch: 3.1.2 - source-map: 0.6.1 - dev: true - - /@vue/babel-helper-vue-jsx-merge-props@1.4.0: - resolution: {integrity: sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==} - dev: true - - /@vue/babel-helper-vue-transform-on@1.0.2: - resolution: {integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==} - dev: true - - /@vue/babel-plugin-jsx@1.1.1(@babel/core@7.19.0): - resolution: {integrity: sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==} - dependencies: - '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.19.0) - '@babel/template': 7.18.10 - '@babel/traverse': 7.19.0 - '@babel/types': 7.19.0 - '@vue/babel-helper-vue-transform-on': 1.0.2 - camelcase: 6.3.0 - html-tags: 3.2.0 - svg-tags: 1.0.0 - transitivePeerDependencies: - - '@babel/core' - - supports-color - dev: true - - /@vue/babel-plugin-transform-vue-jsx@1.4.0(@babel/core@7.19.0): - resolution: {integrity: sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.19.0) - '@vue/babel-helper-vue-jsx-merge-props': 1.4.0 - html-tags: 2.0.0 - lodash.kebabcase: 4.1.1 - svg-tags: 1.0.0 - dev: true - - /@vue/babel-preset-app@4.5.19(@babel/core@7.19.0)(core-js@3.25.1)(vue@2.7.10): - resolution: {integrity: sha512-VCNRiAt2P/bLo09rYt3DLe6xXUMlhJwrvU18Ddd/lYJgC7s8+wvhgYs+MTx4OiAXdu58drGwSBO9SPx7C6J82Q==} - peerDependencies: - '@babel/core': '*' - core-js: ^3 - vue: ^2 || ^3.0.0-0 - peerDependenciesMeta: - core-js: - optional: true - vue: - optional: true - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-compilation-targets': 7.19.0(@babel/core@7.19.0) - '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-proposal-decorators': 7.19.0(@babel/core@7.19.0) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.19.0) - '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.19.0) - '@babel/plugin-transform-runtime': 7.18.10(@babel/core@7.19.0) - '@babel/preset-env': 7.19.0(@babel/core@7.19.0) - '@babel/runtime': 7.19.0 - '@vue/babel-plugin-jsx': 1.1.1(@babel/core@7.19.0) - '@vue/babel-preset-jsx': 1.4.0(@babel/core@7.19.0)(vue@2.7.10) - babel-plugin-dynamic-import-node: 2.3.3 - core-js: 3.25.1 - core-js-compat: 3.25.1 - semver: 6.3.0 - vue: 2.7.10 - transitivePeerDependencies: - - supports-color - dev: true - - /@vue/babel-preset-jsx@1.4.0(@babel/core@7.19.0)(vue@2.7.10): - resolution: {integrity: sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - vue: '*' - peerDependenciesMeta: - vue: - optional: true - dependencies: - '@babel/core': 7.19.0 - '@vue/babel-helper-vue-jsx-merge-props': 1.4.0 - '@vue/babel-plugin-transform-vue-jsx': 1.4.0(@babel/core@7.19.0) - '@vue/babel-sugar-composition-api-inject-h': 1.4.0(@babel/core@7.19.0) - '@vue/babel-sugar-composition-api-render-instance': 1.4.0(@babel/core@7.19.0) - '@vue/babel-sugar-functional-vue': 1.4.0(@babel/core@7.19.0) - '@vue/babel-sugar-inject-h': 1.4.0(@babel/core@7.19.0) - '@vue/babel-sugar-v-model': 1.4.0(@babel/core@7.19.0) - '@vue/babel-sugar-v-on': 1.4.0(@babel/core@7.19.0) - vue: 2.7.10 - dev: true - - /@vue/babel-sugar-composition-api-inject-h@1.4.0(@babel/core@7.19.0): - resolution: {integrity: sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.19.0) - dev: true - - /@vue/babel-sugar-composition-api-render-instance@1.4.0(@babel/core@7.19.0): - resolution: {integrity: sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.19.0) - dev: true - - /@vue/babel-sugar-functional-vue@1.4.0(@babel/core@7.19.0): - resolution: {integrity: sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.19.0) - dev: true - - /@vue/babel-sugar-inject-h@1.4.0(@babel/core@7.19.0): - resolution: {integrity: sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.19.0) - dev: true - - /@vue/babel-sugar-v-model@1.4.0(@babel/core@7.19.0): - resolution: {integrity: sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.19.0) - '@vue/babel-helper-vue-jsx-merge-props': 1.4.0 - '@vue/babel-plugin-transform-vue-jsx': 1.4.0(@babel/core@7.19.0) - camelcase: 5.3.1 - html-tags: 2.0.0 - svg-tags: 1.0.0 - dev: true - - /@vue/babel-sugar-v-on@1.4.0(@babel/core@7.19.0): - resolution: {integrity: sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.19.0) - '@vue/babel-plugin-transform-vue-jsx': 1.4.0(@babel/core@7.19.0) - camelcase: 5.3.1 - dev: true - - /@vue/compiler-sfc@2.7.10: - resolution: {integrity: sha512-55Shns6WPxlYsz4WX7q9ZJBL77sKE1ZAYNYStLs6GbhIOMrNtjMvzcob6gu3cGlfpCR4bT7NXgyJ3tly2+Hx8Q==} - dependencies: - '@babel/parser': 7.19.0 - postcss: 8.4.16 - source-map: 0.6.1 - dev: true - - /@vue/component-compiler-utils@3.3.0: - resolution: {integrity: sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==} - dependencies: - consolidate: 0.15.1 - hash-sum: 1.0.2 - lru-cache: 4.1.5 - merge-source-map: 1.1.0 - postcss: 7.0.39 - postcss-selector-parser: 6.0.10 - source-map: 0.6.1 - vue-template-es2015-compiler: 1.9.1 - optionalDependencies: - prettier: 2.7.1 - transitivePeerDependencies: - - arc-templates - - atpl - - babel-core - - bracket-template - - coffee-script - - dot - - dust - - dustjs-helpers - - dustjs-linkedin - - eco - - ect - - ejs - - haml-coffee - - hamlet - - hamljs - - handlebars - - hogan.js - - htmling - - jade - - jazz - - jqtpl - - just - - liquid-node - - liquor - - lodash - - marko - - mote - - mustache - - nunjucks - - plates - - pug - - qejs - - ractive - - razor-tmpl - - react - - react-dom - - slm - - squirrelly - - swig - - swig-templates - - teacup - - templayed - - then-jade - - then-pug - - tinyliquid - - toffee - - twig - - twing - - underscore - - vash - - velocityjs - - walrus - - whiskers - dev: true - - /@vuepress/core@1.9.7: - resolution: {integrity: sha512-u5eb1mfNLV8uG2UuxlvpB/FkrABxeMHqymTsixOnsOg2REziv9puEIbqaZ5BjLPvbCDvSj6rn+DwjENmBU+frQ==} - engines: {node: '>=8.6'} - dependencies: - '@babel/core': 7.19.0 - '@vue/babel-preset-app': 4.5.19(@babel/core@7.19.0)(core-js@3.25.1)(vue@2.7.10) - '@vuepress/markdown': 1.9.7 - '@vuepress/markdown-loader': 1.9.7 - '@vuepress/plugin-last-updated': 1.9.7 - '@vuepress/plugin-register-components': 1.9.7 - '@vuepress/shared-utils': 1.9.7 - '@vuepress/types': 1.9.7 - autoprefixer: 9.8.8 - babel-loader: 8.2.5(@babel/core@7.19.0)(webpack@4.46.0) - bundle-require: 2.1.8(esbuild@0.14.7) - cache-loader: 3.0.1(webpack@4.46.0) - chokidar: 2.1.8(supports-color@6.1.0) - connect-history-api-fallback: 1.6.0 - copy-webpack-plugin: 5.1.2(webpack@4.46.0) - core-js: 3.25.1 - cross-spawn: 6.0.5 - css-loader: 2.1.1(webpack@4.46.0) - esbuild: 0.14.7 - file-loader: 3.0.1(webpack@4.46.0) - js-yaml: 3.14.1 - lru-cache: 5.1.1 - mini-css-extract-plugin: 0.6.0(webpack@4.46.0) - optimize-css-assets-webpack-plugin: 5.0.8(webpack@4.46.0) - portfinder: 1.0.32(supports-color@6.1.0) - postcss-loader: 3.0.0 - postcss-safe-parser: 4.0.2 - toml: 3.0.0 - url-loader: 1.1.2(webpack@4.46.0) - vue: 2.7.10 - vue-loader: 15.10.0(cache-loader@3.0.1)(css-loader@2.1.1)(vue-template-compiler@2.7.10)(webpack@4.46.0) - vue-router: 3.6.5(vue@2.7.10) - vue-server-renderer: 2.7.10 - vue-template-compiler: 2.7.10 - vuepress-html-webpack-plugin: 3.2.0(webpack@4.46.0) - vuepress-plugin-container: 2.1.5 - webpack: 4.46.0 - webpack-chain: 6.5.1 - webpack-dev-server: 3.11.3(webpack@4.46.0) - webpack-merge: 4.2.2 - webpackbar: 3.2.0(webpack@4.46.0) - transitivePeerDependencies: - - '@vue/compiler-sfc' - - arc-templates - - atpl - - babel-core - - bracket-template - - bufferutil - - coffee-script - - debug - - dot - - dust - - dustjs-helpers - - dustjs-linkedin - - eco - - ect - - ejs - - haml-coffee - - hamlet - - hamljs - - handlebars - - hogan.js - - htmling - - jade - - jazz - - jqtpl - - just - - liquid-node - - liquor - - lodash - - marko - - mote - - mustache - - nunjucks - - plates - - pug - - qejs - - ractive - - razor-tmpl - - react - - react-dom - - slm - - squirrelly - - supports-color - - swig - - swig-templates - - teacup - - templayed - - then-jade - - then-pug - - tinyliquid - - toffee - - twig - - twing - - underscore - - utf-8-validate - - vash - - velocityjs - - walrus - - webpack-cli - - webpack-command - - whiskers - dev: true - - /@vuepress/markdown-loader@1.9.7: - resolution: {integrity: sha512-mxXF8FtX/QhOg/UYbe4Pr1j5tcf/aOEI502rycTJ3WF2XAtOmewjkGV4eAA6f6JmuM/fwzOBMZKDyy9/yo2I6Q==} - dependencies: - '@vuepress/markdown': 1.9.7 - loader-utils: 1.4.0 - lru-cache: 5.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@vuepress/markdown@1.9.7: - resolution: {integrity: sha512-DFOjYkwV6fT3xXTGdTDloeIrT1AbwJ9pwefmrp0rMgC6zOz3XUJn6qqUwcYFO5mNBWpbiFQ3JZirCtgOe+xxBA==} - dependencies: - '@vuepress/shared-utils': 1.9.7 - markdown-it: 8.4.2 - markdown-it-anchor: 5.3.0(markdown-it@8.4.2) - markdown-it-chain: 1.3.0(markdown-it@8.4.2) - markdown-it-emoji: 1.4.0 - markdown-it-table-of-contents: 0.4.4 - prismjs: 1.29.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@vuepress/plugin-active-header-links@1.9.7: - resolution: {integrity: sha512-G1M8zuV9Og3z8WBiKkWrofG44NEXsHttc1MYreDXfeWh/NLjr9q1GPCEXtiCjrjnHZHB3cSQTKnTqAHDq35PGA==} - dependencies: - '@vuepress/types': 1.9.7 - lodash.debounce: 4.0.8 - transitivePeerDependencies: - - debug - dev: true - - /@vuepress/plugin-last-updated@1.9.7: - resolution: {integrity: sha512-FiFBOl49dlFRjbLRnRAv77HDWfe+S/eCPtMQobq4/O3QWuL3Na5P4fCTTVzq1K7rWNO9EPsWNB2Jb26ndlQLKQ==} - dependencies: - '@vuepress/types': 1.9.7 - cross-spawn: 6.0.5 - transitivePeerDependencies: - - debug - dev: true - - /@vuepress/plugin-nprogress@1.9.7: - resolution: {integrity: sha512-sI148igbdRfLgyzB8PdhbF51hNyCDYXsBn8bBWiHdzcHBx974sVNFKtfwdIZcSFsNrEcg6zo8YIrQ+CO5vlUhQ==} - dependencies: - '@vuepress/types': 1.9.7 - nprogress: 0.2.0 - transitivePeerDependencies: - - debug - dev: true - - /@vuepress/plugin-register-components@1.9.7: - resolution: {integrity: sha512-l/w1nE7Dpl+LPMb8+AHSGGFYSP/t5j6H4/Wltwc2QcdzO7yqwC1YkwwhtTXvLvHOV8O7+rDg2nzvq355SFkfKA==} - dependencies: - '@vuepress/shared-utils': 1.9.7 - '@vuepress/types': 1.9.7 - transitivePeerDependencies: - - debug - - supports-color - dev: true - - /@vuepress/plugin-search@1.9.7: - resolution: {integrity: sha512-MLpbUVGLxaaHEwflFxvy0pF9gypFVUT3Q9Zc6maWE+0HDWAvzMxo6GBaj6mQPwjOqNQMf4QcN3hDzAZktA+DQg==} - dependencies: - '@vuepress/types': 1.9.7 - transitivePeerDependencies: - - debug - dev: true - - /@vuepress/shared-utils@1.9.7: - resolution: {integrity: sha512-lIkO/eSEspXgVHjYHa9vuhN7DuaYvkfX1+TTJDiEYXIwgwqtvkTv55C+IOdgswlt0C/OXDlJaUe1rGgJJ1+FTw==} - dependencies: - chalk: 2.4.2 - escape-html: 1.0.3 - fs-extra: 7.0.1 - globby: 9.2.0 - gray-matter: 4.0.3 - hash-sum: 1.0.2 - semver: 6.3.0 - toml: 3.0.0 - upath: 1.2.0 - transitivePeerDependencies: - - supports-color - - /@vuepress/theme-default@1.9.7: - resolution: {integrity: sha512-NZzCLIl+bgJIibhkqVmk/NSku57XIuXugxAN3uiJrCw6Mu6sb3xOvbk0En3k+vS2BKHxAZ6Cx7dbCiyknDQnSA==} - dependencies: - '@vuepress/plugin-active-header-links': 1.9.7 - '@vuepress/plugin-nprogress': 1.9.7 - '@vuepress/plugin-search': 1.9.7 - '@vuepress/types': 1.9.7 - docsearch.js: 2.6.3 - lodash: 4.17.21 - stylus: 0.54.8 - stylus-loader: 3.0.2(stylus@0.54.8) - vuepress-plugin-container: 2.1.5 - vuepress-plugin-smooth-scroll: 0.0.3 - transitivePeerDependencies: - - debug - - supports-color - dev: true - - /@vuepress/types@1.9.7: - resolution: {integrity: sha512-moLQzkX3ED2o18dimLemUm7UVDKxhcrJmGt5C0Ng3xxrLPaQu7UqbROtEKB3YnMRt4P/CA91J+Ck+b9LmGabog==} - dependencies: - '@types/markdown-it': 10.0.3 - '@types/webpack-dev-server': 3.11.6 - webpack-chain: 6.5.1 - transitivePeerDependencies: - - debug - dev: true - - /@webassemblyjs/ast@1.9.0: - resolution: {integrity: sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==} - dependencies: - '@webassemblyjs/helper-module-context': 1.9.0 - '@webassemblyjs/helper-wasm-bytecode': 1.9.0 - '@webassemblyjs/wast-parser': 1.9.0 - dev: true - - /@webassemblyjs/floating-point-hex-parser@1.9.0: - resolution: {integrity: sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==} - dev: true - - /@webassemblyjs/helper-api-error@1.9.0: - resolution: {integrity: sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==} - dev: true - - /@webassemblyjs/helper-buffer@1.9.0: - resolution: {integrity: sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==} - dev: true - - /@webassemblyjs/helper-code-frame@1.9.0: - resolution: {integrity: sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==} - dependencies: - '@webassemblyjs/wast-printer': 1.9.0 - dev: true - - /@webassemblyjs/helper-fsm@1.9.0: - resolution: {integrity: sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==} - dev: true - - /@webassemblyjs/helper-module-context@1.9.0: - resolution: {integrity: sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==} - dependencies: - '@webassemblyjs/ast': 1.9.0 - dev: true - - /@webassemblyjs/helper-wasm-bytecode@1.9.0: - resolution: {integrity: sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==} - dev: true - - /@webassemblyjs/helper-wasm-section@1.9.0: - resolution: {integrity: sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==} - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/helper-buffer': 1.9.0 - '@webassemblyjs/helper-wasm-bytecode': 1.9.0 - '@webassemblyjs/wasm-gen': 1.9.0 - dev: true - - /@webassemblyjs/ieee754@1.9.0: - resolution: {integrity: sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==} - dependencies: - '@xtuc/ieee754': 1.2.0 - dev: true - - /@webassemblyjs/leb128@1.9.0: - resolution: {integrity: sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==} - dependencies: - '@xtuc/long': 4.2.2 - dev: true - - /@webassemblyjs/utf8@1.9.0: - resolution: {integrity: sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==} - dev: true - - /@webassemblyjs/wasm-edit@1.9.0: - resolution: {integrity: sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==} - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/helper-buffer': 1.9.0 - '@webassemblyjs/helper-wasm-bytecode': 1.9.0 - '@webassemblyjs/helper-wasm-section': 1.9.0 - '@webassemblyjs/wasm-gen': 1.9.0 - '@webassemblyjs/wasm-opt': 1.9.0 - '@webassemblyjs/wasm-parser': 1.9.0 - '@webassemblyjs/wast-printer': 1.9.0 - dev: true - - /@webassemblyjs/wasm-gen@1.9.0: - resolution: {integrity: sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==} - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/helper-wasm-bytecode': 1.9.0 - '@webassemblyjs/ieee754': 1.9.0 - '@webassemblyjs/leb128': 1.9.0 - '@webassemblyjs/utf8': 1.9.0 - dev: true - - /@webassemblyjs/wasm-opt@1.9.0: - resolution: {integrity: sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==} - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/helper-buffer': 1.9.0 - '@webassemblyjs/wasm-gen': 1.9.0 - '@webassemblyjs/wasm-parser': 1.9.0 - dev: true - - /@webassemblyjs/wasm-parser@1.9.0: - resolution: {integrity: sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==} - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/helper-api-error': 1.9.0 - '@webassemblyjs/helper-wasm-bytecode': 1.9.0 - '@webassemblyjs/ieee754': 1.9.0 - '@webassemblyjs/leb128': 1.9.0 - '@webassemblyjs/utf8': 1.9.0 - dev: true - - /@webassemblyjs/wast-parser@1.9.0: - resolution: {integrity: sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==} - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/floating-point-hex-parser': 1.9.0 - '@webassemblyjs/helper-api-error': 1.9.0 - '@webassemblyjs/helper-code-frame': 1.9.0 - '@webassemblyjs/helper-fsm': 1.9.0 - '@xtuc/long': 4.2.2 - dev: true - - /@webassemblyjs/wast-printer@1.9.0: - resolution: {integrity: sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==} - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/wast-parser': 1.9.0 - '@xtuc/long': 4.2.2 - dev: true - - /@xtuc/ieee754@1.2.0: - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - dev: true - - /@xtuc/long@4.2.2: - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - dev: true - - /abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - dev: true - - /accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - dev: true - - /acorn@6.4.2: - resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /acorn@8.12.0: - resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /agentkeepalive@2.2.0: - resolution: {integrity: sha512-TnB6ziK363p7lR8QpeLC8aMr8EGYBKZTpgzQLfqTs3bR0Oo5VbKdwKf8h0dSzsYrB7lSCgfJnMZKqShvlq5Oyg==} - engines: {node: '>= 0.10.0'} - dev: true - - /ajv-errors@1.0.1(ajv@6.12.6): - resolution: {integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==} - peerDependencies: - ajv: '>=5.0.0' - dependencies: - ajv: 6.12.6 - dev: true - - /ajv-keywords@3.5.2(ajv@6.12.6): - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - dependencies: - ajv: 6.12.6 - dev: true - - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: true - - /algoliasearch@3.35.1: - resolution: {integrity: sha512-K4yKVhaHkXfJ/xcUnil04xiSrB8B8yHZoFEhWNpXg23eiCnqvTZw1tn/SqvdsANlYHLJlKl0qi3I/Q2Sqo7LwQ==} - engines: {node: '>=0.8'} - dependencies: - agentkeepalive: 2.2.0 - debug: 2.6.9(supports-color@6.1.0) - envify: 4.1.0 - es6-promise: 4.2.8 - events: 1.1.1 - foreach: 2.0.6 - global: 4.4.0 - inherits: 2.0.4 - isarray: 2.0.5 - load-script: 1.0.0 - object-keys: 1.1.1 - querystring-es3: 0.2.1 - reduce: 1.0.2 - semver: 5.7.1 - tunnel-agent: 0.6.0 - transitivePeerDependencies: - - supports-color - dev: true - - /alphanum-sort@1.0.2: - resolution: {integrity: sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==} - dev: true - - /ansi-align@3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - dependencies: - string-width: 4.2.3 - dev: true - - /ansi-colors@3.2.4: - resolution: {integrity: sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==} - engines: {node: '>=6'} - dev: true - - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.21.3 - dev: true - - /ansi-html-community@0.0.8: - resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} - engines: {'0': node >= 0.8.0} - hasBin: true - dev: true - - /ansi-regex@2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - dev: true - - /ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - dev: true - - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: true - - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: true - - /anymatch@2.0.0(supports-color@6.1.0): - resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} - dependencies: - micromatch: 3.1.10(supports-color@6.1.0) - normalize-path: 2.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /anymatch@3.1.2: - resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - - /aproba@1.2.0: - resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} - dev: true - - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - - /arr-diff@4.0.0: - resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} - engines: {node: '>=0.10.0'} - - /arr-flatten@1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} - - /arr-union@3.1.0: - resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} - engines: {node: '>=0.10.0'} - - /array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - dev: true - - /array-flatten@2.1.2: - resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} - dev: true - - /array-union@1.0.2: - resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} - engines: {node: '>=0.10.0'} - dependencies: - array-uniq: 1.0.3 - - /array-uniq@1.0.3: - resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} - engines: {node: '>=0.10.0'} - - /array-unique@0.3.2: - resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} - engines: {node: '>=0.10.0'} - - /array.prototype.reduce@1.0.4: - resolution: {integrity: sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.2 - es-array-method-boxes-properly: 1.0.0 - is-string: 1.0.7 - dev: true - - /asn1.js@5.4.1: - resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} - dependencies: - bn.js: 4.12.0 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - safer-buffer: 2.1.2 - dev: true - - /asn1@0.2.6: - resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} - dependencies: - safer-buffer: 2.1.2 - dev: true - - /assert-plus@1.0.0: - resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} - engines: {node: '>=0.8'} - dev: true - - /assert@1.5.0: - resolution: {integrity: sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==} - dependencies: - object-assign: 4.1.1 - util: 0.10.3 - dev: true - - /assign-symbols@1.0.0: - resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} - engines: {node: '>=0.10.0'} - - /async-each@1.0.3: - resolution: {integrity: sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==} - dev: true - - /async-limiter@1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - dev: true - - /async@2.6.4: - resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} - dependencies: - lodash: 4.17.21 - dev: true - - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - /atob@2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - - /autocomplete.js@0.36.0: - resolution: {integrity: sha512-jEwUXnVMeCHHutUt10i/8ZiRaCb0Wo+ZyKxeGsYwBDtw6EJHqEeDrq4UwZRD8YBSvp3g6klP678il2eeiVXN2Q==} - dependencies: - immediate: 3.3.0 - dev: true - - /autoprefixer@9.8.8: - resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==} - hasBin: true - dependencies: - browserslist: 4.21.3 - caniuse-lite: 1.0.30001393 - normalize-range: 0.1.2 - num2fraction: 1.2.2 - picocolors: 0.2.1 - postcss: 7.0.39 - postcss-value-parser: 4.2.0 - dev: true - - /aws-sign2@0.7.0: - resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - dev: true - - /aws4@1.11.0: - resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} - dev: true - - /axios@1.2.1: - resolution: {integrity: sha512-I88cFiGu9ryt/tfVEi4kX2SITsvDddTajXTOFmt2uK1ZVA8LytjtdeyefdQWEf5PU8w+4SSJDoYnggflB5tW4A==} - dependencies: - follow-redirects: 1.15.1(debug@4.3.4) - form-data: 4.0.0 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - dev: false - - /babel-loader@8.2.5(@babel/core@7.19.0)(webpack@4.46.0): - resolution: {integrity: sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==} - engines: {node: '>= 8.9'} - peerDependencies: - '@babel/core': ^7.0.0 - webpack: '>=2' - dependencies: - '@babel/core': 7.19.0 - find-cache-dir: 3.3.2 - loader-utils: 2.0.2 - make-dir: 3.1.0 - schema-utils: 2.7.1 - webpack: 4.46.0 - dev: true - - /babel-plugin-dynamic-import-node@2.3.3: - resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} - dependencies: - object.assign: 4.1.4 - dev: true - - /babel-plugin-polyfill-corejs2@0.3.2(@babel/core@7.19.0): - resolution: {integrity: sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.19.0 - '@babel/core': 7.19.0 - '@babel/helper-define-polyfill-provider': 0.3.2(@babel/core@7.19.0) - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-corejs3@0.5.3(@babel/core@7.19.0): - resolution: {integrity: sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-define-polyfill-provider': 0.3.2(@babel/core@7.19.0) - core-js-compat: 3.25.1 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-regenerator@0.4.0(@babel/core@7.19.0): - resolution: {integrity: sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-define-polyfill-provider': 0.3.2(@babel/core@7.19.0) - transitivePeerDependencies: - - supports-color - dev: true - - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: true - - /base@0.11.2: - resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} - engines: {node: '>=0.10.0'} - dependencies: - cache-base: 1.0.1 - class-utils: 0.3.6 - component-emitter: 1.3.0 - define-property: 1.0.0 - isobject: 3.0.1 - mixin-deep: 1.3.2 - pascalcase: 0.1.1 - - /batch@0.6.1: - resolution: {integrity: sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=} - dev: true - - /bcrypt-pbkdf@1.0.2: - resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - dependencies: - tweetnacl: 0.14.5 - dev: true - - /better-scroll@2.4.2: - resolution: {integrity: sha512-I/JzJNUay2vMAkczBa/4x52QBdUGA3Bs/QtrKrxVjSbBHUMG6yR14srQr4aCAWlIra1FBmuddwGRfI6zRagI9Q==} - dependencies: - '@better-scroll/core': 2.4.2 - '@better-scroll/indicators': 2.4.2 - '@better-scroll/infinity': 2.4.2 - '@better-scroll/mouse-wheel': 2.4.2 - '@better-scroll/movable': 2.4.2 - '@better-scroll/nested-scroll': 2.4.2 - '@better-scroll/observe-dom': 2.4.2 - '@better-scroll/observe-image': 2.4.2 - '@better-scroll/pull-down': 2.4.2 - '@better-scroll/pull-up': 2.4.2 - '@better-scroll/scroll-bar': 2.4.2 - '@better-scroll/slide': 2.4.2 - '@better-scroll/wheel': 2.4.2 - '@better-scroll/zoom': 2.4.2 - dev: false - - /big.js@3.2.0: - resolution: {integrity: sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==} - dev: true - - /big.js@5.2.2: - resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - dev: true - - /binary-extensions@1.13.1: - resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} - engines: {node: '>=0.10.0'} - dev: true - - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - requiresBuild: true - dev: true - optional: true - - /bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - requiresBuild: true - dependencies: - file-uri-to-path: 1.0.0 - dev: true - optional: true - - /bluebird@3.7.2: - resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - dev: true - - /bn.js@4.12.0: - resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - dev: true - - /bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - dev: true - - /body-parser@1.20.0(supports-color@6.1.0): - resolution: {integrity: sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dependencies: - bytes: 3.1.2 - content-type: 1.0.4 - debug: 2.6.9(supports-color@6.1.0) - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.10.3 - raw-body: 2.5.1 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /bonjour@3.5.0: - resolution: {integrity: sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==} - dependencies: - array-flatten: 2.1.2 - deep-equal: 1.1.1 - dns-equal: 1.0.0 - dns-txt: 2.0.2 - multicast-dns: 6.2.3 - multicast-dns-service-types: 1.1.0 - dev: true - - /boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - dev: true - - /boxen@4.2.0: - resolution: {integrity: sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==} - engines: {node: '>=8'} - dependencies: - ansi-align: 3.0.1 - camelcase: 5.3.1 - chalk: 3.0.0 - cli-boxes: 2.2.1 - string-width: 4.2.3 - term-size: 2.2.1 - type-fest: 0.8.1 - widest-line: 3.1.0 - dev: true - - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - /braces@2.3.2(supports-color@6.1.0): - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - extend-shallow: 2.0.1 - fill-range: 4.0.0 - isobject: 3.0.1 - repeat-element: 1.1.4 - snapdragon: 0.8.2(supports-color@6.1.0) - snapdragon-node: 2.1.1 - split-string: 3.1.0 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - dev: true - - /brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - dev: true - - /browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} - dependencies: - buffer-xor: 1.0.3 - cipher-base: 1.0.4 - create-hash: 1.2.0 - evp_bytestokey: 1.0.3 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /browserify-cipher@1.0.1: - resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} - dependencies: - browserify-aes: 1.2.0 - browserify-des: 1.0.2 - evp_bytestokey: 1.0.3 - dev: true - - /browserify-des@1.0.2: - resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} - dependencies: - cipher-base: 1.0.4 - des.js: 1.0.1 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /browserify-rsa@4.1.0: - resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} - dependencies: - bn.js: 5.2.1 - randombytes: 2.1.0 - dev: true - - /browserify-sign@4.2.1: - resolution: {integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==} - dependencies: - bn.js: 5.2.1 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - create-hmac: 1.1.7 - elliptic: 6.5.4 - inherits: 2.0.4 - parse-asn1: 5.1.6 - readable-stream: 3.6.0 - safe-buffer: 5.2.1 - dev: true - - /browserify-zlib@0.2.0: - resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} - dependencies: - pako: 1.0.11 - dev: true - - /browserslist@4.21.3: - resolution: {integrity: sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001393 - electron-to-chromium: 1.4.246 - node-releases: 2.0.6 - update-browserslist-db: 1.0.7(browserslist@4.21.3) - dev: true - - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true - - /buffer-indexof@1.1.1: - resolution: {integrity: sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==} - dev: true - - /buffer-json@2.0.0: - resolution: {integrity: sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==} - dev: true - - /buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - dev: true - - /buffer@4.9.2: - resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - isarray: 1.0.0 - dev: true - - /builtin-status-codes@3.0.0: - resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} - dev: true - - /bundle-require@2.1.8(esbuild@0.14.7): - resolution: {integrity: sha512-oOEg3A0hy/YzvNWNowtKD0pmhZKseOFweCbgyMqTIih4gRY1nJWsvrOCT27L9NbIyL5jMjTFrAUpGxxpW68Puw==} - peerDependencies: - esbuild: '>=0.13' - dependencies: - esbuild: 0.14.7 - dev: true - - /bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} - dev: true - - /bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - dev: true - - /cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - dev: true - - /cacache@12.0.4: - resolution: {integrity: sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==} - dependencies: - bluebird: 3.7.2 - chownr: 1.1.4 - figgy-pudding: 3.5.2 - glob: 7.2.3 - graceful-fs: 4.2.10 - infer-owner: 1.0.4 - lru-cache: 5.1.1 - mississippi: 3.0.0 - mkdirp: 0.5.6 - move-concurrently: 1.0.1 - promise-inflight: 1.0.1(bluebird@3.7.2) - rimraf: 2.7.1 - ssri: 6.0.2 - unique-filename: 1.1.1 - y18n: 4.0.3 - dev: true - - /cache-base@1.0.1: - resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} - engines: {node: '>=0.10.0'} - dependencies: - collection-visit: 1.0.0 - component-emitter: 1.3.0 - get-value: 2.0.6 - has-value: 1.0.0 - isobject: 3.0.1 - set-value: 2.0.1 - to-object-path: 0.3.0 - union-value: 1.0.1 - unset-value: 1.0.0 - - /cache-loader@3.0.1(webpack@4.46.0): - resolution: {integrity: sha512-HzJIvGiGqYsFUrMjAJNDbVZoG7qQA+vy9AIoKs7s9DscNfki0I589mf2w6/tW+kkFH3zyiknoWV5Jdynu6b/zw==} - engines: {node: '>= 6.9.0'} - peerDependencies: - webpack: ^4.0.0 - dependencies: - buffer-json: 2.0.0 - find-cache-dir: 2.1.0 - loader-utils: 1.4.0 - mkdirp: 0.5.6 - neo-async: 2.6.2 - schema-utils: 1.0.0 - webpack: 4.46.0 - dev: true - - /cacheable-request@6.1.0: - resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} - engines: {node: '>=8'} - dependencies: - clone-response: 1.0.3 - get-stream: 5.2.0 - http-cache-semantics: 4.1.0 - keyv: 3.1.0 - lowercase-keys: 2.0.0 - normalize-url: 4.5.1 - responselike: 1.0.2 - dev: true - - /call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} - dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.1.2 - dev: true - - /call-me-maybe@1.0.1: - resolution: {integrity: sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==} - - /caller-callsite@2.0.0: - resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} - engines: {node: '>=4'} - dependencies: - callsites: 2.0.0 - dev: true - - /caller-path@2.0.0: - resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} - engines: {node: '>=4'} - dependencies: - caller-callsite: 2.0.0 - dev: true - - /callsites@2.0.0: - resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} - engines: {node: '>=4'} - dev: true - - /camel-case@3.0.0: - resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} - dependencies: - no-case: 2.3.2 - upper-case: 1.1.3 - dev: true - - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: true - - /camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: true - - /caniuse-api@3.0.0: - resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - dependencies: - browserslist: 4.21.3 - caniuse-lite: 1.0.30001393 - lodash.memoize: 4.1.2 - lodash.uniq: 4.5.0 - dev: true - - /caniuse-lite@1.0.30001393: - resolution: {integrity: sha512-N/od11RX+Gsk+1qY/jbPa0R6zJupEa0lxeBG598EbrtblxVCTJsQwbRBm6+V+rxpc5lHKdsXb9RY83cZIPLseA==} - dev: true - - /caseless@0.12.0: - resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - dev: true - - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - /chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true - - /chokidar@2.1.8(supports-color@6.1.0): - resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} - deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies - dependencies: - anymatch: 2.0.0(supports-color@6.1.0) - async-each: 1.0.3 - braces: 2.3.2(supports-color@6.1.0) - glob-parent: 3.1.0 - inherits: 2.0.4 - is-binary-path: 1.0.1 - is-glob: 4.0.3 - normalize-path: 3.0.0 - path-is-absolute: 1.0.1 - readdirp: 2.2.1(supports-color@6.1.0) - upath: 1.2.0 - optionalDependencies: - fsevents: 1.2.13 - transitivePeerDependencies: - - supports-color - dev: true - - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - requiresBuild: true - dependencies: - anymatch: 3.1.2 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - optional: true - - /chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - dev: true - - /chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} - engines: {node: '>=6.0'} - dev: true - - /ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - dev: true - - /ci-info@3.3.2: - resolution: {integrity: sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==} - dev: true - - /cipher-base@1.0.4: - resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /class-utils@0.3.6: - resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - define-property: 0.2.5 - isobject: 3.0.1 - static-extend: 0.1.2 - - /clean-css@4.2.4: - resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} - engines: {node: '>= 4.0'} - dependencies: - source-map: 0.6.1 - dev: true - - /cli-boxes@2.2.1: - resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} - engines: {node: '>=6'} - dev: true - - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - dependencies: - restore-cursor: 3.1.0 - dev: true - - /cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - dev: true - - /clipboard@2.0.11: - resolution: {integrity: sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==} - dependencies: - good-listener: 1.2.2 - select: 1.1.2 - tiny-emitter: 2.1.0 - dev: false - - /cliui@5.0.0: - resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} - dependencies: - string-width: 3.1.0 - strip-ansi: 5.2.0 - wrap-ansi: 5.1.0 - dev: true - - /clone-response@1.0.3: - resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - dependencies: - mimic-response: 1.0.1 - dev: true - - /coa@2.0.2: - resolution: {integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==} - engines: {node: '>= 4.0'} - dependencies: - '@types/q': 1.5.5 - chalk: 2.4.2 - q: 1.5.1 - dev: true - - /collection-visit@1.0.0: - resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} - engines: {node: '>=0.10.0'} - dependencies: - map-visit: 1.0.0 - object-visit: 1.0.1 - - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: true - - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true - - /color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - dev: true - - /color@3.2.1: - resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} - dependencies: - color-convert: 1.9.3 - color-string: 1.9.1 - dev: true - - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - - /commander@2.17.1: - resolution: {integrity: sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==} - dev: true - - /commander@2.19.0: - resolution: {integrity: sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==} - dev: true - - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - /commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - dev: false - - /commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: true - - /component-emitter@1.3.0: - resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} - - /compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: true - - /compression@1.7.4(supports-color@6.1.0): - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} - engines: {node: '>= 0.8.0'} - dependencies: - accepts: 1.3.8 - bytes: 3.0.0 - compressible: 2.0.18 - debug: 2.6.9(supports-color@6.1.0) - on-headers: 1.0.2 - safe-buffer: 5.1.2 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /concat-map@0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} - - /concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.7 - typedarray: 0.0.6 - dev: true - - /configstore@5.0.1: - resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} - engines: {node: '>=8'} - dependencies: - dot-prop: 5.3.0 - graceful-fs: 4.2.10 - make-dir: 3.1.0 - unique-string: 2.0.0 - write-file-atomic: 3.0.3 - xdg-basedir: 4.0.0 - dev: true - - /connect-history-api-fallback@1.6.0: - resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} - engines: {node: '>=0.8'} - dev: true - - /consola@2.15.3: - resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} - dev: true - - /console-browserify@1.2.0: - resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} - dev: true - - /consolidate@0.15.1: - resolution: {integrity: sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==} - engines: {node: '>= 0.10.0'} - peerDependencies: - arc-templates: ^0.5.3 - atpl: '>=0.7.6' - babel-core: ^6.26.3 - bracket-template: ^1.1.5 - coffee-script: ^1.12.7 - dot: ^1.1.3 - dust: ^0.3.0 - dustjs-helpers: ^1.7.4 - dustjs-linkedin: ^2.7.5 - eco: ^1.1.0-rc-3 - ect: ^0.5.9 - ejs: ^3.1.5 - haml-coffee: ^1.14.1 - hamlet: ^0.3.3 - hamljs: ^0.6.2 - handlebars: ^4.7.6 - hogan.js: ^3.0.2 - htmling: ^0.0.8 - jade: ^1.11.0 - jazz: ^0.0.18 - jqtpl: ~1.1.0 - just: ^0.1.8 - liquid-node: ^3.0.1 - liquor: ^0.0.5 - lodash: ^4.17.20 - marko: ^3.14.4 - mote: ^0.2.0 - mustache: ^3.0.0 - nunjucks: ^3.2.2 - plates: ~0.4.11 - pug: ^3.0.0 - qejs: ^3.0.5 - ractive: ^1.3.12 - razor-tmpl: ^1.3.1 - react: ^16.13.1 - react-dom: ^16.13.1 - slm: ^2.0.0 - squirrelly: ^5.1.0 - swig: ^1.4.2 - swig-templates: ^2.0.3 - teacup: ^2.0.0 - templayed: '>=0.2.3' - then-jade: '*' - then-pug: '*' - tinyliquid: ^0.2.34 - toffee: ^0.3.6 - twig: ^1.15.2 - twing: ^5.0.2 - underscore: ^1.11.0 - vash: ^0.13.0 - velocityjs: ^2.0.1 - walrus: ^0.10.1 - whiskers: ^0.4.0 - peerDependenciesMeta: - arc-templates: - optional: true - atpl: - optional: true - babel-core: - optional: true - bracket-template: - optional: true - coffee-script: - optional: true - dot: - optional: true - dust: - optional: true - dustjs-helpers: - optional: true - dustjs-linkedin: - optional: true - eco: - optional: true - ect: - optional: true - ejs: - optional: true - haml-coffee: - optional: true - hamlet: - optional: true - hamljs: - optional: true - handlebars: - optional: true - hogan.js: - optional: true - htmling: - optional: true - jade: - optional: true - jazz: - optional: true - jqtpl: - optional: true - just: - optional: true - liquid-node: - optional: true - liquor: - optional: true - lodash: - optional: true - marko: - optional: true - mote: - optional: true - mustache: - optional: true - nunjucks: - optional: true - plates: - optional: true - pug: - optional: true - qejs: - optional: true - ractive: - optional: true - razor-tmpl: - optional: true - react: - optional: true - react-dom: - optional: true - slm: - optional: true - squirrelly: - optional: true - swig: - optional: true - swig-templates: - optional: true - teacup: - optional: true - templayed: - optional: true - then-jade: - optional: true - then-pug: - optional: true - tinyliquid: - optional: true - toffee: - optional: true - twig: - optional: true - twing: - optional: true - underscore: - optional: true - vash: - optional: true - velocityjs: - optional: true - walrus: - optional: true - whiskers: - optional: true - dependencies: - bluebird: 3.7.2 - dev: true - - /constants-browserify@1.0.0: - resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} - dev: true - - /content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /content-type@1.0.4: - resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} - engines: {node: '>= 0.6'} - dev: true - - /convert-source-map@1.8.0: - resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} - dependencies: - safe-buffer: 5.1.2 - dev: true - - /cookie-signature@1.0.6: - resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} - dev: true - - /cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - dev: true - - /copy-concurrently@1.0.5: - resolution: {integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==} - dependencies: - aproba: 1.2.0 - fs-write-stream-atomic: 1.0.10 - iferr: 0.1.5 - mkdirp: 0.5.6 - rimraf: 2.7.1 - run-queue: 1.0.3 - dev: true - - /copy-descriptor@0.1.1: - resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} - engines: {node: '>=0.10.0'} - - /copy-webpack-plugin@5.1.2(webpack@4.46.0): - resolution: {integrity: sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==} - engines: {node: '>= 6.9.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - dependencies: - cacache: 12.0.4 - find-cache-dir: 2.1.0 - glob-parent: 3.1.0 - globby: 7.1.1 - is-glob: 4.0.3 - loader-utils: 1.4.0 - minimatch: 3.1.2 - normalize-path: 3.0.0 - p-limit: 2.3.0 - schema-utils: 1.0.0 - serialize-javascript: 4.0.0 - webpack: 4.46.0 - webpack-log: 2.0.0 - dev: true - - /core-js-compat@3.25.1: - resolution: {integrity: sha512-pOHS7O0i8Qt4zlPW/eIFjwp+NrTPx+wTL0ctgI2fHn31sZOq89rDsmtc/A2vAX7r6shl+bmVI+678He46jgBlw==} - dependencies: - browserslist: 4.21.3 - dev: true - - /core-js@3.25.1: - resolution: {integrity: sha512-sr0FY4lnO1hkQ4gLDr24K0DGnweGO1QwSj5BpfQjpSJPdqWalja4cTps29Y/PJVG/P7FYlPDkH3hO+Tr0CvDgQ==} - requiresBuild: true - dev: true - - /core-util-is@1.0.2: - resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} - dev: true - - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: true - - /cosmiconfig@5.2.1: - resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} - engines: {node: '>=4'} - dependencies: - import-fresh: 2.0.0 - is-directory: 0.3.1 - js-yaml: 3.14.1 - parse-json: 4.0.0 - dev: true - - /create-ecdh@4.0.4: - resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} - dependencies: - bn.js: 4.12.0 - elliptic: 6.5.4 - dev: true - - /create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} - dependencies: - cipher-base: 1.0.4 - inherits: 2.0.4 - md5.js: 1.3.5 - ripemd160: 2.0.2 - sha.js: 2.4.11 - dev: true - - /create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} - dependencies: - cipher-base: 1.0.4 - create-hash: 1.2.0 - inherits: 2.0.4 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - dev: true - - /cross-spawn@6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.1 - shebang-command: 1.2.0 - which: 1.3.1 - dev: true - - /crypto-browserify@3.12.0: - resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} - dependencies: - browserify-cipher: 1.0.1 - browserify-sign: 4.2.1 - create-ecdh: 4.0.4 - create-hash: 1.2.0 - create-hmac: 1.1.7 - diffie-hellman: 5.0.3 - inherits: 2.0.4 - pbkdf2: 3.1.2 - public-encrypt: 4.0.3 - randombytes: 2.1.0 - randomfill: 1.0.4 - dev: true - - /crypto-random-string@2.0.0: - resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} - engines: {node: '>=8'} - dev: true - - /css-color-names@0.0.4: - resolution: {integrity: sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==} - dev: true - - /css-declaration-sorter@4.0.1: - resolution: {integrity: sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==} - engines: {node: '>4'} - dependencies: - postcss: 7.0.39 - timsort: 0.3.0 - dev: true - - /css-loader@2.1.1(webpack@4.46.0): - resolution: {integrity: sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==} - engines: {node: '>= 6.9.0'} - peerDependencies: - webpack: ^4.0.0 - dependencies: - camelcase: 5.3.1 - icss-utils: 4.1.1 - loader-utils: 1.4.0 - normalize-path: 3.0.0 - postcss: 7.0.39 - postcss-modules-extract-imports: 2.0.0 - postcss-modules-local-by-default: 2.0.6 - postcss-modules-scope: 2.2.0 - postcss-modules-values: 2.0.0 - postcss-value-parser: 3.3.1 - schema-utils: 1.0.0 - webpack: 4.46.0 - dev: true - - /css-parse@2.0.0: - resolution: {integrity: sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA==} - dependencies: - css: 2.2.4 - dev: true - - /css-select-base-adapter@0.1.1: - resolution: {integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==} - dev: true - - /css-select@2.1.0: - resolution: {integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==} - dependencies: - boolbase: 1.0.0 - css-what: 3.4.2 - domutils: 1.7.0 - nth-check: 1.0.2 - dev: true - - /css-select@4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 4.3.1 - domutils: 2.8.0 - nth-check: 2.1.1 - dev: true - - /css-tree@1.0.0-alpha.37: - resolution: {integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==} - engines: {node: '>=8.0.0'} - dependencies: - mdn-data: 2.0.4 - source-map: 0.6.1 - dev: true - - /css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - dev: true - - /css-what@3.4.2: - resolution: {integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==} - engines: {node: '>= 6'} - dev: true - - /css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - dev: true - - /css@2.2.4: - resolution: {integrity: sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==} - dependencies: - inherits: 2.0.4 - source-map: 0.6.1 - source-map-resolve: 0.5.3 - urix: 0.1.0 - dev: true - - /cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /cssnano-preset-default@4.0.8: - resolution: {integrity: sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==} - engines: {node: '>=6.9.0'} - dependencies: - css-declaration-sorter: 4.0.1 - cssnano-util-raw-cache: 4.0.1 - postcss: 7.0.39 - postcss-calc: 7.0.5 - postcss-colormin: 4.0.3 - postcss-convert-values: 4.0.1 - postcss-discard-comments: 4.0.2 - postcss-discard-duplicates: 4.0.2 - postcss-discard-empty: 4.0.1 - postcss-discard-overridden: 4.0.1 - postcss-merge-longhand: 4.0.11 - postcss-merge-rules: 4.0.3 - postcss-minify-font-values: 4.0.2 - postcss-minify-gradients: 4.0.2 - postcss-minify-params: 4.0.2 - postcss-minify-selectors: 4.0.2 - postcss-normalize-charset: 4.0.1 - postcss-normalize-display-values: 4.0.2 - postcss-normalize-positions: 4.0.2 - postcss-normalize-repeat-style: 4.0.2 - postcss-normalize-string: 4.0.2 - postcss-normalize-timing-functions: 4.0.2 - postcss-normalize-unicode: 4.0.1 - postcss-normalize-url: 4.0.1 - postcss-normalize-whitespace: 4.0.2 - postcss-ordered-values: 4.1.2 - postcss-reduce-initial: 4.0.3 - postcss-reduce-transforms: 4.0.2 - postcss-svgo: 4.0.3 - postcss-unique-selectors: 4.0.1 - dev: true - - /cssnano-util-get-arguments@4.0.0: - resolution: {integrity: sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==} - engines: {node: '>=6.9.0'} - dev: true - - /cssnano-util-get-match@4.0.0: - resolution: {integrity: sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==} - engines: {node: '>=6.9.0'} - dev: true - - /cssnano-util-raw-cache@4.0.1: - resolution: {integrity: sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==} - engines: {node: '>=6.9.0'} - dependencies: - postcss: 7.0.39 - dev: true - - /cssnano-util-same-parent@4.0.1: - resolution: {integrity: sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==} - engines: {node: '>=6.9.0'} - dev: true - - /cssnano@4.1.11: - resolution: {integrity: sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==} - engines: {node: '>=6.9.0'} - dependencies: - cosmiconfig: 5.2.1 - cssnano-preset-default: 4.0.8 - is-resolvable: 1.1.0 - postcss: 7.0.39 - dev: true - - /csso@4.2.0: - resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} - engines: {node: '>=8.0.0'} - dependencies: - css-tree: 1.1.3 - dev: true - - /csstype@3.1.0: - resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==} - dev: true - - /cyclist@1.0.1: - resolution: {integrity: sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==} - dev: true - - /d3-array@1.2.4: - resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==} - dev: false - - /d3-array@3.2.0: - resolution: {integrity: sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==} - engines: {node: '>=12'} - dependencies: - internmap: 2.0.3 - dev: false - - /d3-axis@1.0.12: - resolution: {integrity: sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==} - dev: false - - /d3-axis@3.0.0: - resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} - engines: {node: '>=12'} - dev: false - - /d3-brush@1.1.6: - resolution: {integrity: sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==} - dependencies: - d3-dispatch: 1.0.6 - d3-drag: 1.2.5 - d3-interpolate: 1.4.0 - d3-selection: 1.4.2 - d3-transition: 1.3.2 - dev: false - - /d3-brush@3.0.0: - resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} - engines: {node: '>=12'} - dependencies: - d3-dispatch: 3.0.1 - d3-drag: 3.0.0 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-transition: 3.0.1(d3-selection@3.0.0) - dev: false - - /d3-chord@1.0.6: - resolution: {integrity: sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==} - dependencies: - d3-array: 1.2.4 - d3-path: 1.0.9 - dev: false - - /d3-chord@3.0.1: - resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} - engines: {node: '>=12'} - dependencies: - d3-path: 3.0.1 - dev: false - - /d3-collection@1.0.7: - resolution: {integrity: sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==} - dev: false - - /d3-color@1.4.1: - resolution: {integrity: sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==} - dev: false - - /d3-color@3.1.0: - resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} - engines: {node: '>=12'} - dev: false - - /d3-contour@1.3.2: - resolution: {integrity: sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==} - dependencies: - d3-array: 1.2.4 - dev: false - - /d3-contour@4.0.0: - resolution: {integrity: sha512-7aQo0QHUTu/Ko3cP9YK9yUTxtoDEiDGwnBHyLxG5M4vqlBkO/uixMRele3nfsfj6UXOcuReVpVXzAboGraYIJw==} - engines: {node: '>=12'} - dependencies: - d3-array: 3.2.0 - dev: false - - /d3-delaunay@6.0.2: - resolution: {integrity: sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==} - engines: {node: '>=12'} - dependencies: - delaunator: 5.0.0 - dev: false - - /d3-dispatch@1.0.6: - resolution: {integrity: sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==} - dev: false - - /d3-dispatch@3.0.1: - resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} - engines: {node: '>=12'} - dev: false - - /d3-drag@1.2.5: - resolution: {integrity: sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==} - dependencies: - d3-dispatch: 1.0.6 - d3-selection: 1.4.2 - dev: false - - /d3-drag@3.0.0: - resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} - engines: {node: '>=12'} - dependencies: - d3-dispatch: 3.0.1 - d3-selection: 3.0.0 - dev: false - - /d3-dsv@1.2.0: - resolution: {integrity: sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==} - hasBin: true - dependencies: - commander: 2.20.3 - iconv-lite: 0.4.24 - rw: 1.3.3 - dev: false - - /d3-dsv@3.0.1: - resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} - engines: {node: '>=12'} - hasBin: true - dependencies: - commander: 7.2.0 - iconv-lite: 0.6.3 - rw: 1.3.3 - dev: false - - /d3-ease@1.0.7: - resolution: {integrity: sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==} - dev: false - - /d3-ease@3.0.1: - resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} - engines: {node: '>=12'} - dev: false - - /d3-fetch@1.2.0: - resolution: {integrity: sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==} - dependencies: - d3-dsv: 1.2.0 - dev: false - - /d3-fetch@3.0.1: - resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} - engines: {node: '>=12'} - dependencies: - d3-dsv: 3.0.1 - dev: false - - /d3-force@1.2.1: - resolution: {integrity: sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==} - dependencies: - d3-collection: 1.0.7 - d3-dispatch: 1.0.6 - d3-quadtree: 1.0.7 - d3-timer: 1.0.10 - dev: false - - /d3-force@3.0.0: - resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} - engines: {node: '>=12'} - dependencies: - d3-dispatch: 3.0.1 - d3-quadtree: 3.0.1 - d3-timer: 3.0.1 - dev: false - - /d3-format@1.4.5: - resolution: {integrity: sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==} - dev: false - - /d3-format@3.1.0: - resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} - engines: {node: '>=12'} - dev: false - - /d3-geo@1.12.1: - resolution: {integrity: sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==} - dependencies: - d3-array: 1.2.4 - dev: false - - /d3-geo@3.0.1: - resolution: {integrity: sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==} - engines: {node: '>=12'} - dependencies: - d3-array: 3.2.0 - dev: false - - /d3-hierarchy@1.1.9: - resolution: {integrity: sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==} - dev: false - - /d3-hierarchy@3.1.2: - resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} - engines: {node: '>=12'} - dev: false - - /d3-interpolate@1.4.0: - resolution: {integrity: sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==} - dependencies: - d3-color: 1.4.1 - dev: false - - /d3-interpolate@3.0.1: - resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} - engines: {node: '>=12'} - dependencies: - d3-color: 3.1.0 - dev: false - - /d3-path@1.0.9: - resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} - dev: false - - /d3-path@3.0.1: - resolution: {integrity: sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==} - engines: {node: '>=12'} - dev: false - - /d3-polygon@1.0.6: - resolution: {integrity: sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==} - dev: false - - /d3-polygon@3.0.1: - resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} - engines: {node: '>=12'} - dev: false - - /d3-quadtree@1.0.7: - resolution: {integrity: sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==} - dev: false - - /d3-quadtree@3.0.1: - resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} - engines: {node: '>=12'} - dev: false - - /d3-random@1.1.2: - resolution: {integrity: sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==} - dev: false - - /d3-random@3.0.1: - resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} - engines: {node: '>=12'} - dev: false - - /d3-scale-chromatic@1.5.0: - resolution: {integrity: sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==} - dependencies: - d3-color: 1.4.1 - d3-interpolate: 1.4.0 - dev: false - - /d3-scale-chromatic@3.0.0: - resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==} - engines: {node: '>=12'} - dependencies: - d3-color: 3.1.0 - d3-interpolate: 3.0.1 - dev: false - - /d3-scale@2.2.2: - resolution: {integrity: sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==} - dependencies: - d3-array: 1.2.4 - d3-collection: 1.0.7 - d3-format: 1.4.5 - d3-interpolate: 1.4.0 - d3-time: 1.1.0 - d3-time-format: 2.3.0 - dev: false - - /d3-scale@4.0.2: - resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} - engines: {node: '>=12'} - dependencies: - d3-array: 3.2.0 - d3-format: 3.1.0 - d3-interpolate: 3.0.1 - d3-time: 3.0.0 - d3-time-format: 4.1.0 - dev: false - - /d3-selection@1.4.2: - resolution: {integrity: sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==} - dev: false - - /d3-selection@3.0.0: - resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} - engines: {node: '>=12'} - dev: false - - /d3-shape@1.3.7: - resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} - dependencies: - d3-path: 1.0.9 - dev: false - - /d3-shape@3.1.0: - resolution: {integrity: sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==} - engines: {node: '>=12'} - dependencies: - d3-path: 3.0.1 - dev: false - - /d3-time-format@2.3.0: - resolution: {integrity: sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==} - dependencies: - d3-time: 1.1.0 - dev: false - - /d3-time-format@4.1.0: - resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} - engines: {node: '>=12'} - dependencies: - d3-time: 3.0.0 - dev: false - - /d3-time@1.1.0: - resolution: {integrity: sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==} - dev: false - - /d3-time@3.0.0: - resolution: {integrity: sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==} - engines: {node: '>=12'} - dependencies: - d3-array: 3.2.0 - dev: false - - /d3-timer@1.0.10: - resolution: {integrity: sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==} - dev: false - - /d3-timer@3.0.1: - resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} - engines: {node: '>=12'} - dev: false - - /d3-transition@1.3.2: - resolution: {integrity: sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==} - dependencies: - d3-color: 1.4.1 - d3-dispatch: 1.0.6 - d3-ease: 1.0.7 - d3-interpolate: 1.4.0 - d3-selection: 1.4.2 - d3-timer: 1.0.10 - dev: false - - /d3-transition@3.0.1(d3-selection@3.0.0): - resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} - engines: {node: '>=12'} - peerDependencies: - d3-selection: 2 - 3 - dependencies: - d3-color: 3.1.0 - d3-dispatch: 3.0.1 - d3-ease: 3.0.1 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-timer: 3.0.1 - dev: false - - /d3-voronoi@1.1.4: - resolution: {integrity: sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==} - dev: false - - /d3-zoom@1.8.3: - resolution: {integrity: sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==} - dependencies: - d3-dispatch: 1.0.6 - d3-drag: 1.2.5 - d3-interpolate: 1.4.0 - d3-selection: 1.4.2 - d3-transition: 1.3.2 - dev: false - - /d3-zoom@3.0.0: - resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} - engines: {node: '>=12'} - dependencies: - d3-dispatch: 3.0.1 - d3-drag: 3.0.0 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-transition: 3.0.1(d3-selection@3.0.0) - dev: false - - /d3@5.16.0: - resolution: {integrity: sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==} - dependencies: - d3-array: 1.2.4 - d3-axis: 1.0.12 - d3-brush: 1.1.6 - d3-chord: 1.0.6 - d3-collection: 1.0.7 - d3-color: 1.4.1 - d3-contour: 1.3.2 - d3-dispatch: 1.0.6 - d3-drag: 1.2.5 - d3-dsv: 1.2.0 - d3-ease: 1.0.7 - d3-fetch: 1.2.0 - d3-force: 1.2.1 - d3-format: 1.4.5 - d3-geo: 1.12.1 - d3-hierarchy: 1.1.9 - d3-interpolate: 1.4.0 - d3-path: 1.0.9 - d3-polygon: 1.0.6 - d3-quadtree: 1.0.7 - d3-random: 1.1.2 - d3-scale: 2.2.2 - d3-scale-chromatic: 1.5.0 - d3-selection: 1.4.2 - d3-shape: 1.3.7 - d3-time: 1.1.0 - d3-time-format: 2.3.0 - d3-timer: 1.0.10 - d3-transition: 1.3.2 - d3-voronoi: 1.1.4 - d3-zoom: 1.8.3 - dev: false - - /d3@7.6.1: - resolution: {integrity: sha512-txMTdIHFbcpLx+8a0IFhZsbp+PfBBPt8yfbmukZTQFroKuFqIwqswF0qE5JXWefylaAVpSXFoKm3yP+jpNLFLw==} - engines: {node: '>=12'} - dependencies: - d3-array: 3.2.0 - d3-axis: 3.0.0 - d3-brush: 3.0.0 - d3-chord: 3.0.1 - d3-color: 3.1.0 - d3-contour: 4.0.0 - d3-delaunay: 6.0.2 - d3-dispatch: 3.0.1 - d3-drag: 3.0.0 - d3-dsv: 3.0.1 - d3-ease: 3.0.1 - d3-fetch: 3.0.1 - d3-force: 3.0.0 - d3-format: 3.1.0 - d3-geo: 3.0.1 - d3-hierarchy: 3.1.2 - d3-interpolate: 3.0.1 - d3-path: 3.0.1 - d3-polygon: 3.0.1 - d3-quadtree: 3.0.1 - d3-random: 3.0.1 - d3-scale: 4.0.2 - d3-scale-chromatic: 3.0.0 - d3-selection: 3.0.0 - d3-shape: 3.1.0 - d3-time: 3.0.0 - d3-time-format: 4.1.0 - d3-timer: 3.0.1 - d3-transition: 3.0.1(d3-selection@3.0.0) - d3-zoom: 3.0.0 - dev: false - - /dagre-d3@0.6.4: - resolution: {integrity: sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==} - dependencies: - d3: 5.16.0 - dagre: 0.8.5 - graphlib: 2.1.8 - lodash: 4.17.21 - dev: false - - /dagre@0.8.5: - resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==} - dependencies: - graphlib: 2.1.8 - lodash: 4.17.21 - dev: false - - /dashdash@1.14.1: - resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} - engines: {node: '>=0.10'} - dependencies: - assert-plus: 1.0.0 - dev: true - - /dayjs@1.11.5: - resolution: {integrity: sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==} - dev: true - - /de-indent@1.0.2: - resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} - dev: true - - /debug@2.6.9(supports-color@6.1.0): - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - supports-color: 6.1.0 - - /debug@3.1.0: - resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - dev: true - - /debug@3.2.7(supports-color@6.1.0): - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - supports-color: 6.1.0 - dev: true - - /debug@4.3.4(supports-color@6.1.0): - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - supports-color: 6.1.0 - - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: true - - /decode-uri-component@0.2.0: - resolution: {integrity: sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==} - engines: {node: '>=0.10'} - - /decompress-response@3.3.0: - resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} - engines: {node: '>=4'} - dependencies: - mimic-response: 1.0.1 - dev: true - - /deep-equal@1.1.1: - resolution: {integrity: sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==} - dependencies: - is-arguments: 1.1.1 - is-date-object: 1.0.5 - is-regex: 1.1.4 - object-is: 1.1.5 - object-keys: 1.1.1 - regexp.prototype.flags: 1.4.3 - dev: true - - /deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - dev: true - - /deepmerge@1.5.2: - resolution: {integrity: sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==} - engines: {node: '>=0.10.0'} - dev: true - - /deepmerge@4.2.2: - resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} - engines: {node: '>=0.10.0'} - dev: true - - /default-gateway@4.2.0: - resolution: {integrity: sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==} - engines: {node: '>=6'} - dependencies: - execa: 1.0.0 - ip-regex: 2.1.0 - dev: true - - /defer-to-connect@1.1.3: - resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} - dev: true - - /define-properties@1.1.4: - resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} - engines: {node: '>= 0.4'} - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 - dev: true - - /define-property@0.2.5: - resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 0.1.6 - - /define-property@1.0.0: - resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.2 - - /define-property@2.0.2: - resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.2 - isobject: 3.0.1 - - /del@4.1.1: - resolution: {integrity: sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==} - engines: {node: '>=6'} - dependencies: - '@types/glob': 7.2.0 - globby: 6.1.0 - is-path-cwd: 2.2.0 - is-path-in-cwd: 2.1.0 - p-map: 2.1.0 - pify: 4.0.1 - rimraf: 2.7.1 - dev: true - - /delaunator@5.0.0: - resolution: {integrity: sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==} - dependencies: - robust-predicates: 3.0.1 - dev: false - - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - /delegate@3.2.0: - resolution: {integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==} - dev: false - - /depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - dev: true - - /depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - dev: true - - /des.js@1.0.1: - resolution: {integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==} - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - dev: true - - /destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dev: true - - /detect-node@2.1.0: - resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - dev: true - - /diffie-hellman@5.0.3: - resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} - dependencies: - bn.js: 4.12.0 - miller-rabin: 4.0.1 - randombytes: 2.1.0 - dev: true - - /dir-glob@2.2.2: - resolution: {integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==} - engines: {node: '>=4'} - dependencies: - path-type: 3.0.0 - - /dns-equal@1.0.0: - resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==} - dev: true - - /dns-packet@1.3.4: - resolution: {integrity: sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==} - dependencies: - ip: 1.1.8 - safe-buffer: 5.2.1 - dev: true - - /dns-txt@2.0.2: - resolution: {integrity: sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==} - dependencies: - buffer-indexof: 1.1.1 - dev: true - - /docsearch.js@2.6.3: - resolution: {integrity: sha512-GN+MBozuyz664ycpZY0ecdQE0ND/LSgJKhTLA0/v3arIS3S1Rpf2OJz6A35ReMsm91V5apcmzr5/kM84cvUg+A==} - deprecated: This package has been deprecated and is no longer maintained. Please use @docsearch/js. - dependencies: - algoliasearch: 3.35.1 - autocomplete.js: 0.36.0 - hogan.js: 3.0.2 - request: 2.88.2 - stack-utils: 1.0.5 - to-factory: 1.0.0 - zepto: 1.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /dom-converter@0.2.0: - resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} - dependencies: - utila: 0.4.0 - dev: true - - /dom-serializer@0.2.2: - resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} - dependencies: - domelementtype: 2.3.0 - entities: 2.2.0 - dev: true - - /dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - entities: 2.2.0 - dev: true - - /dom-walk@0.1.2: - resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} - dev: true - - /domain-browser@1.2.0: - resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} - engines: {node: '>=0.4', npm: '>=1.2'} - dev: true - - /domelementtype@1.3.1: - resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} - dev: true - - /domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: true - - /domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.3.0 - dev: true - - /dompurify@2.3.5: - resolution: {integrity: sha512-kD+f8qEaa42+mjdOpKeztu9Mfx5bv9gVLO6K9jRx4uGvh6Wv06Srn4jr1wPNY2OOUGGSKHNFN+A8MA3v0E0QAQ==} - dev: false - - /domutils@1.7.0: - resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} - dependencies: - dom-serializer: 0.2.2 - domelementtype: 1.3.1 - dev: true - - /domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - dependencies: - dom-serializer: 1.4.1 - domelementtype: 2.3.0 - domhandler: 4.3.1 - dev: true - - /dot-prop@5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} - dependencies: - is-obj: 2.0.0 - dev: true - - /duplexer3@0.1.5: - resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - dev: true - - /duplexify@3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} - dependencies: - end-of-stream: 1.4.4 - inherits: 2.0.4 - readable-stream: 2.3.7 - stream-shift: 1.0.1 - dev: true - - /ecc-jsbn@0.1.2: - resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} - dependencies: - jsbn: 0.1.1 - safer-buffer: 2.1.2 - dev: true - - /ee-first@1.1.1: - resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} - dev: true - - /electron-to-chromium@1.4.246: - resolution: {integrity: sha512-/wFCHUE+Hocqr/LlVGsuKLIw4P2lBWwFIDcNMDpJGzyIysQV4aycpoOitAs32FT94EHKnNqDR/CVZJFbXEufJA==} - dev: true - - /elliptic@6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - dev: true - - /emoji-regex@7.0.3: - resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} - dev: true - - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true - - /emojis-list@2.1.0: - resolution: {integrity: sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==} - engines: {node: '>= 0.10'} - dev: true - - /emojis-list@3.0.0: - resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} - engines: {node: '>= 4'} - dev: true - - /encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - dev: true - - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: true - - /enhanced-resolve@4.5.0: - resolution: {integrity: sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==} - engines: {node: '>=6.9.0'} - dependencies: - graceful-fs: 4.2.10 - memory-fs: 0.5.0 - tapable: 1.1.3 - dev: true - - /entities@1.1.2: - resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} - dev: true - - /entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - dev: true - - /envify@4.1.0: - resolution: {integrity: sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw==} - hasBin: true - dependencies: - esprima: 4.0.1 - through: 2.3.8 - dev: true - - /envinfo@7.8.1: - resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} - hasBin: true - dependencies: - prr: 1.0.1 - dev: true - - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - dev: true - - /es-abstract@1.20.2: - resolution: {integrity: sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - es-to-primitive: 1.2.1 - function-bind: 1.1.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.1.2 - get-symbol-description: 1.0.0 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-symbols: 1.0.3 - internal-slot: 1.0.3 - is-callable: 1.2.4 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-weakref: 1.0.2 - object-inspect: 1.12.2 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.4.3 - string.prototype.trimend: 1.0.5 - string.prototype.trimstart: 1.0.5 - unbox-primitive: 1.0.2 - dev: true - - /es-array-method-boxes-properly@1.0.0: - resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} - dev: true - - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.4 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - dev: true - - /es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - dev: true - - /esbuild-android-arm64@0.14.7: - resolution: {integrity: sha512-9/Q1NC4JErvsXzJKti0NHt+vzKjZOgPIjX/e6kkuCzgfT/GcO3FVBcGIv4HeJG7oMznE6KyKhvLrFgt7CdU2/w==} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /esbuild-darwin-64@0.14.7: - resolution: {integrity: sha512-Z9X+3TT/Xj+JiZTVlwHj2P+8GoiSmUnGVz0YZTSt8WTbW3UKw5Pw2ucuJ8VzbD2FPy0jbIKJkko/6CMTQchShQ==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /esbuild-darwin-arm64@0.14.7: - resolution: {integrity: sha512-68e7COhmwIiLXBEyxUxZSSU0akgv8t3e50e2QOtKdBUE0F6KIRISzFntLe2rYlNqSsjGWsIO6CCc9tQxijjSkw==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /esbuild-freebsd-64@0.14.7: - resolution: {integrity: sha512-76zy5jAjPiXX/S3UvRgG85Bb0wy0zv/J2lel3KtHi4V7GUTBfhNUPt0E5bpSXJ6yMT7iThhnA5rOn+IJiUcslQ==} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-freebsd-arm64@0.14.7: - resolution: {integrity: sha512-lSlYNLiqyzd7qCN5CEOmLxn7MhnGHPcu5KuUYOG1i+t5A6q7LgBmfYC9ZHJBoYyow3u4CNu79AWHbvVLpE/VQQ==} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-32@0.14.7: - resolution: {integrity: sha512-Vk28u409wVOXqTaT6ek0TnfQG4Ty1aWWfiysIaIRERkNLhzLhUf4i+qJBN8mMuGTYOkE40F0Wkbp6m+IidOp2A==} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-64@0.14.7: - resolution: {integrity: sha512-+Lvz6x+8OkRk3K2RtZwO+0a92jy9si9cUea5Zoru4yJ/6EQm9ENX5seZE0X9DTwk1dxJbjmLsJsd3IoowyzgVg==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-arm64@0.14.7: - resolution: {integrity: sha512-kJd5beWSqteSAW086qzCEsH6uwpi7QRIpzYWHzEYwKKu9DiG1TwIBegQJmLpPsLp4v5RAFjea0JAmAtpGtRpqg==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-arm@0.14.7: - resolution: {integrity: sha512-OzpXEBogbYdcBqE4uKynuSn5YSetCvK03Qv1HcOY1VN6HmReuatjJ21dCH+YPHSpMEF0afVCnNfffvsGEkxGJQ==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-mips64le@0.14.7: - resolution: {integrity: sha512-mFWpnDhZJmj/h7pxqn1GGDsKwRfqtV7fx6kTF5pr4PfXe8pIaTERpwcKkoCwZUkWAOmUEjMIUAvFM72A6hMZnA==} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-ppc64le@0.14.7: - resolution: {integrity: sha512-wM7f4M0bsQXfDL4JbbYD0wsr8cC8KaQ3RPWc/fV27KdErPW7YsqshZZSjDV0kbhzwpNNdhLItfbaRT8OE8OaKA==} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-netbsd-64@0.14.7: - resolution: {integrity: sha512-J/afS7woKyzGgAL5FlgvMyqgt5wQ597lgsT+xc2yJ9/7BIyezeXutXqfh05vszy2k3kSvhLesugsxIA71WsqBw==} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-openbsd-64@0.14.7: - resolution: {integrity: sha512-7CcxgdlCD+zAPyveKoznbgr3i0Wnh0L8BDGRCjE/5UGkm5P/NQko51tuIDaYof8zbmXjjl0OIt9lSo4W7I8mrw==} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-sunos-64@0.14.7: - resolution: {integrity: sha512-GKCafP2j/KUljVC3nesw1wLFSZktb2FGCmoT1+730zIF5O6hNroo0bSEofm6ZK5mNPnLiSaiLyRB9YFgtkd5Xg==} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-32@0.14.7: - resolution: {integrity: sha512-5I1GeL/gZoUUdTPA0ws54bpYdtyeA2t6MNISalsHpY269zK8Jia/AXB3ta/KcDHv2SvNwabpImeIPXC/k0YW6A==} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-64@0.14.7: - resolution: {integrity: sha512-CIGKCFpQOSlYsLMbxt8JjxxvVw9MlF1Rz2ABLVfFyHUF5OeqHD5fPhGrCVNaVrhO8Xrm+yFmtjcZudUGr5/WYQ==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-arm64@0.14.7: - resolution: {integrity: sha512-eOs1eSivOqN7cFiRIukEruWhaCf75V0N8P0zP7dh44LIhLl8y6/z++vv9qQVbkBm5/D7M7LfCfCTmt1f1wHOCw==} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild@0.14.7: - resolution: {integrity: sha512-+u/msd6iu+HvfysUPkZ9VHm83LImmSNnecYPfFI01pQ7TTcsFR+V0BkybZX7mPtIaI7LCrse6YRj+v3eraJSgw==} - hasBin: true - requiresBuild: true - optionalDependencies: - esbuild-android-arm64: 0.14.7 - esbuild-darwin-64: 0.14.7 - esbuild-darwin-arm64: 0.14.7 - esbuild-freebsd-64: 0.14.7 - esbuild-freebsd-arm64: 0.14.7 - esbuild-linux-32: 0.14.7 - esbuild-linux-64: 0.14.7 - esbuild-linux-arm: 0.14.7 - esbuild-linux-arm64: 0.14.7 - esbuild-linux-mips64le: 0.14.7 - esbuild-linux-ppc64le: 0.14.7 - esbuild-netbsd-64: 0.14.7 - esbuild-openbsd-64: 0.14.7 - esbuild-sunos-64: 0.14.7 - esbuild-windows-32: 0.14.7 - esbuild-windows-64: 0.14.7 - esbuild-windows-arm64: 0.14.7 - dev: true - - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - dev: true - - /escape-goat@2.1.1: - resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} - engines: {node: '>=8'} - dev: true - - /escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: true - - /eslint-scope@4.0.3: - resolution: {integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==} - engines: {node: '>=4.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - dev: true - - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 - dev: true - - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true - - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true - - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true - - /etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - dev: true - - /eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - dev: true - - /events@1.1.1: - resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==} - engines: {node: '>=0.4.x'} - dev: true - - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: true - - /eventsource@2.0.2: - resolution: {integrity: sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==} - engines: {node: '>=12.0.0'} - dev: true - - /evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} - dependencies: - md5.js: 1.3.5 - safe-buffer: 5.2.1 - dev: true - - /execa@1.0.0: - resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} - engines: {node: '>=6'} - dependencies: - cross-spawn: 6.0.5 - get-stream: 4.1.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - dev: true - - /expand-brackets@2.1.4(supports-color@6.1.0): - resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} - engines: {node: '>=0.10.0'} - dependencies: - debug: 2.6.9(supports-color@6.1.0) - define-property: 0.2.5 - extend-shallow: 2.0.1 - posix-character-classes: 0.1.1 - regex-not: 1.0.2 - snapdragon: 0.8.2(supports-color@6.1.0) - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - /express@4.18.1(supports-color@6.1.0): - resolution: {integrity: sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==} - engines: {node: '>= 0.10.0'} - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.0(supports-color@6.1.0) - content-disposition: 0.5.4 - content-type: 1.0.4 - cookie: 0.5.0 - cookie-signature: 1.0.6 - debug: 2.6.9(supports-color@6.1.0) - depd: 2.0.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.2.0(supports-color@6.1.0) - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.1 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: 2.0.7 - qs: 6.10.3 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.18.0(supports-color@6.1.0) - serve-static: 1.15.0(supports-color@6.1.0) - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - dependencies: - is-extendable: 0.1.1 - - /extend-shallow@3.0.2: - resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} - engines: {node: '>=0.10.0'} - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - - /extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: true - - /external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - dev: true - - /extglob@2.0.4(supports-color@6.1.0): - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} - dependencies: - array-unique: 0.3.2 - define-property: 1.0.0 - expand-brackets: 2.1.4(supports-color@6.1.0) - extend-shallow: 2.0.1 - fragment-cache: 0.2.1 - regex-not: 1.0.2 - snapdragon: 0.8.2(supports-color@6.1.0) - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - /extsprintf@1.3.0: - resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} - engines: {'0': node >=0.6.0} - dev: true - - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true - - /fast-glob@2.2.7: - resolution: {integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==} - engines: {node: '>=4.0.0'} - dependencies: - '@mrmlnc/readdir-enhanced': 2.2.1 - '@nodelib/fs.stat': 1.1.3 - glob-parent: 3.1.0 - is-glob: 4.0.3 - merge2: 1.4.1 - micromatch: 3.1.10(supports-color@6.1.0) - transitivePeerDependencies: - - supports-color - - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true - - /faye-websocket@0.11.4: - resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} - engines: {node: '>=0.8.0'} - dependencies: - websocket-driver: 0.7.4 - dev: true - - /figgy-pudding@3.5.2: - resolution: {integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==} - dev: true - - /figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - dependencies: - escape-string-regexp: 1.0.5 - dev: true - - /file-loader@3.0.1(webpack@4.46.0): - resolution: {integrity: sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==} - engines: {node: '>= 6.9.0'} - peerDependencies: - webpack: ^4.0.0 - dependencies: - loader-utils: 1.4.0 - schema-utils: 1.0.0 - webpack: 4.46.0 - dev: true - - /file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - requiresBuild: true - dev: true - optional: true - - /fill-range@4.0.0: - resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range: 2.1.1 - - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: true - - /finalhandler@1.2.0(supports-color@6.1.0): - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} - engines: {node: '>= 0.8'} - dependencies: - debug: 2.6.9(supports-color@6.1.0) - encodeurl: 1.0.2 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /find-cache-dir@2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} - dependencies: - commondir: 1.0.1 - make-dir: 2.1.0 - pkg-dir: 3.0.0 - dev: true - - /find-cache-dir@3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} - dependencies: - commondir: 1.0.1 - make-dir: 3.1.0 - pkg-dir: 4.2.0 - dev: true - - /find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - dependencies: - locate-path: 3.0.0 - dev: true - - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true - - /flexsearch@0.6.32: - resolution: {integrity: sha512-EF1BWkhwoeLtbIlDbY/vDSLBen/E5l/f1Vg7iX5CDymQCamcx1vhlc3tIZxIDplPjgi0jhG37c67idFbjg+v+Q==} - dev: false - - /flush-write-stream@1.1.1: - resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.7 - dev: true - - /follow-redirects@1.15.1(debug@4.3.4): - resolution: {integrity: sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dependencies: - debug: 4.3.4(supports-color@6.1.0) - - /for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - - /foreach@2.0.6: - resolution: {integrity: sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==} - dev: true - - /forever-agent@0.6.1: - resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - dev: true - - /form-data@2.3.3: - resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} - engines: {node: '>= 0.12'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: true - - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: false - - /forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - dev: true - - /fragment-cache@0.2.1: - resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} - engines: {node: '>=0.10.0'} - dependencies: - map-cache: 0.2.2 - - /fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - dev: true - - /from2@2.3.0: - resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.7 - dev: true - - /fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.10 - jsonfile: 4.0.0 - universalify: 0.1.2 - - /fs-write-stream-atomic@1.0.10: - resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==} - dependencies: - graceful-fs: 4.2.10 - iferr: 0.1.5 - imurmurhash: 0.1.4 - readable-stream: 2.3.7 - dev: true - - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - /fsevents@1.2.13: - resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} - engines: {node: '>= 4.0'} - os: [darwin] - deprecated: The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2 - requiresBuild: true - dependencies: - bindings: 1.5.0 - nan: 2.16.0 - dev: true - optional: true - - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true - - /function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.2 - functions-have-names: 1.2.3 - dev: true - - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true - - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true - - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: true - - /get-intrinsic@1.1.2: - resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==} - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.3 - dev: true - - /get-stream@4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - dependencies: - pump: 3.0.0 - dev: true - - /get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - dependencies: - pump: 3.0.0 - dev: true - - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.2 - dev: true - - /get-value@2.0.6: - resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} - engines: {node: '>=0.10.0'} - - /getpass@0.1.7: - resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} - dependencies: - assert-plus: 1.0.0 - dev: true - - /glob-parent@3.1.0: - resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} - dependencies: - is-glob: 3.1.0 - path-dirname: 1.0.2 - - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - requiresBuild: true - dependencies: - is-glob: 4.0.3 - dev: true - optional: true - - /glob-to-regexp@0.3.0: - resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==} - - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - /global-dirs@2.1.0: - resolution: {integrity: sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==} - engines: {node: '>=8'} - dependencies: - ini: 1.3.7 - dev: true + '@algolia/requester-node-http@5.59.0': + resolution: {integrity: sha512-YYHLEs5rC6oRTFwT7bJaKBR9NSFzikeVHGAT1ffATmUQzR8XqyhHXjoieAUoR7fBU6I5cfy1FVeh5GoRgriuzA==} + engines: {node: '>= 14.0.0'} - /global@4.4.0: - resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} - dependencies: - min-document: 2.19.0 - process: 0.11.10 - dev: true + '@antfu/install-pkg@2.1.0': + resolution: {integrity: sha512-sdg9NxU3zR4Mnawfbc/x6GB5Wf17WYud5qOuEuxXjaKpYpMkISSJEjItGebXJ2bQ4DIcly4NYH23mtkGJjvKUw==} - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} - /globby@6.1.0: - resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} - engines: {node: '>=0.10.0'} - dependencies: - array-union: 1.0.2 - glob: 7.2.3 - object-assign: 4.1.1 - pify: 2.3.0 - pinkie-promise: 2.0.1 - dev: true - - /globby@7.1.1: - resolution: {integrity: sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==} - engines: {node: '>=4'} - dependencies: - array-union: 1.0.2 - dir-glob: 2.2.2 - glob: 7.2.3 - ignore: 3.3.10 - pify: 3.0.0 - slash: 1.0.0 - dev: true - - /globby@9.2.0: - resolution: {integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==} - engines: {node: '>=6'} - dependencies: - '@types/glob': 7.2.0 - array-union: 1.0.2 - dir-glob: 2.2.2 - fast-glob: 2.2.7 - glob: 7.2.3 - ignore: 4.0.6 - pify: 4.0.1 - slash: 2.0.0 - transitivePeerDependencies: - - supports-color + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} - /good-listener@1.2.2: - resolution: {integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==} - dependencies: - delegate: 3.2.0 - dev: false - - /good-storage@1.1.1: - resolution: {integrity: sha512-+0UEpRT03fJgEJoeTVVz41ISC5+jaQrDIWatQ4BoDQfOiBBsjNanymi9sAtLFdEAADQN0FYR8mGpeqxSCe8oXQ==} - dev: false - - /got@9.6.0: - resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} - engines: {node: '>=8.6'} - dependencies: - '@sindresorhus/is': 0.14.0 - '@szmarczak/http-timer': 1.1.2 - '@types/keyv': 3.1.4 - '@types/responselike': 1.0.3 - cacheable-request: 6.1.0 - decompress-response: 3.3.0 - duplexer3: 0.1.5 - get-stream: 4.1.0 - lowercase-keys: 1.0.1 - mimic-response: 1.0.1 - p-cancelable: 1.1.0 - to-readable-stream: 1.0.0 - url-parse-lax: 3.0.0 - dev: true - - /graceful-fs@4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - - /graphlib@2.1.8: - resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==} - dependencies: - lodash: 4.17.21 - dev: false - - /gray-matter@4.0.3: - resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} - engines: {node: '>=6.0'} - dependencies: - js-yaml: 3.14.1 - kind-of: 6.0.3 - section-matter: 1.0.0 - strip-bom-string: 1.0.0 + '@babel/parser@7.29.8': + resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} + engines: {node: '>=6.0.0'} + hasBin: true - /handle-thing@2.0.1: - resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - dev: true + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} + engines: {node: '>=6.9.0'} - /har-schema@2.0.0: - resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} - engines: {node: '>=4'} - dev: true + '@braintree/sanitize-url@6.0.4': + resolution: {integrity: sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==} - /har-validator@5.1.5: - resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} - engines: {node: '>=6'} - deprecated: this library is no longer supported - dependencies: - ajv: 6.12.6 - har-schema: 2.0.0 - dev: true + '@braintree/sanitize-url@7.1.2': + resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true + '@chevrotain/types@11.1.2': + resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + '@docsearch/css@3.8.2': + resolution: {integrity: sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==} - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: true + '@docsearch/js@3.8.2': + resolution: {integrity: sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==} - /has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} - dependencies: - get-intrinsic: 1.1.2 - dev: true + '@docsearch/react@3.8.2': + resolution: {integrity: sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==} + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + search-insights: '>= 1 < 3' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + search-insights: + optional: true - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - dev: true + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] - /has-value@0.3.1: - resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 0.1.4 - isobject: 2.1.0 + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] - /has-value@1.0.0: - resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 1.0.0 - isobject: 3.0.1 + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] - /has-values@0.1.4: - resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} - engines: {node: '>=0.10.0'} + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] - /has-values@1.0.0: - resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - kind-of: 4.0.0 + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] - /has-yarn@2.1.0: - resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} - engines: {node: '>=8'} - dev: true + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - dev: true + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] - /hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} - dependencies: - inherits: 2.0.4 - readable-stream: 3.6.0 - safe-buffer: 5.2.1 - dev: true + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] - /hash-sum@1.0.2: - resolution: {integrity: sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==} + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] - /hash-sum@2.0.0: - resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} - dev: true + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] - /hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - dev: true + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] - /he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - dev: true + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] - /hex-color-regex@1.1.0: - resolution: {integrity: sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==} - dev: true + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] - /highlight.js@9.18.5: - resolution: {integrity: sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA==} - deprecated: Support has ended for 9.x series. Upgrade to @latest - requiresBuild: true - dev: true + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] - /hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - dependencies: - hash.js: 1.1.7 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - dev: true + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] - /hogan.js@3.0.2: - resolution: {integrity: sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg==} - hasBin: true - dependencies: - mkdirp: 0.3.0 - nopt: 1.0.10 - dev: true + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] - /hpack.js@2.1.6: - resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} - dependencies: - inherits: 2.0.4 - obuf: 1.1.2 - readable-stream: 2.3.7 - wbuf: 1.7.3 - dev: true + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] - /hsl-regex@1.0.0: - resolution: {integrity: sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==} - dev: true + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] - /hsla-regex@1.0.0: - resolution: {integrity: sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==} - dev: true + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] - /html-entities@1.4.0: - resolution: {integrity: sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==} - dev: true + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] - /html-minifier@3.5.21: - resolution: {integrity: sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==} - engines: {node: '>=4'} - hasBin: true - dependencies: - camel-case: 3.0.0 - clean-css: 4.2.4 - commander: 2.17.1 - he: 1.2.0 - param-case: 2.1.1 - relateurl: 0.2.7 - uglify-js: 3.4.10 - dev: true - - /html-tags@2.0.0: - resolution: {integrity: sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==} - engines: {node: '>=4'} - dev: true - - /html-tags@3.2.0: - resolution: {integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==} - engines: {node: '>=8'} - dev: true - - /html-to-text@7.1.3: - resolution: {integrity: sha512-bnQRVDGgprdYkDRme4BH5xTxFo9ESorrfMHBWjtdgNVGkthXXQIGbmp3PRIjJVcaCP4mJMSuXtBi/lHqUCHUzw==} - engines: {node: '>=10.23.2'} - hasBin: true - dependencies: - deepmerge: 4.2.2 - he: 1.2.0 - htmlparser2: 6.1.0 - minimist: 1.2.6 - dev: true + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] - /htmlparser2@6.1.0: - resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - domutils: 2.8.0 - entities: 2.2.0 - dev: true + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] - /http-cache-semantics@4.1.0: - resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} - dev: true + '@iconify-json/simple-icons@1.2.96': + resolution: {integrity: sha512-/FmCYo/H5rIywTLV/P6OYsr0rg/31vuc8jYq0QnkOZl6m7PWIs+h5oAnSTT2cqRhOsMaKqbXcdkka6tnZ1WiUA==} - /http-deceiver@1.2.7: - resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} - dev: true + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - /http-errors@1.6.3: - resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} - engines: {node: '>= 0.6'} - dependencies: - depd: 1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.0 - statuses: 1.5.0 - dev: true + '@iconify/utils@3.1.7': + resolution: {integrity: sha512-JZHlwdID+dy+lTgbYC8NEC4zeugqeYsc6jewvzb4c58kHauJn+X7rNwQjxz5p2qSjqaEeQoLkCIQ9v/H4PK0/w==} - /http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - dev: true - - /http-parser-js@0.5.8: - resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} - dev: true - - /http-proxy-middleware@0.19.1(debug@4.3.4)(supports-color@6.1.0): - resolution: {integrity: sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==} - engines: {node: '>=4.0.0'} - dependencies: - http-proxy: 1.18.1(debug@4.3.4) - is-glob: 4.0.3 - lodash: 4.17.21 - micromatch: 3.1.10(supports-color@6.1.0) - transitivePeerDependencies: - - debug - - supports-color - dev: true + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} - /http-proxy-middleware@1.3.1: - resolution: {integrity: sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==} - engines: {node: '>=8.0.0'} - dependencies: - '@types/http-proxy': 1.17.9 - http-proxy: 1.18.1(debug@4.3.4) - is-glob: 4.0.3 - is-plain-obj: 3.0.0 - micromatch: 4.0.5 - transitivePeerDependencies: - - debug - dev: true + '@mermaid-js/mermaid-mindmap@9.3.0': + resolution: {integrity: sha512-IhtYSVBBRYviH1Ehu8gk69pMDF8DSRqXBRDMWrEfHoaMruHeaP2DXA3PBnuwsMaCdPQhlUUcy/7DBLAEIXvCAw==} - /http-proxy@1.18.1(debug@4.3.4): - resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} - engines: {node: '>=8.0.0'} - dependencies: - eventemitter3: 4.0.7 - follow-redirects: 1.15.1(debug@4.3.4) - requires-port: 1.0.0 - transitivePeerDependencies: - - debug - dev: true + '@mermaid-js/parser@1.2.1': + resolution: {integrity: sha512-n12NohV3mrUyUL2o93IgG/ifeW9FTyeJn3zDxkhwa8MJ9Fxg3HQMlA3RiGmD/3UnJvheztkjjQAjA2T4LmUcpw==} - /http-signature@1.2.0: - resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} - engines: {node: '>=0.8', npm: '>=1.3.7'} - dependencies: - assert-plus: 1.0.0 - jsprim: 1.4.2 - sshpk: 1.17.0 - dev: true + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + resolution: {integrity: sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==} + engines: {node: ^22.20 || ^24.12 || >=25} + cpu: [x64] + os: [linux] + libc: [glibc] - /https-browserify@1.0.0: - resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} - dev: true + '@rollup/rollup-android-arm-eabi@4.63.3': + resolution: {integrity: sha512-w3Jnvi1ocaVm/c7yVPpfB98XeSRBMyzp6njL5MVVbGyXjpmUkN+s6Hp4t0PqhGCCaI1ZHMKXt/w0lA1RCaLVcw==} + cpu: [arm] + os: [android] - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 + '@rollup/rollup-android-arm64@4.63.3': + resolution: {integrity: sha512-uI/ESiaIbbRYAEhzy8PCUWDp1hB0bjAqM06mW9flOoNO4Q8DQpeoREhBR5Hegfl+wpXiguyJv6XSPzEN7OxyHQ==} + cpu: [arm64] + os: [android] - /iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: false + '@rollup/rollup-darwin-arm64@4.63.3': + resolution: {integrity: sha512-oxhrd1jmXLwWZ83eQYDXxuqRdkqkzrjR3JobKeuUyfdNZo11FuQIvqEOZhyIT7OBHxXoGslDDjN0cQcM6T0TqQ==} + cpu: [arm64] + os: [darwin] - /icss-replace-symbols@1.1.0: - resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} - dev: true + '@rollup/rollup-darwin-x64@4.63.3': + resolution: {integrity: sha512-7/YiIMghVE8DrxKvNdorAaJVdriOFgOIpdStnPx8ppx5zfTwC3jBCSEAIzB7JD5404m65THl6H93UTTVUvypmg==} + cpu: [x64] + os: [darwin] - /icss-utils@4.1.1: - resolution: {integrity: sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==} - engines: {node: '>= 6'} - dependencies: - postcss: 7.0.39 - dev: true + '@rollup/rollup-freebsd-arm64@4.63.3': + resolution: {integrity: sha512-GXFZRRoMAytaI5z6N3Zhfw0WL18Q0M8r95D5hlC4GqE/lGk8pbSJNUBoOWDfbm6dTciqHj2nU87tI5f6XhQiOg==} + cpu: [arm64] + os: [freebsd] - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: true + '@rollup/rollup-freebsd-x64@4.63.3': + resolution: {integrity: sha512-77W+8X3ddYgPxUpB8nZFQs2Mq+wc4HVlcSRtApXLjYBcnPMkttrSnU8VwKQjeWYhMsITHFs5cWBQ8vz1Q+5RHQ==} + cpu: [x64] + os: [freebsd] - /iferr@0.1.5: - resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==} - dev: true + '@rollup/rollup-linux-arm-gnueabihf@4.63.3': + resolution: {integrity: sha512-FVkwK+iUC+mq+GipVK46rRVticfAPtvPUNlqlGXUDxdVk/UGjQiiiUVPUrEXdSpU2ufU0XxLGyTqDtBidDOVmg==} + cpu: [arm] + os: [linux] + libc: [glibc] - /ignore@3.3.10: - resolution: {integrity: sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==} - dev: true + '@rollup/rollup-linux-arm-musleabihf@4.63.3': + resolution: {integrity: sha512-+aGU1t3398yQOVj1Bz8o3e+KtswxAPvO+mtxtNdfXYMkXIHu7XhhkCD7/DEH9q8tF8uhDnMWvfpUKI8y1sZJsg==} + cpu: [arm] + os: [linux] + libc: [musl] - /ignore@4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} + '@rollup/rollup-linux-arm64-gnu@4.63.3': + resolution: {integrity: sha512-cR0kjpRXR2KJ2oQK8E2KTPtphs+b9hZ8IhTZubNryt/RsqgdOZBQ2Zq0q5UedtiIi0rs3jVhJh55RE1ZHUVGUA==} + cpu: [arm64] + os: [linux] + libc: [glibc] - /immediate@3.3.0: - resolution: {integrity: sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==} - dev: true + '@rollup/rollup-linux-arm64-musl@4.63.3': + resolution: {integrity: sha512-y1RYi4Q3/9ByVWSSt9kX2ustE0B7kFYbJ6zZdVZVyqopZs3yhCTwRfrjIX4vezUJInma/Gs6BOFDJg7yZmJ0IQ==} + cpu: [arm64] + os: [linux] + libc: [musl] - /import-cwd@2.1.0: - resolution: {integrity: sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==} - engines: {node: '>=4'} - dependencies: - import-from: 2.1.0 - dev: true + '@rollup/rollup-linux-loong64-gnu@4.63.3': + resolution: {integrity: sha512-DNhEA5viIj3Z5bZLE4z4oV8N5ozWqDwyt7T6KG7VdLDJ0nW+rNOYlphBl4/3HQkK75qipPLsVOfStHHOwN9WSg==} + cpu: [loong64] + os: [linux] + libc: [glibc] - /import-fresh@2.0.0: - resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} - engines: {node: '>=4'} - dependencies: - caller-path: 2.0.0 - resolve-from: 3.0.0 - dev: true + '@rollup/rollup-linux-loong64-musl@4.63.3': + resolution: {integrity: sha512-17gQCqrIpXBX2Cmi9/TygnVOqGbzsba/iaqcYSL8FY7lNugg+7AiYNs5c5nKWD+NRQha36Sa0CqkJqH4XVHwnQ==} + cpu: [loong64] + os: [linux] + libc: [musl] - /import-from@2.1.0: - resolution: {integrity: sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==} - engines: {node: '>=4'} - dependencies: - resolve-from: 3.0.0 - dev: true + '@rollup/rollup-linux-ppc64-gnu@4.63.3': + resolution: {integrity: sha512-6LwVnZRIyINpdku/yOcI8Tm9YqLmhHK5emmlOOnW9tO0SYEm1FmKPcsSAGp0NBlqR2P04xaND4jvN6sTHqhq8A==} + cpu: [ppc64] + os: [linux] + libc: [glibc] - /import-lazy@2.1.0: - resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} - engines: {node: '>=4'} - dev: true + '@rollup/rollup-linux-ppc64-musl@4.63.3': + resolution: {integrity: sha512-xMUqkTXlEUtI/p5AAukMwBRr1enU3efsTeF+bskeFfk8t1C9rcC8sLREcZXmTfAXEbvRdJVSonVJez3TMlbR3w==} + cpu: [ppc64] + os: [linux] + libc: [musl] - /import-local@2.0.0: - resolution: {integrity: sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==} - engines: {node: '>=6'} - hasBin: true - dependencies: - pkg-dir: 3.0.0 - resolve-cwd: 2.0.0 - dev: true - - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true - - /indexes-of@1.0.1: - resolution: {integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==} - dev: true - - /infer-owner@1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - dev: true - - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - /inherits@2.0.1: - resolution: {integrity: sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==} - dev: true - - /inherits@2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - dev: true - - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - /ini@1.3.7: - resolution: {integrity: sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==} - dev: true - - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: true - - /inquirer@7.3.3: - resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} - engines: {node: '>=8.0.0'} - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - run-async: 2.4.1 - rxjs: 6.6.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - dev: true - - /internal-ip@4.3.0: - resolution: {integrity: sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==} - engines: {node: '>=6'} - dependencies: - default-gateway: 4.2.0 - ipaddr.js: 1.9.1 - dev: true + '@rollup/rollup-linux-riscv64-gnu@4.63.3': + resolution: {integrity: sha512-S3E94co9F9WRRqEaUoQZ38K1gCz6KiM+nL7/3ijq7fDGF3OznjS5TasgYITlvl27GQKtu4lOAOsr5MFwkijvOA==} + cpu: [riscv64] + os: [linux] + libc: [glibc] - /internal-slot@1.0.3: - resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.1.2 - has: 1.0.3 - side-channel: 1.0.4 - dev: true + '@rollup/rollup-linux-riscv64-musl@4.63.3': + resolution: {integrity: sha512-1QtRDwG42x5BJI3s9mxu5rEjDnfbSnk20HQ9/ylTAYnSwYwxMVb+Vgu34wzzTQ7ogqBybebgQNUDAvZVQ38DbA==} + cpu: [riscv64] + os: [linux] + libc: [musl] - /internmap@2.0.3: - resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} - engines: {node: '>=12'} - dev: false + '@rollup/rollup-linux-s390x-gnu@4.63.3': + resolution: {integrity: sha512-BQhejF6ZXOpxbngiNTP12GCGQeaDVL2QXGeBVViKIYzFHM5RKxTxwUMB1fr1BeNFphFMpnRqC5QSXFSa4z6UQw==} + cpu: [s390x] + os: [linux] + libc: [glibc] - /ip-regex@2.1.0: - resolution: {integrity: sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==} - engines: {node: '>=4'} - dev: true + '@rollup/rollup-linux-x64-gnu@4.63.3': + resolution: {integrity: sha512-SXagRwnI2Wlwlitllu59UK/nGVbD1CKPcNqDplHwIC4BqJcpXFjD32d1R/RbuISa95HdQrZM3/7v4bKiowFaLA==} + cpu: [x64] + os: [linux] + libc: [glibc] - /ip@1.1.8: - resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} - dev: true + '@rollup/rollup-linux-x64-musl@4.63.3': + resolution: {integrity: sha512-2IPozoEALRCziGqE8O9KMK60PMu5TS1huv4fwoeCexj+WjmcwFtX9CTOVbfXCUqcELAubEwRFPYlzb/WvwY2HQ==} + cpu: [x64] + os: [linux] + libc: [musl] - /ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - dev: true + '@rollup/rollup-openbsd-x64@4.63.3': + resolution: {integrity: sha512-AoxqosUHT9IX54hFn2TiN6A7d6ZKTtE6pd2bqWtqkkNJ6HJGaU6FRouGX8L1O7R/ZwsnCnpQrHzb4pDEx+UHRQ==} + cpu: [x64] + os: [openbsd] - /is-absolute-url@2.1.0: - resolution: {integrity: sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==} - engines: {node: '>=0.10.0'} - dev: true + '@rollup/rollup-openharmony-arm64@4.63.3': + resolution: {integrity: sha512-d+CaftKgmkFBzCwezMqqy1d0QNNYugqLCMcYVQWBy5SS2YfeMP8Q8ripkgx9O8IyBXXLHrJ+aaCV4U96usv6Yg==} + cpu: [arm64] + os: [openharmony] - /is-absolute-url@3.0.3: - resolution: {integrity: sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==} - engines: {node: '>=8'} - dev: true + '@rollup/rollup-win32-arm64-msvc@4.63.3': + resolution: {integrity: sha512-xXlDF6nR1eOuXbdDy5Hl5fmtY7teUDevF/k0O7IPoZe4Tpmdv+lgdE5JRsnhQtt37ql9P0VF2kAN9a0OCZdo+Q==} + cpu: [arm64] + os: [win32] - /is-accessor-descriptor@0.1.6: - resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 + '@rollup/rollup-win32-ia32-msvc@4.63.3': + resolution: {integrity: sha512-YtXAgLN+JP7Ay6qG3eWhc7IHMQPzLc8r3uvhAvlJIoCz/4Q32+Bl9Fmnywidh8v1GOIMmymjovfqY9ETAtysvA==} + cpu: [ia32] + os: [win32] - /is-accessor-descriptor@1.0.0: - resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 6.0.3 + '@rollup/rollup-win32-x64-gnu@4.63.3': + resolution: {integrity: sha512-WuWtSJRNo549vzcfZyEgfqb6zeSgn1F+UE5kQ+BCjzz0W4MGCjntUHkZVc1VRuAM7+ULaSyhiPxD1spyewFvkQ==} + cpu: [x64] + os: [win32] - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true + '@rollup/rollup-win32-x64-msvc@4.63.3': + resolution: {integrity: sha512-+lIKX7O0+IGe7WuhATaAMMeT7B76vfhXH/l9wLQL+nvyhbw2ohYCKIdWL56JfDu75CWt5oKRP4QFH/jkMtBquA==} + cpu: [x64] + os: [win32] - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true + '@shikijs/core@2.5.0': + resolution: {integrity: sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==} - /is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - dev: true + '@shikijs/engine-javascript@2.5.0': + resolution: {integrity: sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==} - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - dependencies: - has-bigints: 1.0.2 - dev: true + '@shikijs/engine-oniguruma@2.5.0': + resolution: {integrity: sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==} - /is-binary-path@1.0.1: - resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} - engines: {node: '>=0.10.0'} - dependencies: - binary-extensions: 1.13.1 - dev: true + '@shikijs/langs@2.5.0': + resolution: {integrity: sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==} - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - requiresBuild: true - dependencies: - binary-extensions: 2.2.0 - dev: true - optional: true + '@shikijs/themes@2.5.0': + resolution: {integrity: sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==} - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true + '@shikijs/transformers@2.5.0': + resolution: {integrity: sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==} - /is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + '@shikijs/types@2.5.0': + resolution: {integrity: sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==} - /is-callable@1.2.4: - resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} - engines: {node: '>= 0.4'} - dev: true + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - /is-ci@2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} - hasBin: true - dependencies: - ci-info: 2.0.0 - dev: true + '@types/d3-array@3.2.2': + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} - /is-color-stop@1.1.0: - resolution: {integrity: sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==} - dependencies: - css-color-names: 0.0.4 - hex-color-regex: 1.1.0 - hsl-regex: 1.0.0 - hsla-regex: 1.0.0 - rgb-regex: 1.0.1 - rgba-regex: 1.0.0 - dev: true + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} - /is-core-module@2.10.0: - resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} - dependencies: - has: 1.0.3 - dev: true + '@types/d3-brush@3.0.6': + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} - /is-data-descriptor@0.1.4: - resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 + '@types/d3-chord@3.0.6': + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} - /is-data-descriptor@1.0.0: - resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 6.0.3 + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true + '@types/d3-contour@3.0.6': + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} - /is-descriptor@0.1.6: - resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} - engines: {node: '>=0.10.0'} - dependencies: - is-accessor-descriptor: 0.1.6 - is-data-descriptor: 0.1.4 - kind-of: 5.1.0 + '@types/d3-delaunay@6.0.4': + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} - /is-descriptor@1.0.2: - resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} - engines: {node: '>=0.10.0'} - dependencies: - is-accessor-descriptor: 1.0.0 - is-data-descriptor: 1.0.0 - kind-of: 6.0.3 + '@types/d3-dispatch@3.0.7': + resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} - /is-directory@0.3.1: - resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} - engines: {node: '>=0.10.0'} - dev: true + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} - /is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} - /is-extendable@1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} - dependencies: - is-plain-object: 2.0.4 + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} - /is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - dev: true + '@types/d3-force@3.0.10': + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: true + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} - /is-glob@3.1.0: - resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 + '@types/d3-geo@3.1.1': + resolution: {integrity: sha512-65Emv9fQiQQqphLlRkuQ5ypPsOmWPhtBGCMv61JDPEPMvsx+gzhGf74yw1a78xFKPj6zw4AgQICJoQv0vK9M2w==} - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} - /is-installed-globally@0.3.2: - resolution: {integrity: sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==} - engines: {node: '>=8'} - dependencies: - global-dirs: 2.1.0 - is-path-inside: 3.0.3 - dev: true + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - dev: true + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} - /is-npm@4.0.0: - resolution: {integrity: sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==} - engines: {node: '>=8'} - dev: true + '@types/d3-polygon@3.0.2': + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} - /is-number@3.0.0: - resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 + '@types/d3-random@3.0.4': + resolution: {integrity: sha512-UHYId5WTCx4L4YNel7NU00XUXXgvgpgZOvp10PuvsQENjMDXhh2RyFc0KBjO7B45ne4Ha1yVH7ii0vnzKkuzWA==} - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true + '@types/d3-scale-chromatic@3.1.0': + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} - /is-obj@2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} - dev: true + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} - /is-path-cwd@2.2.0: - resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} - engines: {node: '>=6'} - dev: true + '@types/d3-selection@3.0.12': + resolution: {integrity: sha512-Qe/KWYhEiIIxGs7HrAAjMfShxKldx19SJtr5zu53f3afPsdZNz7HHtdTLXo/kqeiWNXVycI24kSnfzBYkTzpgw==} - /is-path-in-cwd@2.1.0: - resolution: {integrity: sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==} - engines: {node: '>=6'} - dependencies: - is-path-inside: 2.1.0 - dev: true + '@types/d3-shape@3.2.0': + resolution: {integrity: sha512-kVd74ta9eof3eJOvbNd1vGKS/XERRyQbT26Og63hIsvDO84cjD5gEOhsXf26w3FSoNlPVz84DOFcKv/oou+fMw==} - /is-path-inside@2.1.0: - resolution: {integrity: sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==} - engines: {node: '>=6'} - dependencies: - path-is-inside: 1.0.2 - dev: true + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} - /is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - dev: true + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} - /is-plain-obj@3.0.0: - resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} - engines: {node: '>=10'} - dev: true + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} - /is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true + '@types/d3@7.4.3': + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} - /is-resolvable@1.1.0: - resolution: {integrity: sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==} - dev: true + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - dependencies: - call-bind: 1.0.2 - dev: true + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} - /is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - dev: true + '@types/hast@3.0.5': + resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==} - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true + '@types/markdown-it@14.2.0': + resolution: {integrity: sha512-NoQ2yGlLWj4wpxMs+TYmRKk3thDrQ97agr7sFqfLsAlvoS8SNQuTrlObhFqG9iugdTtgOE9jpJ6FNM4ZGsa5xQ==} - /is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: true + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.2 - dev: true + '@types/mdurl@2.0.0': + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} - /is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - /is-wsl@1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} - dev: true + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - /is-yarn-global@0.3.0: - resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} - dev: true + '@types/web-bluetooth@0.0.21': + resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + '@ungap/structured-clone@1.4.0': + resolution: {integrity: sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==} - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true + '@upsetjs/venn.js@2.0.0': + resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true + '@vitejs/plugin-vue@5.2.4': + resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 + vue: ^3.2.25 - /isobject@2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} - engines: {node: '>=0.10.0'} - dependencies: - isarray: 1.0.0 + '@vue/compiler-core@3.5.43': + resolution: {integrity: sha512-zdiLhnbe1QQqgDT8xZMpNmyqZ3qlI+/Q/FHQco57Kwl/b05HhCzN6eVGN9QU9rbga4CrS0H5SYY8VGHZCt/1Hg==} - /isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} + '@vue/compiler-dom@3.5.43': + resolution: {integrity: sha512-PEZoAk3NQmsn/ejMzSOCyTYqwGqczrWm70PuhBKjjv1+TCoQAaO/zOqNwjV+honlNstT5ILxtc+8r8UUfj+iEQ==} - /isstream@0.1.2: - resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - dev: true + '@vue/compiler-sfc@3.5.43': + resolution: {integrity: sha512-FCbrG3XNCRl+js3huuKx4IVHBLTvMkJhVepjbxSPu1gn4yWLaYtGNQdjJGZaMytXB6qb76qQDDmDSLy/vkmleQ==} - /javascript-stringify@1.6.0: - resolution: {integrity: sha512-fnjC0up+0SjEJtgmmG+teeel68kutkvzfctO/KxE3qJlbunkJYAshgH3boU++gSBHP8z5/r0ts0qRIrHf0RTQQ==} - dev: true + '@vue/compiler-ssr@3.5.43': + resolution: {integrity: sha512-GF62orf7KiJX9RqrHNGrYBudsQGD0OhJ5nDs90O8UiDuS40+YMYomiXu6w6EuvtXuRDc3MSNis3EaaSKAVSWpg==} - /javascript-stringify@2.1.0: - resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} - dev: true + '@vue/devtools-api@7.7.10': + resolution: {integrity: sha512-KxtEpUOOpFz/qOGRrAwA36QF7DqIA+FXgCYit9mk9wjbaZt0sXOFz81ElOZtKA4HbWHUdwNjZHBFsFFyp5BZiA==} - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true + '@vue/devtools-kit@7.7.10': + resolution: {integrity: sha512-3WNi2Kq4tbpVbmhml7RiphmAt0279oh3fKNeWMQIrltfX8Q91b4i5PL8DtyNKdwmcsGrV4fg+erwWOmD05CLIw==} - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 + '@vue/devtools-shared@7.7.10': + resolution: {integrity: sha512-wOPslzB8vTvpxwdaOcR2qAbwmuSP0L+rhpoC6Cf56V3Jip+HWb7PQQXOUPgBNQARpXsbQX/+mvi8kKucmBGRwQ==} - /jsbn@0.1.1: - resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - dev: true + '@vue/reactivity@3.5.43': + resolution: {integrity: sha512-G/c9GyOZNI2jVaaS6OX1EF1SSFSv7H0ERqNTl4+DTFMlZmB5eVAB53aLQNam/7NL2NPtaDD7RdVrzf8uJzMuOA==} - /jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - dev: true + '@vue/runtime-core@3.5.43': + resolution: {integrity: sha512-hU6U6VnVhBGQDpvlnnDlIB8ZGJBiOcgk2lh/0InltHiz3D8oSkluvuvY+do1G2H3+udeKFsmaBlgVYP7gXQzEw==} - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true + '@vue/runtime-dom@3.5.43': + resolution: {integrity: sha512-Bb2Jc0YjjJdMt1SJmb9b2L/IWd3I8lIT9x9eS/xvvP9CiVgna0ffua74xKRmt4/uSJ+0r4iN8ex1jrqkhQGWQw==} - /json-buffer@3.0.0: - resolution: {integrity: sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=} - dev: true + '@vue/server-renderer@3.5.43': + resolution: {integrity: sha512-l2Ygjv9NehV94PSBxNWsAHC0j/eIIKbn92mBuWXAPGLnn6HfJ6MH5ubsd+Nk0YoZ5FRuxWI1P2VSoh+dbPQhCQ==} - /json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: true + '@vue/shared@3.5.43': + resolution: {integrity: sha512-uksS7YGMR5NZyr4JNq0Rp+QyLns0ueaz20KwzIPW9R0LH1Vnt4E+XUM29PNseEbf1www2gOuhuDi5AKOIXag9Q==} - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true + '@vueuse/core@12.8.2': + resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==} - /json-schema@0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - dev: true + '@vueuse/integrations@12.8.2': + resolution: {integrity: sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==} + peerDependencies: + async-validator: ^4 + axios: ^1 + change-case: ^5 + drauu: ^0.4 + focus-trap: ^7 + fuse.js: ^7 + idb-keyval: ^6 + jwt-decode: ^4 + nprogress: ^0.2 + qrcode: ^1.5 + sortablejs: ^1 + universal-cookie: ^7 + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true - /json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - dev: true + '@vueuse/metadata@12.8.2': + resolution: {integrity: sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==} - /json2yaml@1.1.0: - resolution: {integrity: sha512-/xse+m0SlllfZahQrNOelmLrFNfeZv4QG0QKlvg7VsPSGIxpB3X+ggLkdffwmI1DdQ3o9XjZX+K+EOI1epdKgg==} - engines: {node: '>= 0.2.0'} - hasBin: true - dependencies: - remedial: 1.0.8 - dev: true + '@vueuse/shared@12.8.2': + resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==} - /json5@0.5.1: - resolution: {integrity: sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==} - hasBin: true - dev: true + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} - /json5@1.0.1: - resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} - hasBin: true - dependencies: - minimist: 1.2.6 - dev: true + algoliasearch@5.59.0: + resolution: {integrity: sha512-wUXzaeI7B526W4y1gFg3lcxgDZ67XSgRJIiellYWOas/pLpO7rOtxm9Gr2E/C8aiSDXIgx1q5TdSsvK67Uakqw==} + engines: {node: '>= 14.0.0'} - /json5@2.2.1: - resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} - engines: {node: '>=6'} - hasBin: true + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - /jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - optionalDependencies: - graceful-fs: 4.2.10 + axios@1.20.0: + resolution: {integrity: sha512-r8aOh8j9cGKpgQAqpzrUHnSIc6a59Y3Xf/cv8sy1DrHCkZHzQGEuoq1tARk6qSyDdtQGSDgpb9kFlruzPvrgwg==} - /jsprim@1.4.2: - resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} - engines: {node: '>=0.6.0'} - dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 - dev: true + birpc@2.9.0: + resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} - /keyv@3.1.0: - resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} - dependencies: - json-buffer: 3.0.0 - dev: true + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} - /khroma@1.4.1: - resolution: {integrity: sha512-+GmxKvmiRuCcUYDgR7g5Ngo0JEDeOsGdNONdU2zsiBQaK4z19Y2NvXqfEDE0ZiIrg45GTZyAnPLVsLZZACYm3Q==} - dev: false + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - /killable@1.0.1: - resolution: {integrity: sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==} - dev: true + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - /kind-of@3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - /kind-of@4.0.0: - resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} - /kind-of@5.1.0: - resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} - engines: {node: '>=0.10.0'} + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} - /last-call-webpack-plugin@3.0.0: - resolution: {integrity: sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==} - dependencies: - lodash: 4.17.21 - webpack-sources: 1.4.3 - dev: true + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} - /latest-version@5.1.0: - resolution: {integrity: sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==} - engines: {node: '>=8'} - dependencies: - package-json: 6.5.0 - dev: true + copy-anything@4.1.0: + resolution: {integrity: sha512-ufbM3smX/Jbnpk5wcQjzd1MgBpzmqfNETUAyZNrGwU9foRlyHoGzMMBBCRzEhQLBjZfFDE1W2ufPXX2vdWkV8Q==} + engines: {node: '>=18'} - /linkify-it@2.2.0: - resolution: {integrity: sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==} - dependencies: - uc.micro: 1.0.6 - dev: true + cose-base@1.0.3: + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} - /load-script@1.0.0: - resolution: {integrity: sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==} - dev: true + cose-base@2.2.0: + resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} - /loader-runner@2.4.0: - resolution: {integrity: sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==} - engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} - dev: true + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - /loader-utils@0.2.17: - resolution: {integrity: sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==} - dependencies: - big.js: 3.2.0 - emojis-list: 2.1.0 - json5: 0.5.1 - object-assign: 4.1.1 - dev: true + cytoscape-cose-bilkent@4.1.0: + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} + peerDependencies: + cytoscape: ^3.2.0 - /loader-utils@1.4.0: - resolution: {integrity: sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==} - engines: {node: '>=4.0.0'} - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 1.0.1 - dev: true + cytoscape-fcose@2.2.0: + resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} + peerDependencies: + cytoscape: ^3.2.0 - /loader-utils@2.0.2: - resolution: {integrity: sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==} - engines: {node: '>=8.9.0'} - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 2.2.1 - dev: true + cytoscape@3.34.3: + resolution: {integrity: sha512-yfYGhRcGAntq6YBD583j4n0Eg3jIxvWmZtz/5uz9UYkeIStSlMxuUja+ec5j3iBD8nv1rwaOAYMW09tBdkSeaQ==} + engines: {node: '>=0.10'} - /locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - dev: true + d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - dev: true + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} - /lodash._reinterpolate@3.0.0: - resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==} - dev: true + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} - /lodash.clonedeep@4.5.0: - resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} - dev: true + d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} - /lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - dev: true + d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} - /lodash.kebabcase@4.1.1: - resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} - dev: true + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} - /lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - dev: true + d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} - /lodash.template@4.5.0: - resolution: {integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==} - dependencies: - lodash._reinterpolate: 3.0.0 - lodash.templatesettings: 4.2.0 - dev: true + d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} - /lodash.templatesettings@4.2.0: - resolution: {integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==} - dependencies: - lodash._reinterpolate: 3.0.0 - dev: true + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} - /lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - dev: true + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true - /loglevel@1.8.0: - resolution: {integrity: sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==} - engines: {node: '>= 0.6.0'} - dev: true + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} - /lower-case@1.1.4: - resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} - dev: true + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} - /lowercase-keys@1.0.1: - resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} - engines: {node: '>=0.10.0'} - dev: true + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} - /lowercase-keys@2.0.0: - resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} - engines: {node: '>=8'} - dev: true + d3-format@3.1.2: + resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==} + engines: {node: '>=12'} - /lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 - dev: true + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 - dev: true + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} - /make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - dependencies: - pify: 4.0.1 - semver: 5.7.1 - dev: true + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.0 - dev: true + d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} - /map-cache@0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} - engines: {node: '>=0.10.0'} + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} - /map-visit@1.0.0: - resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} - engines: {node: '>=0.10.0'} - dependencies: - object-visit: 1.0.1 + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} - /markdown-it-anchor@5.3.0(markdown-it@8.4.2): - resolution: {integrity: sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==} - peerDependencies: - markdown-it: '*' - dependencies: - markdown-it: 8.4.2 - dev: true + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} - /markdown-it-chain@1.3.0(markdown-it@8.4.2): - resolution: {integrity: sha512-XClV8I1TKy8L2qsT9iX3qiV+50ZtcInGXI80CA+DP62sMs7hXlyV/RM3hfwy5O3Ad0sJm9xIwQELgANfESo8mQ==} - engines: {node: '>=6.9'} - peerDependencies: - markdown-it: '>=5.0.0' - dependencies: - markdown-it: 8.4.2 - webpack-chain: 4.12.1 - dev: true + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} - /markdown-it-container@2.0.0: - resolution: {integrity: sha512-IxPOaq2LzrGuFGyYq80zaorXReh2ZHGFOB1/Hen429EJL1XkPI3FJTpx9TsJeua+j2qTru4h3W1TiCRdeivMmA==} - dev: true + d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} - /markdown-it-emoji@1.4.0: - resolution: {integrity: sha512-QCz3Hkd+r5gDYtS2xsFXmBYrgw6KuWcJZLCEkdfAuwzZbShCmCfta+hwAMq4NX/4xPzkSHduMKgMkkPUJxSXNg==} - dev: true + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} - /markdown-it-table-of-contents@0.4.4: - resolution: {integrity: sha512-TAIHTHPwa9+ltKvKPWulm/beozQU41Ab+FIefRaQV1NRnpzwcV9QOe6wXQS5WLivm5Q/nlo0rl6laGkMDZE7Gw==} - engines: {node: '>6.4.0'} - dev: true + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} - /markdown-it@8.4.2: - resolution: {integrity: sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==} - hasBin: true - dependencies: - argparse: 1.0.10 - entities: 1.1.2 - linkify-it: 2.2.0 - mdurl: 1.0.1 - uc.micro: 1.0.6 - dev: true + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} - /md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true + d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} - /mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - dev: true + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} - /mdn-data@2.0.4: - resolution: {integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==} - dev: true + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} - /mdurl@1.0.1: - resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} - dev: true + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} - /media-typer@0.3.0: - resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} - engines: {node: '>= 0.6'} - dev: true + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} - /memory-fs@0.4.1: - resolution: {integrity: sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==} - dependencies: - errno: 0.1.8 - readable-stream: 2.3.7 - dev: true + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 - /memory-fs@0.5.0: - resolution: {integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==} - engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} - dependencies: - errno: 0.1.8 - readable-stream: 2.3.7 - dev: true + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} - /merge-descriptors@1.0.1: - resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=} - dev: true + d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} + engines: {node: '>=12'} - /merge-source-map@1.1.0: - resolution: {integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==} - dependencies: - source-map: 0.6.1 - dev: true + dagre-d3-es@7.0.14: + resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==} - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} + dayjs@1.11.23: + resolution: {integrity: sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==} - /mermaid@8.14.0: - resolution: {integrity: sha512-ITSHjwVaby1Li738sxhF48sLTxcNyUAoWfoqyztL1f7J6JOLpHOuQPNLBb6lxGPUA0u7xP9IRULgvod0dKu35A==} - dependencies: - '@braintree/sanitize-url': 3.1.0 - d3: 7.6.1 - dagre: 0.8.5 - dagre-d3: 0.6.4 - dompurify: 2.3.5 - graphlib: 2.1.8 - khroma: 1.4.1 - moment-mini: 2.29.4 - stylis: 4.1.1 - dev: false + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - /methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - dev: true + delaunator@5.1.0: + resolution: {integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==} - /micromatch@3.1.10(supports-color@6.1.0): - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - braces: 2.3.2(supports-color@6.1.0) - define-property: 2.0.2 - extend-shallow: 3.0.2 - extglob: 2.0.4(supports-color@6.1.0) - fragment-cache: 0.2.1 - kind-of: 6.0.3 - nanomatch: 1.2.13(supports-color@6.1.0) - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2(supports-color@6.1.0) - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - dev: true + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} - /miller-rabin@4.0.1: - resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} - hasBin: true - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - dev: true + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + dompurify@3.4.15: + resolution: {integrity: sha512-EUBjM+B+lkDE41iE82DDSCfkoPGfXx8IxFxPMjNzm/Uk4xDet77rTN9wqlxlVg71kK7XGuUMv6wUxJUwwv+Xyw==} - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} - /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - dev: true + emoji-regex-xs@1.0.0: + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} - /mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - dev: true + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} - /mimic-response@1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} - dev: true + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} - /min-document@2.19.0: - resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} - dependencies: - dom-walk: 0.1.2 - dev: true + es-object-atoms@1.1.2: + resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} + engines: {node: '>= 0.4'} - /mini-css-extract-plugin@0.6.0(webpack@4.46.0): - resolution: {integrity: sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw==} - engines: {node: '>= 6.9.0'} - peerDependencies: - webpack: ^4.4.0 - dependencies: - loader-utils: 1.4.0 - normalize-url: 2.0.1 - schema-utils: 1.0.0 - webpack: 4.46.0 - webpack-sources: 1.4.3 - dev: true - - /minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - dev: true - - /minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - dev: true - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - - /minimist@1.2.6: - resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} - dev: true - - /mississippi@3.0.0: - resolution: {integrity: sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==} - engines: {node: '>=4.0.0'} - dependencies: - concat-stream: 1.6.2 - duplexify: 3.7.1 - end-of-stream: 1.4.4 - flush-write-stream: 1.1.1 - from2: 2.3.0 - parallel-transform: 1.2.0 - pump: 3.0.0 - pumpify: 1.5.1 - stream-each: 1.2.3 - through2: 2.0.5 - dev: true - - /mixin-deep@1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} - dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} - /mkdirp@0.3.0: - resolution: {integrity: sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==} - deprecated: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) - dev: true + es-toolkit@1.52.0: + resolution: {integrity: sha512-XTNEJQh1tY1ZJVcf6ayP/2n4ZPyaHlW2FWs7xvw5ddPuhUVjLD3olQVQS7kf58JbAB48iL0uL/jerTrjtV3lDA==} - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} hasBin: true - dependencies: - minimist: 1.2.6 - dev: true - /mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: true + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - /moment-mini@2.29.4: - resolution: {integrity: sha512-uhXpYwHFeiTbY9KSgPPRoo1nt8OxNVdMVoTBYHfSEKeRkIkwGpO+gERmhuhBtzfaeOyTkykSrm2+noJBgqt3Hg==} - dev: false + fastdom@1.0.12: + resolution: {integrity: sha512-LB+xjSTEbjHE1cWsxu+tN2Xqr1kpi+V9aADI7sVM5ZMaXyYGPHULQMzpJMYqOTULK/73pUkWVzzObFRBkPr+hg==} - /move-concurrently@1.0.1: - resolution: {integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==} - dependencies: - aproba: 1.2.0 - copy-concurrently: 1.0.5 - fs-write-stream-atomic: 1.0.10 - mkdirp: 0.5.6 - rimraf: 2.7.1 - run-queue: 1.0.3 - dev: true + focus-trap@7.8.0: + resolution: {integrity: sha512-/yNdlIkpWbM0ptxno3ONTuf+2g318kh2ez3KSeZN5dZ8YC6AAmgeWz+GasYYiBJPFaYcSAPeu4GfhUaChzIJXA==} - /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + form-data@4.0.6: + resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==} + engines: {node: '>= 6'} - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] - /multicast-dns-service-types@1.1.0: - resolution: {integrity: sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==} - dev: true + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - /multicast-dns@6.2.3: - resolution: {integrity: sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==} - hasBin: true - dependencies: - dns-packet: 1.3.4 - thunky: 1.1.0 - dev: true + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} - /mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - dev: true + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} - /nan@2.16.0: - resolution: {integrity: sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==} - requiresBuild: true - dev: true - optional: true + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} - /nanoid@3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true + hachure-fill@0.5.2: + resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} - /nanomatch@1.2.13(supports-color@6.1.0): - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - fragment-cache: 0.2.1 - is-windows: 1.0.2 - kind-of: 6.0.3 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2(supports-color@6.1.0) - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} - /negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: true + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: true + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} - /nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - dev: true + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} - /no-case@2.3.2: - resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} - dependencies: - lower-case: 1.1.4 - dev: true + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - /node-forge@0.10.0: - resolution: {integrity: sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==} - engines: {node: '>= 6.0.0'} - dev: true - - /node-libs-browser@2.2.1: - resolution: {integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==} - dependencies: - assert: 1.5.0 - browserify-zlib: 0.2.0 - buffer: 4.9.2 - console-browserify: 1.2.0 - constants-browserify: 1.0.0 - crypto-browserify: 3.12.0 - domain-browser: 1.2.0 - events: 3.3.0 - https-browserify: 1.0.0 - os-browserify: 0.3.0 - path-browserify: 0.0.1 - process: 0.11.10 - punycode: 1.4.1 - querystring-es3: 0.2.1 - readable-stream: 2.3.7 - stream-browserify: 2.0.2 - stream-http: 2.8.3 - string_decoder: 1.3.0 - timers-browserify: 2.0.12 - tty-browserify: 0.0.0 - url: 0.11.0 - util: 0.11.1 - vm-browserify: 1.1.2 - dev: true - - /node-releases@2.0.6: - resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} - dev: true - - /nopt@1.0.10: - resolution: {integrity: sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=} - hasBin: true - dependencies: - abbrev: 1.1.1 - dev: true + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} - /normalize-path@2.1.1: - resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} - engines: {node: '>=0.10.0'} - dependencies: - remove-trailing-separator: 1.1.0 - dev: true + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} - /normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} - dev: true - /normalize-url@2.0.1: - resolution: {integrity: sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==} - engines: {node: '>=4'} - dependencies: - prepend-http: 2.0.0 - query-string: 5.1.1 - sort-keys: 2.0.0 - dev: true + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} - /normalize-url@3.3.0: - resolution: {integrity: sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==} - engines: {node: '>=6'} - dev: true + internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} - /normalize-url@4.5.1: - resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} - engines: {node: '>=8'} - dev: true + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} - /npm-run-path@2.0.2: - resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} - engines: {node: '>=4'} - dependencies: - path-key: 2.0.1 - dev: true + katex@0.16.47: + resolution: {integrity: sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==} + hasBin: true - /nprogress@0.2.0: - resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} - dev: true + khroma@2.1.0: + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} - /nth-check@1.0.2: - resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} - dependencies: - boolbase: 1.0.0 - dev: true + layout-base@1.0.2: + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} - /nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - dependencies: - boolbase: 1.0.0 - dev: true + layout-base@2.0.1: + resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} - /num2fraction@1.2.2: - resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==} - dev: true + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} - /oauth-sign@0.9.0: - resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} - dev: true + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - dev: true + mark.js@8.11.1: + resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} - /object-copy@0.1.0: - resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} - engines: {node: '>=0.10.0'} - dependencies: - copy-descriptor: 0.1.1 - define-property: 0.2.5 - kind-of: 3.2.2 + markdown-it-container@4.0.0: + resolution: {integrity: sha512-HaNccxUH0l7BNGYbFbjmGpf5aLHAMTinqRZQAEQbMr2cdD3z91Q6kIo1oUn1CQndkT03jat6ckrdRYuwwqLlQw==} - /object-inspect@1.12.2: - resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} - dev: true + markdown-it-footnote@4.0.0: + resolution: {integrity: sha512-WYJ7urf+khJYl3DqofQpYfEYkZKbmXmwxQV8c8mO/hGIhgZ1wOe7R4HLFNwqx7TjILbnC98fuyeSsin19JdFcQ==} - /object-is@1.1.5: - resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - dev: true + markdown-it-task-lists@2.1.1: + resolution: {integrity: sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA==} + + marked@16.4.2: + resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==} + engines: {node: '>= 20'} + hasBin: true - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} - dev: true - /object-visit@1.0.1: - resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} - /object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: true + medium-zoom@1.1.0: + resolution: {integrity: sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==} - /object.getownpropertydescriptors@2.1.4: - resolution: {integrity: sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==} - engines: {node: '>= 0.8'} - dependencies: - array.prototype.reduce: 1.0.4 - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.2 - dev: true + mermaid@11.17.2: + resolution: {integrity: sha512-V6K3C8EBdEsPFZXSKMJe6ppQOENxuHARr9GvHX4hh47lAbhMRD9qf4oEK7LoaRQxULMa80/qt5gHO73aCleBBg==} - /object.pick@1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} - /object.values@1.1.5: - resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.2 - dev: true + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - /obuf@1.1.2: - resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - dev: true + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} - /on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - dependencies: - ee-first: 1.1.1 - dev: true + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - /on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} - dev: true + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: true + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + minisearch@7.2.0: + resolution: {integrity: sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - /opencollective-postinstall@2.0.3: - resolution: {integrity: sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==} + nanoid@3.3.19: + resolution: {integrity: sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dev: true - /opn@5.5.0: - resolution: {integrity: sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==} - engines: {node: '>=4'} - dependencies: - is-wsl: 1.1.0 - dev: true + non-layered-tidy-tree-layout@2.0.2: + resolution: {integrity: sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==} + + oniguruma-to-es@3.1.1: + resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==} - /optimize-css-assets-webpack-plugin@5.0.8(webpack@4.46.0): - resolution: {integrity: sha512-mgFS1JdOtEGzD8l+EuISqL57cKO+We9GcoiQEmdCWRqqck+FGNmYJtx9qfAPzEz+lRrlThWMuGDaRkI/yWNx/Q==} - peerDependencies: - webpack: ^4.0.0 - dependencies: - cssnano: 4.1.11 - last-call-webpack-plugin: 3.0.0 - webpack: 4.46.0 - dev: true + package-manager-detector@1.8.0: + resolution: {integrity: sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==} - /os-browserify@0.3.0: - resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} - dev: true + path-data-parser@0.1.0: + resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} - /os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - dev: true + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - /p-cancelable@1.1.0: - resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} - engines: {node: '>=6'} - dev: true + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - /p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - dev: true + points-on-curve@0.2.0: + resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: true + points-on-path@0.2.1: + resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} - /p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - dependencies: - p-limit: 2.3.0 - dev: true + postcss@8.5.28: + resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==} + engines: {node: ^10 || ^12 || >=14} - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - dev: true + preact@10.29.8: + resolution: {integrity: sha512-ej2aVZ+vZ8WO7tvlQWRM9N63A0KzF9q4mWJfDUHgYaIofWY9hu74QdnQrjoPMmZi2/nZ5gN0bJCQF49xQqx09Q==} + peerDependencies: + preact-render-to-string: '>=5' + peerDependenciesMeta: + preact-render-to-string: + optional: true - /p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - dev: true + property-information@7.2.0: + resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==} - /p-retry@3.0.1: - resolution: {integrity: sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==} - engines: {node: '>=6'} - dependencies: - retry: 0.12.0 - dev: true + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} - /package-json@6.5.0: - resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==} - engines: {node: '>=8'} - dependencies: - got: 9.6.0 - registry-auth-token: 4.2.2 - registry-url: 5.1.0 - semver: 6.3.0 - dev: true + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - /pako@1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - dev: true + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} - /parallel-transform@1.2.0: - resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==} - dependencies: - cyclist: 1.0.1 - inherits: 2.0.4 - readable-stream: 2.3.7 - dev: true + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - /param-case@2.1.1: - resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} - dependencies: - no-case: 2.3.2 - dev: true + robust-predicates@3.0.3: + resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==} - /parse-asn1@5.1.6: - resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} - dependencies: - asn1.js: 5.4.1 - browserify-aes: 1.2.0 - evp_bytestokey: 1.0.3 - pbkdf2: 3.1.2 - safe-buffer: 5.2.1 - dev: true + rollup@4.63.3: + resolution: {integrity: sha512-1i2XreiAoMMXuPGD6Msj2xWrMMkHojNRKivInxGQcg7/1KuPuYlfUutLyh4drnOxUTHX9cHI4wFoat8D/NKaBw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true - /parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - dev: true + roughjs@4.6.6: + resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} - /parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - dev: true + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} - /pascalcase@0.1.1: - resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} - engines: {node: '>=0.10.0'} + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - /path-browserify@0.0.1: - resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==} - dev: true + search-insights@2.17.3: + resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} - /path-dirname@1.0.2: - resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} + shiki@2.5.0: + resolution: {integrity: sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==} - /path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - dev: true + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} engines: {node: '>=0.10.0'} - /path-is-inside@1.0.2: - resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} - dev: true + strictdom@1.0.1: + resolution: {integrity: sha512-cEmp9QeXXRmjj/rVp9oyiqcvyocWab/HaoN4+bwFeZ7QzykJD6L3yD4v12K1x0tHpqRqVpJevN3gW7kyM39Bqg==} - /path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - dev: true + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true + stylis@4.4.0: + resolution: {integrity: sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA==} - /path-to-regexp@0.1.7: - resolution: {integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=} - dev: true + superjson@2.2.6: + resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} + engines: {node: '>=16'} - /path-type@3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} - dependencies: - pify: 3.0.0 + tabbable@6.5.0: + resolution: {integrity: sha512-wieBHXygIm7OyQOu5hQlkk62/WyCFYGlWg7L6/ZCUZwx0o398Zkn4pVmMyfYhfMG8kGrj/Krt8eIk6UKC6VzwA==} - /pbkdf2@3.1.2: - resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} - engines: {node: '>=0.12'} - dependencies: - create-hash: 1.2.0 - create-hmac: 1.1.7 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - dev: true + tinyexec@1.3.1: + resolution: {integrity: sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==} + engines: {node: '>=18'} - /performance-now@2.1.0: - resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - dev: true + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - /picocolors@0.2.1: - resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} - dev: true + ts-dedent@2.3.0: + resolution: {integrity: sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg==} + engines: {node: '>=6.10'} - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: true + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - /pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - dev: true + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - /pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} - /pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} - /pinkie-promise@2.0.1: - resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} - engines: {node: '>=0.10.0'} - dependencies: - pinkie: 2.0.4 - dev: true + uuid@14.0.2: + resolution: {integrity: sha512-xZe/16rV4aa+HGSOCiY2YeLT1OybRLrrkL/Rqaq7p7GMVXjFh+6wN4oMYgjFmnSnhY8t6Xpdl2l9qmnHYuMHwQ==} + hasBin: true - /pinkie@2.0.4: - resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} - engines: {node: '>=0.10.0'} - dev: true + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} - /pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} - dependencies: - find-up: 3.0.0 - dev: true + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - dev: true + vite@5.4.21: + resolution: {integrity: sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true - /portfinder@1.0.32(supports-color@6.1.0): - resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} - engines: {node: '>= 0.12.0'} - dependencies: - async: 2.6.4 - debug: 3.2.7(supports-color@6.1.0) - mkdirp: 0.5.6 - transitivePeerDependencies: - - supports-color - dev: true + vitepress-plugin-mermaid@2.0.17: + resolution: {integrity: sha512-IUzYpwf61GC6k0XzfmAmNrLvMi9TRrVRMsUyCA8KNXhg/mQ1VqWnO0/tBVPiX5UoKF1mDUwqn5QV4qAJl6JnUg==} + peerDependencies: + mermaid: 10 || 11 + vitepress: ^1.0.0 || ^1.0.0-alpha - /posix-character-classes@0.1.1: - resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} - engines: {node: '>=0.10.0'} + vitepress@1.6.4: + resolution: {integrity: sha512-+2ym1/+0VVrbhNyRoFFesVvBvHAVMZMK0rw60E3X/5349M1GuVdKeazuksqopEdvkKwKGs21Q729jX81/bkBJg==} + hasBin: true + peerDependencies: + markdown-it-mathjax3: ^4 + postcss: ^8 + peerDependenciesMeta: + markdown-it-mathjax3: + optional: true + postcss: + optional: true - /postcss-calc@7.0.5: - resolution: {integrity: sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==} - dependencies: - postcss: 7.0.39 - postcss-selector-parser: 6.0.10 - postcss-value-parser: 4.2.0 - dev: true + vue@3.5.43: + resolution: {integrity: sha512-o5qZoksdnjIKvW1srZ3ab7pcDNYAerBjRe54D0LBLfRdCYFrSgBHVXokMas35czQc0//lmx4/tuY4ZNQ+Rf2Ng==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - /postcss-colormin@4.0.3: - resolution: {integrity: sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==} - engines: {node: '>=6.9.0'} - dependencies: - browserslist: 4.21.3 - color: 3.2.1 - has: 1.0.3 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - /postcss-convert-values@4.0.1: - resolution: {integrity: sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==} - engines: {node: '>=6.9.0'} - dependencies: - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true +snapshots: - /postcss-discard-comments@4.0.2: - resolution: {integrity: sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==} - engines: {node: '>=6.9.0'} + '@algolia/abtesting@1.25.0': dependencies: - postcss: 7.0.39 - dev: true + '@algolia/client-common': 5.59.0 + '@algolia/requester-browser-xhr': 5.59.0 + '@algolia/requester-fetch': 5.59.0 + '@algolia/requester-node-http': 5.59.0 - /postcss-discard-duplicates@4.0.2: - resolution: {integrity: sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==} - engines: {node: '>=6.9.0'} + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.59.0)(algoliasearch@5.59.0)(search-insights@2.17.3)': dependencies: - postcss: 7.0.39 - dev: true + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.59.0)(algoliasearch@5.59.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.59.0)(algoliasearch@5.59.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights - /postcss-discard-empty@4.0.1: - resolution: {integrity: sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==} - engines: {node: '>=6.9.0'} + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.59.0)(algoliasearch@5.59.0)(search-insights@2.17.3)': dependencies: - postcss: 7.0.39 - dev: true + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.59.0)(algoliasearch@5.59.0) + search-insights: 2.17.3 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch - /postcss-discard-overridden@4.0.1: - resolution: {integrity: sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==} - engines: {node: '>=6.9.0'} + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.59.0)(algoliasearch@5.59.0)': dependencies: - postcss: 7.0.39 - dev: true + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.59.0)(algoliasearch@5.59.0) + '@algolia/client-search': 5.59.0 + algoliasearch: 5.59.0 - /postcss-load-config@2.1.2: - resolution: {integrity: sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==} - engines: {node: '>= 4'} + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.59.0)(algoliasearch@5.59.0)': dependencies: - cosmiconfig: 5.2.1 - import-cwd: 2.1.0 - dev: true + '@algolia/client-search': 5.59.0 + algoliasearch: 5.59.0 - /postcss-loader@3.0.0: - resolution: {integrity: sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==} - engines: {node: '>= 6'} + '@algolia/client-abtesting@5.59.0': dependencies: - loader-utils: 1.4.0 - postcss: 7.0.39 - postcss-load-config: 2.1.2 - schema-utils: 1.0.0 - dev: true + '@algolia/client-common': 5.59.0 + '@algolia/requester-browser-xhr': 5.59.0 + '@algolia/requester-fetch': 5.59.0 + '@algolia/requester-node-http': 5.59.0 - /postcss-merge-longhand@4.0.11: - resolution: {integrity: sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==} - engines: {node: '>=6.9.0'} + '@algolia/client-analytics@5.59.0': dependencies: - css-color-names: 0.0.4 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - stylehacks: 4.0.3 - dev: true + '@algolia/client-common': 5.59.0 + '@algolia/requester-browser-xhr': 5.59.0 + '@algolia/requester-fetch': 5.59.0 + '@algolia/requester-node-http': 5.59.0 - /postcss-merge-rules@4.0.3: - resolution: {integrity: sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==} - engines: {node: '>=6.9.0'} - dependencies: - browserslist: 4.21.3 - caniuse-api: 3.0.0 - cssnano-util-same-parent: 4.0.1 - postcss: 7.0.39 - postcss-selector-parser: 3.1.2 - vendors: 1.0.4 - dev: true + '@algolia/client-common@5.59.0': {} - /postcss-minify-font-values@4.0.2: - resolution: {integrity: sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==} - engines: {node: '>=6.9.0'} + '@algolia/client-insights@5.59.0': dependencies: - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + '@algolia/client-common': 5.59.0 + '@algolia/requester-browser-xhr': 5.59.0 + '@algolia/requester-fetch': 5.59.0 + '@algolia/requester-node-http': 5.59.0 - /postcss-minify-gradients@4.0.2: - resolution: {integrity: sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==} - engines: {node: '>=6.9.0'} + '@algolia/client-personalization@5.59.0': dependencies: - cssnano-util-get-arguments: 4.0.0 - is-color-stop: 1.1.0 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + '@algolia/client-common': 5.59.0 + '@algolia/requester-browser-xhr': 5.59.0 + '@algolia/requester-fetch': 5.59.0 + '@algolia/requester-node-http': 5.59.0 - /postcss-minify-params@4.0.2: - resolution: {integrity: sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==} - engines: {node: '>=6.9.0'} + '@algolia/client-query-suggestions@5.59.0': dependencies: - alphanum-sort: 1.0.2 - browserslist: 4.21.3 - cssnano-util-get-arguments: 4.0.0 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - uniqs: 2.0.0 - dev: true + '@algolia/client-common': 5.59.0 + '@algolia/requester-browser-xhr': 5.59.0 + '@algolia/requester-fetch': 5.59.0 + '@algolia/requester-node-http': 5.59.0 - /postcss-minify-selectors@4.0.2: - resolution: {integrity: sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==} - engines: {node: '>=6.9.0'} + '@algolia/client-search@5.59.0': dependencies: - alphanum-sort: 1.0.2 - has: 1.0.3 - postcss: 7.0.39 - postcss-selector-parser: 3.1.2 - dev: true + '@algolia/client-common': 5.59.0 + '@algolia/requester-browser-xhr': 5.59.0 + '@algolia/requester-fetch': 5.59.0 + '@algolia/requester-node-http': 5.59.0 - /postcss-modules-extract-imports@2.0.0: - resolution: {integrity: sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==} - engines: {node: '>= 6'} + '@algolia/ingestion@1.59.0': dependencies: - postcss: 7.0.39 - dev: true + '@algolia/client-common': 5.59.0 + '@algolia/requester-browser-xhr': 5.59.0 + '@algolia/requester-fetch': 5.59.0 + '@algolia/requester-node-http': 5.59.0 - /postcss-modules-local-by-default@2.0.6: - resolution: {integrity: sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==} - engines: {node: '>= 6'} + '@algolia/monitoring@1.59.0': dependencies: - postcss: 7.0.39 - postcss-selector-parser: 6.0.10 - postcss-value-parser: 3.3.1 - dev: true + '@algolia/client-common': 5.59.0 + '@algolia/requester-browser-xhr': 5.59.0 + '@algolia/requester-fetch': 5.59.0 + '@algolia/requester-node-http': 5.59.0 - /postcss-modules-scope@2.2.0: - resolution: {integrity: sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==} - engines: {node: '>= 6'} + '@algolia/recommend@5.59.0': dependencies: - postcss: 7.0.39 - postcss-selector-parser: 6.0.10 - dev: true + '@algolia/client-common': 5.59.0 + '@algolia/requester-browser-xhr': 5.59.0 + '@algolia/requester-fetch': 5.59.0 + '@algolia/requester-node-http': 5.59.0 - /postcss-modules-values@2.0.0: - resolution: {integrity: sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==} + '@algolia/requester-browser-xhr@5.59.0': dependencies: - icss-replace-symbols: 1.1.0 - postcss: 7.0.39 - dev: true + '@algolia/client-common': 5.59.0 - /postcss-normalize-charset@4.0.1: - resolution: {integrity: sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==} - engines: {node: '>=6.9.0'} + '@algolia/requester-fetch@5.59.0': dependencies: - postcss: 7.0.39 - dev: true + '@algolia/client-common': 5.59.0 - /postcss-normalize-display-values@4.0.2: - resolution: {integrity: sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==} - engines: {node: '>=6.9.0'} + '@algolia/requester-node-http@5.59.0': dependencies: - cssnano-util-get-match: 4.0.0 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + '@algolia/client-common': 5.59.0 - /postcss-normalize-positions@4.0.2: - resolution: {integrity: sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==} - engines: {node: '>=6.9.0'} + '@antfu/install-pkg@2.1.0': dependencies: - cssnano-util-get-arguments: 4.0.0 - has: 1.0.3 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + package-manager-detector: 1.8.0 + tinyexec: 1.3.1 - /postcss-normalize-repeat-style@4.0.2: - resolution: {integrity: sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==} - engines: {node: '>=6.9.0'} - dependencies: - cssnano-util-get-arguments: 4.0.0 - cssnano-util-get-match: 4.0.0 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + '@babel/helper-string-parser@7.29.7': {} - /postcss-normalize-string@4.0.2: - resolution: {integrity: sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==} - engines: {node: '>=6.9.0'} - dependencies: - has: 1.0.3 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + '@babel/helper-validator-identifier@7.29.7': {} - /postcss-normalize-timing-functions@4.0.2: - resolution: {integrity: sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==} - engines: {node: '>=6.9.0'} + '@babel/parser@7.29.8': dependencies: - cssnano-util-get-match: 4.0.0 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + '@babel/types': 7.29.8 - /postcss-normalize-unicode@4.0.1: - resolution: {integrity: sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==} - engines: {node: '>=6.9.0'} + '@babel/types@7.29.8': dependencies: - browserslist: 4.21.3 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 - /postcss-normalize-url@4.0.1: - resolution: {integrity: sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==} - engines: {node: '>=6.9.0'} - dependencies: - is-absolute-url: 2.1.0 - normalize-url: 3.3.0 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + '@braintree/sanitize-url@6.0.4': + optional: true - /postcss-normalize-whitespace@4.0.2: - resolution: {integrity: sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==} - engines: {node: '>=6.9.0'} - dependencies: - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + '@braintree/sanitize-url@7.1.2': {} - /postcss-ordered-values@4.1.2: - resolution: {integrity: sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==} - engines: {node: '>=6.9.0'} - dependencies: - cssnano-util-get-arguments: 4.0.0 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + '@chevrotain/types@11.1.2': {} - /postcss-reduce-initial@4.0.3: - resolution: {integrity: sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==} - engines: {node: '>=6.9.0'} - dependencies: - browserslist: 4.21.3 - caniuse-api: 3.0.0 - has: 1.0.3 - postcss: 7.0.39 - dev: true + '@docsearch/css@3.8.2': {} - /postcss-reduce-transforms@4.0.2: - resolution: {integrity: sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==} - engines: {node: '>=6.9.0'} + '@docsearch/js@3.8.2(@algolia/client-search@5.59.0)(search-insights@2.17.3)': dependencies: - cssnano-util-get-match: 4.0.0 - has: 1.0.3 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + '@docsearch/react': 3.8.2(@algolia/client-search@5.59.0)(search-insights@2.17.3) + preact: 10.29.8 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' + - preact-render-to-string + - react + - react-dom + - search-insights - /postcss-safe-parser@4.0.2: - resolution: {integrity: sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==} - engines: {node: '>=6.0.0'} + '@docsearch/react@3.8.2(@algolia/client-search@5.59.0)(search-insights@2.17.3)': dependencies: - postcss: 7.0.39 - dev: true + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.59.0)(algoliasearch@5.59.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.59.0)(algoliasearch@5.59.0) + '@docsearch/css': 3.8.2 + algoliasearch: 5.59.0 + optionalDependencies: + search-insights: 2.17.3 + transitivePeerDependencies: + - '@algolia/client-search' - /postcss-selector-parser@3.1.2: - resolution: {integrity: sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==} - engines: {node: '>=8'} - dependencies: - dot-prop: 5.3.0 - indexes-of: 1.0.1 - uniq: 1.0.1 - dev: true + '@esbuild/aix-ppc64@0.21.5': + optional: true - /postcss-selector-parser@6.0.10: - resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} - engines: {node: '>=4'} - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - dev: true + '@esbuild/android-arm64@0.21.5': + optional: true - /postcss-svgo@4.0.3: - resolution: {integrity: sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==} - engines: {node: '>=6.9.0'} - dependencies: - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - svgo: 1.3.2 - dev: true + '@esbuild/android-arm@0.21.5': + optional: true - /postcss-unique-selectors@4.0.1: - resolution: {integrity: sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==} - engines: {node: '>=6.9.0'} - dependencies: - alphanum-sort: 1.0.2 - postcss: 7.0.39 - uniqs: 2.0.0 - dev: true + '@esbuild/android-x64@0.21.5': + optional: true - /postcss-value-parser@3.3.1: - resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} - dev: true + '@esbuild/darwin-arm64@0.21.5': + optional: true - /postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - dev: true + '@esbuild/darwin-x64@0.21.5': + optional: true - /postcss@7.0.39: - resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} - engines: {node: '>=6.0.0'} - dependencies: - picocolors: 0.2.1 - source-map: 0.6.1 - dev: true + '@esbuild/freebsd-arm64@0.21.5': + optional: true - /postcss@8.4.16: - resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.4 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true + '@esbuild/freebsd-x64@0.21.5': + optional: true - /prepend-http@2.0.0: - resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} - engines: {node: '>=4'} - dev: true + '@esbuild/linux-arm64@0.21.5': + optional: true - /prettier@2.7.1: - resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} - engines: {node: '>=10.13.0'} - hasBin: true - requiresBuild: true - dev: true + '@esbuild/linux-arm@0.21.5': optional: true - /pretty-error@2.1.2: - resolution: {integrity: sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==} - dependencies: - lodash: 4.17.21 - renderkid: 2.0.7 - dev: true + '@esbuild/linux-ia32@0.21.5': + optional: true - /pretty-time@1.1.0: - resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} - engines: {node: '>=4'} - dev: true + '@esbuild/linux-loong64@0.21.5': + optional: true - /prismjs@1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} - engines: {node: '>=6'} - dev: true + '@esbuild/linux-mips64el@0.21.5': + optional: true - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: true + '@esbuild/linux-ppc64@0.21.5': + optional: true - /process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - dev: true + '@esbuild/linux-riscv64@0.21.5': + optional: true - /promise-inflight@1.0.1(bluebird@3.7.2): - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - dependencies: - bluebird: 3.7.2 - dev: true + '@esbuild/linux-s390x@0.21.5': + optional: true - /proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - dev: true + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: false + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true - /prr@1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - dev: true + '@esbuild/win32-arm64@0.21.5': + optional: true - /pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - dev: true + '@esbuild/win32-ia32@0.21.5': + optional: true - /psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - dev: true + '@esbuild/win32-x64@0.21.5': + optional: true - /public-encrypt@4.0.3: - resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + '@iconify-json/simple-icons@1.2.96': dependencies: - bn.js: 4.12.0 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - parse-asn1: 5.1.6 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - dev: true + '@iconify/types': 2.0.0 - /pump@2.0.1: - resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + '@iconify/types@2.0.0': {} + + '@iconify/utils@3.1.7': dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: true + '@antfu/install-pkg': 2.1.0 + '@iconify/types': 2.0.0 + import-meta-resolve: 4.2.0 + + '@jridgewell/sourcemap-codec@1.6.0': {} - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + '@mermaid-js/mermaid-mindmap@9.3.0': dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: true + '@braintree/sanitize-url': 6.0.4 + cytoscape: 3.34.3 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.34.3) + cytoscape-fcose: 2.2.0(cytoscape@3.34.3) + d3: 7.9.0 + khroma: 2.1.0 + non-layered-tidy-tree-layout: 2.0.2 + optional: true - /pumpify@1.5.1: - resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + '@mermaid-js/parser@1.2.1': dependencies: - duplexify: 3.7.1 - inherits: 2.0.4 - pump: 2.0.1 - dev: true + '@chevrotain/types': 11.1.2 - /punycode@1.3.2: - resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} - dev: true + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + optional: true - /punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - dev: true + '@rollup/rollup-android-arm-eabi@4.63.3': + optional: true - /punycode@2.1.1: - resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} - engines: {node: '>=6'} - dev: true + '@rollup/rollup-android-arm64@4.63.3': + optional: true - /pupa@2.1.1: - resolution: {integrity: sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==} - engines: {node: '>=8'} - dependencies: - escape-goat: 2.1.1 - dev: true + '@rollup/rollup-darwin-arm64@4.63.3': + optional: true - /q@1.5.1: - resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} - engines: {node: '>=0.6.0', teleport: '>=0.2.0'} - dev: true + '@rollup/rollup-darwin-x64@4.63.3': + optional: true - /qs@6.10.3: - resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==} - engines: {node: '>=0.6'} - dependencies: - side-channel: 1.0.4 - dev: true + '@rollup/rollup-freebsd-arm64@4.63.3': + optional: true - /qs@6.5.3: - resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} - engines: {node: '>=0.6'} - dev: true + '@rollup/rollup-freebsd-x64@4.63.3': + optional: true - /query-string@5.1.1: - resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} - engines: {node: '>=0.10.0'} - dependencies: - decode-uri-component: 0.2.0 - object-assign: 4.1.1 - strict-uri-encode: 1.1.0 - dev: true + '@rollup/rollup-linux-arm-gnueabihf@4.63.3': + optional: true - /querystring-es3@0.2.1: - resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} - engines: {node: '>=0.4.x'} - dev: true + '@rollup/rollup-linux-arm-musleabihf@4.63.3': + optional: true - /querystring@0.2.0: - resolution: {integrity: sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - dev: true + '@rollup/rollup-linux-arm64-gnu@4.63.3': + optional: true - /querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - dev: true + '@rollup/rollup-linux-arm64-musl@4.63.3': + optional: true - /randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - dependencies: - safe-buffer: 5.2.1 - dev: true + '@rollup/rollup-linux-loong64-gnu@4.63.3': + optional: true - /randomfill@1.0.4: - resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} - dependencies: - randombytes: 2.1.0 - safe-buffer: 5.2.1 - dev: true + '@rollup/rollup-linux-loong64-musl@4.63.3': + optional: true - /range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - dev: true + '@rollup/rollup-linux-ppc64-gnu@4.63.3': + optional: true - /raw-body@2.5.1: - resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} - engines: {node: '>= 0.8'} - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - dev: true + '@rollup/rollup-linux-ppc64-musl@4.63.3': + optional: true - /rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.6 - strip-json-comments: 2.0.1 - dev: true - - /readable-stream@2.3.7: - resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: true - - /readable-stream@3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: true + '@rollup/rollup-linux-riscv64-gnu@4.63.3': + optional: true - /readdirp@2.2.1(supports-color@6.1.0): - resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} - engines: {node: '>=0.10'} - dependencies: - graceful-fs: 4.2.10 - micromatch: 3.1.10(supports-color@6.1.0) - readable-stream: 2.3.7 - transitivePeerDependencies: - - supports-color - dev: true + '@rollup/rollup-linux-riscv64-musl@4.63.3': + optional: true - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - requiresBuild: true - dependencies: - picomatch: 2.3.1 - dev: true + '@rollup/rollup-linux-s390x-gnu@4.63.3': optional: true - /reduce@1.0.2: - resolution: {integrity: sha512-xX7Fxke/oHO5IfZSk77lvPa/7bjMh9BuCk4OOoX5XTXrM7s0Z+MkPfSDfz0q7r91BhhGSs8gii/VEN/7zhCPpQ==} - dependencies: - object-keys: 1.1.1 - dev: true + '@rollup/rollup-linux-x64-gnu@4.63.3': + optional: true - /regenerate-unicode-properties@10.0.1: - resolution: {integrity: sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - dev: true + '@rollup/rollup-linux-x64-musl@4.63.3': + optional: true - /regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - dev: true + '@rollup/rollup-openbsd-x64@4.63.3': + optional: true - /regenerator-runtime@0.13.9: - resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} - dev: true + '@rollup/rollup-openharmony-arm64@4.63.3': + optional: true - /regenerator-transform@0.15.0: - resolution: {integrity: sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==} - dependencies: - '@babel/runtime': 7.19.0 - dev: true + '@rollup/rollup-win32-arm64-msvc@4.63.3': + optional: true - /regex-not@1.0.2: - resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} - engines: {node: '>=0.10.0'} + '@rollup/rollup-win32-ia32-msvc@4.63.3': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.63.3': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.63.3': + optional: true + + '@shikijs/core@2.5.0': dependencies: - extend-shallow: 3.0.2 - safe-regex: 1.1.0 + '@shikijs/engine-javascript': 2.5.0 + '@shikijs/engine-oniguruma': 2.5.0 + '@shikijs/types': 2.5.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 + hast-util-to-html: 9.0.5 - /regexp.prototype.flags@1.4.3: - resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} - engines: {node: '>= 0.4'} + '@shikijs/engine-javascript@2.5.0': dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - functions-have-names: 1.2.3 - dev: true - - /regexpu-core@5.1.0: - resolution: {integrity: sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 10.0.1 - regjsgen: 0.6.0 - regjsparser: 0.8.4 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.0.0 - dev: true - - /registry-auth-token@4.2.2: - resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} - engines: {node: '>=6.0.0'} + '@shikijs/types': 2.5.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 3.1.1 + + '@shikijs/engine-oniguruma@2.5.0': dependencies: - rc: 1.2.8 - dev: true + '@shikijs/types': 2.5.0 + '@shikijs/vscode-textmate': 10.0.2 - /registry-url@5.1.0: - resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} - engines: {node: '>=8'} + '@shikijs/langs@2.5.0': dependencies: - rc: 1.2.8 - dev: true + '@shikijs/types': 2.5.0 - /regjsgen@0.6.0: - resolution: {integrity: sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==} - dev: true + '@shikijs/themes@2.5.0': + dependencies: + '@shikijs/types': 2.5.0 - /regjsparser@0.8.4: - resolution: {integrity: sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==} - hasBin: true + '@shikijs/transformers@2.5.0': dependencies: - jsesc: 0.5.0 - dev: true + '@shikijs/core': 2.5.0 + '@shikijs/types': 2.5.0 - /relateurl@0.2.7: - resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} - engines: {node: '>= 0.10'} - dev: true + '@shikijs/types@2.5.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 - /remedial@1.0.8: - resolution: {integrity: sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==} - dev: true + '@shikijs/vscode-textmate@10.0.2': {} - /remove-trailing-separator@1.1.0: - resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} - dev: true + '@types/d3-array@3.2.2': {} - /renderkid@2.0.7: - resolution: {integrity: sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==} + '@types/d3-axis@3.0.6': dependencies: - css-select: 4.3.0 - dom-converter: 0.2.0 - htmlparser2: 6.1.0 - lodash: 4.17.21 - strip-ansi: 3.0.1 - dev: true - - /repeat-element@1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} + '@types/d3-selection': 3.0.12 - /repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - - /request@2.88.2: - resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} - engines: {node: '>= 6'} - deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + '@types/d3-brush@3.0.6': dependencies: - aws-sign2: 0.7.0 - aws4: 1.11.0 - caseless: 0.12.0 - combined-stream: 1.0.8 - extend: 3.0.2 - forever-agent: 0.6.1 - form-data: 2.3.3 - har-validator: 5.1.5 - http-signature: 1.2.0 - is-typedarray: 1.0.0 - isstream: 0.1.2 - json-stringify-safe: 5.0.1 - mime-types: 2.1.35 - oauth-sign: 0.9.0 - performance-now: 2.1.0 - qs: 6.5.3 - safe-buffer: 5.2.1 - tough-cookie: 2.5.0 - tunnel-agent: 0.6.0 - uuid: 3.4.0 - dev: true - - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: true + '@types/d3-selection': 3.0.12 - /require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: true + '@types/d3-chord@3.0.6': {} - /requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - dev: true + '@types/d3-color@3.1.3': {} - /resolve-cwd@2.0.0: - resolution: {integrity: sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==} - engines: {node: '>=4'} + '@types/d3-contour@3.0.6': dependencies: - resolve-from: 3.0.0 - dev: true + '@types/d3-array': 3.2.2 + '@types/geojson': 7946.0.16 - /resolve-from@3.0.0: - resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} - engines: {node: '>=4'} - dev: true + '@types/d3-delaunay@6.0.4': {} - /resolve-url@0.2.1: - resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} - deprecated: https://github.com/lydell/resolve-url#deprecated + '@types/d3-dispatch@3.0.7': {} - /resolve@1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} - hasBin: true + '@types/d3-drag@3.0.7': dependencies: - is-core-module: 2.10.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true + '@types/d3-selection': 3.0.12 - /responselike@1.0.2: - resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} - dependencies: - lowercase-keys: 1.0.1 - dev: true + '@types/d3-dsv@3.0.7': {} - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} + '@types/d3-ease@3.0.2': {} + + '@types/d3-fetch@3.0.7': dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: true + '@types/d3-dsv': 3.0.7 - /ret@0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} + '@types/d3-force@3.0.10': {} - /retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - dev: true + '@types/d3-format@3.0.4': {} - /rgb-regex@1.0.1: - resolution: {integrity: sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==} - dev: true + '@types/d3-geo@3.1.1': + dependencies: + '@types/geojson': 7946.0.16 - /rgba-regex@1.0.0: - resolution: {integrity: sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==} - dev: true + '@types/d3-hierarchy@3.1.7': {} - /rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true + '@types/d3-interpolate@3.0.4': dependencies: - glob: 7.2.3 - dev: true + '@types/d3-color': 3.1.3 - /ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - dev: true + '@types/d3-path@3.1.1': {} - /robust-predicates@3.0.1: - resolution: {integrity: sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==} - dev: false + '@types/d3-polygon@3.0.2': {} - /run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - dev: true + '@types/d3-quadtree@3.0.6': {} - /run-queue@1.0.3: - resolution: {integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==} - dependencies: - aproba: 1.2.0 - dev: true + '@types/d3-random@3.0.4': {} - /rw@1.3.3: - resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} - dev: false + '@types/d3-scale-chromatic@3.1.0': {} - /rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} + '@types/d3-scale@4.0.9': dependencies: - tslib: 1.14.1 - dev: true - - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true + '@types/d3-time': 3.0.4 - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true + '@types/d3-selection@3.0.12': {} - /safe-regex@1.1.0: - resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + '@types/d3-shape@3.2.0': dependencies: - ret: 0.1.15 + '@types/d3-path': 3.1.1 - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + '@types/d3-time-format@4.0.3': {} + + '@types/d3-time@3.0.4': {} - /sax@1.2.4: - resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} - dev: true + '@types/d3-timer@3.0.2': {} - /schema-utils@1.0.0: - resolution: {integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==} - engines: {node: '>= 4'} + '@types/d3-transition@3.0.9': dependencies: - ajv: 6.12.6 - ajv-errors: 1.0.1(ajv@6.12.6) - ajv-keywords: 3.5.2(ajv@6.12.6) - dev: true + '@types/d3-selection': 3.0.12 - /schema-utils@2.7.1: - resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} - engines: {node: '>= 8.9.0'} + '@types/d3-zoom@3.0.8': dependencies: - '@types/json-schema': 7.0.11 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - dev: true + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.12 - /section-matter@1.0.0: - resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} - engines: {node: '>=4'} + '@types/d3@7.4.3': dependencies: - extend-shallow: 2.0.1 - kind-of: 6.0.3 + '@types/d3-array': 3.2.2 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.3 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.7 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.10 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.1 + '@types/d3-hierarchy': 3.1.7 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.1.1 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.4 + '@types/d3-scale': 4.0.9 + '@types/d3-scale-chromatic': 3.1.0 + '@types/d3-selection': 3.0.12 + '@types/d3-shape': 3.2.0 + '@types/d3-time': 3.0.4 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.8 - /select-hose@2.0.0: - resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} - dev: true + '@types/estree@1.0.9': {} - /select@1.1.2: - resolution: {integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==} - dev: false + '@types/geojson@7946.0.16': {} - /selfsigned@1.10.14: - resolution: {integrity: sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==} + '@types/hast@3.0.5': dependencies: - node-forge: 0.10.0 - dev: true + '@types/unist': 3.0.3 - /semver-diff@3.1.1: - resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} - engines: {node: '>=8'} + '@types/linkify-it@5.0.0': {} + + '@types/markdown-it@14.2.0': dependencies: - semver: 6.3.0 - dev: true + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 - /semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} - hasBin: true - dev: true + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 - /semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true + '@types/mdurl@2.0.0': {} - /send@0.18.0(supports-color@6.1.0): - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} - dependencies: - debug: 2.6.9(supports-color@6.1.0) - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - dev: true + '@types/trusted-types@2.0.7': + optional: true - /serialize-javascript@4.0.0: - resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} - dependencies: - randombytes: 2.1.0 - dev: true + '@types/unist@3.0.3': {} - /serialize-javascript@6.0.0: - resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} - dependencies: - randombytes: 2.1.0 - dev: true + '@types/web-bluetooth@0.0.21': {} - /serve-index@1.9.1(supports-color@6.1.0): - resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} - engines: {node: '>= 0.8.0'} - dependencies: - accepts: 1.3.8 - batch: 0.6.1 - debug: 2.6.9(supports-color@6.1.0) - escape-html: 1.0.3 - http-errors: 1.6.3 - mime-types: 2.1.35 - parseurl: 1.3.3 - transitivePeerDependencies: - - supports-color - dev: true + '@ungap/structured-clone@1.4.0': {} - /serve-static@1.15.0(supports-color@6.1.0): - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} - dependencies: - encodeurl: 1.0.2 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.18.0(supports-color@6.1.0) - transitivePeerDependencies: - - supports-color - dev: true + '@upsetjs/venn.js@2.0.0': + optionalDependencies: + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: true + '@vitejs/plugin-vue@5.2.4(vite@5.4.21)(vue@3.5.43)': + dependencies: + vite: 5.4.21 + vue: 3.5.43 - /set-value@2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} + '@vue/compiler-core@3.5.43': dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 + '@babel/parser': 7.29.8 + '@vue/shared': 3.5.43 + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.1 - /setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - dev: true + '@vue/compiler-dom@3.5.43': + dependencies: + '@vue/compiler-core': 3.5.43 + '@vue/shared': 3.5.43 - /setprototypeof@1.1.0: - resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} - dev: true + '@vue/compiler-sfc@3.5.43': + dependencies: + '@babel/parser': 7.29.8 + '@vue/compiler-core': 3.5.43 + '@vue/compiler-dom': 3.5.43 + '@vue/compiler-ssr': 3.5.43 + '@vue/shared': 3.5.43 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.28 + source-map-js: 1.2.1 - /setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - dev: true + '@vue/compiler-ssr@3.5.43': + dependencies: + '@vue/compiler-dom': 3.5.43 + '@vue/shared': 3.5.43 - /sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true + '@vue/devtools-api@7.7.10': dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true + '@vue/devtools-kit': 7.7.10 - /shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} + '@vue/devtools-kit@7.7.10': dependencies: - shebang-regex: 1.0.0 - dev: true + '@vue/devtools-shared': 7.7.10 + birpc: 2.9.0 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.6 - /shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - dev: true + '@vue/devtools-shared@7.7.10': + dependencies: + rfdc: 1.4.1 - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + '@vue/reactivity@3.5.43': dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.2 - object-inspect: 1.12.2 - dev: true + '@vue/shared': 3.5.43 - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true + '@vue/runtime-core@3.5.43': + dependencies: + '@vue/reactivity': 3.5.43 + '@vue/shared': 3.5.43 - /simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + '@vue/runtime-dom@3.5.43': dependencies: - is-arrayish: 0.3.2 - dev: true + '@vue/reactivity': 3.5.43 + '@vue/runtime-core': 3.5.43 + '@vue/shared': 3.5.43 + csstype: 3.2.3 - /slash@1.0.0: - resolution: {integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==} - engines: {node: '>=0.10.0'} - dev: true + '@vue/server-renderer@3.5.43': + dependencies: + '@vue/compiler-ssr': 3.5.43 + '@vue/runtime-dom': 3.5.43 + '@vue/shared': 3.5.43 - /slash@2.0.0: - resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} - engines: {node: '>=6'} + '@vue/shared@3.5.43': {} - /smoothscroll-polyfill@0.4.4: - resolution: {integrity: sha512-TK5ZA9U5RqCwMpfoMq/l1mrH0JAR7y7KRvOBx0n2869aLxch+gT9GhN3yUfjiw+d/DiF1mKo14+hd62JyMmoBg==} - dev: true + '@vueuse/core@12.8.2': + dependencies: + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 12.8.2 + '@vueuse/shared': 12.8.2 + vue: 3.5.43 + transitivePeerDependencies: + - typescript - /snapdragon-node@2.1.1: - resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} - engines: {node: '>=0.10.0'} + '@vueuse/integrations@12.8.2(axios@1.20.0)(focus-trap@7.8.0)': dependencies: - define-property: 1.0.0 - isobject: 3.0.1 - snapdragon-util: 3.0.1 + '@vueuse/core': 12.8.2 + '@vueuse/shared': 12.8.2 + vue: 3.5.43 + optionalDependencies: + axios: 1.20.0 + focus-trap: 7.8.0 + transitivePeerDependencies: + - typescript - /snapdragon-util@3.0.1: - resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} - engines: {node: '>=0.10.0'} + '@vueuse/metadata@12.8.2': {} + + '@vueuse/shared@12.8.2': dependencies: - kind-of: 3.2.2 + vue: 3.5.43 + transitivePeerDependencies: + - typescript - /snapdragon@0.8.2(supports-color@6.1.0): - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} + agent-base@6.0.2: dependencies: - base: 0.11.2 - debug: 2.6.9(supports-color@6.1.0) - define-property: 0.2.5 - extend-shallow: 2.0.1 - map-cache: 0.2.2 - source-map: 0.5.7 - source-map-resolve: 0.5.3 - use: 3.1.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color - /sockjs-client@1.6.1(supports-color@6.1.0): - resolution: {integrity: sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==} - engines: {node: '>=12'} + algoliasearch@5.59.0: + dependencies: + '@algolia/abtesting': 1.25.0 + '@algolia/client-abtesting': 5.59.0 + '@algolia/client-analytics': 5.59.0 + '@algolia/client-common': 5.59.0 + '@algolia/client-insights': 5.59.0 + '@algolia/client-personalization': 5.59.0 + '@algolia/client-query-suggestions': 5.59.0 + '@algolia/client-search': 5.59.0 + '@algolia/ingestion': 1.59.0 + '@algolia/monitoring': 1.59.0 + '@algolia/recommend': 5.59.0 + '@algolia/requester-browser-xhr': 5.59.0 + '@algolia/requester-fetch': 5.59.0 + '@algolia/requester-node-http': 5.59.0 + + asynckit@0.4.0: {} + + axios@1.20.0: dependencies: - debug: 3.2.7(supports-color@6.1.0) - eventsource: 2.0.2 - faye-websocket: 0.11.4 - inherits: 2.0.4 - url-parse: 1.5.10 + follow-redirects: 1.16.0 + form-data: 4.0.6 + https-proxy-agent: 5.0.1 + proxy-from-env: 2.1.0 transitivePeerDependencies: + - debug - supports-color - dev: true - /sockjs@0.3.24: - resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} - dependencies: - faye-websocket: 0.11.4 - uuid: 8.3.2 - websocket-driver: 0.7.4 - dev: true + birpc@2.9.0: {} - /sort-keys@2.0.0: - resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} - engines: {node: '>=4'} + call-bind-apply-helpers@1.0.2: dependencies: - is-plain-obj: 1.1.0 - dev: true + es-errors: 1.3.0 + function-bind: 1.1.2 - /source-list-map@2.0.1: - resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} - dev: true + ccount@2.0.1: {} - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - dev: true + character-entities-html4@2.1.0: {} - /source-map-resolve@0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.0 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 + character-entities-legacy@3.0.0: {} - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + combined-stream@1.0.8: dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true + delayed-stream: 1.0.0 - /source-map-url@0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - deprecated: See https://github.com/lydell/source-map-url#deprecated + comma-separated-tokens@2.0.3: {} - /source-map@0.5.6: - resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} - engines: {node: '>=0.10.0'} - dev: true + commander@7.2.0: {} - /source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} + commander@8.3.0: {} - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: true - - /source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - dev: true - - /spdy-transport@3.0.0(supports-color@6.1.0): - resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} - dependencies: - debug: 4.3.4(supports-color@6.1.0) - detect-node: 2.1.0 - hpack.js: 2.1.6 - obuf: 1.1.2 - readable-stream: 3.6.0 - wbuf: 1.7.3 - transitivePeerDependencies: - - supports-color - dev: true + copy-anything@4.1.0: {} - /spdy@4.0.2(supports-color@6.1.0): - resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} - engines: {node: '>=6.0.0'} + cose-base@1.0.3: dependencies: - debug: 4.3.4(supports-color@6.1.0) - handle-thing: 2.0.1 - http-deceiver: 1.2.7 - select-hose: 2.0.0 - spdy-transport: 3.0.0(supports-color@6.1.0) - transitivePeerDependencies: - - supports-color - dev: true + layout-base: 1.0.2 - /split-string@3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} + cose-base@2.2.0: dependencies: - extend-shallow: 3.0.2 + layout-base: 2.0.1 - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + csstype@3.2.3: {} - /sshpk@1.17.0: - resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} - engines: {node: '>=0.10.0'} - hasBin: true + cytoscape-cose-bilkent@4.1.0(cytoscape@3.34.3): dependencies: - asn1: 0.2.6 - assert-plus: 1.0.0 - bcrypt-pbkdf: 1.0.2 - dashdash: 1.14.1 - ecc-jsbn: 0.1.2 - getpass: 0.1.7 - jsbn: 0.1.1 - safer-buffer: 2.1.2 - tweetnacl: 0.14.5 - dev: true + cose-base: 1.0.3 + cytoscape: 3.34.3 - /ssri@6.0.2: - resolution: {integrity: sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==} + cytoscape-fcose@2.2.0(cytoscape@3.34.3): dependencies: - figgy-pudding: 3.5.2 - dev: true + cose-base: 2.2.0 + cytoscape: 3.34.3 - /stable@0.1.8: - resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - dev: true + cytoscape@3.34.3: {} - /stack-utils@1.0.5: - resolution: {integrity: sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==} - engines: {node: '>=8'} + d3-array@2.12.1: dependencies: - escape-string-regexp: 2.0.0 - dev: true + internmap: 1.0.1 - /static-extend@0.1.2: - resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} - engines: {node: '>=0.10.0'} + d3-array@3.2.4: dependencies: - define-property: 0.2.5 - object-copy: 0.1.0 - - /statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - dev: true + internmap: 2.0.3 - /statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - dev: true + d3-axis@3.0.0: {} - /std-env@2.3.1: - resolution: {integrity: sha512-eOsoKTWnr6C8aWrqJJ2KAReXoa7Vn5Ywyw6uCXgA/xDhxPoaIsBa5aNJmISY04dLwXPBnDHW4diGM7Sn5K4R/g==} + d3-brush@3.0.0: dependencies: - ci-info: 3.3.2 - dev: true + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) - /stream-browserify@2.0.2: - resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==} + d3-chord@3.0.1: dependencies: - inherits: 2.0.4 - readable-stream: 2.3.7 - dev: true + d3-path: 3.1.0 - /stream-each@1.2.3: - resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==} - dependencies: - end-of-stream: 1.4.4 - stream-shift: 1.0.1 - dev: true + d3-color@3.1.0: {} - /stream-http@2.8.3: - resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==} + d3-contour@4.0.2: dependencies: - builtin-status-codes: 3.0.0 - inherits: 2.0.4 - readable-stream: 2.3.7 - to-arraybuffer: 1.0.1 - xtend: 4.0.2 - dev: true + d3-array: 3.2.4 - /stream-shift@1.0.1: - resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} - dev: true + d3-delaunay@6.0.4: + dependencies: + delaunator: 5.1.0 - /strict-uri-encode@1.1.0: - resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} - engines: {node: '>=0.10.0'} - dev: true + d3-dispatch@3.0.1: {} - /string-width@3.1.0: - resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} - engines: {node: '>=6'} + d3-drag@3.0.0: dependencies: - emoji-regex: 7.0.3 - is-fullwidth-code-point: 2.0.0 - strip-ansi: 5.2.0 - dev: true + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + d3-dsv@3.0.1: dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: true + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 - /string.prototype.trimend@1.0.5: - resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.2 - dev: true + d3-ease@3.0.1: {} - /string.prototype.trimstart@1.0.5: - resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} + d3-fetch@3.0.1: dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.2 - dev: true + d3-dsv: 3.0.1 - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + d3-force@3.0.0: dependencies: - safe-buffer: 5.1.2 - dev: true + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - dev: true + d3-format@3.1.2: {} - /strip-ansi@3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} + d3-geo@3.1.1: dependencies: - ansi-regex: 2.1.1 - dev: true + d3-array: 3.2.4 - /strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} - dependencies: - ansi-regex: 4.1.1 - dev: true + d3-hierarchy@3.1.2: {} - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + d3-interpolate@3.0.1: dependencies: - ansi-regex: 5.0.1 - dev: true + d3-color: 3.1.0 - /strip-bom-string@1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} + d3-path@1.0.9: {} - /strip-eof@1.0.0: - resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} - engines: {node: '>=0.10.0'} - dev: true + d3-path@3.1.0: {} - /strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - dev: true + d3-polygon@3.0.1: {} - /stylehacks@4.0.3: - resolution: {integrity: sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==} - engines: {node: '>=6.9.0'} - dependencies: - browserslist: 4.21.3 - postcss: 7.0.39 - postcss-selector-parser: 3.1.2 - dev: true + d3-quadtree@3.0.1: {} - /stylis@4.1.1: - resolution: {integrity: sha512-lVrM/bNdhVX2OgBFNa2YJ9Lxj7kPzylieHd3TNjuGE0Re9JB7joL5VUKOVH1kdNNJTgGPpT8hmwIAPLaSyEVFQ==} - dev: false + d3-random@3.0.1: {} - /stylus-loader@3.0.2(stylus@0.54.8): - resolution: {integrity: sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==} - peerDependencies: - stylus: '>=0.52.4' + d3-sankey@0.12.3: dependencies: - loader-utils: 1.4.0 - lodash.clonedeep: 4.5.0 - stylus: 0.54.8 - when: 3.6.4 - dev: true + d3-array: 2.12.1 + d3-shape: 1.3.7 - /stylus@0.54.8: - resolution: {integrity: sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==} - hasBin: true + d3-scale-chromatic@3.1.0: dependencies: - css-parse: 2.0.0 - debug: 3.1.0 - glob: 7.2.3 - mkdirp: 1.0.4 - safer-buffer: 2.1.2 - sax: 1.2.4 - semver: 6.3.0 - source-map: 0.7.4 - transitivePeerDependencies: - - supports-color - dev: true + d3-color: 3.1.0 + d3-interpolate: 3.0.1 - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + d3-scale@4.0.2: dependencies: - has-flag: 3.0.0 + d3-array: 3.2.4 + d3-format: 3.1.2 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 - /supports-color@6.1.0: - resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==} - engines: {node: '>=6'} - dependencies: - has-flag: 3.0.0 + d3-selection@3.0.0: {} - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + d3-shape@1.3.7: dependencies: - has-flag: 4.0.0 - dev: true + d3-path: 1.0.9 - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: true + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 - /svg-tags@1.0.0: - resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} - dev: true + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 - /svgo@1.3.2: - resolution: {integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==} - engines: {node: '>=4.0.0'} - deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x. - hasBin: true + d3-time@3.1.0: dependencies: - chalk: 2.4.2 - coa: 2.0.2 - css-select: 2.1.0 - css-select-base-adapter: 0.1.1 - css-tree: 1.0.0-alpha.37 - csso: 4.2.0 - js-yaml: 3.14.1 - mkdirp: 0.5.6 - object.values: 1.1.5 - sax: 1.2.4 - stable: 0.1.8 - unquote: 1.1.1 - util.promisify: 1.0.1 - dev: true - - /tapable@1.1.3: - resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} - engines: {node: '>=6'} - dev: true + d3-array: 3.2.4 - /term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - dev: true + d3-timer@3.0.1: {} - /terser-webpack-plugin@1.4.5(webpack@4.46.0): - resolution: {integrity: sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==} - engines: {node: '>= 6.9.0'} - peerDependencies: - webpack: ^4.0.0 - dependencies: - cacache: 12.0.4 - find-cache-dir: 2.1.0 - is-wsl: 1.1.0 - schema-utils: 1.0.0 - serialize-javascript: 4.0.0 - source-map: 0.6.1 - terser: 4.8.1 - webpack: 4.46.0 - webpack-sources: 1.4.3 - worker-farm: 1.7.0 - dev: true - - /terser@4.8.1: - resolution: {integrity: sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==} - engines: {node: '>=6.0.0'} - hasBin: true + d3-transition@3.0.1(d3-selection@3.0.0): dependencies: - acorn: 8.12.0 - commander: 2.20.3 - source-map: 0.6.1 - source-map-support: 0.5.21 - dev: true + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true + d3@7.9.0: + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.2 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 - /through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + dagre-d3-es@7.0.14: dependencies: - readable-stream: 2.3.7 - xtend: 4.0.2 - dev: true + d3: 7.9.0 + lodash-es: 4.18.1 - /through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: true + dayjs@1.11.23: {} - /thunky@1.1.0: - resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - dev: true + debug@4.4.3: + dependencies: + ms: 2.1.3 - /timers-browserify@2.0.12: - resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} - engines: {node: '>=0.6.0'} + delaunator@5.1.0: dependencies: - setimmediate: 1.0.5 - dev: true + robust-predicates: 3.0.3 - /timsort@0.3.0: - resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} - dev: true + delayed-stream@1.0.0: {} - /tiny-emitter@2.1.0: - resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==} - dev: false + dequal@2.0.3: {} - /tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} + devlop@1.1.0: dependencies: - os-tmpdir: 1.0.2 - dev: true + dequal: 2.0.3 - /to-arraybuffer@1.0.1: - resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==} - dev: true + dompurify@3.4.15: + optionalDependencies: + '@types/trusted-types': 2.0.7 - /to-factory@1.0.0: - resolution: {integrity: sha512-JVYrY42wMG7ddf+wBUQR/uHGbjUHZbLisJ8N62AMm0iTZ0p8YTcZLzdtomU0+H+wa99VbkyvQGB3zxB7NDzgIQ==} - dev: true + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: true + emoji-regex-xs@1.0.0: {} - /to-object-path@0.3.0: - resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 + entities@7.0.1: {} - /to-readable-stream@1.0.0: - resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} - engines: {node: '>=6'} - dev: true + es-define-property@1.0.1: {} - /to-regex-range@2.1.1: - resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - repeat-string: 1.6.1 + es-errors@1.3.0: {} - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + es-object-atoms@1.1.2: dependencies: - is-number: 7.0.0 - dev: true + es-errors: 1.3.0 - /to-regex@3.0.2: - resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} - engines: {node: '>=0.10.0'} + es-set-tostringtag@2.1.0: dependencies: - define-property: 2.0.2 - extend-shallow: 3.0.2 - regex-not: 1.0.2 - safe-regex: 1.1.0 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.4 + + es-toolkit@1.52.0: {} - /toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - dev: true + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + estree-walker@2.0.2: {} + + fastdom@1.0.12: + dependencies: + strictdom: 1.0.1 + + focus-trap@7.8.0: + dependencies: + tabbable: 6.5.0 + + follow-redirects@1.16.0: {} + + form-data@4.0.6: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.4 + mime-types: 2.1.35 - /toml@3.0.0: - resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} + fsevents@2.3.3: + optional: true - /toposort@1.0.7: - resolution: {integrity: sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==} - dev: true + function-bind@1.1.2: {} - /tough-cookie@2.5.0: - resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} - engines: {node: '>=0.8'} + get-intrinsic@1.3.0: dependencies: - psl: 1.9.0 - punycode: 2.1.1 - dev: true + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.4 + math-intrinsics: 1.1.0 - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.2 - /tty-browserify@0.0.0: - resolution: {integrity: sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=} - dev: true + gopd@1.2.0: {} - /tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - dependencies: - safe-buffer: 5.2.1 - dev: true + hachure-fill@0.5.2: {} - /tweetnacl@0.14.5: - resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - dev: true + has-symbols@1.1.0: {} - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - dev: true + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 - /type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - dev: true + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 - /type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} + hast-util-to-html@9.0.5: dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - dev: true + '@types/hast': 3.0.5 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 - /typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + hast-util-whitespace@3.0.0: dependencies: - is-typedarray: 1.0.0 - dev: true + '@types/hast': 3.0.5 - /typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - dev: true + hookable@5.5.3: {} - /uc.micro@1.0.6: - resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - dev: true + html-void-elements@3.0.0: {} - /uglify-js@3.4.10: - resolution: {integrity: sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==} - engines: {node: '>=0.8.0'} - hasBin: true + https-proxy-agent@5.0.1: dependencies: - commander: 2.19.0 - source-map: 0.6.1 - dev: true + agent-base: 6.0.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + iconv-lite@0.6.3: dependencies: - call-bind: 1.0.2 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - dev: true - - /unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} - dev: true + safer-buffer: 2.1.2 - /unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.0 - unicode-property-aliases-ecmascript: 2.0.0 - dev: true + import-meta-resolve@4.2.0: {} - /unicode-match-property-value-ecmascript@2.0.0: - resolution: {integrity: sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==} - engines: {node: '>=4'} - dev: true + internmap@1.0.1: {} - /unicode-property-aliases-ecmascript@2.0.0: - resolution: {integrity: sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==} - engines: {node: '>=4'} - dev: true + internmap@2.0.3: {} - /union-value@1.0.1: - resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} - engines: {node: '>=0.10.0'} + katex@0.16.47: dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 2.0.1 + commander: 8.3.0 - /uniq@1.0.1: - resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==} - dev: true + khroma@2.1.0: {} - /uniqs@2.0.0: - resolution: {integrity: sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==} - dev: true + layout-base@1.0.2: {} - /unique-filename@1.1.1: - resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} - dependencies: - unique-slug: 2.0.2 - dev: true + layout-base@2.0.1: {} - /unique-slug@2.0.2: - resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} - dependencies: - imurmurhash: 0.1.4 - dev: true + lodash-es@4.18.1: {} - /unique-string@2.0.0: - resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} - engines: {node: '>=8'} + magic-string@0.30.21: dependencies: - crypto-random-string: 2.0.0 - dev: true + '@jridgewell/sourcemap-codec': 1.6.0 - /universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} + mark.js@8.11.1: {} - /unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - dev: true + markdown-it-container@4.0.0: {} - /unquote@1.1.1: - resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} - dev: true + markdown-it-footnote@4.0.0: {} - /unset-value@1.0.0: - resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} - engines: {node: '>=0.10.0'} - dependencies: - has-value: 0.3.1 - isobject: 3.0.1 + markdown-it-task-lists@2.1.1: {} - /upath@1.2.0: - resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} - engines: {node: '>=4'} + marked@16.4.2: {} - /update-browserslist-db@1.0.7(browserslist@4.21.3): - resolution: {integrity: sha512-iN/XYesmZ2RmmWAiI4Z5rq0YqSiv0brj9Ce9CfhNE4xIW2h+MFxcgkxIzZ+ShkFPUkjU3gQ+3oypadD3RAMtrg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.3 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - - /update-notifier@4.1.3: - resolution: {integrity: sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==} - engines: {node: '>=8'} - dependencies: - boxen: 4.2.0 - chalk: 3.0.0 - configstore: 5.0.1 - has-yarn: 2.1.0 - import-lazy: 2.1.0 - is-ci: 2.0.0 - is-installed-globally: 0.3.2 - is-npm: 4.0.0 - is-yarn-global: 0.3.0 - latest-version: 5.1.0 - pupa: 2.1.1 - semver-diff: 3.1.1 - xdg-basedir: 4.0.0 - dev: true - - /upper-case@1.1.3: - resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} - dev: true - - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.1.1 - dev: true - - /urix@0.1.0: - resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} - deprecated: Please see https://github.com/lydell/urix#deprecated - - /url-loader@1.1.2(webpack@4.46.0): - resolution: {integrity: sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==} - engines: {node: '>= 6.9.0'} - peerDependencies: - webpack: ^3.0.0 || ^4.0.0 + math-intrinsics@1.1.0: {} + + mdast-util-to-hast@13.2.1: dependencies: - loader-utils: 1.4.0 - mime: 2.6.0 - schema-utils: 1.0.0 - webpack: 4.46.0 - dev: true + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.4.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + + medium-zoom@1.1.0: {} - /url-parse-lax@3.0.0: - resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} - engines: {node: '>=4'} + mermaid@11.17.2: dependencies: - prepend-http: 2.0.0 - dev: true + '@braintree/sanitize-url': 7.1.2 + '@iconify/utils': 3.1.7 + '@mermaid-js/parser': 1.2.1 + '@types/d3': 7.4.3 + '@upsetjs/venn.js': 2.0.0 + cytoscape: 3.34.3 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.34.3) + cytoscape-fcose: 2.2.0(cytoscape@3.34.3) + d3: 7.9.0 + d3-sankey: 0.12.3 + dagre-d3-es: 7.0.14 + dayjs: 1.11.23 + dompurify: 3.4.15 + es-toolkit: 1.52.0 + fastdom: 1.0.12 + katex: 0.16.47 + khroma: 2.1.0 + marked: 16.4.2 + roughjs: 4.6.6 + stylis: 4.4.0 + ts-dedent: 2.3.0 + uuid: 14.0.2 - /url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + micromark-util-character@2.1.1: dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - dev: true + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - /url@0.11.0: - resolution: {integrity: sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==} + micromark-util-encode@2.0.1: {} + + micromark-util-sanitize-uri@2.0.1: dependencies: - punycode: 1.3.2 - querystring: 0.2.0 - dev: true + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 - /use@3.1.1: - resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} - engines: {node: '>=0.10.0'} + micromark-util-symbol@2.0.1: {} - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: true + micromark-util-types@2.0.2: {} - /util.promisify@1.0.0: - resolution: {integrity: sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==} - dependencies: - define-properties: 1.1.4 - object.getownpropertydescriptors: 2.1.4 - dev: true + mime-db@1.52.0: {} - /util.promisify@1.0.1: - resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==} + mime-types@2.1.35: dependencies: - define-properties: 1.1.4 - es-abstract: 1.20.2 - has-symbols: 1.0.3 - object.getownpropertydescriptors: 2.1.4 - dev: true + mime-db: 1.52.0 - /util@0.10.3: - resolution: {integrity: sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==} - dependencies: - inherits: 2.0.1 - dev: true + minisearch@7.2.0: {} + + mitt@3.0.1: {} + + ms@2.1.3: {} + + nanoid@3.3.19: {} - /util@0.11.1: - resolution: {integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==} + non-layered-tidy-tree-layout@2.0.2: + optional: true + + oniguruma-to-es@3.1.1: dependencies: - inherits: 2.0.3 - dev: true + emoji-regex-xs: 1.0.0 + regex: 6.1.0 + regex-recursion: 6.0.2 - /utila@0.4.0: - resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} - dev: true + package-manager-detector@1.8.0: {} - /utils-merge@1.0.1: - resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} - engines: {node: '>= 0.4.0'} - dev: true + path-data-parser@0.1.0: {} - /uuid@3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - dev: true + perfect-debounce@1.0.0: {} - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: true + picocolors@1.1.1: {} - /vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - dev: true + points-on-curve@0.2.0: {} - /vendors@1.0.4: - resolution: {integrity: sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==} - dev: true + points-on-path@0.2.1: + dependencies: + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 - /verror@1.10.0: - resolution: {integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=} - engines: {'0': node >=0.6.0} + postcss@8.5.28: dependencies: - assert-plus: 1.0.0 - core-util-is: 1.0.2 - extsprintf: 1.3.0 - dev: true + nanoid: 3.3.19 + picocolors: 1.1.1 + source-map-js: 1.2.1 - /viewerjs@1.11.6: - resolution: {integrity: sha512-TlhdSp2oEOLFXvEp4psKaeTjR5zBjTRcM/sHUN8PkV1UWuY8HKC8n7GaVdW5Xqnwdr/F1OmzLik1QwDjI4w/nw==} - dev: false + preact@10.29.8: {} - /vm-browserify@1.1.2: - resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} - dev: true + property-information@7.2.0: {} - /vue-hot-reload-api@2.3.4: - resolution: {integrity: sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==} - dev: true + proxy-from-env@2.1.0: {} - /vue-loader@15.10.0(cache-loader@3.0.1)(css-loader@2.1.1)(vue-template-compiler@2.7.10)(webpack@4.46.0): - resolution: {integrity: sha512-VU6tuO8eKajrFeBzMssFUP9SvakEeeSi1BxdTH5o3+1yUyrldp8IERkSdXlMI2t4kxF2sqYUDsQY+WJBxzBmZg==} - peerDependencies: - '@vue/compiler-sfc': ^3.0.8 - cache-loader: '*' - css-loader: '*' - vue-template-compiler: '*' - webpack: ^3.0.0 || ^4.1.0 || ^5.0.0-0 - peerDependenciesMeta: - '@vue/compiler-sfc': - optional: true - cache-loader: - optional: true - vue-template-compiler: - optional: true - dependencies: - '@vue/component-compiler-utils': 3.3.0 - cache-loader: 3.0.1(webpack@4.46.0) - css-loader: 2.1.1(webpack@4.46.0) - hash-sum: 1.0.2 - loader-utils: 1.4.0 - vue-hot-reload-api: 2.3.4 - vue-style-loader: 4.1.3 - vue-template-compiler: 2.7.10 - webpack: 4.46.0 - transitivePeerDependencies: - - arc-templates - - atpl - - babel-core - - bracket-template - - coffee-script - - dot - - dust - - dustjs-helpers - - dustjs-linkedin - - eco - - ect - - ejs - - haml-coffee - - hamlet - - hamljs - - handlebars - - hogan.js - - htmling - - jade - - jazz - - jqtpl - - just - - liquid-node - - liquor - - lodash - - marko - - mote - - mustache - - nunjucks - - plates - - pug - - qejs - - ractive - - razor-tmpl - - react - - react-dom - - slm - - squirrelly - - swig - - swig-templates - - teacup - - templayed - - then-jade - - then-pug - - tinyliquid - - toffee - - twig - - twing - - underscore - - vash - - velocityjs - - walrus - - whiskers - dev: true - - /vue-router@3.6.5(vue@2.7.10): - resolution: {integrity: sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ==} - peerDependencies: - vue: ^2 + regex-recursion@6.0.2: dependencies: - vue: 2.7.10 - dev: true + regex-utilities: 2.3.0 - /vue-server-renderer@2.7.10: - resolution: {integrity: sha512-hvlnyTZmDmnI7IpQE5YwIwexPi6yJq8eeNTUgLycPX3uhuEobygAQklHoeVREvwNKcET/MnVOtjF4c7t7mw6CQ==} - dependencies: - chalk: 4.1.2 - hash-sum: 2.0.0 - he: 1.2.0 - lodash.template: 4.5.0 - lodash.uniq: 4.5.0 - resolve: 1.22.1 - serialize-javascript: 6.0.0 - source-map: 0.5.6 - dev: true + regex-utilities@2.3.0: {} - /vue-style-loader@4.1.3: - resolution: {integrity: sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==} + regex@6.1.0: dependencies: - hash-sum: 1.0.2 - loader-utils: 1.4.0 - dev: true + regex-utilities: 2.3.0 - /vue-template-compiler@2.7.10: - resolution: {integrity: sha512-QO+8R9YRq1Gudm8ZMdo/lImZLJVUIAM8c07Vp84ojdDAf8HmPJc7XB556PcXV218k2AkKznsRz6xB5uOjAC4EQ==} - dependencies: - de-indent: 1.0.2 - he: 1.2.0 - dev: true + rfdc@1.4.1: {} - /vue-template-es2015-compiler@1.9.1: - resolution: {integrity: sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==} - dev: true + robust-predicates@3.0.3: {} - /vue@2.7.10: - resolution: {integrity: sha512-HmFC70qarSHPXcKtW8U8fgIkF6JGvjEmDiVInTkKZP0gIlEPhlVlcJJLkdGIDiNkIeA2zJPQTWJUI4iWe+AVfg==} + rollup@4.63.3: dependencies: - '@vue/compiler-sfc': 2.7.10 - csstype: 3.1.0 - dev: true + '@types/estree': 1.0.9 + optionalDependencies: + '@napi-rs/lzma-linux-x64-gnu': 1.5.1 + '@rollup/rollup-android-arm-eabi': 4.63.3 + '@rollup/rollup-android-arm64': 4.63.3 + '@rollup/rollup-darwin-arm64': 4.63.3 + '@rollup/rollup-darwin-x64': 4.63.3 + '@rollup/rollup-freebsd-arm64': 4.63.3 + '@rollup/rollup-freebsd-x64': 4.63.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.63.3 + '@rollup/rollup-linux-arm-musleabihf': 4.63.3 + '@rollup/rollup-linux-arm64-gnu': 4.63.3 + '@rollup/rollup-linux-arm64-musl': 4.63.3 + '@rollup/rollup-linux-loong64-gnu': 4.63.3 + '@rollup/rollup-linux-loong64-musl': 4.63.3 + '@rollup/rollup-linux-ppc64-gnu': 4.63.3 + '@rollup/rollup-linux-ppc64-musl': 4.63.3 + '@rollup/rollup-linux-riscv64-gnu': 4.63.3 + '@rollup/rollup-linux-riscv64-musl': 4.63.3 + '@rollup/rollup-linux-s390x-gnu': 4.63.3 + '@rollup/rollup-linux-x64-gnu': 4.63.3 + '@rollup/rollup-linux-x64-musl': 4.63.3 + '@rollup/rollup-openbsd-x64': 4.63.3 + '@rollup/rollup-openharmony-arm64': 4.63.3 + '@rollup/rollup-win32-arm64-msvc': 4.63.3 + '@rollup/rollup-win32-ia32-msvc': 4.63.3 + '@rollup/rollup-win32-x64-gnu': 4.63.3 + '@rollup/rollup-win32-x64-msvc': 4.63.3 + fsevents: 2.3.3 - /vuepress-html-webpack-plugin@3.2.0(webpack@4.46.0): - resolution: {integrity: sha512-BebAEl1BmWlro3+VyDhIOCY6Gef2MCBllEVAP3NUAtMguiyOwo/dClbwJ167WYmcxHJKLl7b0Chr9H7fpn1d0A==} - engines: {node: '>=6.9'} - peerDependencies: - webpack: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 - dependencies: - html-minifier: 3.5.21 - loader-utils: 0.2.17 - lodash: 4.17.21 - pretty-error: 2.1.2 - tapable: 1.1.3 - toposort: 1.0.7 - util.promisify: 1.0.0 - webpack: 4.46.0 - dev: true - - /vuepress-plugin-container@2.1.5: - resolution: {integrity: sha512-TQrDX/v+WHOihj3jpilVnjXu9RcTm6m8tzljNJwYhxnJUW0WWQ0hFLcDTqTBwgKIFdEiSxVOmYE+bJX/sq46MA==} - dependencies: - '@vuepress/shared-utils': 1.9.7 - markdown-it-container: 2.0.0 - transitivePeerDependencies: - - supports-color - dev: true + roughjs@4.6.6: + dependencies: + hachure-fill: 0.5.2 + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + points-on-path: 0.2.1 + + rw@1.3.3: {} - /vuepress-plugin-demo-block@0.7.2: - resolution: {integrity: sha512-0k7z7bTjXoXgdAMVFIVn3RFSQpKOM0yvD0hf/CA0gMCLBih77mCALtEpH9b+bEvijHmLLIq+BUtS2TQHXpkbNA==} - dev: true + safer-buffer@2.1.2: {} - /vuepress-plugin-one-click-copy@1.0.6: - resolution: {integrity: sha512-apFCcsBwk9IEDm5HwD6dwor30rl8gr0VjPkmrQlFSR2KD7OjK3ZUwioeEvbrcAiZBi35V6YgndLAHksJXRfpnQ==} - dev: true + search-insights@2.17.3: {} - /vuepress-plugin-smooth-scroll@0.0.3: - resolution: {integrity: sha512-qsQkDftLVFLe8BiviIHaLV0Ea38YLZKKonDGsNQy1IE0wllFpFIEldWD8frWZtDFdx6b/O3KDMgVQ0qp5NjJCg==} + shiki@2.5.0: dependencies: - smoothscroll-polyfill: 0.4.4 - dev: true + '@shikijs/core': 2.5.0 + '@shikijs/engine-javascript': 2.5.0 + '@shikijs/engine-oniguruma': 2.5.0 + '@shikijs/langs': 2.5.0 + '@shikijs/themes': 2.5.0 + '@shikijs/types': 2.5.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 - /vuepress-plugin-thirdparty-search@1.0.2: - resolution: {integrity: sha512-qXAzHCsbe7fKdqZyI7cax6qtVZpqbW5TEp+NOwCzgN6IIrHc8vOkz+shCTvc+qzDgqE31+geT1lPFFX6LvbOFQ==} - dev: true + source-map-js@1.2.1: {} - /vuepress-plugin-zooming@1.1.8: - resolution: {integrity: sha512-QAspMEqzerd0n8z/oOL5a67V/QaFZyjSwfo86y6PWhDdVAeOLR7umJ7syQqJpMdN9EVxmAstuzbKHkRxWzL0NQ==} - dependencies: - zooming: 2.1.1 - dev: true + space-separated-tokens@2.0.2: {} - /vuepress@1.9.7: - resolution: {integrity: sha512-aSXpoJBGhgjaWUsT1Zs/ZO8JdDWWsxZRlVme/E7QYpn+ZB9iunSgPMozJQNFaHzcRq4kPx5A4k9UhzLRcvtdMg==} - engines: {node: '>=8.6'} - hasBin: true - requiresBuild: true - dependencies: - '@vuepress/core': 1.9.7 - '@vuepress/theme-default': 1.9.7 - '@vuepress/types': 1.9.7 - cac: 6.7.14 - envinfo: 7.8.1 - opencollective-postinstall: 2.0.3 - update-notifier: 4.1.3 - transitivePeerDependencies: - - '@vue/compiler-sfc' - - arc-templates - - atpl - - babel-core - - bracket-template - - bufferutil - - coffee-script - - debug - - dot - - dust - - dustjs-helpers - - dustjs-linkedin - - eco - - ect - - ejs - - haml-coffee - - hamlet - - hamljs - - handlebars - - hogan.js - - htmling - - jade - - jazz - - jqtpl - - just - - liquid-node - - liquor - - lodash - - marko - - mote - - mustache - - nunjucks - - plates - - pug - - qejs - - ractive - - razor-tmpl - - react - - react-dom - - slm - - squirrelly - - supports-color - - swig - - swig-templates - - teacup - - templayed - - then-jade - - then-pug - - tinyliquid - - toffee - - twig - - twing - - underscore - - utf-8-validate - - vash - - velocityjs - - walrus - - webpack-cli - - webpack-command - - whiskers - dev: true - - /watchpack-chokidar2@2.0.1: - resolution: {integrity: sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==} - requiresBuild: true - dependencies: - chokidar: 2.1.8(supports-color@6.1.0) - transitivePeerDependencies: - - supports-color - dev: true - optional: true + speakingurl@14.0.1: {} - /watchpack@1.7.5: - resolution: {integrity: sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==} - dependencies: - graceful-fs: 4.2.10 - neo-async: 2.6.2 - optionalDependencies: - chokidar: 3.5.3 - watchpack-chokidar2: 2.0.1 - transitivePeerDependencies: - - supports-color - dev: true + strictdom@1.0.1: {} - /wbuf@1.7.3: - resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + stringify-entities@4.0.4: dependencies: - minimalistic-assert: 1.0.1 - dev: true + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 - /webpack-chain@4.12.1: - resolution: {integrity: sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ==} - dependencies: - deepmerge: 1.5.2 - javascript-stringify: 1.6.0 - dev: true + stylis@4.4.0: {} - /webpack-chain@6.5.1: - resolution: {integrity: sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==} - engines: {node: '>=8'} + superjson@2.2.6: dependencies: - deepmerge: 1.5.2 - javascript-stringify: 2.1.0 - dev: true + copy-anything: 4.1.0 - /webpack-dev-middleware@3.7.3(webpack@4.46.0): - resolution: {integrity: sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==} - engines: {node: '>= 6'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - dependencies: - memory-fs: 0.4.1 - mime: 2.6.0 - mkdirp: 0.5.6 - range-parser: 1.2.1 - webpack: 4.46.0 - webpack-log: 2.0.0 - dev: true - - /webpack-dev-server@3.11.3(webpack@4.46.0): - resolution: {integrity: sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==} - engines: {node: '>= 6.11.5'} - hasBin: true - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - dependencies: - ansi-html-community: 0.0.8 - bonjour: 3.5.0 - chokidar: 2.1.8(supports-color@6.1.0) - compression: 1.7.4(supports-color@6.1.0) - connect-history-api-fallback: 1.6.0 - debug: 4.3.4(supports-color@6.1.0) - del: 4.1.1 - express: 4.18.1(supports-color@6.1.0) - html-entities: 1.4.0 - http-proxy-middleware: 0.19.1(debug@4.3.4)(supports-color@6.1.0) - import-local: 2.0.0 - internal-ip: 4.3.0 - ip: 1.1.8 - is-absolute-url: 3.0.3 - killable: 1.0.1 - loglevel: 1.8.0 - opn: 5.5.0 - p-retry: 3.0.1 - portfinder: 1.0.32(supports-color@6.1.0) - schema-utils: 1.0.0 - selfsigned: 1.10.14 - semver: 6.3.0 - serve-index: 1.9.1(supports-color@6.1.0) - sockjs: 0.3.24 - sockjs-client: 1.6.1(supports-color@6.1.0) - spdy: 4.0.2(supports-color@6.1.0) - strip-ansi: 3.0.1 - supports-color: 6.1.0 - url: 0.11.0 - webpack: 4.46.0 - webpack-dev-middleware: 3.7.3(webpack@4.46.0) - webpack-log: 2.0.0 - ws: 6.2.2 - yargs: 13.3.2 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: true + tabbable@6.5.0: {} - /webpack-log@2.0.0: - resolution: {integrity: sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==} - engines: {node: '>= 6'} - dependencies: - ansi-colors: 3.2.4 - uuid: 3.4.0 - dev: true + tinyexec@1.3.1: {} - /webpack-merge@4.2.2: - resolution: {integrity: sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==} - dependencies: - lodash: 4.17.21 - dev: true + trim-lines@3.0.1: {} - /webpack-sources@1.4.3: - resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} - dependencies: - source-list-map: 2.0.1 - source-map: 0.6.1 - dev: true + ts-dedent@2.3.0: {} - /webpack@4.46.0: - resolution: {integrity: sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==} - engines: {node: '>=6.11.5'} - hasBin: true - peerDependencies: - webpack-cli: '*' - webpack-command: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - webpack-command: - optional: true + unist-util-is@6.0.1: dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/helper-module-context': 1.9.0 - '@webassemblyjs/wasm-edit': 1.9.0 - '@webassemblyjs/wasm-parser': 1.9.0 - acorn: 6.4.2 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - chrome-trace-event: 1.0.3 - enhanced-resolve: 4.5.0 - eslint-scope: 4.0.3 - json-parse-better-errors: 1.0.2 - loader-runner: 2.4.0 - loader-utils: 1.4.0 - memory-fs: 0.4.1 - micromatch: 3.1.10(supports-color@6.1.0) - mkdirp: 0.5.6 - neo-async: 2.6.2 - node-libs-browser: 2.2.1 - schema-utils: 1.0.0 - tapable: 1.1.3 - terser-webpack-plugin: 1.4.5(webpack@4.46.0) - watchpack: 1.7.5 - webpack-sources: 1.4.3 - transitivePeerDependencies: - - supports-color - dev: true + '@types/unist': 3.0.3 - /webpackbar@3.2.0(webpack@4.46.0): - resolution: {integrity: sha512-PC4o+1c8gWWileUfwabe0gqptlXUDJd5E0zbpr2xHP1VSOVlZVPBZ8j6NCR8zM5zbKdxPhctHXahgpNK1qFDPw==} - engines: {node: '>= 6.9.0'} - peerDependencies: - webpack: ^3.0.0 || ^4.0.0 - dependencies: - ansi-escapes: 4.3.2 - chalk: 2.4.2 - consola: 2.15.3 - figures: 3.2.0 - pretty-time: 1.1.0 - std-env: 2.3.1 - text-table: 0.2.0 - webpack: 4.46.0 - wrap-ansi: 5.1.0 - dev: true - - /websocket-driver@0.7.4: - resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} - engines: {node: '>=0.8.0'} - dependencies: - http-parser-js: 0.5.8 - safe-buffer: 5.2.1 - websocket-extensions: 0.1.4 - dev: true - - /websocket-extensions@0.1.4: - resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} - engines: {node: '>=0.8.0'} - dev: true - - /when@3.6.4: - resolution: {integrity: sha512-d1VUP9F96w664lKINMGeElWdhhb5sC+thXM+ydZGU3ZnaE09Wv6FaS+mpM9570kcDs/xMfcXJBTLsMdHEFYY9Q==} - dev: true - - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - dev: true - - /which-module@2.0.0: - resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} - dev: true - - /which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true + unist-util-position@5.0.0: dependencies: - isexe: 2.0.0 - dev: true + '@types/unist': 3.0.3 - /widest-line@3.1.0: - resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} - engines: {node: '>=8'} + unist-util-stringify-position@4.0.0: dependencies: - string-width: 4.2.3 - dev: true + '@types/unist': 3.0.3 - /worker-farm@1.7.0: - resolution: {integrity: sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==} + unist-util-visit-parents@6.0.2: dependencies: - errno: 0.1.8 - dev: true + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 - /wrap-ansi@5.1.0: - resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} - engines: {node: '>=6'} + unist-util-visit@5.1.0: dependencies: - ansi-styles: 3.2.1 - string-width: 3.1.0 - strip-ansi: 5.2.0 - dev: true + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + uuid@14.0.2: {} - /write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + vfile-message@4.0.3: dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - dev: true + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 - /ws@6.2.2: - resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true + vfile@6.0.3: dependencies: - async-limiter: 1.0.1 - dev: true - - /xdg-basedir@4.0.0: - resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} - engines: {node: '>=8'} - dev: true - - /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: true - - /y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: true + '@types/unist': 3.0.3 + vfile-message: 4.0.3 - /yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - dev: true - - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true + vite@5.4.21: + dependencies: + esbuild: 0.21.5 + postcss: 8.5.28 + rollup: 4.63.3 + optionalDependencies: + fsevents: 2.3.3 - /yamljs@0.3.0: - resolution: {integrity: sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==} - hasBin: true + vitepress-plugin-mermaid@2.0.17(mermaid@11.17.2)(vitepress@1.6.4(@algolia/client-search@5.59.0)(axios@1.20.0)(postcss@8.5.28)(search-insights@2.17.3)): dependencies: - argparse: 1.0.10 - glob: 7.2.3 - dev: true - - /yargs-parser@13.1.2: - resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - dev: true - - /yargs@13.3.2: - resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} - dependencies: - cliui: 5.0.0 - find-up: 3.0.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: 3.1.0 - which-module: 2.0.0 - y18n: 4.0.3 - yargs-parser: 13.1.2 - dev: true - - /zepto@1.2.0: - resolution: {integrity: sha512-C1x6lfvBICFTQIMgbt3JqMOno3VOtkWat/xEakLTOurskYIHPmzJrzd1e8BnmtdDVJlGuk5D+FxyCA8MPmkIyA==} - dev: true - - /zooming@2.1.1: - resolution: {integrity: sha512-Z38dkZRQsFNBE67+xDBQLNKMs5J1Gc+s3/zO6iezTrC24VYLJV7YPBdBDJmiLhff5qa6Awxv4wsjqx3oYz2MYA==} - dev: true + mermaid: 11.17.2 + vitepress: 1.6.4(@algolia/client-search@5.59.0)(axios@1.20.0)(postcss@8.5.28)(search-insights@2.17.3) + optionalDependencies: + '@mermaid-js/mermaid-mindmap': 9.3.0 + + vitepress@1.6.4(@algolia/client-search@5.59.0)(axios@1.20.0)(postcss@8.5.28)(search-insights@2.17.3): + dependencies: + '@docsearch/css': 3.8.2 + '@docsearch/js': 3.8.2(@algolia/client-search@5.59.0)(search-insights@2.17.3) + '@iconify-json/simple-icons': 1.2.96 + '@shikijs/core': 2.5.0 + '@shikijs/transformers': 2.5.0 + '@shikijs/types': 2.5.0 + '@types/markdown-it': 14.2.0 + '@vitejs/plugin-vue': 5.2.4(vite@5.4.21)(vue@3.5.43) + '@vue/devtools-api': 7.7.10 + '@vue/shared': 3.5.43 + '@vueuse/core': 12.8.2 + '@vueuse/integrations': 12.8.2(axios@1.20.0)(focus-trap@7.8.0) + focus-trap: 7.8.0 + mark.js: 8.11.1 + minisearch: 7.2.0 + shiki: 2.5.0 + vite: 5.4.21 + vue: 3.5.43 + optionalDependencies: + postcss: 8.5.28 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - less + - lightningcss + - nprogress + - preact-render-to-string + - qrcode + - react + - react-dom + - sass + - sass-embedded + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - typescript + - universal-cookie + + vue@3.5.43: + dependencies: + '@vue/compiler-dom': 3.5.43 + '@vue/compiler-sfc': 3.5.43 + '@vue/runtime-dom': 3.5.43 + '@vue/server-renderer': 3.5.43 + '@vue/shared': 3.5.43 + + zwitch@2.0.4: {} diff --git a/scripts/baseline-urls.json b/scripts/baseline-urls.json new file mode 100644 index 00000000..17cb7ffd --- /dev/null +++ b/scripts/baseline-urls.json @@ -0,0 +1,1082 @@ +[ + { + "url": "about/architecture", + "en": "01-about/02-architecture.md", + "zh": "zh/01-about/02-architecture.md", + "liveAt": "root" + }, + { + "url": "about/editions", + "en": "01-about/05-editions.md", + "zh": "zh/01-about/05-editions.md", + "liveAt": "root" + }, + { + "url": "about/features", + "en": "01-about/03-features.md", + "zh": "zh/01-about/03-features.md", + "liveAt": "root" + }, + { + "url": "about/milestone", + "en": "01-about/04-milestone.md", + "zh": "zh/01-about/04-milestone.md", + "liveAt": "root" + }, + { + "url": "about/overview", + "en": "01-about/01-overview.md", + "zh": "zh/01-about/01-overview.md", + "liveAt": "root" + }, + { + "url": "about/users", + "en": "01-about/06-users.md", + "zh": "zh/01-about/06-users.md", + "liveAt": "root" + }, + { + "url": "best-practice/agent-advanced-config", + "en": "04-best-practice/01-agent-advanced-config.md", + "zh": "zh/04-best-practice/01-agent-advanced-config.md", + "liveAt": "root" + }, + { + "url": "best-practice/agent-performance-tuning", + "en": "04-best-practice/05-agent-performance-tuning.md", + "zh": "zh/04-best-practice/05-agent-performance-tuning.md", + "liveAt": "root" + }, + { + "url": "best-practice/production-deployment", + "en": "04-best-practice/06-production-deployment.md", + "zh": "zh/04-best-practice/06-production-deployment.md", + "liveAt": "root" + }, + { + "url": "best-practice/reduce-storage-overhead", + "en": "04-best-practice/04-reduce-storage-overhead.md", + "zh": "zh/04-best-practice/04-reduce-storage-overhead.md", + "liveAt": "root" + }, + { + "url": "best-practice/server-advanced-config", + "en": "04-best-practice/02-server-advanced-config.md", + "zh": "zh/04-best-practice/02-server-advanced-config.md", + "liveAt": "root" + }, + { + "url": "best-practice/special-environment-deployment", + "en": "04-best-practice/03-special-environment-deployment.md", + "zh": "zh/04-best-practice/03-special-environment-deployment.md", + "liveAt": "root" + }, + { + "url": "best-practice/storage-engine-use-byconity", + "en": "04-best-practice/07-storage-engine-use-byconity.md", + "zh": "zh/04-best-practice/07-storage-engine-use-byconity.md", + "liveAt": "root" + }, + { + "url": "ce-install/ai-agent", + "en": "02-ce-install/09-ai-agent.md", + "zh": "zh/02-ce-install/09-ai-agent.md", + "liveAt": "root" + }, + { + "url": "ce-install/all-in-one", + "en": "02-ce-install/02-all-in-one.md", + "zh": "zh/02-ce-install/02-all-in-one.md", + "liveAt": "root" + }, + { + "url": "ce-install/cloud-host", + "en": "02-ce-install/06-cloud-host.md", + "zh": "zh/02-ce-install/06-cloud-host.md", + "liveAt": "root" + }, + { + "url": "ce-install/legacy-host", + "en": "02-ce-install/05-legacy-host.md", + "zh": "zh/02-ce-install/05-legacy-host.md", + "liveAt": "root" + }, + { + "url": "ce-install/managed-k8s", + "en": "02-ce-install/07-managed-k8s.md", + "zh": "zh/02-ce-install/07-managed-k8s.md", + "liveAt": "root" + }, + { + "url": "ce-install/multi-k8s", + "en": "02-ce-install/04-multi-k8s.md", + "zh": "zh/02-ce-install/04-multi-k8s.md", + "liveAt": "root" + }, + { + "url": "ce-install/overview", + "en": "02-ce-install/01-overview.md", + "zh": "zh/02-ce-install/01-overview.md", + "liveAt": "root" + }, + { + "url": "ce-install/serverless-pod", + "en": "02-ce-install/08-serverless-pod.md", + "zh": "zh/02-ce-install/08-serverless-pod.md", + "liveAt": "root" + }, + { + "url": "ce-install/single-k8s", + "en": "02-ce-install/03-single-k8s.md", + "zh": "zh/02-ce-install/03-single-k8s.md", + "liveAt": "root" + }, + { + "url": "ce-install/upgrade", + "en": "02-ce-install/99-upgrade.md", + "zh": "zh/02-ce-install/99-upgrade.md", + "liveAt": "root" + }, + { + "url": "configuration/agent", + "en": "07-configuration/01-agent.md", + "zh": "zh/07-configuration/01-agent.md", + "liveAt": "root" + }, + { + "url": "diagnose/FAQ", + "en": "09-diagnose/01-FAQ.md", + "zh": "zh/09-diagnose/01-FAQ.md", + "liveAt": "root" + }, + { + "url": "diagnose/agent", + "en": "09-diagnose/03-deepflow-agent.md", + "zh": "zh/09-diagnose/03-deepflow-agent.md", + "liveAt": "root" + }, + { + "url": "diagnose/grafana", + "en": "09-diagnose/02-grafana.md", + "zh": "zh/09-diagnose/02-grafana.md", + "liveAt": "root" + }, + { + "url": "diagnose/how-to-profile-deepflow-server-ingester", + "en": "09-diagnose/04-deepflow-server.md", + "zh": "zh/09-diagnose/04-deepflow-server.md", + "liveAt": "root" + }, + { + "url": "ee-install/on-prem/cloud-host", + "en": "03-ee-install/02-on-prem/02-cloud-host.md", + "zh": "zh/03-ee-install/02-on-prem/02-cloud-host.md", + "liveAt": "root" + }, + { + "url": "ee-install/on-prem/k8s", + "en": "03-ee-install/02-on-prem/01-k8s.md", + "zh": "zh/03-ee-install/02-on-prem/01-k8s.md", + "liveAt": "root" + }, + { + "url": "ee-install/on-prem/legacy-host", + "en": "03-ee-install/02-on-prem/03-legacy-host.md", + "zh": "zh/03-ee-install/02-on-prem/03-legacy-host.md", + "liveAt": "root" + }, + { + "url": "ee-install/saas/check", + "en": "03-ee-install/01-saas/04-check.md", + "zh": "zh/03-ee-install/01-saas/04-check.md", + "liveAt": "root" + }, + { + "url": "ee-install/saas/cloud", + "en": "03-ee-install/01-saas/01-cloud.md", + "zh": "zh/03-ee-install/01-saas/01-cloud.md", + "liveAt": "root" + }, + { + "url": "ee-install/saas/cloud-host", + "en": "03-ee-install/01-saas/03-cloud-host.md", + "zh": "zh/03-ee-install/01-saas/03-cloud-host.md", + "liveAt": "root" + }, + { + "url": "ee-install/saas/k8s", + "en": "03-ee-install/01-saas/02-k8s.md", + "zh": "zh/03-ee-install/01-saas/02-k8s.md", + "liveAt": "root" + }, + { + "url": "features/auto-tagging/additional-cloud-tags", + "en": "05-features/05-auto-tagging/06-additional-cloud-tags.md", + "zh": "zh/05-features/05-auto-tagging/06-additional-cloud-tags.md", + "liveAt": "root" + }, + { + "url": "features/auto-tagging/cmdb-tags", + "en": "05-features/05-auto-tagging/07-cmdb-tags.md", + "zh": "zh/05-features/05-auto-tagging/07-cmdb-tags.md", + "liveAt": "root" + }, + { + "url": "features/auto-tagging/custom-tags", + "en": "05-features/05-auto-tagging/04-custom-tags.md", + "zh": "zh/05-features/05-auto-tagging/04-custom-tags.md", + "liveAt": "root" + }, + { + "url": "features/auto-tagging/eliminate-data-silos", + "en": "05-features/05-auto-tagging/01-eliminate-data-silos.md", + "zh": "zh/05-features/05-auto-tagging/01-eliminate-data-silos.md", + "liveAt": "root" + }, + { + "url": "features/auto-tagging/k8s-crd", + "en": "05-features/05-auto-tagging/08-k8s-crd.md", + "zh": "zh/05-features/05-auto-tagging/08-k8s-crd.md", + "liveAt": "root" + }, + { + "url": "features/auto-tagging/meta-tags", + "en": "05-features/05-auto-tagging/03-meta-tags.md", + "zh": "zh/05-features/05-auto-tagging/03-meta-tags.md", + "liveAt": "root" + }, + { + "url": "features/auto-tagging/process-tags", + "en": "05-features/05-auto-tagging/05-process-tags.md", + "zh": "zh/05-features/05-auto-tagging/05-process-tags.md", + "liveAt": "root" + }, + { + "url": "features/auto-tagging/smart-encoding", + "en": "05-features/05-auto-tagging/02-smart-encoding.md", + "zh": "zh/05-features/05-auto-tagging/02-smart-encoding.md", + "liveAt": "root" + }, + { + "url": "features/continuous-profiling/auto-profiling", + "en": "05-features/04-continuous-profiling/01-auto-profiling.md", + "zh": "zh/05-features/04-continuous-profiling/01-auto-profiling.md", + "liveAt": "root" + }, + { + "url": "features/continuous-profiling/configuration", + "en": "05-features/04-continuous-profiling/02-configuration.md", + "zh": "zh/05-features/04-continuous-profiling/02-configuration.md", + "liveAt": "root" + }, + { + "url": "features/continuous-profiling/data", + "en": "05-features/04-continuous-profiling/03-data.md", + "zh": "zh/05-features/04-continuous-profiling/03-data.md", + "liveAt": "root" + }, + { + "url": "features/distributed-tracing/auto-tracing", + "en": "05-features/03-distributed-tracing/01-auto-tracing.md", + "zh": "zh/05-features/03-distributed-tracing/01-auto-tracing.md", + "liveAt": "root" + }, + { + "url": "features/distributed-tracing/istio-bookinfo-demo", + "en": "05-features/03-distributed-tracing/03-istio-bookinfo-demo.md", + "zh": "zh/05-features/03-distributed-tracing/03-istio-bookinfo-demo.md", + "liveAt": "root" + }, + { + "url": "features/distributed-tracing/spring-boot-demo", + "en": "05-features/03-distributed-tracing/02-spring-boot-demo.md", + "zh": "zh/05-features/03-distributed-tracing/02-spring-boot-demo.md", + "liveAt": "root" + }, + { + "url": "features/l7-protocols/http", + "en": "05-features/01-l7-protocols/02-http.md", + "zh": "zh/05-features/01-l7-protocols/02-http.md", + "liveAt": "root" + }, + { + "url": "features/l7-protocols/mq", + "en": "05-features/01-l7-protocols/06-mq.md", + "zh": "zh/05-features/01-l7-protocols/06-mq.md", + "liveAt": "root" + }, + { + "url": "features/l7-protocols/network", + "en": "05-features/01-l7-protocols/07-network.md", + "zh": "zh/05-features/01-l7-protocols/07-network.md", + "liveAt": "root" + }, + { + "url": "features/l7-protocols/nosql", + "en": "05-features/01-l7-protocols/05-nosql.md", + "zh": "zh/05-features/01-l7-protocols/05-nosql.md", + "liveAt": "root" + }, + { + "url": "features/l7-protocols/otel", + "en": "05-features/01-l7-protocols/08-otel.md", + "zh": "zh/05-features/01-l7-protocols/08-otel.md", + "liveAt": "root" + }, + { + "url": "features/l7-protocols/overview", + "en": "05-features/01-l7-protocols/01-overview.md", + "zh": "zh/05-features/01-l7-protocols/01-overview.md", + "liveAt": "root" + }, + { + "url": "features/l7-protocols/rpc", + "en": "05-features/01-l7-protocols/03-rpc.md", + "zh": "zh/05-features/01-l7-protocols/03-rpc.md", + "liveAt": "root" + }, + { + "url": "features/l7-protocols/skywalking", + "en": "05-features/01-l7-protocols/09-skywalking.md", + "zh": "zh/05-features/01-l7-protocols/09-skywalking.md", + "liveAt": "root" + }, + { + "url": "features/l7-protocols/sql", + "en": "05-features/01-l7-protocols/04-sql.md", + "zh": "zh/05-features/01-l7-protocols/04-sql.md", + "liveAt": "root" + }, + { + "url": "features/universal-map/application-metrics", + "en": "05-features/02-universal-map/02-application-metrics.md", + "zh": "zh/05-features/02-universal-map/02-application-metrics.md", + "liveAt": "root" + }, + { + "url": "features/universal-map/auto-metrics", + "en": "05-features/02-universal-map/01-auto-metrics.md", + "zh": "zh/05-features/02-universal-map/01-auto-metrics.md", + "liveAt": "root" + }, + { + "url": "features/universal-map/flow-log", + "en": "05-features/02-universal-map/05-flow-log.md", + "zh": "zh/05-features/02-universal-map/05-flow-log.md", + "liveAt": "root" + }, + { + "url": "features/universal-map/metrics-and-operators", + "en": "05-features/02-universal-map/07-metrics-and-operators.md", + "zh": "zh/05-features/02-universal-map/07-metrics-and-operators.md", + "liveAt": "root" + }, + { + "url": "features/universal-map/network-metrics", + "en": "05-features/02-universal-map/04-network-metrics.md", + "zh": "zh/05-features/02-universal-map/04-network-metrics.md", + "liveAt": "root" + }, + { + "url": "features/universal-map/request-log", + "en": "05-features/02-universal-map/03-request-log.md", + "zh": "zh/05-features/02-universal-map/03-request-log.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/alert/alert-event", + "en": "06-guide/02-ee-tenant/09-alert/04-alert-event.md", + "zh": "zh/06-guide/02-ee-tenant/09-alert/04-alert-event.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/alert/alert-policy", + "en": "06-guide/02-ee-tenant/09-alert/02-alert-policy.md", + "zh": "zh/06-guide/02-ee-tenant/09-alert/02-alert-policy.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/alert/overview", + "en": "06-guide/02-ee-tenant/09-alert/01-overview.md", + "zh": "zh/06-guide/02-ee-tenant/09-alert/01-overview.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/alert/push-endpoint", + "en": "06-guide/02-ee-tenant/09-alert/03-push-endpoint.md", + "zh": "zh/06-guide/02-ee-tenant/09-alert/03-push-endpoint.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/configuration/settings", + "en": "06-guide/02-ee-tenant/13-configuration/01-settings.md", + "zh": "zh/06-guide/02-ee-tenant/13-configuration/01-settings.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/dashboard/add-panel", + "en": "06-guide/02-ee-tenant/02-dashboard/04-add-panel.md", + "zh": "zh/06-guide/02-ee-tenant/02-dashboard/04-add-panel.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/dashboard/list", + "en": "06-guide/02-ee-tenant/02-dashboard/02-list.md", + "zh": "zh/06-guide/02-ee-tenant/02-dashboard/02-list.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/dashboard/overview", + "en": "06-guide/02-ee-tenant/02-dashboard/01-overview.md", + "zh": "zh/06-guide/02-ee-tenant/02-dashboard/01-overview.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/dashboard/panel/bar", + "en": "06-guide/02-ee-tenant/02-dashboard/99-panel/05-bar.md", + "zh": "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/05-bar.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/dashboard/panel/flame", + "en": "06-guide/02-ee-tenant/02-dashboard/99-panel/03-flame.md", + "zh": "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/03-flame.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/dashboard/panel/histogram", + "en": "06-guide/02-ee-tenant/02-dashboard/99-panel/07-histogram.md", + "zh": "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/07-histogram.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/dashboard/panel/line", + "en": "06-guide/02-ee-tenant/02-dashboard/99-panel/04-line.md", + "zh": "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/04-line.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/dashboard/panel/overview", + "en": "06-guide/02-ee-tenant/02-dashboard/99-panel/01-overview.md", + "zh": "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/01-overview.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/dashboard/panel/pie", + "en": "06-guide/02-ee-tenant/02-dashboard/99-panel/06-pie.md", + "zh": "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/06-pie.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/dashboard/panel/stat", + "en": "06-guide/02-ee-tenant/02-dashboard/99-panel/09-stat.md", + "zh": "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/09-stat.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/dashboard/panel/table", + "en": "06-guide/02-ee-tenant/02-dashboard/99-panel/08-table.md", + "zh": "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/08-table.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/dashboard/panel/text", + "en": "06-guide/02-ee-tenant/02-dashboard/99-panel/10-text.md", + "zh": "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/10-text.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/dashboard/panel/topology", + "en": "06-guide/02-ee-tenant/02-dashboard/99-panel/02-topology.md", + "zh": "zh/06-guide/02-ee-tenant/02-dashboard/99-panel/02-topology.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/dashboard/right-slide-box", + "en": "06-guide/02-ee-tenant/02-dashboard/06-right-slide-box.md", + "zh": "zh/06-guide/02-ee-tenant/02-dashboard/06-right-slide-box.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/dashboard/use", + "en": "06-guide/02-ee-tenant/02-dashboard/03-use.md", + "zh": "zh/06-guide/02-ee-tenant/02-dashboard/03-use.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/dashboard/variable-template", + "en": "06-guide/02-ee-tenant/02-dashboard/05-variable-template.md", + "zh": "zh/06-guide/02-ee-tenant/02-dashboard/05-variable-template.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/log/log", + "en": "06-guide/02-ee-tenant/08-log/01-log.md", + "zh": "zh/06-guide/02-ee-tenant/08-log/01-log.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/metrics/container", + "en": "06-guide/02-ee-tenant/07-metrics/03-container.md", + "zh": "zh/06-guide/02-ee-tenant/07-metrics/03-container.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/metrics/host", + "en": "06-guide/02-ee-tenant/07-metrics/02-host.md", + "zh": "zh/06-guide/02-ee-tenant/07-metrics/02-host.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/metrics/metric-summary", + "en": "06-guide/02-ee-tenant/07-metrics/05-metric-summary.md", + "zh": "zh/06-guide/02-ee-tenant/07-metrics/05-metric-summary.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/metrics/metrics-template", + "en": "06-guide/02-ee-tenant/07-metrics/06-metrics-template.md", + "zh": "zh/06-guide/02-ee-tenant/07-metrics/06-metrics-template.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/metrics/metrics-viewing", + "en": "06-guide/02-ee-tenant/07-metrics/04-metrics-viewing.md", + "zh": "zh/06-guide/02-ee-tenant/07-metrics/04-metrics-viewing.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/metrics/overview", + "en": "06-guide/02-ee-tenant/07-metrics/01-overview.md", + "zh": "zh/06-guide/02-ee-tenant/07-metrics/01-overview.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/network/NAT-traversal", + "en": "06-guide/02-ee-tenant/06-network/06-NAT-traversal.md", + "zh": "zh/06-guide/02-ee-tenant/06-network/06-NAT-traversal.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/network/flow-log", + "en": "06-guide/02-ee-tenant/06-network/05-flow-log.md", + "zh": "zh/06-guide/02-ee-tenant/06-network/05-flow-log.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/network/network-map", + "en": "06-guide/02-ee-tenant/06-network/04-network-map.md", + "zh": "zh/06-guide/02-ee-tenant/06-network/04-network-map.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/network/network-path", + "en": "06-guide/02-ee-tenant/06-network/03-network-path.md", + "zh": "zh/06-guide/02-ee-tenant/06-network/03-network-path.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/network/overview", + "en": "06-guide/02-ee-tenant/06-network/01-overview.md", + "zh": "zh/06-guide/02-ee-tenant/06-network/01-overview.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/network/pacp-strategy", + "en": "06-guide/02-ee-tenant/06-network/08-pacp-strategy.md", + "zh": "zh/06-guide/02-ee-tenant/06-network/08-pacp-strategy.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/network/pcap-download", + "en": "06-guide/02-ee-tenant/06-network/09-pcap-download.md", + "zh": "zh/06-guide/02-ee-tenant/06-network/09-pcap-download.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/network/resource-inventory", + "en": "06-guide/02-ee-tenant/06-network/07-resource-inventory.md", + "zh": "zh/06-guide/02-ee-tenant/06-network/07-resource-inventory.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/network/service-statistics", + "en": "06-guide/02-ee-tenant/06-network/02-service-statistics.md", + "zh": "zh/06-guide/02-ee-tenant/06-network/02-service-statistics.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/profiling/continue-profile", + "en": "06-guide/02-ee-tenant/05-profiling/01-continue-profile.md", + "zh": "zh/06-guide/02-ee-tenant/05-profiling/01-continue-profile.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/query/history", + "en": "06-guide/02-ee-tenant/01-query/06-history.md", + "zh": "zh/06-guide/02-ee-tenant/01-query/06-history.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/query/left-quick-filter", + "en": "06-guide/02-ee-tenant/01-query/07-left-quick-filter.md", + "zh": "zh/06-guide/02-ee-tenant/01-query/07-left-quick-filter.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/query/log-search", + "en": "06-guide/02-ee-tenant/01-query/04-log-search.md", + "zh": "zh/06-guide/02-ee-tenant/01-query/04-log-search.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/query/metric-search", + "en": "06-guide/02-ee-tenant/01-query/05-metric-search.md", + "zh": "zh/06-guide/02-ee-tenant/01-query/05-metric-search.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/query/overview", + "en": "06-guide/02-ee-tenant/01-query/01-overview.md", + "zh": "zh/06-guide/02-ee-tenant/01-query/01-overview.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/query/path-search", + "en": "06-guide/02-ee-tenant/01-query/03-path-search.md", + "zh": "zh/06-guide/02-ee-tenant/01-query/03-path-search.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/query/service-search", + "en": "06-guide/02-ee-tenant/01-query/02-service-search.md", + "zh": "zh/06-guide/02-ee-tenant/01-query/02-service-search.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/report/report", + "en": "06-guide/02-ee-tenant/10-report/01-report.md", + "zh": "zh/06-guide/02-ee-tenant/10-report/01-report.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/resources/computing-resources", + "en": "06-guide/02-ee-tenant/11-resources/05-computing-resources.md", + "zh": "zh/06-guide/02-ee-tenant/11-resources/05-computing-resources.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/resources/container-resources", + "en": "06-guide/02-ee-tenant/11-resources/09-container-resources.md", + "zh": "zh/06-guide/02-ee-tenant/11-resources/09-container-resources.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/resources/network-resources", + "en": "06-guide/02-ee-tenant/11-resources/06-network-resources.md", + "zh": "zh/06-guide/02-ee-tenant/11-resources/06-network-resources.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/resources/network-services", + "en": "06-guide/02-ee-tenant/11-resources/07-network-services.md", + "zh": "zh/06-guide/02-ee-tenant/11-resources/07-network-services.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/resources/other-resources", + "en": "06-guide/02-ee-tenant/11-resources/11-other-resources.md", + "zh": "zh/06-guide/02-ee-tenant/11-resources/11-other-resources.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/resources/overview", + "en": "06-guide/02-ee-tenant/11-resources/01-overview.md", + "zh": "zh/06-guide/02-ee-tenant/11-resources/01-overview.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/resources/process-resources", + "en": "06-guide/02-ee-tenant/11-resources/10-process-resources.md", + "zh": "zh/06-guide/02-ee-tenant/11-resources/10-process-resources.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/resources/resource-changes", + "en": "06-guide/02-ee-tenant/11-resources/03-resource-changes.md", + "zh": "zh/06-guide/02-ee-tenant/11-resources/03-resource-changes.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/resources/resource-pool", + "en": "06-guide/02-ee-tenant/11-resources/04-resource-pool.md", + "zh": "zh/06-guide/02-ee-tenant/11-resources/04-resource-pool.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/resources/storage-services", + "en": "06-guide/02-ee-tenant/11-resources/08-storage-services.md", + "zh": "zh/06-guide/02-ee-tenant/11-resources/08-storage-services.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/resources/summary", + "en": "06-guide/02-ee-tenant/11-resources/02-summary.md", + "zh": "zh/06-guide/02-ee-tenant/11-resources/02-summary.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/system/account-management", + "en": "06-guide/02-ee-tenant/12-system/04-account-management.md", + "zh": "zh/06-guide/02-ee-tenant/12-system/04-account-management.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/system/agent", + "en": "06-guide/02-ee-tenant/12-system/02-agent.md", + "zh": "zh/06-guide/02-ee-tenant/12-system/02-agent.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/system/data-node", + "en": "06-guide/02-ee-tenant/12-system/03-data-node.md", + "zh": "zh/06-guide/02-ee-tenant/12-system/03-data-node.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/system/operation-log", + "en": "06-guide/02-ee-tenant/12-system/05-operation-log.md", + "zh": "zh/06-guide/02-ee-tenant/12-system/05-operation-log.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/system/overview", + "en": "06-guide/02-ee-tenant/12-system/01-overview.md", + "zh": "zh/06-guide/02-ee-tenant/12-system/01-overview.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/tracing/call-chain-tracing", + "en": "06-guide/02-ee-tenant/04-tracing/06-call-chain-tracing.md", + "zh": "zh/06-guide/02-ee-tenant/04-tracing/06-call-chain-tracing.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/tracing/call-log", + "en": "06-guide/02-ee-tenant/04-tracing/05-call-log.md", + "zh": "zh/06-guide/02-ee-tenant/04-tracing/05-call-log.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/tracing/file-reading-and-writing", + "en": "06-guide/02-ee-tenant/04-tracing/07-file-reading-and-writing.md", + "zh": "zh/06-guide/02-ee-tenant/04-tracing/07-file-reading-and-writing.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/tracing/overview", + "en": "06-guide/02-ee-tenant/04-tracing/01-overview.md", + "zh": "zh/06-guide/02-ee-tenant/04-tracing/01-overview.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/tracing/path-topology", + "en": "06-guide/02-ee-tenant/04-tracing/04-path-topology.md", + "zh": "zh/06-guide/02-ee-tenant/04-tracing/04-path-topology.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/tracing/right-sliding-box", + "en": "06-guide/02-ee-tenant/04-tracing/08-right-sliding-box.md", + "zh": "zh/06-guide/02-ee-tenant/04-tracing/08-right-sliding-box.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/tracing/service-list", + "en": "06-guide/02-ee-tenant/04-tracing/02-service-list.md", + "zh": "zh/06-guide/02-ee-tenant/04-tracing/02-service-list.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/tracing/service-statistics", + "en": "06-guide/02-ee-tenant/04-tracing/03-service-statistics.md", + "zh": "zh/06-guide/02-ee-tenant/04-tracing/03-service-statistics.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/universal-map/business-def", + "en": "06-guide/02-ee-tenant/03-universal-map/02-business-def.md", + "zh": "zh/06-guide/02-ee-tenant/03-universal-map/02-business-def.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/universal-map/overview", + "en": "06-guide/02-ee-tenant/03-universal-map/01-overview.md", + "zh": "zh/06-guide/02-ee-tenant/03-universal-map/01-overview.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/universal-map/service-list", + "en": "06-guide/02-ee-tenant/03-universal-map/03-service-list.md", + "zh": "zh/06-guide/02-ee-tenant/03-universal-map/03-service-list.md", + "liveAt": "root" + }, + { + "url": "guide/ee-tenant/universal-map/service-map", + "en": "06-guide/02-ee-tenant/03-universal-map/04-service-map.md", + "zh": "zh/06-guide/02-ee-tenant/03-universal-map/04-service-map.md", + "liveAt": "root" + }, + { + "url": "guide/quick-start/5w-method", + "en": "06-guide/01-quick-start/01-5w-method.md", + "zh": "zh/06-guide/01-quick-start/01-5w-method.md", + "liveAt": "root" + }, + { + "url": "integration/input/log/log-auto-tagging", + "en": "08-integration/02-input/04-log/01-log-auto-tagging.md", + "zh": "zh/08-integration/02-input/04-log/01-log-auto-tagging.md", + "liveAt": "root" + }, + { + "url": "integration/input/log/vector", + "en": "08-integration/02-input/04-log/02-vector.md", + "zh": "zh/08-integration/02-input/04-log/02-vector.md", + "liveAt": "root" + }, + { + "url": "integration/input/metrics/grafana-agent", + "en": "08-integration/02-input/01-metrics/04-grafana-agent.md", + "zh": "zh/08-integration/02-input/01-metrics/04-grafana-agent.md", + "liveAt": "root" + }, + { + "url": "integration/input/metrics/metrics-auto-tagging", + "en": "08-integration/02-input/01-metrics/01-metrics-auto-tagging.md", + "zh": "zh/08-integration/02-input/01-metrics/01-metrics-auto-tagging.md", + "liveAt": "root" + }, + { + "url": "integration/input/metrics/prometheus", + "en": "08-integration/02-input/01-metrics/02-prometheus.md", + "zh": "zh/08-integration/02-input/01-metrics/02-prometheus.md", + "liveAt": "root" + }, + { + "url": "integration/input/metrics/telegraf", + "en": "08-integration/02-input/01-metrics/03-telegraf.md", + "zh": "zh/08-integration/02-input/01-metrics/03-telegraf.md", + "liveAt": "root" + }, + { + "url": "integration/input/profile/profile", + "en": "08-integration/02-input/03-profile/02-profile.md", + "zh": "zh/08-integration/02-input/03-profile/02-profile.md", + "liveAt": "root" + }, + { + "url": "integration/input/profile/profile-auto-tagging", + "en": "08-integration/02-input/03-profile/01-profile-auto-tagging.md", + "zh": "zh/08-integration/02-input/03-profile/01-profile-auto-tagging.md", + "liveAt": "root" + }, + { + "url": "integration/input/tracing/apm-trace-api", + "en": "08-integration/02-input/02-tracing/03-apm-trace-api.md", + "zh": "zh/08-integration/02-input/02-tracing/03-apm-trace-api.md", + "liveAt": "root" + }, + { + "url": "integration/input/tracing/full-stack-distributed-tracing", + "en": "08-integration/02-input/02-tracing/01-full-stack-distributed-tracing.md", + "zh": "zh/08-integration/02-input/02-tracing/01-full-stack-distributed-tracing.md", + "liveAt": "root" + }, + { + "url": "integration/input/tracing/opentelemetry", + "en": "08-integration/02-input/02-tracing/04-opentelemetry.md", + "zh": "zh/08-integration/02-input/02-tracing/04-opentelemetry.md", + "liveAt": "root" + }, + { + "url": "integration/input/tracing/skywalking", + "en": "08-integration/02-input/02-tracing/05-skywalking.md", + "zh": "zh/08-integration/02-input/02-tracing/05-skywalking.md", + "liveAt": "root" + }, + { + "url": "integration/input/tracing/traccing-auto-tagging", + "en": "08-integration/02-input/02-tracing/02-traccing-auto-tagging.md", + "zh": "zh/08-integration/02-input/02-tracing/02-traccing-auto-tagging.md", + "liveAt": "root" + }, + { + "url": "integration/output/export/exporter-config", + "en": "08-integration/03-output/02-export/04-exporter-config.md", + "zh": "zh/08-integration/03-output/02-export/04-exporter-config.md", + "liveAt": "root" + }, + { + "url": "integration/output/export/kafka-exporter", + "en": "08-integration/03-output/02-export/03-kafka-exporter.md", + "zh": "zh/08-integration/03-output/02-export/03-kafka-exporter.md", + "liveAt": "root" + }, + { + "url": "integration/output/export/opentelemetry-exporter", + "en": "08-integration/03-output/02-export/01-opentelemetry-exporter.md", + "zh": "zh/08-integration/03-output/02-export/01-opentelemetry-exporter.md", + "liveAt": "root" + }, + { + "url": "integration/output/export/prometheus-remote-write", + "en": "08-integration/03-output/02-export/02-prom-remote-write.md", + "zh": "zh/08-integration/03-output/02-export/02-prom-remote-write.md", + "liveAt": "root" + }, + { + "url": "integration/output/query/mcp-server", + "en": "08-integration/03-output/01-query/04-mcp-server.md", + "zh": "zh/08-integration/03-output/01-query/04-mcp-server.md", + "liveAt": "root" + }, + { + "url": "integration/output/query/promql", + "en": "08-integration/03-output/01-query/02-promql.md", + "zh": "zh/08-integration/03-output/01-query/02-promql.md", + "liveAt": "root" + }, + { + "url": "integration/output/query/sql", + "en": "08-integration/03-output/01-query/01-sql.md", + "zh": "zh/08-integration/03-output/01-query/01-sql.md", + "liveAt": "root" + }, + { + "url": "integration/output/query/trace-completion", + "en": "08-integration/03-output/01-query/03-trace-completion.md", + "zh": "zh/08-integration/03-output/01-query/03-trace-completion.md", + "liveAt": "root" + }, + { + "url": "integration/process/wasm-plugin", + "en": "08-integration/01-process/01-wasm-plugin.md", + "zh": "zh/08-integration/01-process/01-wasm-plugin.md", + "liveAt": "root" + }, + { + "url": "release-notes/release-6.1-ce", + "en": "10-release-notes/17-ce-6.1-release.md", + "zh": "zh/10-release-notes/18-ce-6.1-release.md", + "liveAt": "root" + }, + { + "url": "release-notes/release-6.1-ee", + "en": "10-release-notes/18-ee-6.1-release.md", + "zh": "zh/10-release-notes/19-ee-6.1-release.md", + "liveAt": "root" + }, + { + "url": "release-notes/release-6.2-ce", + "en": "10-release-notes/15-ce-6.2-release.md", + "zh": "zh/10-release-notes/16-ce-6.2-release.md", + "liveAt": "root" + }, + { + "url": "release-notes/release-6.2-ee", + "en": "10-release-notes/16-ee-6.2-release.md", + "zh": "zh/10-release-notes/17-ee-6.2-release.md", + "liveAt": "root" + }, + { + "url": "release-notes/release-6.3-ce", + "en": "10-release-notes/13-ce-6.3-release.md", + "zh": "zh/10-release-notes/14-ce-6.3-release.md", + "liveAt": "root" + }, + { + "url": "release-notes/release-6.3-ee", + "en": "10-release-notes/14-ee-6.3-release.md", + "zh": "zh/10-release-notes/15-ee-6.3-release.md", + "liveAt": "root" + }, + { + "url": "release-notes/release-6.4-ce", + "en": "10-release-notes/11-ce-6.4-release.md", + "zh": "zh/10-release-notes/12-ce-6.4-release.md", + "liveAt": "root" + }, + { + "url": "release-notes/release-6.4-ee", + "en": "10-release-notes/12-ee-6.4-release.md", + "zh": "zh/10-release-notes/13-ee-6.4-release.md", + "liveAt": "root" + }, + { + "url": "release-notes/release-6.5-ce", + "en": "10-release-notes/09-ce-6.5-release.md", + "zh": "zh/10-release-notes/10-ce-6.5-release.md", + "liveAt": "root" + }, + { + "url": "release-notes/release-6.5-ee", + "en": "10-release-notes/10-ee-6.5-release.md", + "zh": "zh/10-release-notes/11-ee-6.5-release.md", + "liveAt": "root" + }, + { + "url": "release-notes/release-6.6-ce", + "en": "10-release-notes/07-ce-6.6-release.md", + "zh": "zh/10-release-notes/08-ce-6.6-release.md", + "liveAt": "root" + }, + { + "url": "release-notes/release-6.6-ee", + "en": "10-release-notes/08-ee-6.6-release.md", + "zh": "zh/10-release-notes/09-ee-6.6-release.md", + "liveAt": "root" + }, + { + "url": "release-notes/release-7.0-ce", + "en": "10-release-notes/05-ce-7.0-release.md", + "zh": "zh/10-release-notes/06-ce-7.0-release.md", + "liveAt": "root" + }, + { + "url": "release-notes/release-7.0-ee", + "en": "10-release-notes/06-ee-7.0-release.md", + "zh": "zh/10-release-notes/07-ee-7.0-release.md", + "liveAt": "root" + }, + { + "url": "release-notes/release-7.1-ce", + "en": "10-release-notes/03-ce-7.1-release.md", + "zh": "zh/10-release-notes/04-ce-7.1-release.md", + "liveAt": "root" + }, + { + "url": "release-notes/release-7.1-ee", + "en": "10-release-notes/04-ee-7.1-release.md", + "zh": "zh/10-release-notes/05-ee-7.1-release.md", + "liveAt": "root" + }, + { + "url": "release-notes/release-7.2-ee", + "en": null, + "zh": "zh/10-release-notes/03-ee-7.2-release.md", + "liveAt": "redirect-to-zh" + }, + { + "url": "release-notes/release-timeline", + "en": "10-release-notes/02-release-timeline.md", + "zh": "zh/10-release-notes/02-release-timeline.md", + "liveAt": "root" + }, + { + "url": "release-notes/versioning", + "en": "10-release-notes/01-versioning.md", + "zh": "zh/10-release-notes/01-versioning.md", + "liveAt": "root" + } +] diff --git a/scripts/check-urls.mjs b/scripts/check-urls.mjs new file mode 100644 index 00000000..0b7a9b92 --- /dev/null +++ b/scripts/check-urls.mjs @@ -0,0 +1,34 @@ +// 构建后校验:对比 VitePress 生成的 sitemap 与迁移基线,确认 URL 全部保持。 +// +// 用法:pnpm build && node scripts/check-urls.mjs +// (可选参数:sitemap 路径,默认 dist/sitemap.xml) +import fs from 'node:fs' +import path from 'node:path' +import { ROOT } from './lib/corpus.mjs' + +const sitemapPath = path.join(ROOT, process.argv[2] || 'dist/sitemap.xml') +const baseline = JSON.parse(fs.readFileSync(path.join(ROOT, 'scripts/baseline-urls.json'), 'utf8')) + +if (!fs.existsSync(sitemapPath)) { + console.error(`未找到 ${path.relative(ROOT, sitemapPath)},请先执行构建`) + process.exit(1) +} + +// 从 ... 提取站点绝对路径,去掉 hostname 与 /docs/ base +const locs = [...fs.readFileSync(sitemapPath, 'utf8').matchAll(/([^<]+)<\/loc>/g)].map( + ([, loc]) => loc.replace(/^https?:\/\/[^/]+/, '').replace(/^\/docs\/?/, '').replace(/\/$/, '') +) +const live = new Set(locs.filter(Boolean)) + +const missing = [] +for (const { url, en, zh } of baseline) { + if (en && !live.has(url)) missing.push(`[en] ${url}`) + if (zh && !live.has(`zh/${url}`)) missing.push(`[zh] zh/${url}`) +} + +if (missing.length) { + console.error(`缺失 ${missing.length} 个预期 URL:`) + for (const m of missing) console.error(' ' + m) + process.exit(1) +} +console.log(`URL 校验通过:基线 ${baseline.length} 个页面(en/zh 共 ${baseline.length * 2} 项)全部在 sitemap 中`) diff --git a/scripts/gen-rewrites.mjs b/scripts/gen-rewrites.mjs new file mode 100644 index 00000000..cac37117 --- /dev/null +++ b/scripts/gen-rewrites.mjs @@ -0,0 +1,145 @@ +// 生成 VitePress rewrites 映射与迁移基线数据(无第三方依赖)。 +// +// 数据来源: +// 1. translate/translated/**.md 英文源树(CI 构建时会被 mv 进 docs/,此脚本在提交态直接读取) +// 2. docs/zh/**.md 中文源树 +// 3. downloadFile.json CI 构建时额外下载生成的页面(如 Agent 配置页) +// +// URL 模型(与线上现状保持一致): +// - 英文页 = permalink 原样(根路径 clean URL,如 /docs/about/overview) +// - 中文页 = permalink 加 /zh/ 前缀(如 /docs/zh/about/overview) +// (现状:中英同 permalink 互相覆盖、中文不可达;加前缀后两种语言都可达) +// +// 输出: +// .vitepress/rewrites.generated.json VitePress rewrites(srcDir 相对路径 -> 目标路径) +// scripts/baseline-urls.json URL 基线(重写后校验用) +// nginx/zh-only-redirects.conf 仅中文页面的旧 URL -> /zh/ 新 URL 的 301 +// +// 用法:node scripts/gen-rewrites.mjs + +import fs from 'node:fs' +import path from 'node:path' + +const ROOT = path.resolve(import.meta.dirname, '..') +const EN_DIR = path.join(ROOT, 'translate/translated') +const ZH_DIR = path.join(ROOT, 'docs/zh') +const DOWNLOAD_JSON = path.join(ROOT, 'downloadFile.json') + +/** 解析 frontmatter 中的简单字符串字段(本项目 frontmatter 只有 title/permalink) */ +function parseFrontmatter(file) { + const raw = fs.readFileSync(file, 'utf8') + const m = raw.match(/^---\r?\n([\s\S]*?)\r?\n---/) + const out = {} + if (m) { + for (const line of m[1].split(/\r?\n/)) { + const kv = line.match(/^(\w+):\s*(.*)$/) + if (kv) out[kv[1]] = kv[2].trim().replace(/^['"]|['"]$/g, '') + } + } + return out +} + +/** permalink -> rewrites 目标段:/about/overview/ -> about/overview.md */ +function permalinkToTarget(permalink) { + return permalink.trim().replace(/^\/+|\/+$/g, '') + '.md' +} + +function walkMd(dir, base = dir) { + const result = [] + if (!fs.existsSync(dir)) return result + for (const name of fs.readdirSync(dir).sort()) { + const full = path.join(dir, name) + const stat = fs.statSync(full) + if (stat.isDirectory()) result.push(...walkMd(full, base)) + else if (name.endsWith('.md')) result.push(full) + } + return result +} + +// ---- 收集两种语言的 URL 映射 ---------------------------------------------- +// urlMap: clean url(无前后斜杠,如 'about/overview') -> { file, title } +function collectMap(dir, prefix) { + const map = new Map() + for (const file of walkMd(dir)) { + const rel = path.relative(dir, file).split(path.sep).join('/') + if (rel === 'README.md' || rel === 'index.md') continue // 首页单独处理 + const fm = parseFrontmatter(file) + if (!fm.permalink) { + console.warn(`[warn] 无 permalink,跳过: ${prefix}${rel}`) + continue + } + const url = permalinkToTarget(fm.permalink).replace(/\.md$/, '') + if (map.has(url)) throw new Error(`permalink 重复: ${url} (${map.get(url).file} 与 ${file})`) + map.set(url, { file: `${prefix}${rel}`, title: fm.title || '' }) + } + return map +} + +const enMap = collectMap(EN_DIR, '') +const zhMap = collectMap(ZH_DIR, 'zh/') + +// ---- downloadFile.json:CI 构建时下载生成的额外页面 ------------------------- +if (fs.existsSync(DOWNLOAD_JSON)) { + for (const { output, meta } of JSON.parse(fs.readFileSync(DOWNLOAD_JSON, 'utf8'))) { + const rel = output.replace(/^\.\//, '').replace(/^docs\//, '') + const url = permalinkToTarget(meta.permalink).replace(/\.md$/, '') + const target = rel.startsWith('zh/') ? zhMap : enMap + if (target.has(url)) { + if (target.get(url).file !== rel) { + console.warn(`[warn] downloadFile.json 覆盖已有映射: ${url} -> ${rel}`) + } + } + target.set(url, { file: rel, title: meta.title || '' }) + } +} + +// ---- 生成 rewrites --------------------------------------------------------- +const rewrites = {} +for (const [url, { file }] of enMap) rewrites[file] = `${url}.md` +for (const [url, { file }] of zhMap) rewrites[file] = `zh/${url}.md` + +const targets = new Map() +for (const [src, dst] of Object.entries(rewrites)) { + if (targets.has(dst)) throw new Error(`目标路径重复: ${dst}(${targets.get(dst)} 与 ${src})`) + targets.set(dst, src) +} + +fs.mkdirSync(path.join(ROOT, '.vitepress'), { recursive: true }) +fs.writeFileSync( + path.join(ROOT, '.vitepress/rewrites.generated.json'), + JSON.stringify(rewrites, null, 2) + '\n' +) + +// ---- URL 基线 -------------------------------------------------------------- +const baseline = [...new Set([...enMap.keys(), ...zhMap.keys()])] + .sort() + .map((url) => ({ + url, + en: enMap.get(url)?.file || null, + zh: zhMap.get(url)?.file || null, + // 迁移后该 URL 上实际提供的语言(zh-only 页面迁往 /zh/,根路径由 301 兜底) + liveAt: enMap.has(url) ? 'root' : 'redirect-to-zh' + })) +fs.mkdirSync(path.join(ROOT, 'scripts'), { recursive: true }) +fs.writeFileSync( + path.join(ROOT, 'scripts/baseline-urls.json'), + JSON.stringify(baseline, null, 2) + '\n' +) + +// ---- 仅中文页面的旧 URL 301 ------------------------------------------------ +const zhOnly = baseline.filter((b) => b.liveAt === 'redirect-to-zh') +const conf = [ + '# 本文件由 scripts/gen-rewrites.mjs 生成,勿手改。', + '# 仅中文版本(暂无英文翻译)的页面:旧根路径 URL -> /zh/ 新路径。', + ...zhOnly.map( + ({ url }) => + `rewrite ^/docs/${url}/?$ /docs/zh/${url}? permanent;\nrewrite ^/docs/${url}\\.html$ /docs/zh/${url}? permanent;` + ), + '' +].join('\n') +fs.writeFileSync(path.join(ROOT, 'nginx/zh-only-redirects.conf'), conf) + +console.log( + `EN 页面: ${enMap.size},ZH 页面: ${zhMap.size},rewrites: ${Object.keys(rewrites).length},` + + `zh-only 重定向: ${zhOnly.length}` +) diff --git a/scripts/lib/corpus.mjs b/scripts/lib/corpus.mjs new file mode 100644 index 00000000..59a4f01b --- /dev/null +++ b/scripts/lib/corpus.mjs @@ -0,0 +1,76 @@ +// 语料库工具:收集中英两棵内容树的 URL 映射,供 gen-rewrites / check-urls +// 及 .vitepress/markdown/legacy-links.ts(渲染期链接适配)共用。 +// URL 模型:英文页 = permalink 原样;中文页 = permalink 加 /zh/ 前缀。 +// +// 注意:本模块会被 esbuild 打包进 VitePress 配置(临时文件),不能用 +// import.meta.dirname 推导仓库根;所有入口(dev/build/脚本)均从仓库根启动, +// 用 process.cwd() 定位。 +import fs from 'node:fs' +import path from 'node:path' + +export const ROOT = process.cwd() + +export function parseFrontmatter(file) { + const m = fs.readFileSync(file, 'utf8').match(/^---\r?\n([\s\S]*?)\r?\n---/) + const out = {} + if (m) { + for (const line of m[1].split(/\r?\n/)) { + const kv = line.match(/^(\w+):\s*(.*)$/) + if (kv) out[kv[1]] = kv[2].trim().replace(/^['"]|['"]$/g, '') + } + } + return out +} + +export function permalinkToUrl(permalink) { + return permalink.trim().replace(/^\/+|\/+$/g, '') +} + +function walkMd(dir, filter = () => true) { + const result = [] + if (!fs.existsSync(dir)) return result + for (const name of fs.readdirSync(dir).sort()) { + if (!filter(name)) continue + const full = path.join(dir, name) + if (fs.statSync(full).isDirectory()) result.push(...walkMd(full, filter)) + else if (name.endsWith('.md')) result.push(full) + } + return result +} + +/** + * 英文源树:CI 合并后位于 docs/<编号目录>,本地提交态回退到 translate/translated + */ +export function enTreeRoot() { + return fs.existsSync(path.join(ROOT, 'docs/01-about')) + ? path.join(ROOT, 'docs') + : path.join(ROOT, 'translate/translated') +} + +/** + * @returns {{ enMap: Map, zhMap: Map }} + * url(无前后斜杠,如 'about/overview') -> srcDir 相对源文件路径 + * + * 数据来源为 .vitepress/rewrites.generated.json(单一事实来源,反查其映射): + * - 本仓库提交态的该文件由 scripts/gen-rewrites.mjs 生成,内容与逐文件解析 + * permalink 等价; + * - 企业版(df-help)构建时会在合并内容后重新生成该文件,额外包含大量无 + * permalink 的历史页面(按去编号目录路径推导 URL),本函数随之自动覆盖, + * 使 legacy-links 对这些页面的链接也能解析。 + */ +export function collectMaps() { + const enMap = new Map() + const zhMap = new Map() + + const rewrites = JSON.parse( + fs.readFileSync(path.join(ROOT, '.vitepress/rewrites.generated.json'), 'utf8') + ) + for (const [src, target] of Object.entries(rewrites)) { + const isZh = target.startsWith('zh/') + const url = target.replace(/^zh\//, '').replace(/\.md$/, '') + const map = isZh ? zhMap : enMap + if (url && !map.has(url)) map.set(url, src) + } + + return { enMap, zhMap } +} diff --git a/translate/translated/07-configuration/README.md b/translate/translated/07-configuration/README.md deleted file mode 100644 index b5c8502f..00000000 --- a/translate/translated/07-configuration/README.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -permalink: /zh/configuration ---- - -# Configuration Manual -> This document was translated by ChatGPT - -> This document was translated by ChatGPT diff --git a/vdoing/LICENSE b/vdoing/LICENSE deleted file mode 100644 index 16d67321..00000000 --- a/vdoing/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019-present gaoyi(Evan) Xu - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vdoing/README.md b/vdoing/README.md deleted file mode 100644 index 9d54bedb..00000000 --- a/vdoing/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# vuepress-theme-vdoing - -vuepress-theme-vdoing for vuepress - -一个基于VuePress的 知识管理兼博客 主题。 - -[More](https://github.com/xugaoyi/vuepress-theme-vdoing#readme). diff --git a/vdoing/assets/images/lang.svg b/vdoing/assets/images/lang.svg deleted file mode 100644 index 3f57fbc5..00000000 --- a/vdoing/assets/images/lang.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/vdoing/assets/images/logo.svg b/vdoing/assets/images/logo.svg deleted file mode 100644 index c8a3c65c..00000000 --- a/vdoing/assets/images/logo.svg +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vdoing/assets/images/nav.svg b/vdoing/assets/images/nav.svg deleted file mode 100644 index ac40ba58..00000000 --- a/vdoing/assets/images/nav.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/vdoing/components/AlgoliaSearchBox.vue b/vdoing/components/AlgoliaSearchBox.vue deleted file mode 100644 index 500aff37..00000000 --- a/vdoing/components/AlgoliaSearchBox.vue +++ /dev/null @@ -1,167 +0,0 @@ - - - - - diff --git a/vdoing/components/ArticleInfo.vue b/vdoing/components/ArticleInfo.vue deleted file mode 100644 index babf0f04..00000000 --- a/vdoing/components/ArticleInfo.vue +++ /dev/null @@ -1,167 +0,0 @@ - - - - - diff --git a/vdoing/components/BodyBgImg.vue b/vdoing/components/BodyBgImg.vue deleted file mode 100644 index 15186e62..00000000 --- a/vdoing/components/BodyBgImg.vue +++ /dev/null @@ -1,53 +0,0 @@ - - - - - diff --git a/vdoing/components/Buttons.vue b/vdoing/components/Buttons.vue deleted file mode 100644 index da2fbb47..00000000 --- a/vdoing/components/Buttons.vue +++ /dev/null @@ -1,264 +0,0 @@ - - - - - diff --git a/vdoing/components/DropdownLink.vue b/vdoing/components/DropdownLink.vue deleted file mode 100644 index 7e8bd9e6..00000000 --- a/vdoing/components/DropdownLink.vue +++ /dev/null @@ -1,228 +0,0 @@ - - - - - diff --git a/vdoing/components/DropdownTransition.vue b/vdoing/components/DropdownTransition.vue deleted file mode 100644 index 8b1b4b19..00000000 --- a/vdoing/components/DropdownTransition.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - - - diff --git a/vdoing/components/Footer.vue b/vdoing/components/Footer.vue deleted file mode 100644 index 2a335adc..00000000 --- a/vdoing/components/Footer.vue +++ /dev/null @@ -1,266 +0,0 @@ - - - - - diff --git a/vdoing/components/Home.vue b/vdoing/components/Home.vue deleted file mode 100644 index 9e139ff5..00000000 --- a/vdoing/components/Home.vue +++ /dev/null @@ -1,153 +0,0 @@ - - - - - diff --git a/vdoing/components/MainLayout.vue b/vdoing/components/MainLayout.vue deleted file mode 100644 index 7cc938d8..00000000 --- a/vdoing/components/MainLayout.vue +++ /dev/null @@ -1,59 +0,0 @@ - - diff --git a/vdoing/components/NavLink.vue b/vdoing/components/NavLink.vue deleted file mode 100644 index 93feac7e..00000000 --- a/vdoing/components/NavLink.vue +++ /dev/null @@ -1,54 +0,0 @@ - - - diff --git a/vdoing/components/NavLinks.vue b/vdoing/components/NavLinks.vue deleted file mode 100644 index bc6664c3..00000000 --- a/vdoing/components/NavLinks.vue +++ /dev/null @@ -1,154 +0,0 @@ - - - - - diff --git a/vdoing/components/Navbar.vue b/vdoing/components/Navbar.vue deleted file mode 100644 index f2e64415..00000000 --- a/vdoing/components/Navbar.vue +++ /dev/null @@ -1,494 +0,0 @@ - - - - - diff --git a/vdoing/components/Page.vue b/vdoing/components/Page.vue deleted file mode 100644 index ab2f5021..00000000 --- a/vdoing/components/Page.vue +++ /dev/null @@ -1,304 +0,0 @@ - - - - - diff --git a/vdoing/components/PageEdit.vue b/vdoing/components/PageEdit.vue deleted file mode 100644 index 65450941..00000000 --- a/vdoing/components/PageEdit.vue +++ /dev/null @@ -1,116 +0,0 @@ - - - diff --git a/vdoing/components/PageNav.vue b/vdoing/components/PageNav.vue deleted file mode 100644 index 3b250211..00000000 --- a/vdoing/components/PageNav.vue +++ /dev/null @@ -1,212 +0,0 @@ - - - diff --git a/vdoing/components/RightMenu.vue b/vdoing/components/RightMenu.vue deleted file mode 100644 index c4d1371b..00000000 --- a/vdoing/components/RightMenu.vue +++ /dev/null @@ -1,221 +0,0 @@ - - - - - diff --git a/vdoing/components/Sidebar.vue b/vdoing/components/Sidebar.vue deleted file mode 100644 index 69d9a45b..00000000 --- a/vdoing/components/Sidebar.vue +++ /dev/null @@ -1,94 +0,0 @@ - - - - - diff --git a/vdoing/components/SidebarButton.vue b/vdoing/components/SidebarButton.vue deleted file mode 100644 index b5b6de62..00000000 --- a/vdoing/components/SidebarButton.vue +++ /dev/null @@ -1,65 +0,0 @@ - - - diff --git a/vdoing/components/SidebarGroup.vue b/vdoing/components/SidebarGroup.vue deleted file mode 100644 index 3ae233fe..00000000 --- a/vdoing/components/SidebarGroup.vue +++ /dev/null @@ -1,143 +0,0 @@ - - - - - diff --git a/vdoing/components/SidebarLink.vue b/vdoing/components/SidebarLink.vue deleted file mode 100644 index e52f5542..00000000 --- a/vdoing/components/SidebarLink.vue +++ /dev/null @@ -1,200 +0,0 @@ - - - diff --git a/vdoing/components/SidebarLinks.vue b/vdoing/components/SidebarLinks.vue deleted file mode 100644 index 5637f3fb..00000000 --- a/vdoing/components/SidebarLinks.vue +++ /dev/null @@ -1,125 +0,0 @@ - - - diff --git a/vdoing/config.js b/vdoing/config.js deleted file mode 100644 index 17657b15..00000000 --- a/vdoing/config.js +++ /dev/null @@ -1,4 +0,0 @@ -export default { - base: "/docs/", - firstEntryAutoJumpZhUrl: '', -}; diff --git a/vdoing/enhanceApp.js b/vdoing/enhanceApp.js deleted file mode 100644 index a102adbf..00000000 --- a/vdoing/enhanceApp.js +++ /dev/null @@ -1,123 +0,0 @@ -// 解决代码选项卡无法加载的问题 -import Vue from 'vue' -import Router from 'vue-router' -import CodeBlock from "@theme/global-components/CodeBlock.vue" -import CodeGroup from "@theme/global-components/CodeGroup.vue" -// Register the Vue global component -Vue.component(CodeBlock) -Vue.component(CodeGroup) - -function decode (str) { - try { - return decodeURIComponent(str) - } catch (err) { - if (process.env.NODE_ENV !== 'production') { - warn(false, ("Error decoding \"" + str + "\". Leaving it intact.")); - } - } - return str -} - -function getUrlParam (string, name) { - return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(string) || [, ""])[1].replace(/\+/g, '%20')) || null -} - -const VueRouterMatch = Router.prototype.match -Router.prototype.match = function match (raw, currentRoute, redirectedFrom) { - if (typeof raw === 'string') { - raw = decode(raw) - } - return VueRouterMatch.call(this, raw, currentRoute, redirectedFrom) -} - -const createRouter = (routes) => - new Router({ - mode: 'history', - routes: routes.map(item => { - if ('name' in item) { - return { - ...item, - name: item.path, - } - } - return item - }) - }) - -export default ({ - Vue, // VuePress 正在使用的 Vue 构造函数 - options, // 附加到根实例的一些选项 - router, // 当前应用的路由实例 - siteData // 站点元数据 -}) => { - // 用初始化的matcher替换当前router的matcher 为了修改name - router.matcher = createRouter(router.options.routes).matcher - - // 修复ISO8601时间格式为普通时间格式,以及添加作者信息 - siteData.pages.map(item => { - const { frontmatter: { date, author } } = item - if (typeof date === 'string' && date.charAt(date.length - 1) === 'Z') { - item.frontmatter.date = repairUTCDate(date) - } - if (author) { - item.author = author - } else { - if (siteData.themeConfig.author) { - item.author = siteData.themeConfig.author - } - } - }) -} - -/** - * 分为5个来源 - * 1. ce-demo - * 2. self - * 3. deepflow.yunshan.net - * 4. github - * 5. gitlab - * 6. 其他==自建来源 - * @param {*} referrer - * @returns - */ -function referrerTransform (referrer) { - if (referrer.startsWith('https://ce-demo.deepflow.yunshan.net/')) { - return referrer - } - if (referrer.startsWith('https://deepflow.yunshan.net')) { - return 'https://deepflow.yunshan.net/' - } - if (referrer.startsWith('https://github.com/')) { - return 'https://github.com/' - } - if (referrer.startsWith('https://gitlab.yunshan.net/')) { - return 'https://gitlab.yunshan.net/' - } - return referrer || 'self' -} - -// 修复ISO8601时间格式为普通时间格式 -function repairUTCDate (date) { - if (!(date instanceof Date)) { - date = new Date(date) - } - return `${date.getUTCFullYear()}-${zero(date.getUTCMonth() + 1)}-${zero(date.getUTCDate())} ${zero(date.getUTCHours())}:${zero(date.getUTCMinutes())}:${zero(date.getUTCSeconds())}`; -} -// 小于10补0 -function zero (d) { - return d.toString().padStart(2, '0') -} - -// 获取下环境变量 -function getEnv () { - if (typeof window === 'undefined') { - return 'building' - } - if (process.env.NODE_ENV === 'development') { - return 'development' - } - if (window.location.port === '7788') { - return 'test' - } - return 'production' -} \ No newline at end of file diff --git a/vdoing/font/font_1678482_4tbhmh589x.styl b/vdoing/font/font_1678482_4tbhmh589x.styl deleted file mode 100644 index 012c37ed..00000000 --- a/vdoing/font/font_1678482_4tbhmh589x.styl +++ /dev/null @@ -1,196 +0,0 @@ -@font-face - font-family: "iconfont"; /* Project id 1678482 */ - src: url('./../font/font_1678482_4tbhmh589x.woff2') format('woff2'), - url('./../font/font_1678482_4tbhmh589x.woff') format('woff'), - url('./../font/font_1678482_4tbhmh589x.ttf') format('truetype'); - -.iconfont - font-family: "iconfont" !important; - font-size: 16px; - font-style: normal; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -.icon-douban:before - content: "\e60f" - -.icon-xiangce:before - content: "\e640"; - - - .icon-telegram:before - content: "\e616"; - - - .icon-douyin:before - content: "\e603"; - - - .icon-shuben:before - content: "\e76a"; - - - .icon-mao:before - content: "\e641"; - - - .icon-csdn:before - content: "\e6d7"; - - - .icon-yuque:before - content: "\e611"; - - - .icon-youtube:before - content: "\e6c9"; - - - .icon-gitee:before - content: "\e686"; - - - .icon-bi:before - content: "\e602"; - - - .icon-v2ex:before - content: "\e63b"; - - - .icon-weixin:before - content: "\e62e"; - - - .icon-weibo:before - content: "\e63e"; - - - .icon-zhihu:before - content: "\e69a"; - - - .icon-sf:before - content: "\e605"; - - - .icon-rss:before - content: "\e84c"; - - - .icon-facebook:before - content: "\e6fc"; - - - .icon-juejin:before - content: "\e610"; - - - .icon-bokeyuan:before - content: "\e6b1"; - - - .icon-npm:before - content: "\e74e"; - - - .icon-twitter:before - content: "\e600"; - - - .icon-jianshu:before - content: "\e601"; - - - .icon-bilibili:before - content: "\eea8"; - - - .icon-shizhong:before - content: "\e60c"; - - - .icon-home:before - content: "\e61a"; - - - .icon-touxiang:before - content: "\e655"; - - - .icon-jiantou-zuo:before - content: "\e622"; - - - .icon-jiantou-you:before - content: "\e9ed"; - - - .icon-zhiding:before - content: "\e604"; - - - .icon-wenjianjia:before - content: "\e64b"; - - - .icon-biaoqian1:before - content: "\e60a"; - - - .icon-wenjian:before - content: "\e73e"; - - - .icon-biaoqian:before - content: "\e6eb"; - - - .icon-zidong:before - content: "\e9eb"; - - - .icon-zhuti:before - content: "\e649"; - - - .icon-yejianmoshi:before - content: "\e632"; - - - .icon-rijianmoshi:before - content: "\e630"; - - - .icon-riqi:before - content: "\e870"; - - - .icon-yuedu:before - content: "\e617"; - - - .icon-pinglun:before - content: "\e628"; - - - .icon-fanhuidingbu:before - content: "\e623"; - - - .icon-QQ:before - content: "\e882"; - - - .icon-erji:before - content: "\e63f"; - - - .icon-youjian:before - content: "\e648"; - - - .icon-github:before - content: "\e972"; - - \ No newline at end of file diff --git a/vdoing/font/font_1678482_4tbhmh589x.ttf b/vdoing/font/font_1678482_4tbhmh589x.ttf deleted file mode 100644 index e779eaf93bc3f6ff8aea3051e5113cedfcaf34a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13272 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 diff --git a/vdoing/font/font_1678482_4tbhmh589x.woff b/vdoing/font/font_1678482_4tbhmh589x.woff deleted file mode 100644 index fe1db6d71f912b71aa15c82382b2dda95ac3812b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9176 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 LT+5;V{R00F!;+c) diff --git a/vdoing/font/font_1678482_4tbhmh589x.woff2 b/vdoing/font/font_1678482_4tbhmh589x.woff2 deleted file mode 100644 index 5296fcd06955155b876072b503b323515a4106e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7940 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 diff --git a/vdoing/global-components/Badge.vue b/vdoing/global-components/Badge.vue deleted file mode 100644 index c89600dc..00000000 --- a/vdoing/global-components/Badge.vue +++ /dev/null @@ -1,44 +0,0 @@ - - - diff --git a/vdoing/global-components/CodeBlock.vue b/vdoing/global-components/CodeBlock.vue deleted file mode 100644 index 50cf503f..00000000 --- a/vdoing/global-components/CodeBlock.vue +++ /dev/null @@ -1,38 +0,0 @@ - - - - - diff --git a/vdoing/global-components/CodeGroup.vue b/vdoing/global-components/CodeGroup.vue deleted file mode 100644 index 871c295d..00000000 --- a/vdoing/global-components/CodeGroup.vue +++ /dev/null @@ -1,99 +0,0 @@ - - - - - diff --git a/vdoing/global-components/CodeTabs.vue b/vdoing/global-components/CodeTabs.vue deleted file mode 100644 index d8e58af5..00000000 --- a/vdoing/global-components/CodeTabs.vue +++ /dev/null @@ -1,163 +0,0 @@ - - - - diff --git a/vdoing/index.js b/vdoing/index.js deleted file mode 100644 index 12e5069b..00000000 --- a/vdoing/index.js +++ /dev/null @@ -1,328 +0,0 @@ -const path = require("path"); -const { - createREADMEFileAndSetFrontmatterAndGetSideBar, -} = require("./node_utils/index"); -const chalk = require("chalk"); // 命令行打印美化 -const yaml = require("js-yaml"); // yaml转js -const log = console.log; - -// md容器名 -const CARD_LIST = "cardList"; -const CARD_IMG_LIST = "cardImgList"; - -// siteConfig base 配置 -let base = ""; - -// Theme API. -module.exports = (options, ctx) => { - const { sourceDir, themeConfig, siteConfig } = ctx; - // base路径 - base = siteConfig.base || ""; - // 三合一步骤 一次遍历实现全部结果 - const { sidebarData, simpledSidebarData } = - createREADMEFileAndSetFrontmatterAndGetSideBar(sourceDir, themeConfig); - themeConfig.sidebar = sidebarData; - siteConfig.markdown.sidebar = simpledSidebarData; - log( - chalk.blue("tip ") + chalk.green("add sidebar data. 成功生成侧边栏数据。") - ); - - // resolve algolia - const isAlgoliaSearch = - themeConfig.algolia || - Object.keys((siteConfig.locales && themeConfig.locales) || {}).some( - (base) => themeConfig.locales[base].algolia - ); - - const enableSmoothScroll = themeConfig.smoothScroll === true; - - return { - devTemplate: "./templates/dev.html", - ssrTemplate: "./templates/ssr.html", - - alias() { - return { - "@AlgoliaSearchBox": isAlgoliaSearch - ? path.resolve(__dirname, "components/AlgoliaSearchBox.vue") - : path.resolve(__dirname, "noopModule.js"), - }; - }, - - plugins: [ - // ['@vuepress/active-header-links', options.activeHeaderLinks], - "@vuepress/search", - "@vuepress/plugin-nprogress", - ["smooth-scroll", enableSmoothScroll], - - [ - "container", - { - type: "note", - defaultTitle: { - "/": "笔记", - "/en/": "NOTE", - }, - }, - ], - [ - "container", - { - type: "tip", - defaultTitle: { - "/": "提示", - "/en/": "TIP", - }, - }, - ], - [ - "container", - { - type: "warning", - defaultTitle: { - "/": "注意", - "/en/": "WARNING", - }, - }, - ], - [ - "container", - { - type: "danger", - defaultTitle: { - "/": "警告", - "/en/": "WARNING", - }, - }, - ], - [ - "container", - { - type: "right", - defaultTitle: "", - }, - ], - [ - "container", - { - type: "theorem", - before: (info) => - `

    ${info}

    `, - after: "
    ", - }, - ], - [ - "container", - { - type: "details", - before: (info) => - `
    ${ - info ? `${info}` : "" - }\n`, - after: () => "
    \n", - defaultTitle: { - "/": "点击查看", - "/en/": "DETAILS", - }, - }, - ], - - // 内容居中容器 - [ - "container", - { - type: "center", - before: (info) => `
    `, - after: () => "
    ", - }, - ], - - // 卡片列表 - [ - "container", - { - type: CARD_LIST, - render: (tokens, idx) => { - // tokens 是整个md文件的虚拟dom结构数组 - // idx 是tokens中':::' 所在的索引,而且是当前指定type的':::',分别有开始和结束两次的idx - // if (tokens[idx].nesting === 1) { // 开头的 ':::' 标记 - // } else { // 结束的 ':::' 标记 - // } - // 注意:修改这里面的代码后需要在md文件保存一下才会重新执行渲染 - return renderCardList(tokens, idx, CARD_LIST); - }, - }, - ], - - // 图文卡片列表 - [ - "container", - { - type: CARD_IMG_LIST, - render: (tokens, idx) => { - return renderCardList(tokens, idx, CARD_IMG_LIST); - }, - }, - ], - ], - }; -}; - -// 渲染md容器的卡片列表 -function renderCardList(tokens, idx, type) { - const END_TYPE = `container_${type}_close`, - _tokens$idx = tokens[idx], - nesting = _tokens$idx.nesting, - info = _tokens$idx.info; - - if (nesting === 1) { - // 渲染开头的 ':::' 标记 - let yamlStr = ""; - - for (let i = idx; i < tokens.length; i++) { - let _tokens$i = tokens[i], - type = _tokens$i.type, - content = _tokens$i.content, - _info = _tokens$i.info; - if (type === END_TYPE) break; // 遇到结束的 ':::' 时 - if (!content) continue; - if (type === "fence" && _info === "yaml") { - // 是代码块类型,并且是yaml代码 - yamlStr = content; - } - } - - if (yamlStr) { - // 正确解析出yaml字符串后 - const dataObj = yaml.safeLoad(yamlStr); // 将yaml字符串解析成js对象 - let dataList = []; - let config = {}; - - if (dataObj) { - // 正确解析出数据对象 - if (Array.isArray(dataObj)) { - dataList = dataObj; - } else { - config = dataObj.config; - dataList = dataObj.data; - } - } - - if (dataList && dataList.length) { - // 有列表数据 - - // 每行显示几个 - let row = Number(info.split(" ").pop()); - if (!row || row > 4 || row < 1) { - row = 3; // 默认 3 - } - - let listDOM = ""; - if (type === CARD_LIST) { - // 普通卡片列表 - listDOM = getCardListDOM(dataList, row, config); - } else if (type === CARD_IMG_LIST) { - // 卡片图片列表 - listDOM = getCardImgListDOM(dataList, row, config); - } - - return `
    ${listDOM}
    `; - } - } - } else { - // 渲染':::' 结尾 - return "
    "; - } -} - -// 将数据解析成DOM结构 - 普通卡片列表 -function getCardListDOM(dataList, row, config) { - const { target = "_blank" } = config; - let listDOM = ""; - dataList.forEach((item) => { - listDOM += ` - <${ - item.link - ? 'a href="' + withBase(item.link) + '" target="' + target + '"' - : "span" - } class="card-item ${row ? "row-" + row : ""}" - style="${ - item.bgColor - ? "background-color:" + - item.bgColor + - ";--randomColor:" + - item.bgColor + - ";" - : "--randomColor: var(--bodyBg);" - }${item.textColor ? "color:" + item.textColor + ";" : ""}" - > - ${ - item.avatar - ? '' - : "" - } -
    -

    ${item.name}

    -

    ${item.desc}

    -
    - - `; - }); - return listDOM; -} - -// 将数据解析成DOM结构 - 图文卡片列表 -function getCardImgListDOM(dataList, row, config) { - const { - imgHeight = "auto", - objectFit = "cover", - lineClamp = 1, - target = "_blank", - } = config; - - let listDOM = ""; - dataList.forEach((item) => { - listDOM += ` - - `; - }); - return listDOM; -} - -// 添加base路径 -function withBase(path) { - if (!path) return ""; - if (base && path.charAt(0) === "/") { - return base + path.slice(1); - } else { - return path; - } -} diff --git a/vdoing/layouts/404.vue b/vdoing/layouts/404.vue deleted file mode 100644 index 0a0abab9..00000000 --- a/vdoing/layouts/404.vue +++ /dev/null @@ -1,65 +0,0 @@ - - - - - diff --git a/vdoing/layouts/Layout.vue b/vdoing/layouts/Layout.vue deleted file mode 100644 index 2df0dd6c..00000000 --- a/vdoing/layouts/Layout.vue +++ /dev/null @@ -1,413 +0,0 @@ - - - - - diff --git a/vdoing/locales/en.js b/vdoing/locales/en.js deleted file mode 100644 index 1508bd4c..00000000 --- a/vdoing/locales/en.js +++ /dev/null @@ -1,16 +0,0 @@ -export default { - product: "Product", - agent: "Agent", - openSource: "Open Source", - eBPF: "eBPF", - learn: "Learn", - deepflowCloud: "DeepFlow Cloud", - deepflowEnter: "DeepFlow Enterprise", - community: "DeepFlow (Community)", - docs: "Docs", - deepflowCloudDocs: "DeepFlow Cloud Docs", - blog: "Blog", - authentication: "Certification", - createdAt: 'Created', - updateAt: 'Last Modified' -} \ No newline at end of file diff --git a/vdoing/locales/index.js b/vdoing/locales/index.js deleted file mode 100644 index 86ebd3d7..00000000 --- a/vdoing/locales/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import zh from './zh' -import en from './en' - -export default { - zh, en -} \ No newline at end of file diff --git a/vdoing/locales/zh.js b/vdoing/locales/zh.js deleted file mode 100644 index 57a4ce30..00000000 --- a/vdoing/locales/zh.js +++ /dev/null @@ -1,16 +0,0 @@ -export default { - product: "产品", - agent: "智能体", - openSource: "开源", - eBPF: "eBPF", - learn: "学习", - deepflowCloud: "DeepFlow Cloud", - deepflowEnter: "DeepFlow Enterprise", - community: "DeepFlow (Community)", - docs: "文档", - deepflowCloudDocs: "DeepFlow Cloud文档", - blog: "博客", - authentication: "认证", - createdAt: '创建时间', - updateAt: '最近修改时间' -} \ No newline at end of file diff --git a/vdoing/mixins/titleBadge.js b/vdoing/mixins/titleBadge.js deleted file mode 100644 index 224f0c05..00000000 --- a/vdoing/mixins/titleBadge.js +++ /dev/null @@ -1,28 +0,0 @@ -export default { - data () { - return { - badges: [ - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABGpJREFUSA3tVVtoXFUU3fvOI53UlmCaKIFmwEhsE7QK0ipFEdHEKpXaZGrp15SINsXUWvBDpBgQRKi0+KKoFeJHfZA+ED9KKoIU2gYD9UejTW4rVIzm0VSTziPzuNu1z507dibTTjL4U/DAzLn3nL3X2o91ziX6f9wMFdh6Jvbm9nNSV0msViVO6tN1Rm7NMu2OpeJ9lWBUTDxrJbYTS0hInuwciu9eLHlFxCLCZEk3MegsJmZ5K/JD6t7FkFdEvGUo1g7qJoG3MHImqRIn8/nzY1K9UPKKiJmtnUqHVE3Gbuay6vJE/N2FEmuxFjW2nUuE0yQXRRxLiTUAzs36zhZvOXJPdX850EVnnLZkB8prodQoM5JGj7Xk2mvC7JB8tG04Ef5PiXtG0UtxupRQSfTnBoCy554x18yJHI6I+G5Eru4LHmPJZEQsrvPUbMiA8G/WgMK7w7I+ez7++o2ANfbrjvaOl1tFMs+htG3IrZH9/hDX1Pr8Tc0UvH8tcX29KzAgIGcEkINyW5BF9x891hw6VYqgJHEk0huccS7vh3C6gTiODL+26huuBtbct8eZnqLML8PkxGYpuPZBqtqwkSjgc4mB5gbgig5i+y0UDK35LMxXisn9xQtK+nd26gTIHsHe/oblK/b29fUmN/8Y+9jAQrnBp56m1LcDlDp9irKTExSKduXJVWSqdBMA08pEJnEIOB3FPPMybu/oeV8zFeYN3xx576Q6RH+VmplE4ncQV5v+5rzSoyOU7PuEAg8g803PwBJ0CExno/jcMbN8tONYeOmHiuUNryvm3fRUy4tMPVLdAGkUhNWuggGrJcXPv+ouCjz0MKUHz1J2/E8IC9nqTabcxgaBYM0hPhD5Y65FsbxRQKxCQrDjDctW7PUM3HuZunFyifSAqEfuzCp48Il24luWUWZoyJCaPR82jE0+kFA643wRFVni4RYSq3ohJO2pZ7B5dO4xkDWbEpossJPLSrPjYID8rS2UHTlvyNxqIGsg674XJJ7vnh5L7PNwC4hh2sjCI96mzszOTpxLF0T7l88Yz7lAuK6OnL8gXLOnTvpzSb22YG8W7us3jSebFHeeqnXRG1vt+MoUM84LQIBmMsCTAcOauTh0T0l0neQK7m2bLMt2mGxU3HYssS0J2cdv5wljlPsrIuZLAG/2DOZIXgCYT8uMGZN+e2kSirfxZOPCsC0f24nTZzspnVn9VePS1Z5vubmAGGXG8ZFno9Hel0yfA5ZPhF7Dh972BQJ2qCpgH67lmWtBYbvk6sz02wjky2vXyz0XErP/kFB619js1BtwfOV4OPRqOQBjy3Qbk18vigUPPSD5ceHnwck7W9bhAqZdd7SuG7w4/P2F/GaJh8c7e9qgow+Q7cGBo+98WsLkuktFqiZabtXuQTu/Y5ETbR0v7tNSFnvrmu6pjdoan2KjMu8q/Hmj1EfCO2ZGfEIbIXKUlw8qaX9/b2oeSJmFksSeT/Fn0V3nSypChh4Gjh74ybO9aeZ/AN2dwciu2/MhAAAAAElFTkSuQmCC', - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABH1JREFUSA3tVl1oHFUUPmdmd2ltklqbpJDiNnXFmgbFktho7YMPNiJSSZM0+CAYSkUELVhM6YuwIPpgoOKDqOBDC0XE2CQoNtQXBUFTTcCi+Wlh1V2TQExsUzcltd3M9Tt3ZjZzZ2fT+OJTL8yeM+eee757fmeJbq//KQL8X3DUSFOcfr7cRsRtxNQMWueeVzOkaITIGqQHNg5y8+jNW9ldM7A6nTpAjuolUikAwq7CE3WcM2RRDz+XGVgN3FptU/aUSlvq9Pa3iZ1+sgAqJyyAFqkipd9dqiwHF3P65YycLWc/6sqGrvoEoIp6DOFaX5h6+dnfjkWprwqsPk0dUGq5vySwDImC10KxFHgGL1SWoc92O3eVht09qdXNH11I2SsTsJYqMWzihqGMi+A+Garf3BAuuLI5oGlULyNfyB/HYNujwktOfRrMr5t77NmevqaUopx0grnKAyvVpmwUDB4x6FPXuGvYLTDwWsejwgtgkYKPqRJg8SV6xaiZ3ZTppGneS4yfH5/66fZSDHv+QZci/+h5c5UHtpy67JUqGppM0sh0Nc1dW6/N1W5Yoqat8/TU/VnadmdeW2PLLSyh0cvxBs3KbqTmwYPpxN4do/mzE8nEpvX/UMu2Wbp74zUAK5q6WkHns7V0eWkdPbPzd3rxkTGybadYySumVzhcaJFbs5UrEkQ/+CK8gF5dnh/6ciIZ73gwQ927L1IitoxKLXYP3SjYdOrHHfTZhRRlFyrorafPk20B3HPD1y2G3qKZME5Jcf3t/HUC13/8tSd++vqFveMUTwAUxSUFI1QekR1+bIze3D9MF2aq6cPvG72CgnldWCFqyRw3lwH8ZMerjTD9ElRO7Gv44wNpC90aASqGfVlz/Rx17srQ57/UU26hkhQqUB7dBR71WmzQhHUnblGmVOEw0jhbV1n9OlXUDCIRGaNV5Jp43N516fN7JmnTHdfp7Hgy0luO4aMhtkLL8Bi3bUWYvzh5Mn1dTxrL6QmGuRhGL/TiTTxRoEdTszSaq9GR0NGA3KdkOz3hqSV3MIDhQ5IVX/Ivx3umBti2es2h4eZby7x8br1rkf7Mo90AqC8aQ3sJeNzqFRu+vSANAQe3PL7l0HGOAdwDCeZYvNKeoZp1Qfs6Aipndh86HmFRi0LAnEO47wsqM6cdfjh3jBPUzhZy7nvlUfFsamED1VQt6aISHVymXZ/B2aCtIG8AI8xfobj2d3en1wWVhOeHELKmLQ1s211s88comkv4UCwWyF787mJdYXtNfhKAXVqnKTq8QZvGAGGOfaTo5pGZ/PwbUCr5+DPr/1J92JNHr9aOl/F3iI5+O1nfybsGxoimvZ3ViWSluDITw3P37mypheDIPY0tw7+O/5ApbkYw+zpfaUVu32Pi98+defdUhEpZkRFq0aqyNh9FuL9hpYbEm6iwi0z2REd09ZmyENEbuhjDWzKvZXTqKYaBIr3tt5kuPtQBZFvEUwHt60vfCNu41XsksH9Ij1BMMz1Y0OOunHNShFIP5868g5zeXmuLwL9T4b6Q2+KejgAAAABJRU5ErkJggg==', - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABKFJREFUSA3tVl1oFVcQnrMbrak3QUgkya1akpJYcrUtIqW1JvFBE9LiQ5v6JmJpolbMg32rVrhgoYK0QiMY6i9Y6EMaW5D+xFJaTYItIuK2Kr3+BJNwkxBj05sQY3b3nM6cs2dv9t7NT/vQJw/sndk5M/PNzJkzewGerP+pAmy+ON8lLzUJgA8ZYxYIYZmGYRnctDaWvJJAmTtfP1pvXsBCCPP8QFcCaRkZYACgDZFO4stNIcBCajEOlmmC9XpJ9bAGCaPaPmzPl32dvLSVu3BWCTQs0XQQ6g0DYgwLIoAZbBCdW/i+781o1VVlm/410mw4h06Y7bIPHNyWDyL4FHkX03Q8SrzNhZTZriieckWt7cL6MM85YcLpsi/7O9/iXFT6MswI0DmmpkSaJ0qLxFIm3+i1THHB3zmBH3PYx9CcykcLOeQVVa7QtdxTgQgEleX2AjHYfwA+2ddV77ruGoJUbhGDI09YSNXyMpUt5ylOzxgbUmtOp7NmbNt8v3arjTBfYELmLUV+M+nSawNNAUqpT3ClJWg5I3BLT+cGW/DXNGCa6tx1aakCGEigArTn4TDIPdrXXYKCZNrHLMCOEPvHBlLQ99s9eHB7EB6NTki73CVPQ2F5MSx/uRQixfmq7rK0wYD8w8E905bnPDfwoWs/rfv93NWN/ZfvwsLIU7A09gxECyISeGJkHAau98L97tuw7NXnoPyNF8FcYGLGKsOs0mN3OEyec9esGW/ZEl945dTP34wlR2FZVQWU1q0Cw8Tr7p+hgLLNL0FPxx/Q35mA8aEUrH6nCgwEl0tn7wUiZYJnNRh6DK4UH/k0lfyrsBKdPVv/AriGIQcEDQZ65LBAGe2Rzui9Ybjz7XUppz1/uKBbyVPGkN3ZAeC6hr0x7Nr38N5+EqkoOm17xpoqR9ohQF55ERSvr4Dkr3chNfC3DMzGJlNBElW8w9nsGQvhNGIzDkXzCg8cLK951xHsFBlTJspJNi3ZFIMF2AeDV3q8DNOB+YHi6QTrChDIWDBRi5U5f+ZMfJLu3ccrqxtdxk4SKH336LFxSmkqefwU5T8fhdSdQf9IVKD6aNiwI/hnmcAZ91isYMJIaCUCx9W098+LgruikeTqzqqxKPUwqJyCPJiyemVVZBOijDGjD38Os0jOiSPL1z3SPjXNANbiNPXAdzTfukjjuknNBbyz3nwgTd3AVFqUJ5hpHlq9MveLnWwttUfoygBmvVjuikxND3znrhsELnZk7k+OjIGxeNEkomyLVta0xxn+HZhjBc4YZ/AFjHjz9u3xRZl2BN4aq9nFwWh16IrQ1aHHEd3j1+4/dB9OtH4e29A2H1DyHQRmOSfQZ1Fy7MHBTGB6J/Djq6p3OxyO2cB+4Car7v/o3GXgfAkj23+x9ID1Teoamo/SXcbvSf2PX7Vc8DdCmE1vN9di+32P9/5YR3vLnhCVGUWBjEkr3yh4H8v9CzmsbdhzOKzsJKM90iFdaTMjRPhGVsakRvOaRidljo6H6G7j+ctrJpsP+4COhDIl0La2+FS4+5mlocBaXY5QnGZysIBYoeSsl5qQzrSj/cgNrfuEzlWBfwA+EjrZyWUvpAAAAABJRU5ErkJggg==' - ], - currentBadge: '' - } - }, - created () { - if (this.$themeConfig.titleBadgeIcons) { - this.badges = this.$themeConfig.titleBadgeIcons - } - this.currentBadge = this.getBadge() - }, - watch: { - '$route.path' () { - this.currentBadge = this.getBadge() - } - }, - methods: { - getBadge () { - return this.badges[Math.floor(Math.random() * this.badges.length)] - } - } -} diff --git a/vdoing/node_utils/handlePage.js b/vdoing/node_utils/handlePage.js deleted file mode 100644 index cd3670a1..00000000 --- a/vdoing/node_utils/handlePage.js +++ /dev/null @@ -1,53 +0,0 @@ -// 生成或删除页面(分类页、标签页、归档页...) - -const fs = require('fs'); // 文件模块 -const path = require('path'); // 路径模块 -const chalk = require('chalk') // 命令行打印美化 -const { type } = require('./modules/fn'); -const log = console.log - -function createPage (sourceDir, page) { - const dirPath = path.join(sourceDir, '@pages') // 生成的文件夹路径 - - // 文件夹不存在时 - if (!fs.existsSync(dirPath)) { - fs.mkdirSync(dirPath) // 创建文件夹 - } - - const pagePath = path.join(dirPath, `${page}.md`) // 生成的文件路径 - - // 文件已经存在时跳出 - if (fs.existsSync(pagePath)) { - return - } - -} - -// 删除页面文件 -function deletePage (sourceDir, page) { - const dirPath = path.join(sourceDir, '@pages') // 文件夹路径 - const pagePath = path.join(dirPath, `${page}.md`) // 文件路径 - - // 文件是否存在 - if (fs.existsSync(pagePath)) { - fs.unlinkSync(pagePath) - log(chalk.blue('tip ') + chalk.green(`delete page(删除页面): ${pagePath}`)) - } - deleteDir(dirPath) -} - -// 删除文件夹 -function deleteDir (dirPath) { - if (fs.existsSync(dirPath)) { - const files = fs.readdirSync(dirPath) - if (type(files) === 'array' && files.length === 0) { - fs.rmdirSync(dirPath) - log(chalk.blue('tip ') + chalk.green(`delete dir(删除目录): ${dirPath}`)) - } - } -} - -module.exports = { - createPage, - deletePage -} diff --git a/vdoing/node_utils/index.js b/vdoing/node_utils/index.js deleted file mode 100644 index 7c3aa2af..00000000 --- a/vdoing/node_utils/index.js +++ /dev/null @@ -1,230 +0,0 @@ -const fs = require("fs"); // 文件模块 -const path = require("path"); // 路径模块 -const matter = require("gray-matter"); // -const jsonToYaml = require('json2yaml') -const os = require("os"); -const { checkLocalesFilename, getPermalink1, getPermalink, fileShouldCreateREADME, getCurrnetFileName } = require("./modules/filename"); -const { handleDate, type } = require("./modules/fn"); - -const FILE_NAME = 'README.md' // readme.md文件 -const LOCALES = require('../page-locales/index') -const cwd = process.cwd() -function getReallyContent(date) { - return type(date) === "date" ? handleDate(date) : date; -} -/** - * 三合一操作,遍历一次 - * 1. 检测是否需要readme文件 - * 2. 设置Frontmatter 数据 - * 3. 返回SideBar - * @param {*} sourceDir docs根目录 - * @param {*} themeConfig 主题配置 - */ -function createREADMEFileAndSetFrontmatterAndGetSideBar (sourceDir, themeConfig) { - const sidebarData = {}; - - let files = fs.readdirSync(sourceDir); - - // 先忽略vuepress @pages - files = files.filter((item) => ![".vuepress"].includes(item)); - - const currentFileName = getCurrnetFileName(sourceDir) - - const { sidebar } = handleFileAndGetSideBar(sourceDir, files, currentFileName); - - const en = sidebar.filter(toc => !toc.title || !checkLocalesFilename(toc.title)) - - sidebar.forEach(toc => { - if (toc.title && checkLocalesFilename(toc.title)) { - sidebarData[`/${path.basename(toc.title)}/`] = toc.children; - } - }) - - sidebarData['/'] = en - - return { - sidebarData, - simpledSidebarData: simplifySidebarData(sidebarData) - } -} - -// 进入到PS TS FS 目录 -function handleFileAndGetSideBar (sourceDir, files, currentFileName) { - const sidebar = []; // 结构化文章侧边栏数据 - // 检测readme存在 - files = files.includes(FILE_NAME) ? files.filter((item) => item !== FILE_NAME) : files; - /**--------files 无 readme文件-------*/ - - files.forEach((item) => { - const filePath = path.join(sourceDir, item); - const stat = fs.statSync(filePath); - if (stat.isDirectory()) { - const directoryPath = handlerReadmeFile(filePath) - // 如果是文件夹 则进行递归 - const res = handleFileAndGetSideBar(filePath, fs.readdirSync(filePath), item) - // 需要处理下文件名称 - const itemArr = item.split('-') - if (itemArr.length > 1) { - itemArr.shift() - } - const fullFile = path.sep + 'docs' + path.sep - // 需要截取docs目录后面那一串 - const itemStr = longestMatch(filePath.slice(cwd.length + fullFile.length)) - // 如果存在 sidebar或者directoryPath 两者之一 - if(res.sidebar.length || directoryPath){ - sidebar.push({ - title: itemStr, - collapsable: true, - path: directoryPath, - children: res.sidebar - }) - } - return false - } - - if (!item.endsWith('.md')) { - return false; - } - - const fileContent = fs.readFileSync(filePath, "utf8"); - const { data: matterData, content } = matter(fileContent, {}); - // 需要截取docs目录后面那一串 - let title = matterData.title - - if (!title) { - const fullFile = path.sep + "docs" + path.sep; - title = longestMatch(filePath.slice(cwd.length + fullFile.length).split(".md")[0]); - } - - // 首先检测下 title 是否存在 - if (!title) { - throw new Error("文件:" + filePath + "的title 属性缺失") - } - - // 除非title不存在,否则都需要处理 - let permalink = matterData.permalink || getPermalink(filePath) - sidebar.push([getPermalink1(filePath), title, permalink]) - - if (!matterData.permalink && permalink) { - if (matterData.createAt) { - matterData.createAt = getReallyContent(matterData.createAt); - } - if (matterData.updateAt) { - matterData.updateAt = getReallyContent(matterData.updateAt); - } - // 如果没有permalink 则需要回写到md中 - matterData.permalink = permalink - const newFileContent = jsonToYaml.stringify(matterData).replace(/\n\s{2}/g, "\n").replace(/"/g, "") + '---' + os.EOL + content; - // 把地址写入文件内 - fs.writeFileSync(filePath, newFileContent); - } - }) - - return { - sidebar - } -} - -// zh\01-about 01-about -function longestMatch (filePath) { - let lang - let current = 0 - if (Object.prototype.hasOwnProperty.call(LOCALES, filePath.split(path.sep)[0])) { - // 非 zh - lang = filePath.split(path.sep)[0] - current = 1; - - if (filePath.split(path.sep).length === 1) { - // 如果是语言,且只有一个的时候,直接返回 - return filePath - } - } else { - // en - lang = 'en' - current = 0 - } - - let itemArr = filePath.split(path.sep).slice(current).map(path => { - const pth = path.split('-') - if (pth.length > 1) { - pth.shift() - } - return pth.join('-') - // }).map((item, index, _this) => { - // const str = _this.slice(0, index + 1).join('/') - // // 先从根路径寻找全路径,然后再找本身翻译,最后返回自身 - // return LOCALES[lang][str] || LOCALES[lang][item] || item - }) - - let oldName = itemArr[itemArr.length - 1]; - while (itemArr.length) { - const item = itemArr.join('/') - if (item in LOCALES[lang]) { - return LOCALES[lang][item]; - } - itemArr = itemArr.slice(1); - } - - // 返回最后一项元素 - return oldName; -} - -// 独立处理readme文件 -function handlerReadmeFile(filePath){ - const readmePath = filePath + path.sep + "README.md"; - const hasReadme = fs.existsSync(readmePath) && !readmePath.includes('zh'+ path.sep + "README.md") - // 如果存在README 则需要读取内容的Permalink - let directoryPath = null - if (hasReadme) { - const fileContent = fs.readFileSync(readmePath, "utf8"); - const { data: matterData, content } = matter(fileContent, {}); - directoryPath = matterData.permalink - if(!directoryPath){ - directoryPath = getPermalink(filePath) - if (matterData.createAt) { - matterData.createAt = getReallyContent(matterData.createAt); - } - if (matterData.updateAt) { - matterData.updateAt = getReallyContent(matterData.updateAt); - } - matterData.permalink = directoryPath - // 不存在permalink - // 需要改动下readme的内容 - const newFileContent = jsonToYaml.stringify(matterData).replace(/\n\s{2}/g, "\n").replace(/"/g, "") + '---' + os.EOL + content; - fs.writeFileSync(readmePath, newFileContent); - } - } - return directoryPath -} - -// 简化sidebarData数据 -function simplifySidebarData (sidebarData) { - const result = {} - Object.keys(sidebarData).forEach(key => { - result[key] = [] - loop(sidebarData[key]) - function loop (array) { - array.forEach(sider => { - if ('path' in sider) { - if (sider.path) { - result[key].push({ - old: sider.path, - new: sider.path - }) - } - loop(sider.children) - } else { - result[key].push({ - old: sider[0], - new: sider[2] - }) - } - }) - } - }) - return result -} - -module.exports = { - createREADMEFileAndSetFrontmatterAndGetSideBar -} diff --git a/vdoing/node_utils/modules/filename.js b/vdoing/node_utils/modules/filename.js deleted file mode 100644 index 4892b606..00000000 --- a/vdoing/node_utils/modules/filename.js +++ /dev/null @@ -1,147 +0,0 @@ -const path = require('path') -const cwd = process.cwd() - -/** - * 获取文件名字 - * @param {*} filename - * @returns - */ -function getFileName (filename) { - if (!filename) { - return ""; - } - try { - return filename.split(".md")[0]; - } catch (err) { - return ""; - } -} - -// 检测key是否满足条件 -function CheckPMKeys (matterData) { - // matterData.PM && matterData.DEV && matterData.QA && - try { - return !!( - matterData.Deadline - ); - } catch (err) { - return false - } -} - -// 处理下md的用户姓名 -function handleUserName (str = '') { - return str ? str - .split(",") - .filter((item) => item) - .map((item) => item && item.trim()) - .map(item => { - if (item === '--') { - return item - } - return `@${item}` - }) - .join(", ") : '--'; -} - -/** - * 获取permalink - * @param {*} filePath 地址 - * @returns - */ -function getPermalink (filePath = '') { - filePath = filePath.slice(cwd.length+1) - filePath = filePath.split(path.sep) - - if (['docs'].includes(filePath[0])) { - filePath.shift() - } - - if (['zh'].includes(filePath[0])) { - filePath.shift() - } - - filePath = filePath.map(item => { - const itemArr = item.split('-') - if (itemArr.length === 1) { - // 只有一个的时候是不需要去掉头部的 - return item - } - itemArr.shift() - return itemArr.join('-') - }) - - // 变成绝对路径 - filePath.unshift('') - - filePath = filePath.join('/') - filePath = filePath.split('.md')[0] - return filePath -} -/** - * 获取permalink - * @param {*} filePath 地址 - * @returns - */ -function getPermalink1 (filePath = '') { - filePath = filePath.slice(cwd.length + 1) - filePath = filePath.split(path.sep) - - // 变成绝对路径 - filePath.shift() - - filePath.unshift('') - - return filePath.join('/') -} - - - -/** -* 去最后一位 \\ -* 如果最后一位是 x.x.x 格式的 满足要求 -* @param {*} filePath 绝对地址 -* @returns Boolean -*/ -function fileShouldCreateREADME (filename = '') { - if (!filename) { - return false; - } - if (["PS", "FS", "TS", "docs"].includes(filename)) { - return false; - } - const filenames = filename.split("-"); - // -前面2位以上 且纯数字 同时filenames 至少2位以上 - const preTest = /^[0-9]{2,}$/.test(filenames[0]); - if (preTest && filenames[1] && filename.length >= 2) { - return false; - } - return true; -} - -function getCurrnetFileName (filePath = '') { - const filePathArr = filePath.split(path.sep).filter(Boolean) - return filePathArr[filePathArr.length - 1] -} - -function trim (str = '') { - return str.trim() -} - -// 检测下是否是语言文件夹 -// 除 01-xx 以外的都是语言文件夹 -function checkLocalesFilename (filename) { - return ['zh'].includes(filename) -} - -module.exports = { - getFileName, - CheckPMKeys, - handleUserName, - getPermalink, - fileShouldCreateREADME, - getCurrnetFileName, - trim, - checkLocalesFilename, - getPermalink1 -}; diff --git a/vdoing/node_utils/modules/fn.js b/vdoing/node_utils/modules/fn.js deleted file mode 100644 index fca0cd6f..00000000 --- a/vdoing/node_utils/modules/fn.js +++ /dev/null @@ -1,28 +0,0 @@ -// 类型判断 -exports.type = function (o) { - var s = Object.prototype.toString.call(o) - return s.match(/\[object (.*?)\]/)[1].toLowerCase() -} - -// 修复date时区格式的问题 -exports.repairDate = function (date) { - date = new Date(date); - return `${date.getUTCFullYear()}-${zero(date.getUTCMonth() + 1)}-${zero(date.getUTCDate())} ${zero(date.getUTCHours())}:${zero(date.getUTCMinutes())}:${zero(date.getUTCSeconds())}`; -} - -function dateFormat (date) { - return `${date.getFullYear()}-${zero(date.getMonth() + 1)}-${zero(date.getDate())} ${zero(date.getHours())}:${zero(date.getMinutes())}:${zero(date.getSeconds())}` -} - -// 日期的格式 -exports.dateFormat = dateFormat - -// 处理日期 -exports.handleDate = function (Deadline) { - return dateFormat(Deadline).split(" ")[0] -} - -// 小于10补0 -function zero (d) { - return d.toString().padStart(2, '0') -} diff --git a/vdoing/noopModule.js b/vdoing/noopModule.js deleted file mode 100644 index b1c6ea43..00000000 --- a/vdoing/noopModule.js +++ /dev/null @@ -1 +0,0 @@ -export default {} diff --git a/vdoing/package.json b/vdoing/package.json deleted file mode 100644 index c4e09e76..00000000 --- a/vdoing/package.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "vuepress-theme-vdoing", - "version": "1.11.1", - "description": "Vdoing theme for VuePress. 一个基于VuePress的知识管理兼博客主题。", - "author": { - "name": "gaoyi(Evan) Xu" - }, - "homepage": "https://github.com/xugaoyi/vuepress-theme-vdoing#readme", - "bugs": { - "url": "https://github.com/xugaoyi/vuepress-theme-vdoing/issues" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/xugaoyi/vuepress-theme-vdoing.git" - }, - "keywords": [ - "documentation", - "vue", - "vuepress", - "generator", - "theme", - "blog" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "name": "Evan xu", - "email": "894072666@qq.com" - } - ], - "dependencies": { - "@better-scroll/core": "^2.0.0-beta.6", - "@better-scroll/slide": "^2.0.0-beta.6", - "@vuepress/plugin-active-header-links": "^1.2.0", - "@vuepress/plugin-nprogress": "^1.2.0", - "@vuepress/plugin-search": "^1.2.0", - "chalk": "^4.0.0", - "docsearch.js": "^2.5.2", - "good-storage": "^1.1.1", - "js-yaml": "^3.13.1", - "json2yaml": "^1.1.0", - "lodash": "^4.17.15", - "stylus": "^0.54.5", - "stylus-loader": "^3.0.2", - "vuepress-plugin-container": "^2.0.2", - "vuepress-plugin-smooth-scroll": "^0.0.3" - }, - "devDependencies": { - "@vuepress/types": "^1.9.5" - } -} diff --git a/vdoing/page-locales/index.js b/vdoing/page-locales/index.js deleted file mode 100644 index 74fa7113..00000000 --- a/vdoing/page-locales/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const zh = require('./../../LOCALES/zh.json') -const en = require('./../../LOCALES/en.json') - -// cmd导出 -module.exports = { - zh, - en -} \ No newline at end of file diff --git a/vdoing/styles/arrow.styl b/vdoing/styles/arrow.styl deleted file mode 100644 index 20bffc0d..00000000 --- a/vdoing/styles/arrow.styl +++ /dev/null @@ -1,22 +0,0 @@ -@require './config' - -.arrow - display inline-block - width 0 - height 0 - &.up - border-left 4px solid transparent - border-right 4px solid transparent - border-bottom 6px solid $arrowBgColor - &.down - border-left 4px solid transparent - border-right 4px solid transparent - border-top 6px solid $arrowBgColor - &.right - border-top 4px solid transparent - border-bottom 4px solid transparent - border-left 6px solid $arrowBgColor - &.left - border-top 4px solid transparent - border-bottom 4px solid transparent - border-right 6px solid $arrowBgColor diff --git a/vdoing/styles/code-theme.styl b/vdoing/styles/code-theme.styl deleted file mode 100644 index 922a67c4..00000000 --- a/vdoing/styles/code-theme.styl +++ /dev/null @@ -1,274 +0,0 @@ -// 适合浅色背景 //@import '~prismjs/themes/prism.css' -codeThemeLight() - code[class*="language-"], - pre[class*="language-"] { - color: black; - background: none; - text-shadow: 0 1px white; - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - font-size: 1em; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; - } - - pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, - code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { - text-shadow: none; - background: #b3d4fc; - } - - pre[class*="language-"]::selection, pre[class*="language-"] ::selection, - code[class*="language-"]::selection, code[class*="language-"] ::selection { - text-shadow: none; - background: #b3d4fc; - } - - @media print { - code[class*="language-"], - pre[class*="language-"] { - text-shadow: none; - } - } - - /* Code blocks */ - pre[class*="language-"] { - padding: 1em; - margin: .5em 0; - overflow: auto; - } - - :not(pre) > code[class*="language-"], - pre[class*="language-"] { - background: #f5f2f0; - } - - /* Inline code */ - :not(pre) > code[class*="language-"] { - padding: .1em; - border-radius: .3em; - white-space: normal; - } - - .token.comment, - .token.prolog, - .token.doctype, - .token.cdata { - color: slategray; - } - - .token.punctuation { - color: #999; - } - - .namespace { - opacity: .7; - } - - .token.property, - .token.tag, - .token.boolean, - .token.number, - .token.constant, - .token.symbol, - .token.deleted { - color: #905; - } - - .token.selector, - .token.attr-name, - .token.string, - .token.char, - .token.builtin, - .token.inserted { - color: #690; - } - - .token.operator, - .token.entity, - .token.url, - .language-css .token.string, - .style .token.string { - color: #9a6e3a; - background: hsla(0, 0%, 100%, .5); - } - - .token.atrule, - .token.attr-value, - .token.keyword { - color: #07a; - } - - .token.function, - .token.class-name { - color: #DD4A68; - } - - .token.regex, - .token.important, - .token.variable { - color: #e90; - } - - .token.important, - .token.bold { - font-weight: bold; - } - .token.italic { - font-style: italic; - } - - .token.entity { - cursor: help; - } - - // 行高亮颜色 - div[class*="language-"] - .highlight-lines - .highlighted - background-color rgba(200, 200, 200, 40%) - &.line-numbers-mode - .highlight-lines .highlighted - &:before - background-color rgba(200, 200, 200, 40%) - - -// 适合深色背景 // @import '~prismjs/themes/prism-tomorrow.css' -codeThemeDark() - code[class*="language-"], - pre[class*="language-"] { - color: #ccc; - background: none; - text-shadow: none; - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - font-size: 1em; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; - - } - - /* Code blocks */ - pre[class*="language-"] { - padding: 1em; - margin: .5em 0; - overflow: auto; - } - - :not(pre) > code[class*="language-"], - pre[class*="language-"] { - background: #2d2d2d; - } - - /* Inline code */ - :not(pre) > code[class*="language-"] { - padding: .1em; - border-radius: .3em; - white-space: normal; - } - - .token.comment, - .token.block-comment, - .token.prolog, - .token.doctype, - .token.cdata { - color: #999; - } - - .token.punctuation { - color: #ccc; - } - - .token.tag, - .token.attr-name, - .token.namespace, - .token.deleted { - color: #e2777a; - } - - .token.function-name { - color: #6196cc; - } - - .token.boolean, - .token.number, - .token.function { - color: #f08d49; - } - - .token.property, - .token.class-name, - .token.constant, - .token.symbol { - color: #f8c555; - } - - .token.selector, - .token.important, - .token.atrule, - .token.keyword, - .token.builtin { - color: #cc99cd; - } - - .token.string, - .token.char, - .token.attr-value, - .token.regex, - .token.variable { - color: #7ec699; - } - - .token.operator, - .token.entity, - .token.url { - color: #67cdcc; - } - - .token.operator, - .token.entity, - .token.url, - .language-css .token.string, - .style .token.string { - background: none; - } - - .token.important, - .token.bold { - font-weight: bold; - } - .token.italic { - font-style: italic; - } - - .token.entity { - cursor: help; - } - - .token.inserted { - color: green; - } diff --git a/vdoing/styles/code.styl b/vdoing/styles/code.styl deleted file mode 100644 index 36206afe..00000000 --- a/vdoing/styles/code.styl +++ /dev/null @@ -1,142 +0,0 @@ -body {$contentClass} - code - color var(--textLightenColor) - padding 0.25rem 0.5rem - margin 0 - font-size 0.9em - // background-color rgba(27,31,35,0.05) - background-color rgba(100,100,100,0.08) - border-radius 3px - .token - &.deleted - color #EC5975 - &.inserted - color $accentColor - -body {$contentClass} - pre, pre[class*="language-"] - line-height 1.4 - padding 1.25rem 1.5rem - margin 0.85rem 0 - background-color $codeBgColor - border-radius 6px - overflow auto - code - // color #fff - color var(--codeColor) - padding 0 - background-color transparent - border-radius 0 - -div[class*="language-"] - position relative - // background-color $codeBgColor - background-color var(--codeBg) - border-radius 6px - .highlight-lines - user-select none - padding-top 1.3rem - position absolute - top 0 - left 0 - width 100% - line-height 1.4 - .highlighted - background-color rgba(0, 0, 0, 30%) - pre, pre[class*="language-"] - background transparent - position relative !important - z-index 1 - &::before - position absolute - z-index 3 - top 0.8em - right 1em - font-size 0.8rem - color rgba(150,150,150,.7) - // color rgba(255, 255, 255, 0.4) - &:not(.line-numbers-mode) - .line-numbers-wrapper - display none - &.line-numbers-mode - .highlight-lines .highlighted - position relative - &:before - content ' ' - position absolute - z-index 3 - left 0 - top 0 - display block - width $lineNumbersWrapperWidth - height 100% - background-color rgba(0, 0, 0, 30%) - pre - padding-left $lineNumbersWrapperWidth + 1 rem - vertical-align middle - .line-numbers-wrapper - position absolute - top 0 - width $lineNumbersWrapperWidth - text-align center - // color rgba(255, 255, 255, 0.3) - color rgba(127, 127, 127, .5) - padding 1.25rem 0 - line-height 1.4 - br - user-select none - .line-number - position relative - z-index 4 - user-select none - font-size 0.85em - &::after - content '' - position absolute - z-index 2 - top 0 - left 0 - width $lineNumbersWrapperWidth - height 100% - border-radius 6px 0 0 6px - // border-right 1px solid rgba(0, 0, 0, 66%) - // background-color $codeBgColor - border-right 1px solid var(--borderColor) - background-color var(--codeBg) - - -for lang in $codeLang - div{'[class~="language-' + lang + '"]'} - &:before - content ('' + lang) - -div[class~="language-javascript"] - &:before - content "js" - -div[class~="language-typescript"] - &:before - content "ts" - -div[class~="language-markup"] - &:before - content "html" - -div[class~="language-markdown"] - &:before - content "md" - -div[class~="language-json"]:before - content "json" - -div[class~="language-ruby"]:before - content "rb" - -div[class~="language-python"]:before - content "py" - -div[class~="language-bash"]:before - content "sh" - -div[class~="language-php"]:before - content "php" diff --git a/vdoing/styles/config.styl b/vdoing/styles/config.styl deleted file mode 100644 index fa973ff0..00000000 --- a/vdoing/styles/config.styl +++ /dev/null @@ -1 +0,0 @@ -$contentClass = '.theme-vdoing-content' diff --git a/vdoing/styles/custom-blocks.styl b/vdoing/styles/custom-blocks.styl deleted file mode 100644 index edfa22ff..00000000 --- a/vdoing/styles/custom-blocks.styl +++ /dev/null @@ -1,98 +0,0 @@ -.custom-block - .custom-block-title - font-weight 600 - margin-bottom .2rem - p - margin 0 - &.tip, &.warning, &.danger, &.note - padding .5rem 1.5rem - border-left-width .5rem - border-left-style solid - margin 1rem 0 - &.tip - background-color #f3f5f7 - border-color #42b983 - color darken(#42b983, 50%) - &.warning - background-color #FFF7D0 - border-color darken(#ffe564, 35%) - color darken(#ffe564, 70%) - .custom-block-title - color darken(#ffe564, 50%) - a - color var(--textColor) - &.danger - background-color #ffe6e6 - border-color darken(red, 20%) - color darken(red, 70%) - .custom-block-title - color darken(red, 40%) - a - color var(--textColor) - &.note - background-color #E8F5FA - border-color #157BAE - color darken(#157BAE, 40%) - &.right - color var(--textColor) - font-size 0.9rem - text-align right - &.theorem - margin 1rem 0 - padding .8rem 1.5rem - border-radius 2px - background-color var(--customBlockBg) - .title - font-weight bold - margin .5rem 0 - &.details - display block - position relative - border-radius 2px - margin 1em 0 - padding 1.6em - background-color var(--customBlockBg) - p - margin .8rem 0 - h4 - margin-top 0 - figure, p - &:last-child - margin-bottom 0 - padding-bottom 0 - summary - outline none - cursor pointer - &:hover - color $accentColor - -// 深色模式适配 -.theme-mode-dark - .custom-block - &.warning - background-color rgba(255, 247, 208, .2) - color darken(#ffe564, 35%) - .custom-block-title - color darken(#ffe564, 15%) - &.tip - background-color rgba(243, 245, 247, .2) - color darken(#42b983, 0%) - &.danger - background-color rgba(255, 230, 230, .4) - color darken(red, 50%) - a - color $accentColor - &.note - background-color rgba(243, 245, 247, .2) - color darken(#157BAE, 0%) - -// csv 样式 -.csv-box - display: inline-block; - & > table - margin-bottom: 0 - & > p.csv-url - margin: 0; - text-align: center; - color: #999; - font-size: 14px \ No newline at end of file diff --git a/vdoing/styles/footer.styl b/vdoing/styles/footer.styl deleted file mode 100644 index cb56a146..00000000 --- a/vdoing/styles/footer.styl +++ /dev/null @@ -1,72 +0,0 @@ - -.links-container - --color_theme: #0a72ef; - background-color: rgb(37, 37, 37); - padding: 50px 0 38px 0; - min-width: var(--width-mini); - - .links-list - width: 100%; - display: flex; - align-items: flex-start; - justify-content: space-around; - margin: 0 0 120px 0 - .links-item - display: flex; - flex-direction: column; - align-items: flex-start; - justify-content: flex-start; - .links-title - color: #d7d8d9; - font-size: 16px; - line-height: 22px; - padding-bottom: 10px; - font-weight: 500; - font-family: var(--fontfamily_medium); - > a - color: #9b9ea0; - font-size: 14px; - line-height: 25px; - font-family: "PingFangSC-Thin", "PingFang SC Thin", "PingFang SC", - sans-serif, "PingFangSC-Thin", "PingFang SC Thin", "PingFang SC", - sans-serif-200; - .foot-content - text-align: center; - font-size: 14px; - line-height: 20px; - // color: #dcdfe6; - color: #939393; - margin: 0; - > a - color: inherit; - - a:hover - color: var(--color_theme) !important; - - -.footer.mobile - padding: 1px 2.2568rem; - color: #dddddd; - font-size: 1.1rem; - -.footrigcon - padding: 01.7121rem 0 0 0; - color: #dcdfe6; - h4 - margin-top: 0.7877rem; - color: #ffffff; - font-weight: 600; - font-size: 1rem; - line-height: 1.40625rem; - margin-bottom 0 - .lia - a - color: #dddddd; - line-height: 1.5625rem; - - span - width: 0.0625rem; - height: 0.9375rem; - background: #dddddd; - display: inline-block; - margin: 0 0.3124rem; \ No newline at end of file diff --git a/vdoing/styles/header.styl b/vdoing/styles/header.styl deleted file mode 100644 index b2dbea26..00000000 --- a/vdoing/styles/header.styl +++ /dev/null @@ -1,340 +0,0 @@ -:root - --color_theme:#0a72ef - -@media screen and (min-width: 800px) - .mobile - display: none; - .web - display: block; - -@media screen and (max-width: 800px) - .mobile - display: block; - .web - display: none; - -.logo-login-container -.links-container - ul, - ol - padding-left: 0; - list-style-type: none; - -.gap-10px - gap: 0.625rem - -.flex-y - display: flex; - align-items: center; - -.primary-button - width: 230px; - height: 58px; - font-size: 20px; - border-radius: 150px; - border: 0; - color: #fff; - background-color: var(--color_theme); - margin: 29px auto 0 auto; - cursor: pointer; - transition-duration: var(--duration); - font-family: var(--fontfamily_text); - -.primary-button:hover - background-color: var(--color_hover_active) !important; - color: #fff !important; - - -.logo-login-container.web - position: relative - --color_theme: #0a72ef; // 主要颜色 - --color_hover_active: rgba(53, 142, 246, 1); // 选中的颜色 - --duration: 0.3s; - --border-radius: 3px; - --fontfamily_text: "PingFangSC-Regular", "PingFang SC", sans-serif, - "PingFangSC-Regular", "PingFang SC", sans-serif-400; - font-family: PingFangSC-Regular, "PingFang SC", sans-serif; - font-style: normal; - padding: 13px 25px; - max-width: 100vw; - transition-duration: var(--duration); - box-sizing: border-box; - background-image: linear-gradient( - to right, - #05449F, - #00CBFB - ) - - ul - list-style: none; - margin: 0; - - .blank - width: 100px; - min-width: 0; - - .log-image-box - width auto; - display: flex - align-items center - flex-shrink: 0 - .logo-image - height: 30px; - cursor: pointer; - - .feature-list - flex: 1; - font-weight: 400; - font-size 16px - min-width: 320px - .feature-item - color #8CC0FB - display inline - width: 130px; - line-height: 36px; - cursor: pointer; - text-align: center; - - span - display inline - - .feature-item.active - span - color: #fff; - border-bottom: 2px solid #fff - - .feature-item:hover - color: #fff; - - .lang - height 36px - display flex - align-items center - position: relative - img - width: 26px - display: block - .intl-options-wrapper - width 100px - display: none - position:absolute - top: calc(100%) - left 50% - transform translateX(-50%) - padding-top 13px - .intl-options - color: #606c80; - font-size: 16px; - background-color: #fff; - border-radius: 0.2vw; - border: 1px solid #ddd - overflow: auto; - padding: 10px 0; - line-height: 2; - text-align: center; - a - color: inherit - a.active - a:hover - color: #396aff - - .lang:hover - .intl-options-wrapper - display: block - - .search-box - input - background-color #fff - border: none - input:focus - border: none - .button-list - margin-right: 19px - justify-content: flex-end; - > li - font-size: 13px; - width: 91px; - line-height: 36px; - text-align: center; - cursor: pointer; - font-family: var(--fontfamily_text); - border-radius: var(--border-radius); - > a - display: block; - width: 100%; - height: 100%; - - - .login-button - background-color: #f2f2f2; - .login-button:hover - background-color: rgba(97, 121, 134, 1); - > a - color: #fff; - - - - .sign-button - color: #fff; - background-color: var(--color_theme); - .sign-button:hover - background-color: var(--color_hover_active); - - - -.logo-login-container.web.sticky - background-color: #fff; - -.l_main.list - padding-top: 0 !important - - -.logo-login-container.mobile - padding: 0.756rem 0.9218rem 0.7104rem 0.9541rem; - transition-duration: var(--duration); - box-sizing: border-box; - background: #f9fafb; - position: relative; - z-index: 9; - background: linear-gradient(134.6deg, #0046a1 0%, #0094d6 100%); - background-size: cover; - - .logo-image - height: 1.0625rem !important; - - .blank - flex: 1 - - .lang - display flex - align-items center - position: relative - display: flex - flex-direction row-reverse - img - width: 1.125rem - display: block - .intl-options-wrapper - width 25vw - display: none - position:absolute - top: calc(100%) - left 50% - transform translateX(-50%) - padding-top 0.625rem - .intl-options - margin-top: 0 - color: #606c80; - font-size: 1rem; - background-color: #fff; - border-radius: 0.2vw; - border: 1px solid #ddd - overflow: auto; - padding: 1vh 0; - line-height: 2; - text-align: center; - a - color: inherit - a.active - a:hover - color: #396aff - - .lang:hover - .intl-options-wrapper - display: block - - .button-list - justify-content: flex-end; - margin: 0 - - >li - font-size: 0.75rem; - // width: 3.1242rem; - padding 0 0.3rem; - line-height: 1.875rem; - text-align: center; - cursor: pointer; - font-family: var(--fontfamily_text); - border-radius: 0.1249rem; - >a - display: block; - width: 100%; - height: 100%; - - .login-button - background: #ebf4ff; - color: var(--color_theme); - >a - color: inherit; - - .sign-button - color: var(--color_theme); - background-color: #fff; - - .sign-button :hover - background-color: var(--color_hover_active); - - .nav-button - padding 0 - width: auto; - height: auto; - background-color: transparent; - line-height: 0; - font-size: 0; - img - width: 0.875rem - color: #fff - -.logo-login-container.mobile.sticky - background-color: #fff; - - -.nav-list - position: fixed; - top: 0; - left: 0; - bottom: 0; - right: 0; - width: 100%; - height: 100%; - display: none; - z-index: 8; - - ul - list-style: none - padding: 0 - - .masking - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.3); - - - .nav-list-box - margin: 0; - position: absolute; - width: 100%; - top: 2.8125rem; - background-color: #f9fafb; - font-size: 0.8749rem; - color: #666; - height: 7.5rem; - transition: height 0.3s; - overflow: hidden; - padding-top 0.625rem - li - padding: 0.3rem 0.9375rem 0.625rem 0.9375rem; - line-height: 1.2492rem; - span - display: block; - font-weight: 600; - li - padding-top: 0; - padding-bottom: 0; - li.active - color: var(--color_theme); \ No newline at end of file diff --git a/vdoing/styles/index.styl b/vdoing/styles/index.styl deleted file mode 100644 index d29fde76..00000000 --- a/vdoing/styles/index.styl +++ /dev/null @@ -1,414 +0,0 @@ -// 引入字体图标 -// @import './font_1678482_4tbhmh589x' - -@require './config' -@require './code' -@require './custom-blocks' -@require './arrow' -@require './wrapper' -@require './toc' -@require './markdown-container' -@require './header' -@require './footer' -@require './toast' - - -html, body - padding 0 - margin 0 - -body - font-family -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif - -webkit-font-smoothing antialiased - -moz-osx-font-smoothing grayscale - -webkit-tap-highlight-color transparent - font-size 16px - color $textColor - background var(--bodyBg) - -// 去掉黄色边框 -a,input,button - outline: none; -webkit-tap-highlight-color: rgba(255, 255, 255, 0); -webkit-focus-ring-color: rgba(0, 0, 0, 0); -// 滚动条样式 -//@media (min-width: $MQMobile) - //::-webkit-scrollbar - //width:6px; - //height:5px; - //::-webkit-scrollbar-track-piece - //background-color:rgba(0,0,0,.15) - //-webkit-border-radius:3px - //::-webkit-scrollbar-thumb:vertical - //height:5px; - //background-color:rgba(0,0,0,.28) - //-webkit-border-radius:3px - //::-webkit-scrollbar-thumb:horizontal - //width:5px; - //background-color:rgba(0,0,0,.28) - //-webkit-border-radius:3px - - -.card-box // 卡片 - border-radius 5px - background var(--mainBg) - box-shadow 0 1px 2px 0 rgba(0,0,0,.1) - transition box-shadow .5s - &:hover - box-shadow 0 1px 15px 0 rgba(0,0,0,.1) - -.blur // 模糊滤镜 - backdrop-filter saturate(200%) blur(20px) - -.custom-page // 自定义页面 - min-height calc(100vh - 3.6rem) - padding-top $navbarHeight - padding-bottom .9rem - .theme-vdoing-wrapper - margin 0 auto - -// 默认的搜索框样式重置 -body .search-box - input - background-color transparent - color var(--textColor) - border 1px solid var(--borderColor, #ccc) - @media (max-width: $MQNarrow) - border-color transparent - - - -.page - transition padding .2s ease - padding-left .8rem - -.navbar - position fixed - z-index 20 - top 0 - left 0 - right 0 - background-color var(--blurBg) - box-sizing border-box - box-shadow 0 2px 5px rgba(0,0,0,.06) - -.sidebar-mask - position fixed - z-index 12 - top 0 - left 0 - width 100vw - height 100vh - display none - -.sidebar-hover-trigger - display none - position: fixed - z-index 12 - top ($navbarHeight + 4.5rem) - left 0 - bottom 0 - width 24px - -.sidebar - position: sticky - top: calc(3.6rem + 36px) - left: 0 - max-height calc(100vh - 3.6rem - 36px) - font-size 16px - background-color var(--sidebarBg) - width $sidebarWidth - //position fixed - z-index 13 - margin 0 - //top $navbarHeight - //left 0 - //bottom 0 - box-sizing border-box - border-right 1px solid #eee - overflow-y auto - transform translateX(-100%) - transition transform .2s - @media (max-width: $MQMobile) - background-color var(--mainBg) - position: fixed - max-height 100vh - - -{$contentClass}:not(.custom) - word-wrap break-word - @extend $wrapper - > *:first-child - // margin-top $navbarHeight // 内容第一个元素的top距离 - - a:hover - text-decoration underline - - p.demo - padding 1rem 1.5rem - border 1px solid #ddd - border-radius 4px - - img - max-width 100% - -{$contentClass}.custom - padding 0 - margin 0 - - img - max-width 100% - -a - font-weight 500 - color $accentColor - text-decoration none - -p a code - font-weight 400 - color $accentColor - -kbd - background #eee - border solid 0.15rem #ddd - border-bottom solid 0.25rem #ddd - border-radius 0.15rem - padding 0 0.15em - -blockquote - font-size 1rem - opacity .75 - border-left .2rem solid rgba(100,100,100,.3) - margin 1rem 0 - padding .25rem 0 .25rem 1rem - - & > p - margin 0 - -ul, ol - padding-left 1.2em - -strong - font-weight 600 - -h1, h2, h3, h4, h5, h6 - font-weight 600 - line-height 1.25 - - {$contentClass}:not(.custom) > & - margin-top (0.5rem - $navbarHeight) - padding-top ($navbarHeight + 1rem) - margin-bottom 0 - - &:first-child - // margin-top -1.5rem - margin-bottom 1rem - - + p, + pre, + .custom-block - margin-top 2rem - - &:focus .header-anchor, - &:hover .header-anchor - opacity: 1 - - -// 没有h1标签时 -p,pre,.custom-block - {$contentClass}:not(.custom) > & - &:first-child - margin-top 2rem - - -h1 - font-size 1.8rem - -h2 - font-size 1.5rem - padding-bottom .3rem - border-bottom 1px solid var(--borderColor) - -h3 - font-size 1.35rem - -.page - h4 - font-size 1.25rem - h5 - font-size 1.15rem - h6 - font-size 1.05rem - -a.header-anchor - font-size 0.85em - float left - margin-left -0.87em - padding-right 0.23em - margin-top 0.125em - opacity 0 - - &:focus, - &:hover - text-decoration none - -code, kbd, .line-number - font-family source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace - -p, ul, ol - line-height 1.7 - -hr - border 0 - border-top 1px solid var(--borderColor) - -table - border-collapse collapse - margin 1rem 2rem - overflow-x: auto - max-width 100% - display block - @media (max-width: $MQMobile) - display block -tr - border-top 1px solid var(--borderColor) - - &:nth-child(2n) - background-color rgba(150,150,150,0.1) - -table tr, -table td - min-width: 80px - -th, td - border 1px solid var(--borderColor) - padding .6em 1em - @media (max-width: $MQMobile) - padding .3em .5em - a - word-break break-all - -@media (min-width: $MQMobile){ - html,body,#app{ - height 100% - } - .theme-container{ - min-height 100% - } -} - -.theme-container - padding: 0.1px 0 - background-color: var(--mainBg) - color var(--textColor) - //min-height 100vh - @media (max-width $MQMobile) - min-width: 0 - &.sidebar-open - .sidebar-mask - display: block - - &.no-navbar - {$contentClass}:not(.custom) > h1, h2, h3, h4, h5, h6 - margin-top 1.5rem - padding-top 0 - - .sidebar - top 0 - -// 全局的侧边栏开关按钮(挂在 Layout 下):默认始终隐藏,仅嵌入模式的移动端显示 -.theme-container .embedded-sidebar-button - display none - -// 以 iframe 方式打开时(templates 模板中的内联脚本给 加 embedded 类),隐藏导航栏和页脚,并去掉导航栏的占位间距 -html.embedded - .navbar - .footer - display none - - {$contentClass}:not(.custom) > h1, h2, h3, h4, h5, h6 - margin-top 1.5rem - padding-top 0 - - .sidebar - top 0 - - .home - padding-top 0 - - .page.content-layout-container .main-content - margin-top 0 - - // 隐藏导航栏后,移动端改用面包屑左侧的全局按钮展开/收起侧边栏 - .embedded-sidebar-button - position absolute - top 0.3rem - left 0.2rem - z-index 21 - padding 0.4rem - width 0.75rem - height 0.75rem - color #888 - opacity 0.8 - .icon - width 0.75rem - height 0.75rem - - // 无侧边栏的页面(如首页)不需要该按钮 - .theme-container.no-sidebar .embedded-sidebar-button - display none - - // 侧边栏展开后隐藏按钮,仅通过点击侧边栏外部(蒙层)关闭 - .theme-container.sidebar-open .embedded-sidebar-button - display none - -@media (max-width $MQMobile) - html.embedded - .sidebar - padding-top 0 - .page - padding-top 0 - .embedded-sidebar-button - display block - // 给按钮留出面包屑左侧的避让空间(选择器需盖过 ArticleInfo 的 scoped 样式) - .articleInfo .breadcrumbs - padding-left 2.5rem - - -@media (min-width: ($MQMobile + 1px)) - .theme-container.no-sidebar - .sidebar - display none - - .page - padding-left 0 - -@require 'mobile.styl' - -// 打印时的样式 -@media print - .navbar,.sidebar,.buttons - display: none - .page - padding-top: 0 !important - -// 禁止bar -.exclude-range -.today - display: none - -::-webkit-scrollbar - width: 10px; - height: 10px; - -::-webkit-scrollbar-track - width: 6px; - background: rgba(16, 31, 28, 0.1); - border-radius: 2em; - -::-webkit-scrollbar-thumb - background-color: rgba(144, 147, 153, 0.5); - background-clip: padding-box; - min-height: 28px; - border-radius: 2em; - transition: background-color 0.3s; - cursor: pointer; - -::-webkit-scrollbar-thumb:hover - background-color: rgba(144, 147, 153, 0.3); diff --git a/vdoing/styles/markdown-container.styl b/vdoing/styles/markdown-container.styl deleted file mode 100644 index 9f9e0bc2..00000000 --- a/vdoing/styles/markdown-container.styl +++ /dev/null @@ -1,211 +0,0 @@ -// markdown容器样式 - -// 居中容器 -.center-container - text-align: center - -h1, h2, h3, h4, h5, h6 - .center-container > & - margin-top (0.5rem - $navbarHeight) - padding-top ($navbarHeight + 1rem) - margin-bottom 0 - a.header-anchor - float none - padding-right: 0 - margin-left: -.9rem - - -// 普通卡片列表 -.cardListContainer - margin .7rem 0 - &>:not(.card-list) - display none - .card-list - margin -0.35rem - display: flex; - flex-wrap: wrap; - align-items: flex-start; - .card-item - width calc(100%/3 - .7rem) - margin .35rem - background var(--bodyBg) - border-radius 3px - color var(--textColor) - display flex - box-shadow 1px 1px 2px 0 rgba(0,0,0,.06) - transition all .4s - &:hover - text-decoration none - box-shadow: 0 10px 20px -10px var(--randomColor, rgba(0,0,0,0.15)); - transform: translateY(-3px) scale(1.01, 1.01) - img - // transform rotate(8deg) scale(1.1, 1.1) - box-shadow 3px 2px 7px rgba(0, 0, 0, 0.15) - div p - text-shadow 3px 2px 5px rgba(0, 0, 0, 0.15) - img - width 60px - height 60px - border-radius 50% - border 2px solid #fff - margin 1rem - margin-right 0 - box-shadow 3px 2px 5px rgba(0, 0, 0, 0.08) - transition all .4s - div - flex 1 - display inline-block - float right - padding 1rem 0 - p - margin 0 - padding 0 1rem - transition text-shadow .4s - text-align center - .name - margin .2rem 0 .3rem 0 - .desc - font-size .8rem - line-height 1.1rem - opacity .8 - margin-bottom .2rem - .card-item.row-1 - width calc(100% - .7rem) - img - margin-left 2rem - .card-item.row-2 - width calc(100%/2 - .7rem) - img - margin-left 1.5rem - .card-item.row-3 - width calc(100%/3 - .7rem) - .card-item.row-4 - width calc(100%/4 - .7rem) - -// 图文卡片列表 -.cardImgListContainer - margin 1rem 0 - &>:not(.card-list) - display none - .card-list - margin -0.5rem - display: flex; - flex-wrap: wrap; - align-items: flex-start; - .card-item - width calc(100%/3 - 1rem) - margin .5rem - background var(--mainBg) - border 1px solid rgba(0,0,0,0.1) - box-sizing: border-box - border-radius 3px - overflow hidden - color var(--textColor) - box-shadow 2px 2px 10px rgba(0,0,0,.04) - display flex - flex-direction: column; - justify-content: flex-start; - align-items: stretch; - align-content: stretch; - transition: all .4s - &:hover - box-shadow 1px 1px 20px rgba(0,0,0,.1) - transform: translateY(-3px) - .box-img - overflow hidden - position relative - background #eee - img - display block - width 100% - height 100% - transition: all .3s - // &:hover - // img - // transform: scale(1.1, 1.1) - // opacity .75 - a - color var(--textColor) - transition: color .3s - &:hover - // color $accentColor - text-decoration none - .box-info - padding: .8rem 1rem - p - margin 0 - .desc - margin-top: .3rem - opacity .8 - font-size: .9rem - line-height: 1.1rem - overflow: hidden; - white-space: normal; - text-overflow: ellipsis; - display: -webkit-box; - -webkit-box-orient: vertical; - .box-footer - overflow hidden - padding: .8rem 1rem - border-top: 1px solid rgba(0,0,0,0.1) - img - width 1.8rem - height 1.8rem - border-radius 50% - float left - span - line-height 1.8rem - float left - margin-left: .6rem - font-size: .8rem - .card-item.row-1 - width calc(100% - 1rem) - .card-item.row-2 - width calc(100%/2 - 1rem) - .card-item.row-3 - width calc(100%/3 - 1rem) - .card-item.row-4 - width calc(100%/4 - 1rem) - -.theme-mode-dark - .cardImgListContainer - .card-list - .card-item - border-color: var(--borderColor) - .box-footer - border-color: var(--borderColor) - -// 卡片列表的响应 -@media (max-width: 900px) - .cardListContainer - .card-list - .card-item.row-4 - width calc(100%/3 - .7rem) - .cardImgListContainer - .card-list - .card-item.row-4 - width calc(100%/3 - 1rem) - -@media (max-width: 720px) - .cardListContainer - .card-list - .card-item.row-3, .card-item.row-4 - width calc(100%/2 - .7rem) - img - margin-left 1.5rem - .cardImgListContainer - .card-list - .card-item.row-3, .card-item.row-4 - width calc(100%/2 - 1rem) - -@media (max-width: 500px) - .cardListContainer - .card-list - .card-item.row-1, .card-item.row-2, .card-item.row-3, .card-item.row-4 - width calc(100% - .7rem) - img - margin-left 1.5rem - .cardImgListContainer - .card-list - .card-item.row-1, .card-item.row-2, .card-item.row-3, .card-item.row-4 - width calc(100% - 1rem) diff --git a/vdoing/styles/mobile.styl b/vdoing/styles/mobile.styl deleted file mode 100644 index b38cc24b..00000000 --- a/vdoing/styles/mobile.styl +++ /dev/null @@ -1,97 +0,0 @@ -@require './config' - -$mobileSidebarWidth = $sidebarWidth * 0.9 - -// narrow desktop / iPad -@media (max-width: $MQNarrow) - .sidebar - font-size 15px - -@media (max-width: $MQMobile) - .sidebar - width $sidebarWidth * 0.95 - -@media (min-width: ($MQMobile + 1px)) and (max-width: $MQNarrow) - .sidebar - width $mobileSidebarWidth - -// wide mobile -@media (max-width: $MQMobile) - .sidebar - top 0 - height 100vh - padding-top $navbarHeight - transform translateX(-100%) - transition transform .2s ease - .page - padding-left 0 - .theme-container - &.sidebar-open - .sidebar - transform translateX(0) - .sidebar-mask // 蒙版在小屏中才能显示 - display block - &.no-navbar - .sidebar - padding-top: 0 - -// narrow mobile -@media (max-width: $MQMobileNarrow) - h1 - font-size 1.9rem - {$contentClass} - div[class*="language-"] - margin 0.85rem -1.5rem - border-radius 0 - -// 侧边栏显示隐藏的适配 -@media (min-width: ($MQMobile + 1px)) // 720px - .theme-container - .sidebar-hover-trigger - display: block - .sidebar-hover-trigger:hover ~ .sidebar - transform translateX(0) - z-index: 100 - - &:not(.sidebar-open) - .sidebar-hover-trigger ~ .sidebar:hover - transform translateX(0) - z-index: 100 - - &.sidebar-open - .sidebar-mask - display: none - .sidebar - transform translateX(0) - .sidebar-button - left $sidebarWidth - .page - //padding-left ($sidebarWidth + .8rem) - //padding-right .8rem - .sidebar-hover-trigger - display: none - - &.have-rightmenu - .page - // padding-right ($rightMenuWidth + 20rem) - &.no-sidebar - .page - padding-left 0!important - .sidebar-hover-trigger - display: none - - &.hide-navbar - .sidebar-hover-trigger - top 4.5rem - .sidebar - top 0 - - @media (max-width: $MQNarrow) - .theme-container - &.sidebar-open:not(.on-sidebar) - .sidebar-button - $mobileSidebarWidth = $sidebarWidth * 0.7 - left $mobileSidebarWidth - .theme-container.no-sidebar - .sidebar-button - display none diff --git a/vdoing/styles/palette.styl b/vdoing/styles/palette.styl deleted file mode 100644 index b0a01556..00000000 --- a/vdoing/styles/palette.styl +++ /dev/null @@ -1,86 +0,0 @@ -// 主题调色板 - -// 原主题预设变量 -// 颜色 -// $accentColor = #3eaf7c -// $textColor = #2c3e50 -// $borderColor = #eaecef -// $codeBgColor = #282c34 -// $arrowBgColor = #ccc -// $badgeTipColor = #42b983 -// $badgeWarningColor = darken(#ffe564, 35%) -// $badgeErrorColor = #DA5961 -// 布局 -// $navbarHeight = 3.6rem -// $sidebarWidth = 20rem -// $contentWidth = 740px -// $homePageWidth = 960px -// 代码块 -// $lineNumbersWrapperWidth = 3.5rem - - -@require './code-theme' - -//***vdoing主题-变量***// - -// 颜色 - -$bannerTextColor = #fff // 首页banner区(博客标题)文本颜色 -$accentColor = #11A8CD -$activeColor = #ff5722 -$arrowBgColor = #ccc -$badgeTipColor = #42b983 -$badgeWarningColor = darken(#ffe564, 35%) -$badgeErrorColor = #DA5961 - -// 布局 -$navbarHeight = 3.6rem -$sidebarWidth = 18rem -$contentWidth = 860px -$homePageWidth = 1100px -$rightMenuWidth = 230px // 右侧菜单 - -// 代码块 -$lineNumbersWrapperWidth = 2.5rem - -// 浅色模式 -.theme-mode-light - --bodyBg: #f4f4f4 - --mainBg: rgba(255,255,255,1) - --sidebarBg: rgba(255,255,255,.8) - --blurBg: rgba(255,255,255,.9) - --customBlockBg: #f1f1f1 - --textColor: #00323c - --textLightenColor: #0085AD - --borderColor: rgba(0,0,0,.15) - --codeBg: #f6f6f6 - --codeColor: #525252 - codeThemeLight() - -// 深色模式 -.theme-mode-dark - --bodyBg: rgb(39,39,43) - --mainBg: rgba(30,30,34,1) - --sidebarBg: rgba(30,30,34,.8) - --blurBg: rgba(30,30,34,.8) - --customBlockBg: rgb(39,39,43) - --textColor: rgb(155,155,170) - --textLightenColor: #0085AD - --borderColor: #2C2C3A - --codeBg: #252526 - --codeColor: #fff - codeThemeDark() - -// 阅读模式 -.theme-mode-read - --bodyBg: rgb(236,236,204) - --mainBg: rgba(245,245,213,1) - --sidebarBg: rgba(245,245,213,.8) - --blurBg: rgba(245,245,213,.9) - --customBlockBg: rgb(236,236,204) - --textColor: #704214 - --textLightenColor: #996633 - --borderColor: rgba(0,0,0,.15) - --codeBg: #282c34 - --codeColor: #fff - codeThemeDark() diff --git a/vdoing/styles/toast.styl b/vdoing/styles/toast.styl deleted file mode 100644 index 7fa9b3ff..00000000 --- a/vdoing/styles/toast.styl +++ /dev/null @@ -1,150 +0,0 @@ -div.toast - max-width: 60% - padding: 1rem 3rem - line-height: 1.5 - color: var(--text-p1) - font-weight: 500 - text-align: center - border-radius: $border-card - background: var(--card) - position: fixed - top: 50% - left: 50% - transform: translate(-50%, -50%) - z-index: 9 - disable-select() - box-shadow: $boxshadow-float - - - -.ys-model - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - height: 100vh; - width: 100vw; - z-index: 2001; - - .ys-modelmasking - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(50, 42, 42, 0.38); - - - .ys-model-contianer - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - z-index: 1000; - width: 18.75rem; - padding: 0.8446rem 1.3436rem 0.88968rem; - box-sizing: border-box; - - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - - background: #fafbff; - border: 0.0133rem solid #ffffff; - border-radius: 0.0625rem; - box-shadow: 0rem 0.0625rem 0.1875rem 0rem rgba(0, 0, 0, 0.24); - transition-property: transform; - transition-duration: 0.3s; - - .ys-model-contianer-title - font-family: "PingFangSC-Regular", "PingFang SC", sans-serif, - "PingFangSC-Regular", "PingFang SC", sans-serif-400; - font-size: 0.8749rem; - font-weight: 400; - text-align: center; - color: #333333; - line-height: 1.2499rem; - - .ys-model-contianer-content - font-size: 0.5625rem; - font-family: "PingFangSC-Regular", "PingFang SC", sans-serif, - "PingFangSC-Regular", "PingFang SC", sans-serif-400; - font-weight: 400; - text-align: center; - color: #475c77; - line-height: 0.7811rem; - padding: 0.5313rem 0 1.3596rem; - - .content-link - span - min-width: 0; - flex: 1; - overflow: hidden; //超出的文本隐藏 - text-overflow: ellipsis; //溢出用省略号显示 - white-space: nowrap; //溢出不换行 - - img - width: 01.125rem; - - .ys-model-contianer-footer - font-size: 0; - .primary-button - margin-top: 0; - line-height: 2.5rem; - height: 2.5rem; - font-size: 1rem; - font-family: "PingFangSC-Regular", "PingFang SC", sans-serif, - "PingFangSC-Regular", "PingFang SC", sans-serif-400; - font-weight: 400; - - #copy-content - position: absolute; - top: -999999999px; - left: -999999999px; - -.ys-model-masking - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(50, 42, 42, 0.38); - - - -.ys-toast - display: none; - position: fixed; - z-index: 2001; - top: 0; - line-height: 3.3124rem; - width: 100%; - font-size: 0.75rem; - text-align: center; - transition-property: transform; - transition-duration: 0.3s; - will-change: transform; - background: #f0faeb; - border: 0.0133rem solid #d3ecc5; - - font-family: PingFangSC, PingFangSC-Regular; - font-weight: 400; - color: #67c23a; - - display: flex; - align-items: center; - justify-content: center; - - svg - width: 0.75rem; - height: 0.75rem; - - - span - margin-left: 0.1483rem; - - .ys-toast.hide - transform: translateY(-100%); - diff --git a/vdoing/styles/toc.styl b/vdoing/styles/toc.styl deleted file mode 100644 index d3e71069..00000000 --- a/vdoing/styles/toc.styl +++ /dev/null @@ -1,3 +0,0 @@ -.table-of-contents - .badge - vertical-align middle diff --git a/vdoing/styles/wrapper.styl b/vdoing/styles/wrapper.styl deleted file mode 100644 index 40a000e3..00000000 --- a/vdoing/styles/wrapper.styl +++ /dev/null @@ -1,16 +0,0 @@ -$vdoing-wrapper - // max-width $contentWidth - margin 0 auto - // padding 1rem 2.5rem 2rem 2.5rem - &:not(.footer) - background var(--mainBg) - box-shadow 0 1px 2px 0 rgba(0,0,0,.1) - margin-bottom 1rem - @media (min-width $contentWidth + 80) - border-radius 2px - @media (max-width: $MQNarrow) - padding 1rem 2rem - @media (max-width: $MQMobileNarrow) - padding 1rem 1.5rem -$wrapper - //max-width $contentWidth diff --git a/vdoing/templates/dev.html b/vdoing/templates/dev.html deleted file mode 100644 index f796ff8d..00000000 --- a/vdoing/templates/dev.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - -
    - - - \ No newline at end of file diff --git a/vdoing/templates/ssr.html b/vdoing/templates/ssr.html deleted file mode 100644 index e31051bd..00000000 --- a/vdoing/templates/ssr.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - {{ title }} - - {{{ userHeadTags }}} {{{ pageMeta }}} {{{ canonicalLink }}} {{{ - renderResourceHints() }}} {{{ renderStyles() }}} - - - - - - - - - - - - - {{{ renderScripts() }}} - - - - - - - diff --git a/vdoing/types/index.ts b/vdoing/types/index.ts deleted file mode 100644 index 581cdf96..00000000 --- a/vdoing/types/index.ts +++ /dev/null @@ -1,162 +0,0 @@ -import { DefaultThemeConfig } from '@vuepress/types' - -type NoSidebar4DefaultThemeConfig = Omit // 忽略sidebar属性 - -/** - * Vdoing主题配置类型 - * @see https://doc.xugaoyi.com/ - */ -export interface VdoingThemeConfig extends NoSidebar4DefaultThemeConfig { - /** - * 是否打开分类功能. Enable classification - * @default true - */ - category?: boolean; - - /** - * 是否打开标签功能. Enable tag - * @default true - */ - tag?: boolean; - - /** - * 是否打开归档功能. Enable archive - * @default true - */ - archive?: boolean; - - /** - * 碎片化文章(_posts文件夹的文章)预设生成的分类值 - * @default '随笔' - */ - categoryText?: string; - - /** - * body背景大图链接。单张图片 string | 多张图片 string[], 多张图片时每隔15秒换一张。 - * @default '' - */ - bodyBgImg?: string | string[]; - - /** - * body背景图透明度,选值 0.1 ~ 1.0 - * @default 0.5 - */ - bodyBgImgOpacity?: 0.1 | 0.2 | 0.3 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 | 1; - - /** - * 是否显示文章标题前的图标 - * @default true - */ - titleBadge?: boolean; - - /** - * 文章标题前图标的地址 - * @default <内置图标> - */ - titleBadgeIcons?: string[]; - - /** - * 文章内容块的背景风格. 1 方格 | 2 横线 | 3 竖线 | 4 左斜线 | 5 右斜线 | 6 点状 - * @default - */ - contentBgStyle?: 1 | 2 | 3 | 4 | 5 | 6; - - /** - * 最近更新栏. showToArticle 是否显示到文章页底部,默认true。 moreArticle “更多文章”跳转的页面,默认'/archives' - * @default {showToArticle: true, moreArticle: '/archives'} - */ - updateBar?: { - showToArticle: boolean, - moreArticle?: '/archives' | string - }; - - /** - * 宽屏时是否显示右侧文章大纲栏 (屏宽小于1300px下无论如何都不显示) - * @default true - */ - rightMenuBar?: boolean; - - /** - * 初始状态是否打开左侧边栏 (注:这里只是决定收起还是展开侧边栏) - * @default true - */ - sidebarOpen?: boolean; - - /** - * 是否显示快捷翻页按钮 - * @default true - */ - pageButton?: boolean; - - /** - * 侧边栏配置 - */ - sidebar?: - | 'structuring' - | { mode: 'structuring', collapsable: Boolean } - | DefaultThemeConfig['sidebar'] - - /** - * 文章默认的作者信息 - */ - author?: string | { name: string, link?: string } - - /** - * 博主信息 (显示在首页侧边栏) - */ - blogger?: { - avatar: string, - name: string, - slogan?: string, - } - - /** - * 社交图标 (显示于博主信息栏和页脚栏) - * @内置图标-see:https://doc.xugaoyi.com/pages/a20ce8/#social - */ - social?: { - iconfontCssFile?: string, - icons: { - iconClass: string, - title: string, - link: string, - }[] - } - - /** - * 页脚信息 - */ - footer?: { - createYear: number, - copyrightInfo: string - } - - /** - * 扩展自动生成frontmatter。 - * 说明:当md文件的frontmatter不存在相应的字段时将自动添加。不会覆盖已有的数据。 - */ - extendFrontmatter?: { - [key: string]: any - } - - /** - * 自定义hmtl(广告)模块 - * @see: https://doc.xugaoyi.com/pages/a20ce8/#htmlmodules - */ - htmlModules?: { - homeSidebarB?: string, - sidebarT?: string, - sidebarB?: string, - pageT?: string, - pageB?: string, - pageTshowMode?: 'article' | 'custom', - pageBshowMode?: 'article' | 'custom', - windowLB?: string, - windowRB?: string, - } - - /** - * 兼容其他未列举配置项 - */ - [key: string]: any; -} diff --git a/vdoing/util/header.js b/vdoing/util/header.js deleted file mode 100644 index a6cfc565..00000000 --- a/vdoing/util/header.js +++ /dev/null @@ -1,96 +0,0 @@ -// 用于标识下哪个下拉框存在 -let selected = ""; - -// 显示options -export function show (element) { - const intl = document.querySelector(element); - const options = intl.querySelector(".intl-options-wrapper"); - options.setAttribute("style", "display: block;"); -} - -// 隐藏options -export function hidden (element) { - const intl = document.querySelector(element); - const options = intl.querySelector(".intl-options-wrapper"); - options.setAttribute("style", "display: none;"); -} - -export function showHead (event, elementId) { - if (selected === elementId) return; - // 获取选项元素到屏幕左边的距离 - const left = event.target.nodeName === 'LI' ? event.target.childNodes[0].getClientRects()[0].left : event.target.getClientRects()[0].left; - const optionBox = document.querySelector(".option-box"); - // 用于判断是英文页面还是中文 - const langZH = window.location.href.indexOf('/zh/') > -1; - // 当移动另一个选项重置下拉框的位置 - optionBox.setAttribute("style", "top: -7vh;"); - // 悬浮到不同的选项渲染对应的内容 - switch (elementId) { - case "#product": - optionBox.innerHTML = `DeepFlow Cloud`; - break; - case "#open": - if (langZH) { - optionBox.innerHTML = `DeepFlow (Community)`; - break; - } - optionBox.innerHTML = `DeepFlow (Community)`; - break; - case "#learn": - if (langZH) { - optionBox.innerHTML = `文档`; - break; - } - optionBox.innerHTML = `Docs`; - break; - } - setTimeout(function () { - optionBox.setAttribute( - "style", - `transition: 1s; transform: translateY(0%); background-color: rgba(255, 255, 255, 0.6)` - ); - selected = elementId; - }, 0); -} - -export function hiddenHead () { - // 重置下拉框存在 - selected = ""; - const optionBox = document.querySelector(".option-box"); - optionBox.setAttribute("style", ""); -} - -function addEvent (tagName, cb, eventType, useCapture = false) { - const tag_ele = document.querySelector(tagName); - tag_ele.addEventListener(eventType, cb, useCapture); -} - -function productOver (event) { - showHead(event, "#product") -} -function openOver (event) { - showHead(event, "#open") -} -function learnOver (event) { - showHead(event, "#learn") -} - -function removeEvent (tagName, cb, eventType, useCapture = false) { - const tag_ele = document.querySelector(tagName); - tag_ele.removeEventListener(eventType, cb, useCapture); -} - -export function initHead () { - // addEvent("#product", productOver, "mouseover"); - // addEvent("#open", openOver, "mouseover"); - // addEvent("#learn", learnOver, "mouseover"); - // document.addEventListener("scroll", hiddenHead) -} - -export function unbind () { - // removeEvent("#product", productOver, "mouseover"); - // removeEvent("#open", openOver, "mouseover"); - // removeEvent("#learn", learnOver, "mouseover"); - - // document.removeEventListener("scroll", hiddenHead) -} diff --git a/vdoing/util/index.js b/vdoing/util/index.js deleted file mode 100644 index a7a0ab3d..00000000 --- a/vdoing/util/index.js +++ /dev/null @@ -1,302 +0,0 @@ -export const hashRE = /#.*$/; -export const extRE = /\.(md|html)$/; -export const endingSlashRE = /\/$/; -export const outboundRE = /^[a-z]+:/i; - -const sideBarCacheMap = new Map(); - -export function normalize(path) { - return decodeURI(path).replace(hashRE, "").replace(extRE, ""); -} - -export function getHash(path) { - const match = path && path.match(hashRE); - if (match) { - return match[0]; - } -} - -export function isExternal(path) { - return outboundRE.test(path); -} - -export function isMailto(path) { - return /^mailto:/.test(path); -} - -export function isTel(path) { - return /^tel:/.test(path); -} - -export function ensureExt(path) { - if (isExternal(path)) { - return path; - } - if (!path) return "404"; - const hashMatch = path.match(hashRE); - const hash = hashMatch ? hashMatch[0] : ""; - const normalized = normalize(path); - - if (endingSlashRE.test(normalized)) { - return path; - } - return normalized + ".html" + hash; -} - -export function isActive(route, path) { - const routeHash = route.hash; - const linkHash = getHash(path); - if (linkHash && routeHash !== linkHash) { - return false; - } - const routePath = normalize(route.path); - const pagePath = normalize(path); - return routePath === pagePath; -} - - -// 直接把pages转为map读取 减少400ms的时间 -const pageMap = new Map(); -export function resolvePage(pages, rawPath, base) { - if (isExternal(rawPath)) { - return { - type: "external", - path: rawPath, - }; - } - if (base) { - rawPath = resolvePath(rawPath, base); - } - const path = normalize(rawPath); - - if (pageMap.has(path)) { - return pageMap.get(path); - } - - for (let i = 0; i < pages.length; i++) { - const { title, headers, collapsable, basePath, regularPath, path, href } = - pages[i]; - pageMap.set(normalize(regularPath), { - href, - title, - headers, - collapsable, - basePath, - type: "page", - path: ensureExt(path), - }); - } - - if (pageMap.has(path)) { - return pageMap.get(path); - } - - console.error( - `[vuepress] No matching page found for sidebar item "${rawPath}"` - ); - return {}; -} - -function resolvePath(relative, base, append) { - const firstChar = relative.charAt(0); - if (firstChar === "/") { - return relative; - } - - if (firstChar === "?" || firstChar === "#") { - return base + relative; - } - - const stack = base.split("/"); - - // remove trailing segment if: - // - not appending - // - appending to trailing slash (last segment is empty) - if (!append || !stack[stack.length - 1]) { - stack.pop(); - } - - // resolve relative path - const segments = relative.replace(/^\//, "").split("/"); - for (let i = 0; i < segments.length; i++) { - const segment = segments[i]; - if (segment === "..") { - stack.pop(); - } else if (segment !== ".") { - stack.push(segment); - } - } - - // ensure leading slash - if (stack[0] !== "") { - stack.unshift(""); - } - - return stack.join("/"); -} - -/** - * @param { Page } page - * @param { string } regularPath - * @param { SiteData } site - * @param { string } localePath - * @returns { SidebarGroup } - */ -export function resolveSidebarItems(page, regularPath, site, localePath) { - const { pages, themeConfig } = site; - - const localeConfig = - localePath && themeConfig.locales - ? themeConfig.locales[localePath] || themeConfig - : themeConfig; - - const pageSidebarConfig = - page.frontmatter.sidebar || localeConfig.sidebar || themeConfig.sidebar; - if (pageSidebarConfig === "auto") { - return resolveHeaders(page); - } - - const sidebarConfig = localeConfig.sidebar || themeConfig.sidebar; - if (!sidebarConfig) { - return []; - } else { - const { base, config } = resolveMatchingConfig(regularPath, sidebarConfig); - if (config === "auto") { - return resolveHeaders(page); - } - if (!config) { - return []; - } - if (sideBarCacheMap.has(base)) { - return sideBarCacheMap.get(base); - } - sideBarCacheMap.set( - base, - config.map((item) => resolveItem(item, pages, base)) - ); - return sideBarCacheMap.get(base); - } -} - -/** - * @param { Page } page - * @returns { SidebarGroup } - */ -function resolveHeaders(page) { - const headers = groupHeaders(page.headers || []); - return [ - { - type: "group", - collapsable: false, - title: page.title, - path: null, - children: headers.map((h) => ({ - type: "auto", - title: h.title, - basePath: page.path, - path: page.path + "#" + h.slug, - children: h.children || [], - })), - }, - ]; -} - -export function groupHeaders(headers) { - return headers.map((item) => item); - // group h3s under h2 - // headers = headers.map(h => Object.assign({}, h)) - // let lastH2 - // headers.forEach(h => { - // if (h.level === 1) { - // lastH2 = h - // } else if (lastH2) { - // (lastH2.children || (lastH2.children = [])).push(h) - // } - // }) - // return headers.filter(h => h.level === 1) -} - -export function resolveNavLinkItem(linkItem) { - return Object.assign(linkItem, { - type: linkItem.items && linkItem.items.length ? "links" : "link", - }); -} - -/** - * @param { Route } route - * @param { Array | Array | [link: string]: SidebarConfig } config - * @returns { base: string, config: SidebarConfig } - */ -export function resolveMatchingConfig(regularPath, config) { - if (Array.isArray(config)) { - return { - base: "/", - config: config, - }; - } - for (const base in config) { - if (ensureEndingSlash(regularPath).indexOf(encodeURI(base)) === 0) { - return { - base, - config: config[base], - }; - } - } - return {}; -} - -function ensureEndingSlash(path) { - return /(\.html|\/)$/.test(path) ? path : path + "/"; -} - -function resolveItem(item, pages, base, groupDepth = 1) { - if (typeof item === "string") { - return resolvePage(pages, item, base); - } else if (Array.isArray(item)) { - return Object.assign(resolvePage(pages, item[0], base), { - title: item[1], - }); - } else { - const children = item.children || []; - return { - type: children.length === 0 ? "" : "group", - path: item.path && base + item.path.substring(1), - href: item.href, - title: item.title, - sidebarDepth: item.sidebarDepth, - initialOpenGroupIndex: item.initialOpenGroupIndex, - children: children.map((child) => - resolveItem(child, pages, base, groupDepth + 1) - ), - collapsable: item.collapsable !== false, - }; - } -} - -// 类型判断 -export function type(o) { - const s = Object.prototype.toString.call(o); - return s.match(/\[object (.*?)\]/)[1].toLowerCase(); -} - -// 日期格式化(只获取年月日) -export function dateFormat(date) { - if (!(date instanceof Date)) { - date = new Date(date); - } - return `${date.getUTCFullYear()}-${zero(date.getUTCMonth() + 1)}-${zero( - date.getUTCDate() - )}`; -} - -// 小于10补0 -export function zero(d) { - return d.toString().padStart(2, "0"); -} - -// 将特殊符号编码(应用于url) -export function encodeUrl(str) { - str = str + ""; - str = str.replace(/ |((?=[\x21-\x7e]+)[^A-Za-z0-9])/g, "-"); - return str; -} diff --git a/vdoing/util/init.js b/vdoing/util/init.js deleted file mode 100644 index 37c9aa33..00000000 --- a/vdoing/util/init.js +++ /dev/null @@ -1,255 +0,0 @@ -import ClipboardJS from 'clipboard' -import config from '../config.js' -const eBPFUrl = '/ebpf-the-key-technology-to-observability/' -const eBPFZHUrl = '/zh/ebpf-the-key-technology-to-observability/' - -export default () => { - function addWebHeaderEvent() { - document.querySelectorAll(".to-signup").forEach((element) => { - element.addEventListener("click", function () { - window.open('https://cloud.deepflow.yunshan.net/signup.html', '_blank') - }); - }); - document.querySelectorAll(".to-demo").forEach((element) => { - element.addEventListener("click", function () { - window.open('https://ce-demo.deepflow.yunshan.net/', '_blank') - }); - }); - document.querySelector('.feature-list').querySelectorAll('.feature-item').forEach(element => { - element.addEventListener('click', function () { - var name = element.getAttribute('data-name') - var href = '', target = '' - const isZH = window.location.href.indexOf('/zh/') > -1 - const isHome = window.location.href.includes("deepflow.io") - let domain = (isHome ? '' : 'https://deepflow.io') - switch (name) { - case 'deepflow-cloud': - href = isZH ? '/zh/' : '/' - target = '_self' - break; - case 'agent': - href = isZH ? '/zh/agent' : '/agent' - target = '_self' - break; - case 'eBPF': - href = isZH ? eBPFZHUrl : eBPFUrl - target = '_self' - break; - case 'blog': - href = "/blog/" + (isZH ? 'zh/' : ''); - target = '_self' - break; - case 'docs': - domain = '' - href = config.base + (isZH ? 'zh/' : ''); - target = '_self' - break; - case 'authentication': - href = isZH ? '/zh/cert' : '/cert' - target = '_self' - break; - default: - break; - } - - window.open(domain + href, target) - }) - }) - } - - // 跳转js - window.jumpByTag = function (root, name) { - // window.location.href = root+'?tag='+encodeURIComponent(name) - } - - function IsMobile() { - var ua = navigator.userAgent; - var ipad = ua.match(/(iPad).*OS\s([\d_]+)/), - isIphone = ua.match(/(iPhone\sOS)\s([\d_]+)/), - isAndroid = ua.match(/(Android)\s+([\d.]+)/), - isMobile = ipad || isIphone || isAndroid; - return !!isMobile; - } - - - function addMobileHeaderEvent() { - document.querySelectorAll(".to-signup").forEach((element) => { - element.addEventListener("click", function () { - window.location.href = "https://cloud.deepflow.yunshan.net/signup.html"; - }); - }); - // document.getElementById("signin-m").addEventListener("click", function () { - // document.querySelector(".ys-model").style.display = "block"; - // setTimeout(() => { - // document - // .querySelector(".ys-model-contianer") - // .classList.remove("captcha-box"); - // }); - // }); - } - - - function addModelEvent() { - document - .querySelector(".ys-model-masking") - .addEventListener("click", function () { - document - .querySelector(".ys-model-contianer") - .classList.add("captcha-box"); - setTimeout(() => { - document.querySelector(".ys-model").style.display = "none"; - }, 300); - }); - - var btnCopy = new ClipboardJS("#copy-button", { - // 通过target指定要复印的节点 - target: function () { - return document.querySelector("#copy-content"); - }, - }); - btnCopy.on("success", function (e) { - e.clearSelection(); - // btnCopy.destroy(); - showToast(); - }); - } - - - function addNavClick() { - let showNav = false; - let timer; - let lastOverflow - - document.getElementById("nav").addEventListener("click", function () { - if (timer) { - return false; - } - if (showNav) { - document.body.style.overflow = lastOverflow - showNav = false; - document.querySelector(".nav-list-box").style.height = "1px"; - timer = setTimeout(() => { - document.querySelector(".nav-list").style.display = "none"; - timer = null; - }, 300); - } else { - showNav = true; - lastOverflow = document.body.style.overflow - document.body.style.overflow = 'hidden' - document.querySelector(".nav-list").style.display = "block"; - timer = setTimeout(() => { - document.querySelector(".nav-list-box").style.height = document.querySelector('.nav-list-box').querySelectorAll('.nav-link').length * 2.1742 + "rem"; - timer = null; - }); - } - }); - - document.querySelectorAll(".nav-link").forEach((element) => { - element.addEventListener("click", function () { - const name = element.getAttribute("data-name"); - let href = "", - target = ""; - const isZH = window.location.href.indexOf('/zh/') > -1 - const isHome = window.location.href.includes("deepflow.io") - let domain = (isHome ? '' : 'https://deepflow.io') - switch (name) { - case 'deepflow-cloud': - href = isZH ? '/zh/' : '/' - target = '_self' - break; - case 'agent': - href = isZH ? '/zh/agent' : '/agent' - target = '_self' - break; - case 'eBPF': - href = isZH ? eBPFZHUrl : eBPFUrl - target = '_self' - break; - case 'blog': - href = "/blog/" + (isZH ? 'zh/' : ''); - target = '_self' - break; - case 'docs': - domain = '' - href = config.base + (isZH ? 'zh/' : ''); - target = '_self' - break; - case 'authentication': - href = isZH ? '/zh/cert' : '/cert' - target = '_self' - break; - default: - return false - } - window.open(domain + href, target); - }); - }); - } - - var timer; - var timer1; - function showToast() { - // 展示成功 - var el = document.querySelector("#ys-toast"); - if (!el) { - return false; - } - el.style.display = "flex"; - setTimeout(() => { - el.classList.remove("hide"); - }); - - if (timer) { - clearTimeout(timer); - } - if (timer1) { - clearTimeout(timer1); - } - document.querySelector(".ys-model-contianer").classList.add("captcha-box"); - setTimeout(() => { - document.querySelector(".ys-model").style.display = "none"; - }, 300); - timer = setTimeout(hideToast, 2000); - } - - function hideToast() { - var el = document.querySelector("#ys-toast"); - if (!el) { - loadToast(); - return false; - } - el.classList.add("hide"); - timer1 = setTimeout(() => { - el.style.display = "none"; - }, 1000); - } - - window.addEventListener('load', function () { - if (IsMobile()) { - addMobileHeaderEvent(); - addModelEvent(); - addNavClick(); - } else { - addWebHeaderEvent(); - } - getGithubInfo(); - }) - - async function getGithubInfo() { - const STARS_KEY = 'YS-DEEPFLOW-GITHUB-STARS' - const STARS_DEFAULT = 1521 - const cacheStars = localStorage.getItem(STARS_KEY) || STARS_DEFAULT - document.querySelectorAll(".github-stars").forEach(stars_counts => { - stars_counts.innerHTML = cacheStars; - stars_counts.setAttribute("style", "display: flex"); - }) - const res = await fetch('https://api.github.com/repos/deepflowio/deepflow').then(response => response.json()) - if (!res.stargazers_count) { - return false - } - localStorage.setItem(STARS_KEY, res.stargazers_count) - document.querySelectorAll(".github-stars").forEach(stars_counts => { - stars_counts.innerHTML = res.stargazers_count; - }); - } -} diff --git a/vitepress-migration-plan.md b/vitepress-migration-plan.md new file mode 100644 index 00000000..b527ec71 --- /dev/null +++ b/vitepress-migration-plan.md @@ -0,0 +1,601 @@ +# DeepFlow 文档站改造方案:VuePress 1 + vdoing → VitePress + +> 调研基准日期:**2026-09-17**。文中所有版本号、能力、配置写法均以当日 VitePress 官方文档(vitepress.dev)、官方 CHANGELOG(github.com/vuejs/vitepress)及各插件官方文档为准。本仓库为 `deepflow-websites/docs`(下称"仓库根")。 + +--- + +## 1. TL;DR + +| 项 | 结论 | +|---|---| +| 目标框架 | **VitePress 1.6.4(当前最新稳定版)**,Vue 3 + Vite 5,Node 18+ | +| 为什么不是 2.0 | VitePress 2.0 仍处于 alpha(最新 `2.0.0-alpha.20`,2026-09-04,基于 Vite 8、要求 Node 22+),生产文档站不跟 alpha;本方案附录给出 1.x→2.0 的升级预告 | +| 主题 | **移除 vdoing,改用官方默认主题 + 轻量扩展**(`.vitepress/theme/`):页脚备案、图片缩放、中文文案 | +| URL | **180 个内容页 URL 100% 保持不变**:内容文件原样不动,用官方 `rewrites` 能力由脚本从现有 `permalink` frontmatter 生成映射 | +| 内容改动量 | 极小:18 处 `code-tabs` 转 `code-group`、2 个首页 frontmatter 重写;`tip/warning` 容器、任务列表、脚注语法天然兼容 | +| 高级能力 | 内置容器(tip/info/warning/danger/details)、**自定义容器**(markdown-it-container)、GFM Alerts、代码组、Shiki 高亮、代码导入、数学公式等,详见 §5 | +| 搜索 | 官方本地搜索(minisearch)+ `Intl.Segmenter` 中文分词,替代自研 FlexSearch 插件 | +| Mermaid | `vitepress-plugin-mermaid` + mermaid 11,替代 mermaid 8.14 自研插件 | +| 工程化 | CI Node 12→22、pnpm 6→10,去掉 `--openssl-legacy-provider`;构建产物仍输出 `dist/`,Dockerfile 基本不动 | +| 预估工作量 | 骨架 + codemod + 验证约 **3~5 人日**,分 6 个阶段(§9) | + +--- + +## 2. 现状盘点(迁移基线) + +### 2.1 技术栈现状 + +- **VuePress 1.9.7**(Vue 2 + webpack 4),非 VitePress;主题为本地魔改的 `vuepress-theme-vdoing`(仓库根 `vdoing/` 目录,约 20 个子目录:layouts、global-components、styles、locales 等)。 +- CI 使用 **Node 12 + pnpm 6**,构建命令带 `--openssl-legacy-provider`(OpenSSL 3 兼容 hack)和 `--max-old-space-size=4096 --max-concurrency=500`(webpack 构建慢、内存压力大的补丁)。 +- `package.json` 中 mermaid 锁在 **8.14.0**(2022 年版本,与当前语法有差距)。 + +### 2.2 内容资产(已全量扫描) + +| 资产 | 数量 | 说明 | +|---|---|---| +| Markdown 文件 | 182 | 180 个中文内容页(`docs/zh/`)+ 2 个首页(`docs/README.md` 英文、`docs/zh/README.md` 中文,vdoing `home: true` 格式) | +| 内容分区 | 10 | `01-about` ~ `10-release-notes`,编号前缀是 vdoing "structuring" 侧边栏的排序机制 | +| frontmatter | 180 页均有 `title` + `permalink` | **permalink 全部是干净 URL**(如 `/about/overview`、`/guide/ee-tenant/dashboard/panel/line/`),不含 `/zh/`、不含编号前缀 | +| `::: code-tabs#shell` | 18 处(48 个 `@tab`) | vdoing 自定义容器语法 | +| `::: tip` / `::: warning` | 7 / 3 处 | 语法与 VitePress 完全一致 | +| mermaid 代码块 | 26 块(20 个文件) | 经自研 `mermaidjs` 插件渲染 | +| 任务列表 `- [ ]` | 48 行 | 经自研 `todo` 插件渲染 | +| 脚注 `[^n]` | 5 处 | 经自研 `footnote` 插件渲染 | +| 相对链接 | 587 处;`.md` 后缀链接仅 6 处 | 图片绝大多数为外链(阿里云 OSS),少量 `./imgs/` 相对引用 | +| 未使用的能力 | — | `Badge`/`CodeTabs` 全局组件 0 处、demo-block 0 处、标题自定义锚点 `{#id}` 0 处 | + +### 2.3 自研插件清单(全部在 `docs/.vuepress/plugins/`,共 11 个) + +| 插件 | 类型 | 迁移处置 | +|---|---|---| +| `code-tabs` | markdown-it | **删除**,转官方内置 `::: code-group`(需 18 处语法转换) | +| `footnote` | markdown-it(415 行) | **删除**,换 `markdown-it-footnote` | +| `todo` | markdown-it | **删除**,换 `markdown-it-task-lists`(1.6.4 无内置;2.0 已内置) | +| `auto-add-title-order` | markdown-it | 渲染期给 H1/H2 自动编号("1. "、"2.2 ")。**建议弃用**(现代文档惯例不编号,编号信息已由目录序号承担);若必须保留,见 §5.5 | +| `auto-complete-url` / `disable-url-encode` | markdown-it | VuePress 1 链接处理 hack,VitePress 原生路由/链接处理替代,**删除**(迁移期验证) | +| `fulltext-search` | VuePress 插件(FlexSearch) | **删除**,换官方本地搜索(§7) | +| `one-click-copy` | VuePress 插件 | **删除**,VitePress 默认主题代码块自带复制按钮 | +| `vuepress-keyword` | VuePress 插件(meta keywords) | **删除**,keywords SEO 价值极低;如需保留用 `head` 配置 | +| `mermaidjs` | VuePress 插件 | **删除**,换 `vitepress-plugin-mermaid`(§7.3) | +| `love-me` | VuePress 插件 | 内容中未见使用,**删除** | + +### 2.4 部署现状 + +- `base: '/docs/'`,产物 `dist/`;Dockerfile 基于 `nginx:1.20`,将 `dist` 拷到 `/usr/share/nginx/html/docs`,`try_files $uri $uri/ /docs/index.html`。 +- 周边脚本与框架弱耦合,基本不受影响:`translate/`(调 API 的翻译流水线,读写 md + frontmatter)、`downloadCSV.js`/`downloadFile.js`、`addTime.js`(vdoing 博客用的时间戳脚本,可随迁移废弃)。 +- `LOCALES/en|zh.json` 是 vdoing 主题 UI 文案,随主题一起废弃。 + +--- + +## 3. 版本选型(以 2026-09-17 官方发布为准) + +### 3.1 官方版本现状 + +| 通道 | 版本 | 日期 | 底层 | Node | +|---|---|---|---|---| +| 稳定版 | **1.6.4** | 2025-01 | Vue 3.5 + Vite ^5.4.14 | ≥ 18 | +| 预发布 | 2.0.0-alpha.20 | 2026-09-04 | Vite ^8.3.0 | ≥ 22 | + +依据:官方 [CHANGELOG](https://github.com/vuejs/vitepress/blob/main/CHANGELOG.md)、[vitepress.dev](https://vitepress.dev/) 版本切换器、v1.6.4 tag 的 `package.json`(vite ^5.4.14)与 Getting Started(Node 18+)。 + +### 3.2 决策:生产上 1.6.4 稳定版 + +- 2.0 处于 alpha(2026-03 起持续发 alpha,尚未 beta),文档站是生产系统,**不跟 alpha** 是 2026 年的稳妥最佳实践。 +- 1.6.4 的能力(容器、代码组、rewrites、本地搜索、sitemap、暗色模式)完全覆盖本站需求;不足的两点(脚注、任务列表)各加一个 markdown-it 插件即可,成本一行配置。 +- 本方案的配置写法尽量采用"面向 2.0"的形式(如 `outline.label`、`lastUpdated.text`),并在附录 A 列出未来 1.x→2.0 的已知差异,降低二次升级成本。 +- CI 直接上 **Node 22 LTS**(向前兼容 2.0 的 Node 要求)。 + +--- + +## 4. 目标架构 + +### 4.1 目录结构(before → after) + +``` +仓库根/ 仓库根/ +├─ docs/ ├─ .vitepress/ # ★ 新增:项目根配置 +│ ├─ .vuepress/ # 删除 │ ├─ config.mts # 主配置 +│ │ ├─ config.js │ ├─ rewrites.generated.json # 脚本生成(§4.4) +│ │ ├─ plugins/* │ ├─ sidebar.mts # 侧边栏生成器(§6.3) +│ │ ├─ public/img │ └─ theme/ # 默认主题扩展(§6) +│ │ └─ styles/*.styl # 删除 │ ├─ index.ts +│ ├─ README.md # 英文首页 │ ├─ custom.css +│ └─ zh/** # 内容,原样保留 ├─ docs/ # srcDir(内容目录不变) +├─ vdoing/ # 删除 │ ├─ index.md # ★ 由 zh/README.md 转换 +├─ LOCALES/ # 删除 │ ├─ public/img # ★ 由 .vuepress/public 移入 +├─ package.json │ └─ zh/** # ★ 180 个内容页不动 +├─ Dockerfile ├─ package.json # 重写依赖 +└─ nginx/default.conf └─ Dockerfile # 基本不变 +``` + +要点: + +- **项目根 = 仓库根**(package.json 所在),`.vitepress/` 放仓库根,`srcDir: 'docs'`。这是官方推荐布局(官方文档自身即如此拆分,见 vitepress 仓库 `docs/.vitepress/config/`)。 +- **`docs/zh/` 全部 180 个内容文件一字不动**——编号前缀继续承担排序职责(侧边栏生成器消费它),URL 由 `rewrites` 负责(§4.4)。这是"零内容移动、零 git 历史破坏"的关键。 +- 首页:`git mv docs/zh/README.md docs/index.md` 并重写 frontmatter(§9 codemod-2)。旧英文首页 `docs/README.md` 是一个仅含 hero 与"Read Now →"按钮、实际链向中文内容的单页,建议直接由中文首页取代 `/docs/`(决策点,见 §4.5)。 + +### 4.2 package.json(新) + +```jsonc +{ + "name": "deepflow-docs", + "private": true, + "packageManager": "pnpm@10.x", + "scripts": { + "dev": "vitepress dev", // 项目根即 vitepress root + "build": "vitepress build", + "preview": "vitepress preview" + }, + "devDependencies": { + "vitepress": "^1.6.4", + "mermaid": "^11", + "vitepress-plugin-mermaid": "^2.0.16", + "markdown-it-footnote": "^4", // 1.6.4 无内置脚注(2.0 已内置) + "markdown-it-task-lists": "^2", // 1.6.4 无内置任务列表(2.0 已内置) + "markdown-it-container": "^4" // 自定义容器(§5.2) + } +} +``` + +删除全部 VuePress 1 / vdoing / 自研插件依赖(共 17 个)。`--openssl-legacy-provider`、`--max-old-space-size` 等参数全部移除。 + +### 4.3 主配置骨架 `.vitepress/config.mts` + +```ts +import { defineConfig } from 'vitepress' +import footnote from 'markdown-it-footnote' +import taskLists from 'markdown-it-task-lists' +import container from 'markdown-it-container' +import { withMermaid } from 'vitepress-plugin-mermaid' +import { sidebar } from './sidebar' +import rewrites from './rewrites.generated.json' + +export default withMermaid( + defineConfig({ + lang: 'zh-CN', + title: 'DeepFlow 文档', + description: '基于 eBPF 和 Wasm 的云原生及 AI 应用深度可观测性平台文档', + + srcDir: 'docs', + outDir: '../dist', // 保持 Dockerfile 的 COPY ./dist 不变 + base: '/docs/', + cleanUrls: true, // /about/overview 而非 .html(配 nginx,见 §8.2) + lastUpdated: true, // 取 git 提交时间,替代 addTime.js + sitemap: { hostname: 'https://deepflow.io' }, // 自动生成 sitemap.xml + + // URL 映射:由脚本从 180 个 permalink 生成(§4.4) + rewrites, + + locales: { + root: { label: '简体中文', lang: 'zh-CN' } + // 未来英文内容就绪后:en: { label: 'English', lang: 'en-US' },内容放 docs/en/ + }, + + head: [ + ['link', { rel: 'icon', href: '/img/favicon.ico' }], + ['meta', { name: 'theme-color', content: '#0a72ef' }] + ], + + markdown: { + lineNumbers: true, // 对齐现有 markdown.lineNumbers: true + config: (md) => { + md.use(footnote) + md.use(taskLists) + // 自定义容器(§5.2) + md.use(container, 'success', { + render: (tokens, idx) => + tokens[idx].nesting === 1 + ? '

    SUCCESS

    \n' + : '
    \n' + }) + } + }, + + themeConfig: { + logo: '/img/logo.png', + outline: { level: [2, 3], label: '本页目录' }, + lastUpdated: { text: '上次更新' }, + docFooter: { prev: '上一篇', next: '下一篇' }, + returnToTopLabel: '回到顶部', + sidebarMenuLabel: '菜单', + darkModeSwitchLabel: '主题', + lightModeSwitchTitle: '切换到浅色模式', + darkModeSwitchTitle: '切换到深色模式', + + editLink: { + pattern: 'https://github.com/deepflowio/docs/edit/main/docs/:path', + text: '在 GitHub 上编辑此页' + }, + // nav / sidebar 见 §6 + search: { /* §7 本地搜索 */ } + } + }) +) +``` + +> 注:`outline.label` / `lastUpdated.text` 是面向 2.0 的新写法;若 1.6.4 对个别键报警告,回退老写法 `outlineTitle` / `lastUpdatedText` 即可(两者在 1.x 均受支持,2.0 中老写法移除,见附录 A)。 + +### 4.4 URL 保持策略(本方案的核心保障) + +现状:180 页的线上 URL = `base(/docs/) + permalink`,如 `permalink: /guide/ee-tenant/dashboard/panel/line/` → `https://deepflow.io/docs/guide/ee-tenant/dashboard/panel/line/`。文件路径(`zh/06-guide/02-ee-tenant/.../01-line.md`)与 permalink **不同构**。 + +方案:**不改文件,用官方 `rewrites`**。VitePress 的 `rewrites` 支持映射表、动态参数和函数三种形式(官方 Routing → Route Rewrites)。步骤: + +1. 写一次性脚本 `scripts/gen-rewrites.mjs`:遍历 `docs/zh/**/*.md`,解析 frontmatter 的 `permalink`,输出 `.vitepress/rewrites.generated.json`: + + ```json + { + "zh/01-about/01-overview.md": "about/overview.md", + "zh/06-guide/01-quick-start/01-5w-method.md": "guide/quick-start/5w-method.md" + } + ``` + + (permalink 需归一化:去首尾 `/`、补 `.md`;无 permalink 的文件回退为"去 `zh/` 前缀 + 去编号段"的推导值。) + +2. `config.mts` 直接 `import` 该 JSON 作为 `rewrites`。 +3. **校验**:构建后对比 VitePress 生成的 sitemap.xml 与脚本导出的旧 permalink 清单,必须 180/180 全等;任何不等项进显式映射修正。 +4. permalink 字段本身留在 frontmatter 中不动(VitePress 会忽略未知字段),避免一次性触碰 180 个文件的 git 记录;后续清理可选。 + +备选方案(不推荐):物理重排目录(`git mv zh/01-about → about`)。URL 同样可保持,但 180 个文件全部移动,git blame/PR diff 噪音大,且丢失"编号即排序"的隐含约定。 + +### 4.5 站点语言模型(实施时按发现的事实修订) + +> **修订记录(2026-09-17 实施期)**:初版方案误以为英文内容只有一个首页。实际核查发现 `translate/translated/` 中**提交了 180 个英文机翻页面**(与中文树同构、同 permalink),CI 构建时合并进 `docs/`。旧站因中英两树 permalink 相同,构建时互相覆盖、**英文胜出**——线上 clean URL 上实际是英文内容,中文页面反而不达。据此本节结论修订如下。 + +实施采用的双语言模型: + +- **英文(源:`translate/translated/`,CI 合并至 `docs/` 根)→ 根路径 clean URL**:与线上现状完全一致,英文 URL 保持率 100%(180/180,含 17 个仅英文的旧版本笔记)。 +- **中文(源:`docs/zh/`)→ `/zh/` 前缀**:中文页面首次真正可达(旧站被覆盖),`/docs/zh/` 首页的入口链接同步修复。 +- 双语页面在 VitePress `locales` 中配置(root=en、zh=/zh/),导航栏自动出现语言切换菜单。 +- **首页默认中文**:`/docs/` 由 nginx 无条件 302 到 `/docs/zh/`(`location = /docs/`)。语言切换不受影响——内容页上的语言菜单是深链直达对应语言页面的,仅"站在中文首页切英文"会经 `/docs/` 弹回中文首页。英文首页(dev 与 sitemap 中仍存在)经此重定向不对访客暴露。 +- 仅中文的页面(如尚未翻译的 EE 7.2 版本笔记)由 nginx 301 从旧根路径跳转到 `/zh/`(`nginx/zh-only-redirects.conf`,由 `gen-rewrites.mjs` 生成)。 +- `downloadFile.json` 声明的 CI 下载页(Agent 配置)中英各一,同规则处理。 +- 旧英文首页(hero 单页)由中文首页逻辑对等的英文 VitePress home 取代,内容原样转换。 + +--- + +## 5. Markdown 高级能力(2026 官方形态) + +以下均为 VitePress 开箱能力,来源:官方 [Markdown Extensions](https://vitepress.dev/guide/markdown)(2.0-alpha 文档;逐项已对照 v1.6.4 tag 源码/文档核实,差异处已标注)。 + +### 5.1 内置容器(无需任何配置) + +```md +::: info / ::: tip / ::: warning / ::: danger # 四种提示容器 +::: details 标题 # 折叠块,可加 {open} 默认展开(2.0) +::: danger STOP # 自定义标题:类型后直接跟文字 +:::: tip # 嵌套:外层围栏加长 +::: tip 内层 +::: +:::: +::: raw # 隔离样式/路由冲突 +``` + +现有内容里的 7 处 `::: tip`、3 处 `::: warning` **语法完全兼容,零改动**。 + +另支持 GitHub 风格 Alerts(v1.6.4 起内置 `githubAlerts` 插件,已核实源码存在): + +```md +> [!NOTE] / > [!TIP] / > [!IMPORTANT] / > [!WARNING] / > [!CAUTION] +``` + +### 5.2 自定义容器(用户点名的能力) + +**1.6.4(本方案采用)**:官方文档 "Advanced Configuration" 方式,在 `markdown.config` 里用 `markdown-it-container` 注册(vitepress 自身也依赖它,显式安装以获得版本控制): + +```ts +markdown: { + config: (md) => { + md.use(container, 'success', { render: ... }) // 见 §4.3 骨架 + } +} +``` + +**2.0(升级后可换声明式)**:`markdown.container.customContainers: { success: 'SUCCESS' }`,并支持 `::: tip {no-title}` 无标题容器、`note/important/caution` 新内置类型(均见 2.0 CHANGELOG:#962f00e、#4c7a030、#3b560a0)。 + +### 5.3 代码相关(对文档站价值最大) + +| 能力 | 语法 | 备注 | +|---|---|---| +| Shiki 高亮 | ` ```bash ` | 替代 prismjs,内置 | +| 行高亮 | ` ```bash{4,7-13} ` 或行内 `# [!code highlight]` | 现有内容未用,新能力 | +| Diff/错误标记 | `// [!code ++]`、`// [!code --]`、`// [!code warning]` | 新能力 | +| 行号 | `markdown.lineNumbers: true`(已配)或逐块 `:line-numbers` | 对齐现状 | +| **代码组** | `::: code-group` + ```` ```bash [标题] ```` | **替代 code-tabs**,见 §9 codemod-3 | +| 导入文件 | `<<< @/snippets/example.sh{2}`(支持 region) | 新能力,适合 Helm values 等长配置 | +| md 包含 | `` | 新能力 | + +### 5.4 其他内置 + +frontmatter(YAML)、表格、**任务列表**(2.0 内置;1.6.4 需 `markdown-it-task-lists`,已配)、**脚注 `[^1]`**(2.0 内置;1.6.4 需 `markdown-it-footnote`,已配,现有 5 处用法语法兼容)、emoji `:tada:`、TOC `[[toc]]`、数学公式(可选 `markdown: { math: true }`,需装 `markdown-it-mathjax3`)、图片懒加载(2.0:`image.lazyLoad`)。 + +中文友好增强(可选):`markdown-it-cjk-friendly` 解决 `中文**加粗**中文` 这类 CJK 相邻强调解析问题;2.0 中该行为默认开启(`cjkFriendlyEmphasis: true`,已核实源码),1.6.4 上可手动加同作者插件。 + +### 5.5 标题自动编号(现状功能,建议弃用) + +`auto-add-title-order` 在**渲染期**给标题加 "1. / 2.2 " 编号,文件内容本身无编号,因此弃用**不需要改任何内容**,仅是视觉变化。建议弃用的理由:与锚点/TOC/搜索引擎摘要无关的装饰性编号、多一层插件维护成本、现代文档站惯例是无编号正文 + 编号目录。若产品坚持保留,可用约 30 行的 renderer 规则平移该逻辑(实现同款 `heading_open` hook),不阻塞迁移主线。 + +--- + +## 6. 主题定制:用官方默认主题替代 vdoing + +原则:**extends DefaultTheme,只做加法**(官方 [Extending the Default Theme](https://vitepress.dev/guide/extending-default-theme))。 + +### 6.1 vdoing 功能映射表 + +| vdoing 能力 | VitePress 替代 | 成本 | +|---|---|---| +| structuring 侧边栏(按编号目录自动生成) | `sidebar.mts` 生成器(§6.3) | 中 | +| home 首页(heroText/features/actionLink) | 官方 `layout: home` frontmatter(hero/features/actions) | 低,codemod-2 | +| lastUpdated(上次更新) | 内置(git 时间) | 0 | +| editLinks(编辑此页) | 内置 `editLink.pattern` | 0 | +| one-click-copy(代码复制) | 默认主题内置 | 0 | +| 页脚备案号 | `layout-bottom` slot 自定义组件 | 低 | +| LOCALES UI 中文化 | `themeConfig` 各 label(已在 §4.3 骨架配齐) | 0 | +| 暗色模式 | 内置(appearance 切换) | 0 | +| 移动端/搜索框/outline | 默认主题内置 | 0 | +| stylus 主题样式(palette/index.styl) | CSS 变量覆盖 + `custom.css` | 低 | +| 图片点击放大(vuepress-plugin-zooming) | 官方指南的 medium-zoom 集成示例 | 低 | +| 目录页(__autoGenerate__ 结构化目录) | 未在内容中使用,不迁移 | 0 | + +### 6.2 主题扩展文件 + +```ts +// .vitepress/theme/index.ts +import DefaultTheme from 'vitepress/theme' +import { mediumZoom } from './medium-zoom' +import './custom.css' + +export default { + extends: DefaultTheme, + Layout: () => { + return h(DefaultTheme.Layout, null, { + // 页脚:备案信息,替代 vdoing footer + 'layout-bottom': () => h('footer', { class: 'footer' }, + 'YUNSHAN Networks | 京 ICP 备 14036633号-4 京公网安备') + }) + }, + enhanceApp({ app, router }) { + if (typeof window !== 'undefined') mediumZoom(router) // 图片缩放 + } +} +``` + +`custom.css` 只覆盖品牌变量与少量布局(主色 `--vp-c-brand-1: #0a72ef` 对齐现有 theme-color 等),**不搬 vdoing 的 stylus 全量样式**——默认主题的排版/响应式/暗色质量远高于魔改 vdoing,全量平移只会拖住后腿。 + +### 6.3 侧边栏生成器 `.vitepress/sidebar.mts` + +官方迁移指南明确:VitePress 侧边栏不再从 frontmatter 自动生成,需自行读取数据([migration-from-vuepress](https://vitepress.dev/guide/migration-from-vuepress))。实现要点: + +```ts +// 伪代码:配置期直接跑在 Node,可同步用 fs +import fs from 'node:fs' + +const SECTIONS = { // 分区标题清单(唯一的排序/命名来源) + '01-about': '关于 DeepFlow', + '02-ce-install': '社区版安装', + '03-ee-install': '企业版安装', + '04-best-practice': '最佳实践', + '05-features': '功能特性', + '06-guide': '使用指南', + '07-configuration': '配置说明', + '08-integration': '集成', + '09-diagnose': '故障诊断', + '10-release-notes': '版本发布笔记' +} + +export function sidebar() { + // 遍历 docs/zh/
    /**,目录/文件名按前缀数字自然排序, + // 文本取 frontmatter title(缺省用去编号的文件名), + // link 指向 rewrite 后的 URL(读 rewrites.generated.json 反查) + return { '/': buildItems() } +} +``` + +收益:目录结构调整时零配置维护;`SECTIONS` 是唯一需要人工维护的清单,天然充当文档信息架构的声明文件。 + +--- + +## 7. 搜索与图表 + +### 7.1 本地搜索(替代自研 FlexSearch 插件) + +官方支持开箱即用的浏览器端全文搜索(minisearch,[Search 参考](https://vitepress.dev/reference/default-theme-search))。中文站必须自定义分词,否则整句无法命中。2026 年社区通用做法是 `Intl.Segmenter`: + +```ts +themeConfig: { + search: { + provider: 'local', + options: { + translations: { // UI 中文化(键名以官方 reference 为准) + button: { buttonText: '搜索文档', buttonAriaLabel: '搜索' }, + modal: { + noResultsText: '未找到结果', + resetButtonTitle: '清除查询', + footer: { selectText: '选择', navigateText: '切换', closeText: '关闭' } + } + }, + miniSearch: { + options: { + // 中文按词切分(Intl.Segmenter 为运行时内置 API,Node 18+ 与现代浏览器均支持) + tokenize: (text) => + [...new Intl.Segmenter('zh-CN', { granularity: 'word' }).segment(text)] + .map((s) => s.segment) + } + } + } + } +} +``` + +`miniSearch.options` 可定制 `extractField / tokenize / processTerm`(v1.6.4 类型定义已核实)。**实施时验证点**:自定义 `tokenize` 在构建期索引与浏览器查询期的一致性(官方 issue #3496 附近有讨论);若效果不理想,备选方案是 `vitepress-plugin-pagefind`(对中文分词更友好,npm 包,一行接入)。远期若需要更强的相关性排序再评估 Algolia DocSearch(免费但需申请)。 + +### 7.2 搜索结果噪音 + +mermaid 源码文本会进入搜索索引(26 处图源可能产生噪音)。实施时在本地搜索 `_render`/索引侧过滤 `language-mermaid` 块或接受现状,以实际搜索体验定夺(该问题在 vitepress-plugin-mermaid 的 issue 区亦有讨论)。 + +### 7.3 Mermaid + +```ts +// 已体现在 §4.3:withMermaid 包裹整个 defineConfig 结果 +import { withMermaid } from 'vitepress-plugin-mermaid' +export default withMermaid(defineConfig({ ... })) +``` + +- 依赖:`vitepress-plugin-mermaid@^2`(当前 2.0.16)+ `mermaid@^11`;现有 ```` ```mermaid ```` 围栏语法直接兼容,26 处无需改动。 +- 暗色模式:插件检测 body 上的 dark 类自动切换主题,替代现有手写的 themeVariables 配色。 +- 从 mermaid 8 升到 11 有少量语法差异(如 `%%{init}%%` 指令行为、个别图表关键字),26 张图需人工过一遍(纳入 §9 验证清单)。 +- 注意:该插件目前面向 VitePress 1.x;VitePress 2 兼容性待其官方确认(官方讨论 vuejs/vitepress#4999),这也是"生产不上 2.0 alpha"的佐证之一。 + +--- + +## 8. 构建与部署 + +### 8.1 CI(GitHub Actions) + +- Node 12 矩阵 → 固定 **Node 22 LTS**;pnpm 6 → pnpm 10(`corepack` 或 `pnpm/action-setup`,配 `packageManager` 字段)。 +- 删除所有 `NODE_OPTIONS` hack;Vite 构建无 webpack 内存问题。 +- 步骤:checkout(fetch-depth: 0,lastUpdated 需要 git 历史)→ pnpm install → `pnpm build` → 原有镜像构建推送流程不变。 +- VitePress 构建自带**死链检测**(dead links 导致构建失败),这本身就是迁移验证工具;对历史遗留死链可临时 `ignoreDeadLinks` 白名单。 + +### 8.2 Nginx 与 Dockerfile + +Dockerfile 不变(仍 COPY `./dist`)。`nginx/default.conf` 需适配 `cleanUrls` 产物(无 `.html` 后缀文件): + +```nginx +location /docs/ { + root /usr/share/nginx/html; + + # 旧 URL 带尾斜杠(/docs/about/overview/),统一 301 到无尾斜杠规范形 + rewrite ^(/docs/.+)/$ $1 permanent; + + # cleanUrls:产物为 about/overview.html,同时兼容 .html 直接访问 + try_files $uri $uri.html $uri/ =404; +} +``` + +### 8.3 SEO + +- `sitemap: { hostname }` 自动产出 sitemap.xml;`public/robots.txt` 指向之。 +- canonical:用 `transformHead` 钩子按 `cleanUrls` 规范形注入 ``,消化旧 URL(尾斜杠/`.html` 变体)的重复收录。 +- title/description 语义保持现状(每页 frontmatter `title` 继续生效)。meta keywords 弃用(§2.3)。 + +--- + +## 9. 实施计划 + +### Phase 0 · 准备(0.5 天) + +- 新建分支 `refactor/vitepress`;冻结 main 内容合入(或约定迁移期间 PR 需 rebase)。 +- 全量导出基线:旧 URL 清单(permalink)、每页 title、构建产物快照,供 Phase 5 比对。 + +### Phase 1 · 骨架(1 天) + +- 重写 `package.json`(§4.2),`pnpm install`;落 `.vitepress/config.mts`、`theme/`、`sidebar.mts`(§4.3、§6)。 +- `git mv docs/zh/README.md docs/index.md`,`git mv docs/.vuepress/public docs/public`。 +- 删除 `vdoing/`、`docs/.vuepress/`、`LOCALES/`(单独一个 commit,便于回溯)。 +- 里程碑:空内容下 `pnpm dev` 可起、`pnpm build` 通过。 + +### Phase 2 · 内容 codemod(1 天,全部脚本化) + +| # | 脚本 | 输入 → 输出 | +|---|---|---| +| 1 | `gen-rewrites.mjs` | 180 个 permalink → `rewrites.generated.json`(§4.4) | +| 2 | 首页转换 | vdoing home frontmatter → VitePress `layout: home`(`hero:{text,tagline,actions}` + `features:` 映射,一次性手写亦可) | +| 3 | code-tabs 转换 | `::: code-tabs#shell` 块内每个 `@tab 标题` + 围栏 → `::: code-group` + ```` ```bash [标题] ````(18 处、48 个 tab,规则确定,正则可完成;转换后人工抽检) | +| 4 | 校验脚本 | 对比 sitemap.xml 与基线 URL 清单,输出 diff(必须为空) | + +明确**不动**的:`title`/`permalink` frontmatter、`::: tip|warning`、任务列表、脚注、mermaid 围栏、相对链接(587 处,VitePress 原生处理)。 + +### Phase 3 · 功能对齐(1 天) + +- 本地搜索 + 中文分词调通(§7.1),搜索质量抽查(专有名词如 "AutoTagging"、"智能编码"、长句)。 +- mermaid 11 视觉与语法回归(26 张图逐张过)。 +- 主题细节:logo、品牌色、页脚备案、medium-zoom、暗色模式走查。 +- 决策项落地:标题编号是否保留(§5.5)、英文首页文案去向(§4.5)。 + +### Phase 4 · 验证清单(0.5 天) + +- [ ] URL 对照 180/180 全等(Phase 2-4 脚本) +- [ ] `pnpm build` 零死链(或白名单评审) +- [ ] 旧 URL 尾斜杠 / `.html` 变体 301 抽查 +- [ ] 全站人工走查:10 个分区首页 + 抽样 20 页(容器、代码组、表格、图片、脚注、任务列表) +- [ ] Lighthouse(性能/SEO/可访问性)基线记录 +- [ ] `translate/` 流水线在新型 frontmatter 下干跑一次 + +### Phase 5 · 上线(0.5 天) + +- 镜像发布走现有流程;保留旧镜像 tag 用于快速回滚。 +- 上线后观察:搜索使用情况、404 监控(nginx 日志按 `/docs/` 聚合)、Google Search Console 覆盖率(sitemap 重新提交)。 + +### 里程碑与回滚 + +- 每 Phase 一个合并点,`refactor/vitepress` 分支可随时放弃,main 上旧 VuePress 构建链路在 Phase 5 前完整可用——**回滚 = 不合并不部署**,无数据迁移、无外部依赖变更,风险天然受限。 + +--- + +## 10. 风险登记 + +| 风险 | 概率 | 缓解 | +|---|---|---| +| rewrites 与 permalink 不一致导致 URL 漂移 | 低 | 生成器单一来源 + sitemap 全量 diff 校验(Phase 2-4) | +| minisearch 中文分词效果不达预期 | 中 | Intl.Segmenter 调参;备选 pagefind(切换成本半天) | +| mermaid 8→11 语法差异 | 中 | 26 张图人工回归清单 | +| vitepress-plugin-mermaid 与本地搜索的索引噪音 | 低 | §7.2 处理;最坏情况搜索结果多余词条 | +| 旧 URL 已被收录的变体(尾斜杠/.html) | 低 | nginx 301 + canonical(§8.2/8.3) | +| 迁移窗口与内容 PR 冲突 | 中 | Phase 0 起内容冻结或快速 rebase(改动均为增量 md,冲突面小) | +| 2.0 正式发布后二次升级成本 | 低 | 附录 A 已列差异;本方案配置写法已尽量面向 2.0 | + +--- + +## 附录 A:1.6.4 → 2.0 升级预告(依据官方 CHANGELOG,2026-09) + +2.0.0 正式发布后建议尽快跟进(预计为纯配置级改动): + +- **要求**:Node ≥ 22、Vite 8。 +- markdown 能力内置化:脚注、GitHub 任务列表、`cjkFriendlyEmphasis`(默认开)——届时可删 `markdown-it-footnote`、`markdown-it-task-lists` 两个依赖。 +- 自定义容器改声明式:`markdown.container.customContainers: { success: 'SUCCESS' }`;新增内置 `note/important/caution` 容器与 `{no-title}` 属性。 +- 破坏性改名(本方案已按新写法预防):`lastUpdatedText` → `lastUpdated.text`、`outlineTitle` → `outline.label`、`markdown.image.lazyLoading` → `lazyLoad`、本地搜索 `disableDetailedView` 移除(用 `detailedView: false`)。 +- 围栏代码块上的 markdown-it-attrs 被禁用(如需给代码块加类,改用 shiki transformer)。 +- 每语言 markdown 文案(`markdown.container.tipLabel` 等)与 navbar 重设计等新能力可按需启用。 +- 前置条件:`vitepress-plugin-mermaid` 官方确认 2.0 支持(vuejs/vitepress#4999 跟踪)。 + +## 附录 B:官方文档索引(实施时的权威依据) + +| 主题 | URL | +|---|---| +| 入门 / 环境要求 | https://vitepress.dev/guide/getting-started | +| Markdown 扩展(容器/代码组/导入) | https://vitepress.dev/guide/markdown | +| 从 VuePress 迁移 | https://vitepress.dev/guide/migration-from-vuepress | +| 路由与 rewrites | https://vitepress.dev/guide/routing | +| i18n | https://vitepress.dev/guide/i18n | +| 扩展默认主题 | https://vitepress.dev/guide/extending-default-theme | +| 站点配置(srcDir/rewrites/sitemap…) | https://vitepress.dev/reference/site-config | +| 默认主题配置(nav/sidebar/outline…) | https://vitepress.dev/reference/default-theme-config | +| 本地搜索 | https://vitepress.dev/reference/default-theme-search | +| sitemap | https://vitepress.dev/guide/sitemap-generation | +| CHANGELOG | https://github.com/vuejs/vitepress/blob/main/CHANGELOG.md | +| Mermaid 插件 | https://emersonbottero.github.io/vitepress-plugin-mermaid/ | + +> 阅读提示:vitepress.dev 当前默认展示 2.0-alpha 版文档,右上角版本切换器切到 **1.6.4** 再对照实施;本方案所有 1.6.4 结论均已按 v1.6.4 tag 的文档与源码核实。 + +## 附录 C:实施记录(2026-09-17,分支 `refactor/vitepress`) + +按 §9 的分阶段计划执行,与原方案的主要差异及补充事实: + +| 阶段 | 提交内容 | 与方案的差异 | +|---|---|---| +| Phase 0 | `scripts/gen-rewrites.mjs` + 359 条 rewrites + URL 基线 | 删除了 `07-configuration/` 下中英两个无入链的占位存根;英文树按 **URL 空间**实际覆盖全部 180 页(近期翻译已跟上) | +| Phase 1 | `.vitepress/`(config/sidebar/theme)+ 双语首页 + 依赖收敛(17 → 7 个直接依赖) | i18n 采用 §4.5 修订版(英文根路径 + 中文 `/zh/`),新增 `scripts/lib/corpus.mjs` | +| Phase 2 | ~~codemod 改写内容~~ **已返工为运行时插件适配** | 初版直接改写了 233 个内容文件(code-tabs → code-group、1141 处链接绝对化)。按维护方决策回滚全部内容改动:内容文件保持 vdoing 原语法,改由两个 markdown-it 插件在渲染期适配(`.vitepress/markdown/legacy-code-tabs.ts` 把 `@tab` 转入 fence info 并复用内置 code-group 渲染;`legacy-links.ts` 移植旧 `auto-complete-url` 插件的「源文件目录去数字前缀」解析规则,输出最终 URL)。收益:`translate/` 流水线 md5 不受扰动、英文树再生语法天然兼容、git 历史干净 | +| Phase 3 | CI(Node 22 + pnpm 10 + actions 升级)、nginx(cleanUrls 301 规则)、Dockerfile、`scripts/check-urls.mjs` | `downloadCSV.js` 依赖 axios,补入 devDependencies;CI 去掉 addTime 调用(VitePress 用 git 时间) | + +实施期待用户执行的验证(遵循"改完即止"约定,未代跑): + +```sh +pnpm install && pnpm build # 构建含死链检测 +node scripts/check-urls.mjs # sitemap 与基线 180+180 项全量比对 +pnpm preview # 人工走查:容器/代码组/mermaid/任务列表/脚注/暗色 +``` + +遗留事项:mermaid 8 → 11 的 26 张图人工回归;本地搜索中文分词质量抽查;英文页 lastUpdated 依赖 CI 全量 checkout(git 历史在,但英文文件为构建期产物,时间戳取自构建机上移入后的路径,可能为空)。