diff --git a/.gitignore b/.gitignore index cff28db..15d31fa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,121 @@ -node_modules +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* -.vitepress/cache +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# Next.js build output +.next + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and *not* Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vitepress build output +docs/.vitepress/dist +docs/.vitepress/cache .vitepress/dist -docs/.vitepress -.idea \ No newline at end of file +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# VSC +.vscode + +# Inject JavaScript +.github/inject.js + +# Obsidian +**/.obsidian/* +!**/.obsidian/workspace* +!**/.obsidian/graph* +!**/.obsidian/snippets/ \ No newline at end of file diff --git a/.vitepress/config.mts b/.vitepress/config.mts deleted file mode 100644 index 5793c2a..0000000 --- a/.vitepress/config.mts +++ /dev/null @@ -1,49 +0,0 @@ -import { defineConfig } from 'vitepress' - -// https://vitepress.dev/reference/site-config -export default defineConfig({ - title: "Leaf", - description: "Performant fork of Paper", - head: [['link', { rel: 'icon', href: '/logo.svg' }]], - - srcDir: './pages', - - locales: { - root: { - label: 'English', - lang: 'en' - }, - ru: { - label: 'Русский', - lang: 'ru', // optional, will be added as `lang` attribute on `html` tag - - // other locale specific properties... - }, - de: { - label: 'Deutsch', - lang: 'de', - }, - zh: { - label: '简体中文', - lang: 'zh', - } - }, - - themeConfig: { - logo: '/logo.svg', - // https://vitepress.dev/reference/default-theme-config - nav: [ - { text: 'Home', link: '/' }, - { text: 'Docs', link: 'https://docs.leafmc.one/' }, - { text: 'Build History', link: '/builds' } - ], - - sidebar: [ - - ], - - socialLinks: [ - { icon: 'github', link: 'https://github.com/Winds-Studio/Leaf' } - ] - } -}) diff --git a/.vitepress/theme/index.ts b/.vitepress/theme/index.ts deleted file mode 100644 index def4cfc..0000000 --- a/.vitepress/theme/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -// https://vitepress.dev/guide/custom-theme -import { h } from 'vue' -import type { Theme } from 'vitepress' -import DefaultTheme from 'vitepress/theme' -import './style.css' - -export default { - extends: DefaultTheme, - Layout: () => { - return h(DefaultTheme.Layout, null, { - // https://vitepress.dev/guide/extending-default-theme#layout-slots - }) - }, - enhanceApp({ app, router, siteData }) { - // ... - } -} satisfies Theme diff --git a/.vitepress/theme/style.css b/.vitepress/theme/style.css deleted file mode 100644 index b6af52e..0000000 --- a/.vitepress/theme/style.css +++ /dev/null @@ -1,128 +0,0 @@ -/** - * Customize default theme styling by overriding CSS variables: - * https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css - */ - -/** - * Colors - * - * Each colors have exact same color scale system with 3 levels of solid - * colors with different brightness, and 1 soft color. - * - * - `XXX-1`: The most solid color used mainly for colored text. It must - * satisfy the contrast ratio against when used on top of `XXX-soft`. - * - * - `XXX-2`: The color used mainly for hover state of the button. - * - * - `XXX-3`: The color for solid background, such as bg color of the button. - * It must satisfy the contrast ratio with pure white (#ffffff) text on - * top of it. - * - * - `XXX-soft`: The color used for subtle background such as custom container - * or badges. It must satisfy the contrast ratio when putting `XXX-1` colors - * on top of it. - * - * The soft color must be semi transparent alpha channel. This is crucial - * because it allows adding multiple "soft" colors on top of each other - * to create a accent, such as when having inline code block inside - * custom containers. - * - * - `default`: The color used purely for subtle indication without any - * special meanings attched to it such as bg color for menu hover state. - * - * - `brand`: Used for primary brand colors, such as link text, button with - * brand theme, etc. - * - * - `tip`: Used to indicate useful information. The default theme uses the - * brand color for this by default. - * - * - `warning`: Used to indicate warning to the users. Used in custom - * container, badges, etc. - * - * - `danger`: Used to show error, or dangerous message to the users. Used - * in custom container, badges, etc. - * -------------------------------------------------------------------------- */ - - :root { - --vp-c-default-1: var(--vp-c-gray-1); - --vp-c-default-2: var(--vp-c-gray-2); - --vp-c-default-3: var(--vp-c-gray-3); - --vp-c-default-soft: var(--vp-c-gray-soft); - - --vp-c-brand-1: var(--vp-c-green-1); - --vp-c-brand-2: var(--vp-c-green-2); - --vp-c-brand-3: var(--vp-c-green-3); - --vp-c-brand-soft: var(--vp-c-green-soft); - - --vp-c-tip-1: var(--vp-c-brand-1); - --vp-c-tip-2: var(--vp-c-brand-2); - --vp-c-tip-3: var(--vp-c-brand-3); - --vp-c-tip-soft: var(--vp-c-brand-soft); - - --vp-c-warning-1: var(--vp-c-yellow-1); - --vp-c-warning-2: var(--vp-c-yellow-2); - --vp-c-warning-3: var(--vp-c-yellow-3); - --vp-c-warning-soft: var(--vp-c-yellow-soft); - - --vp-c-danger-1: var(--vp-c-red-1); - --vp-c-danger-2: var(--vp-c-red-2); - --vp-c-danger-3: var(--vp-c-red-3); - --vp-c-danger-soft: var(--vp-c-red-soft); -} - -/** - * Component: Home - * -------------------------------------------------------------------------- */ - -:root { - --vp-home-hero-name-color: transparent; - --vp-home-hero-name-background: -webkit-linear-gradient( - 30deg, - #174f09 10%, - #036253 - ); - - --vp-home-hero-image-background-image: linear-gradient( - -45deg, - #9fffee 50%, - #b4ffca 50% - ); - --vp-home-hero-image-filter: blur(44px); -} - - -.dark { - --vp-home-hero-name-color: transparent; - --vp-home-hero-name-background: -webkit-linear-gradient( - 30deg, - #35ff91 10%, - #41ffdc - ); - - --vp-home-hero-image-background-image: linear-gradient( - -45deg, - #30504b 50%, - #35493b 50% - ); - --vp-home-hero-image-filter: blur(44px); -} - - -/** - * Component: Custom Block - * -------------------------------------------------------------------------- */ - -:root { - --vp-custom-block-tip-border: transparent; - --vp-custom-block-tip-text: var(--vp-c-text-1); - --vp-custom-block-tip-bg: var(--vp-c-brand-soft); - --vp-custom-block-tip-code-bg: var(--vp-c-brand-soft); -} - -.VPFeatures .emoji { - font-size: 20px; - padding: 4px; - border-radius: 5px; - margin-right: 5px; - background: var(--vp-c-default-soft); -} \ No newline at end of file diff --git a/README.md b/README.md index 02bd6be..5eef7a8 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # Leaf Website + [](LICENSE) The repository of official Leaf website, powered by [VitePress](https://vitepress.dev/). @@ -8,15 +9,23 @@ Visit the website in https://www.leafmc.one/ ## 📦 Development ### Prerequisite + Node.js 18.20+ ### Installtion + Refer to [Getting started](https://vitepress.dev/guide/getting-started/) for more. ### Commands -* `pnpm install & pnpm docs:build` - Build the website. -* `pnpm run preview` - Preview the website. -* `pnpm vitepress dev docs` - Start the live-reloading local dev server. + +- `pnpm install & pnpm docs:build` - Build the website. +- `pnpm run preview` - Preview the website. +- `pnpm vitepress dev docs` - Start the live-reloading local dev server. ## ⚖️ License + Leaf website is licensed under [MIT](LICENSE). + +## 📝 Writing standard for Chinese + +- [中文文案排版指北](https://github.com/sparanoid/chinese-copywriting-guidelines/tree/master) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts new file mode 100644 index 0000000..69d4757 --- /dev/null +++ b/docs/.vitepress/config.mts @@ -0,0 +1,71 @@ +import { defineConfig } from "vitepress"; +import { InlineLinkPreviewElementTransform } from "@nolebase/vitepress-plugin-inline-link-preview/markdown-it"; +import { UnlazyImages } from "@nolebase/markdown-it-unlazy-img"; +import { BiDirectionalLinks } from "@nolebase/markdown-it-bi-directional-links"; +import { zhConfig } from "./sidebar/sidebar_zh.mjs"; +import { enConfig } from "./sidebar/sidebar_en.mjs"; + +// https://vitepress.dev/reference/site-config +export default defineConfig({ + title: "Leaf", + description: "Performant fork of Paper", + head: [["link", { rel: "icon", href: "/logo.svg" }]], + vue: { + template: { + transformAssetUrls: { + NolebaseUnlazyImg: ["src"], + }, + }, + }, + locales: { + root: { + label: "English", + lang: "en", + themeConfig: enConfig, + link: "/pages/en/", + }, + zh: { + label: "简体中文", + lang: "zh", + link: "/pages/zh/", + themeConfig: zhConfig, + }, + }, + + themeConfig: { + logo: "/logo.svg", + // https://vitepress.dev/reference/default-theme-config + nav: [], + + editLink: { + pattern: "https://github.com/Winds-Studio/Leaf/edit/main/docs/:path", + }, + socialLinks: [ + { icon: "github", link: "https://github.com/Winds-Studio/Leaf" }, + ], + search: { + provider: "local", + options: { + _render(src, env, md) { + const html = md.render(src, env); + if (env.frontmatter?.search === false) { + return ""; + } + return html; + }, + }, + }, + externalLinkIcon: true, // 展示站外链接箭头 ↗ + }, + ignoreDeadLinks: true, + cleanUrls: true, + markdown: { + config: (md) => { + md.use(UnlazyImages(), { + imgElementTag: "NolebaseUnlazyImg", + }); + md.use(BiDirectionalLinks()); + md.use(InlineLinkPreviewElementTransform); + }, + }, +}); diff --git a/docs/.vitepress/sidebar/sidebar_en.mts b/docs/.vitepress/sidebar/sidebar_en.mts new file mode 100644 index 0000000..8bbd040 --- /dev/null +++ b/docs/.vitepress/sidebar/sidebar_en.mts @@ -0,0 +1,78 @@ +import type { DefaultTheme } from "vitepress"; + +export const sidebar_en = [ + { + text: "Welcome to Leaf Docs", + link: "/pages/en/about", + }, + { + text: "To Do", + link: "/pages/en/todo", + }, + // Development + { + text: "Development", + link: "/pages/en/dev/", + items: [ + { text: "Leaf API", link: "/pages/en/dev/api" }, + { + text: "Building", + link: "/pages/en/dev/build", + }, + { + text: "Contributing to Leaf", + link: "/pages/en/dev/contributing", + }, + ], + }, + // How-to + { + text: "How To", + items: [ + { text: "Configure Sentry", link: "/pages/en/how-to/setup-sentry" }, + ], + }, + // Reference + { + text: "Reference", + link: "/pages/en/reference/", + items: [ + // FAQ, index, system-properties, config (gale-global, gale-world, index, leaf-global, misc-config) + { text: "FAQ", link: "/pages/en/reference/faq" }, + { + text: "System Properties", + link: "/pages/en/reference/system-properties", + }, + { + text: "Configuration", + link: "/pages/en/reference/config/", + items: [ + { + text: "Gale Global Configuration", + link: "/pages/en/reference/config/gale-global", + }, + { + text: "Gale World Configuration", + link: "/pages/en/reference/config/gale-world", + }, + { + text: "Leaf Global Configuration", + link: "/pages/en/reference/config/leaf-global", + }, + { + text: "Other Configurations", + link: "/pages/en/reference/config/misc-config", + }, + ], + }, + ], + }, +]; + +export const enConfig: DefaultTheme.Config = { + sidebar: sidebar_en, + nav: [ + { text: "Home", link: "/" }, + { text: "Build History", link: "/builds" }, + ], +}; diff --git a/docs/.vitepress/sidebar/sidebar_zh.mts b/docs/.vitepress/sidebar/sidebar_zh.mts new file mode 100644 index 0000000..f121735 --- /dev/null +++ b/docs/.vitepress/sidebar/sidebar_zh.mts @@ -0,0 +1,71 @@ +import { link } from "fs"; +import type { DefaultTheme } from "vitepress"; + +export const sidebar_zh = [ + { + text: "欢迎阅读 Leaf 文档", + link: "/pages/zh/about", + }, + { + text: "To Do", + link: "/pages/zh/todo", + }, + // 开发 + { + text: "开发", + link: "/pages/zh/dev/", + items: [ + { text: "Leaf Api", link: "/pages/zh/dev/api" }, + { + text: "构建", + link: "/pages/zh/dev/build", + }, + { + text: "给 Leaf 贡献代码", + link: "/pages/zh/dev/contributing", + }, + ], + }, + // how-to + { + text: "如何", + items: [{ text: "配置 Sentry", link: "/pages/zh/how-to/setup-sentry" }], + }, + // 实现 + { + text: "参考", + link: "/pages/zh/reference/", + items: [ + // faq、index、system-properties、config(gale-global、gale-world、index、leaf-global、misc-config) + { text: "FAQ", link: "/pages/zh/reference/faq" }, + { text: "系统属性", link: "/pages/zh/reference/system-properties" }, + { + text: "配置", + link: "/pages/zh/reference/config/", + items: [ + { + text: "Gale 全局配置", + link: "/pages/zh/reference/config/gale-global", + }, + { + text: "Gale 世界配置", + link: "/pages/zh/reference/config/gale-world", + }, + { + text: "Leaf 全局配置", + link: "/pages/zh/reference/config/leaf-global", + }, + { text: "其他配置", link: "/pages/zh/reference/config/misc-config" }, + ], + }, + ], + }, +]; + +export const zhConfig: DefaultTheme.Config = { + sidebar: sidebar_zh, + nav: [ + { text: "主页", link: "/zh" }, + { text: "构建历史", link: "/builds" }, + ], +}; diff --git a/docs/.vitepress/theme/components/MyLayout.vue b/docs/.vitepress/theme/components/MyLayout.vue new file mode 100644 index 0000000..783d571 --- /dev/null +++ b/docs/.vitepress/theme/components/MyLayout.vue @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/.vitepress/theme/index.mts b/docs/.vitepress/theme/index.mts new file mode 100644 index 0000000..9af8fad --- /dev/null +++ b/docs/.vitepress/theme/index.mts @@ -0,0 +1,42 @@ +// https://vitepress.dev/guide/custom-theme +import { onMounted, watch, nextTick } from "vue"; +import type { Theme } from "vitepress"; +import DefaultTheme from "vitepress/theme"; +import "./style.css"; +import "@nolebase/vitepress-plugin-enhanced-mark/client/style.css"; +import { useRoute } from "vitepress"; +import vitepressNprogress from "vitepress-plugin-nprogress"; +import "vitepress-plugin-nprogress/lib/css/index.css"; +import "@nolebase/vitepress-plugin-enhanced-mark/client/style.css"; +import MyLayout from "./components/MyLayout.vue"; +import "@nolebase/vitepress-plugin-enhanced-readabilities/client/style.css"; +import type { Options } from "@nolebase/vitepress-plugin-enhanced-readabilities/client"; +import { InjectionKey } from "@nolebase/vitepress-plugin-enhanced-readabilities/client"; +import { NolebaseInlineLinkPreviewPlugin } from "@nolebase/vitepress-plugin-inline-link-preview/client"; +import "@nolebase/vitepress-plugin-inline-link-preview/client/style.css"; + +import "@nolebase/vitepress-plugin-highlight-targeted-heading/client/style.css"; + +import { NolebaseGitChangelogPlugin } from "@nolebase/vitepress-plugin-git-changelog/client"; +import "virtual:uno.css"; + +import "@nolebase/vitepress-plugin-git-changelog/client/style.css"; + +export default { + extends: DefaultTheme, + enhanceApp(ctx) { + ctx.app.provide(InjectionKey, { + layoutSwitch: { + defaultMode: 1, + }, + + spotlight: { + defaultToggle: true, + }, + } as Options); + vitepressNprogress(ctx); + ctx.app.use(NolebaseInlineLinkPreviewPlugin); + ctx.app.use(NolebaseGitChangelogPlugin); + }, + Layout: MyLayout, +} satisfies Theme; diff --git a/docs/.vitepress/theme/style.css b/docs/.vitepress/theme/style.css new file mode 100644 index 0000000..8b1121c --- /dev/null +++ b/docs/.vitepress/theme/style.css @@ -0,0 +1,141 @@ +@import './var.css'; + +/** + * Customize default theme styling by overriding CSS variables: + * https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css + */ + +/** + * Colors + * + * Each colors have exact same color scale system with 3 levels of solid + * colors with different brightness, and 1 soft color. + * + * - `XXX-1`: The most solid color used mainly for colored text. It must + * satisfy the contrast ratio against when used on top of `XXX-soft`. + * + * - `XXX-2`: The color used mainly for hover state of the button. + * + * - `XXX-3`: The color for solid background, such as bg color of the button. + * It must satisfy the contrast ratio with pure white (#ffffff) text on + * top of it. + * + * - `XXX-soft`: The color used for subtle background such as custom container + * or badges. It must satisfy the contrast ratio when putting `XXX-1` colors + * on top of it. + * + * The soft color must be semi transparent alpha channel. This is crucial + * because it allows adding multiple "soft" colors on top of each other + * to create a accent, such as when having inline code block inside + * custom containers. + * + * - `default`: The color used purely for subtle indication without any + * special meanings attched to it such as bg color for menu hover state. + * + * - `brand`: Used for primary brand colors, such as link text, button with + * brand theme, etc. + * + * - `tip`: Used to indicate useful information. The default theme uses the + * brand color for this by default. + * + * - `warning`: Used to indicate warning to the users. Used in custom + * container, badges, etc. + * + * - `danger`: Used to show error, or dangerous message to the users. Used + * in custom container, badges, etc. + * -------------------------------------------------------------------------- */ + +:root { + --vp-c-default-1: var(--vp-c-gray-1); + --vp-c-default-2: var(--vp-c-gray-2); + --vp-c-default-3: var(--vp-c-gray-3); + --vp-c-default-soft: var(--vp-c-gray-soft); + + --vp-c-brand-1: var(--vp-c-indigo-1); + --vp-c-brand-2: var(--vp-c-indigo-2); + --vp-c-brand-3: var(--vp-c-indigo-3); + --vp-c-brand-soft: var(--vp-c-indigo-soft); + + --vp-c-brand-1: var(--vp-c-green-1); + --vp-c-brand-2: var(--vp-c-green-2); + --vp-c-brand-3: var(--vp-c-green-3); + --vp-c-brand-soft: var(--vp-c-green-soft); + + --vp-c-warning-1: var(--vp-c-yellow-1); + --vp-c-warning-2: var(--vp-c-yellow-2); + --vp-c-warning-3: var(--vp-c-yellow-3); + --vp-c-warning-soft: var(--vp-c-yellow-soft); + + --vp-c-danger-1: var(--vp-c-red-1); + --vp-c-danger-2: var(--vp-c-red-2); + --vp-c-danger-3: var(--vp-c-red-3); + --vp-c-danger-soft: var(--vp-c-red-soft); +} + +/** + * Component: Button + * -------------------------------------------------------------------------- */ + +:root { + --vp-button-brand-border: transparent; + --vp-button-brand-text: var(--vp-c-white); + --vp-button-brand-bg: var(--vp-c-brand-3); + --vp-button-brand-hover-border: transparent; + --vp-button-brand-hover-text: var(--vp-c-white); + --vp-button-brand-hover-bg: var(--vp-c-brand-2); + --vp-button-brand-active-border: transparent; + --vp-button-brand-active-text: var(--vp-c-white); + --vp-button-brand-active-bg: var(--vp-c-brand-1); +} + +/** + * Component: Home + * -------------------------------------------------------------------------- */ + +:root { + --vp-home-hero-name-color: transparent; + --vp-home-hero-name-background: -webkit-linear-gradient(30deg, + #174f09 10%, + #036253); + + --vp-home-hero-image-background-image: linear-gradient(-45deg, + #9fffee 50%, + #b4ffca 50%); + --vp-home-hero-image-filter: blur(44px); +} + + +.dark { + --vp-home-hero-name-color: transparent; + --vp-home-hero-name-background: -webkit-linear-gradient(30deg, + #35ff91 10%, + #41ffdc); + + --vp-home-hero-image-background-image: linear-gradient(-45deg, + #30504b 50%, + #35493b 50%); + --vp-home-hero-image-filter: blur(44px); +} + +@media (min-width: 640px) { + :root { + --vp-home-hero-image-filter: blur(56px); + } +} + +@media (min-width: 960px) { + :root { + --vp-home-hero-image-filter: blur(68px); + } +} + +/** + * Component: Custom Block + * -------------------------------------------------------------------------- */ + +:root { + --vp-custom-block-tip-border: transparent; + --vp-custom-block-tip-text: var(--vp-c-text-1); + --vp-custom-block-tip-bg: var(--vp-c-brand-soft); + --vp-custom-block-tip-code-bg: var(--vp-c-brand-soft); +} \ No newline at end of file diff --git a/docs/.vitepress/theme/var.css b/docs/.vitepress/theme/var.css new file mode 100644 index 0000000..08ed61e --- /dev/null +++ b/docs/.vitepress/theme/var.css @@ -0,0 +1,66 @@ +#cursor { + position: fixed; + width: 18px; + height: 18px; + border-radius: 25px; + opacity: 0.25; + z-index: 10086; + pointer-events: none; + background: #161414; + transition: 0.2s ease-in-out; + transition-property: background, opacity, transform; + + &.hidden { + opacity: 0; + } + + &.active { + opacity: 0.5; + transform: scale(0.5); + } + + &.dark { + background: #fff; + } +} + + + + +.vp-doc a { + text-decoration: none; +} + +/* .vitepress\theme\style\var.css */ +/* 提示框背景颜色 */ +:root { + --vp-custom-block-tip-bg: var(--vp-c-green-soft); +} + +/* Info */ +.custom-block.info { + border-color: var(--vp-c-gray-2); +} + + +/* 提示框 */ +.custom-block.tip { + border-color: var(--vp-c-indigo-2); +} + +/* 警告框 */ +.custom-block.warning { + /* border-color: #d97706; */ + border-color: var(--vp-c-yellow-2); +} + +/* 危险框 */ +.custom-block.danger { + /* border-color: #f43f5e; */ + border-color: var(--vp-c-red-2); +} + + +.VPSocialLinks.VPNavBarSocialLinks.social-links { + margin-right: 0; +} \ No newline at end of file diff --git a/docs/components/ConfigViewer.vue b/docs/components/ConfigViewer.vue new file mode 100644 index 0000000..85063b8 --- /dev/null +++ b/docs/components/ConfigViewer.vue @@ -0,0 +1,234 @@ + + + + + {{ name }} + + + + + + + + + + diff --git a/docs/components/ConfigViewerNode.vue b/docs/components/ConfigViewerNode.vue new file mode 100644 index 0000000..fe693db --- /dev/null +++ b/docs/components/ConfigViewerNode.vue @@ -0,0 +1,170 @@ + + + + + + + + + + {{ key }} + : + + + + + + {{ key }} + : + {{ resolveValue(value) }} + + + + - + {{ v }} + + + + + + + + {{ value.title === undefined ? value.type.toUpperCase() : value.title }} + + + + + + + + diff --git a/docs/components/icons/IconCollapse.vue b/docs/components/icons/IconCollapse.vue new file mode 100644 index 0000000..66f1e47 --- /dev/null +++ b/docs/components/icons/IconCollapse.vue @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/docs/components/icons/IconExpand.vue b/docs/components/icons/IconExpand.vue new file mode 100644 index 0000000..c30a70a --- /dev/null +++ b/docs/components/icons/IconExpand.vue @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/docs/config-spec/leaf/en.data.mts b/docs/config-spec/leaf/en.data.mts new file mode 100644 index 0000000..bd3eded --- /dev/null +++ b/docs/config-spec/leaf/en.data.mts @@ -0,0 +1,29 @@ +import * as fs from "fs"; +import * as yaml from "yaml"; +import { createMarkdownRenderer } from "vitepress"; +import config from "../../.vitepress/config.mts"; + +// noinspection JSUnusedGlobalSymbols +export default { + async load() { + const raw = yaml.parse( + fs.readFileSync("./docs/config-spec/leaf/en.yml", "utf-8") + ); + const md = await createMarkdownRenderer(config.srcDir, config.markdown); + + function render(x: any): any { + for (const key in x) { + if (typeof x[key] == "object") { + x[key] = render(x[key]); + } else { + if (key == "content" || key == "description") { + x[key] = md.render(x[key]); + } + } + } + return x; + } + + return render(raw); + }, +}; diff --git a/docs/config-spec/leaf/en.yml b/docs/config-spec/leaf/en.yml new file mode 100644 index 0000000..2267d96 --- /dev/null +++ b/docs/config-spec/leaf/en.yml @@ -0,0 +1,553 @@ +config-version: + default: "3.0" + description: "Configuration file version; do not change!" + +########### +# Async # +########### +async: + async-entity-tracker: + enabled: + default: "false" + description: "Whether to use asynchronous entity tracking, which can significantly improve performance, especially in scenarios with a large number of dense entities in a small area." + compat-mode: + default: "false" + description: 'Whether to enable compatibility mode to work with plugins like Citizens that use real entities or player types as "NPCs."' + max-threads: + default: "0" + description: "Maximum number of threads available for asynchronous entity tracking. If set to 0, defaults to 1/4 of the CPU core count, but no less than 1." + keepalive: + default: "60" + description: "Idle thread timeout; threads without tasks for this duration will be destroyed (in seconds)." + + async-playerdata-save: + enabled: + default: "false" + description: "Whether to enable asynchronous player data saving (I/O operations are time-consuming). Experimental feature; may cause player data loss in some cases!" + + async-pathfinding: + enabled: + default: "false" + description: "Whether to use asynchronous mob pathfinding." + max-threads: + default: "0" + description: "Maximum number of threads available for asynchronous mob pathfinding. If set to 0, defaults to 1/4 of the CPU core count, but no less than 1." + keepalive: + default: "60" + description: "Idle thread timeout; threads without tasks for this duration will be destroyed (in seconds)." + + async-mob-spawning: + enabled: + default: "true" + description: "Whether to use asynchronous mob spawning." + + async-locator: + enabled: + default: "false" + description: "Whether to use asynchronous location tracking." + threads: + default: "0" + description: "Maximum number of threads available for asynchronous location tracking. If set to <= 0, defaults to 1 thread." + keepalive: + default: "60" + description: "Idle thread timeout; threads without tasks for this duration will be destroyed (in seconds)." + +########## +# Performance # +########## +performance: + use-virtual-thread-for-async-chat-executor: + default: "true" + description: "Whether to use virtual threads introduced in JDK 21 for asynchronous chat." + use-virtual-thread-for-async-scheduler: + default: "true" + description: "Whether to use virtual threads introduced in JDK 21 for the asynchronous task scheduler." + create-snapshot-on-retrieving-blockstate: + default: "true" + description: "Whether to create and use a snapshot when retrieving TileEntity / BlockState." + inactive-goal-selector-throttle: + default: "true" + description: "Whether to limit the goal selector's tick calculations to once per second when the entity is in an inactive tick." + throttle-hopper-when-full: + enabled: + default: "false" + description: "Whether to throttle the hopper when the target container is full to avoid attempting to move items." + skip-ticks: + default: "0" + description: "How long to wait (in ticks) before attempting to move items again when the hopper is throttled." + skip-map-item-data-updates-if-map-does-not-have-craftmaprenderer: + default: "true" + description: "Whether to skip updates to map contents if the map does not have a renderer." + skip-ai-for-non-aware-mob: + default: "true" + description: "Whether to skip AI tick calculations for mobs that are inactive and unaware." + reduce-packets: + reduce-entity-move-packets: + default: "false" + description: "Whether to reduce unnecessary entity movement packets sent to players." + optimized-powered-rails: + default: "true" + description: "Whether to optimize the logic of powered rails." + optimize-minecart: + enabled: + default: "false" + description: "Whether to optimize minecart tick calculations." + skip-tick-count: + default: "30" + description: "How often (in ticks) to calculate minecart collisions." + + faster-structure-gen-future-sequencing: + default: "true" + description: "Whether to use faster task sequencing for world structure generation." + + faster-random-generator: + enabled: + default: "false" + description: "Whether to use a faster random number generator." + random-generator: + default: "Xoroshiro128PlusPlus" + description: "Which random number generator to use." + enable-for-worldgen: + default: "false" + description: "Whether to use a faster random number generator for world generation." + warn-for-slime-chunk: + default: "true" + description: "Whether to output a warning message to the console at server startup when generating slime chunks using a fast random number generator." + use-legacy-random-for-slime-chunk: + default: "false" + description: "Whether to use the legacy random number generator for generating slime chunks to maintain vanilla behavior." + + entity-timeouts: + ALLAY: + default: "-1" + AREA_EFFECT_CLOUD: + default: "-1" + ARMADILLO: + default: "-1" + ARMOR_STAND: + default: "-1" + ARROW: + default: "-1" + AXOLOTL: + default: "-1" + BAT: + default: "-1" + BEE: + default: "-1" + BLAZE: + default: "-1" + BOAT: + default: "-1" + BOGGED: + default: "-1" + BREEZE: + default: "-1" + BREEZE_WIND_CHARGE: + default: "-1" + CAMEL: + default: "-1" + CAT: + default: "-1" + CAVE_SPIDER: + default: "-1" + CHEST_BOAT: + default: "-1" + CHEST_MINECART: + default: "-1" + CHICKEN: + default: "-1" + COD: + default: "-1" + COMMAND_BLOCK_MINECART: + default: "-1" + COW: + default: "-1" + CREEPER: + default: "-1" + DOLPHIN: + default: "-1" + DONKEY: + default: "-1" + DRAGON_FIREBALL: + default: "-1" + DROWNED: + default: "-1" + EGG: + default: "-1" + ELDER_GUARDIAN: + default: "-1" + ENDER_DRAGON: + default: "-1" + ENDER_PEARL: + default: "-1" + ENDERMAN: + default: "-1" + ENDERMITE: + default: "-1" + EVOKER: + default: "-1" + EVOKER_FANGS: + default: "-1" + EXPERIENCE_BOTTLE: + default: "-1" + EXPERIENCE_ORB: + default: "-1" + EYE_OF_ENDER: + default: "-1" + FIREWORK_ROCKET: + default: "-1" + FOX: + default: "-1" + FROG: + default: "-1" + FURNACE_MINECART: + default: "-1" + GHAST: + default: "-1" + GIANT: + default: "-1" + GLOW_SQUID: + default: "-1" + GOAT: + default: "-1" + GUARDIAN: + default: "-1" + HOGLIN: + default: "-1" + HOPPER_MINECART: + default: "-1" + HORSE: + default: "-1" + HUSK: + default: "-1" + ILLUSIONER: + default: "-1" + IRON_GOLEM: + default: "-1" + ITEM: + default: "-1" + OMINOUS_ITEM_SPAWNER: + default: "-1" + FIREBALL: + default: "-1" + LIGHTNING_BOLT: + default: "-1" + LLAMA: + default: "-1" + LLAMA_SPIT: + default: "-1" + MAGMA_CUBE: + default: "-1" + MOOSHROOM: + default: "-1" + MULE: + default: "-1" + OCELOT: + default: "-1" + PANDA: + default: "-1" + PARROT: + default: "-1" + PHANTOM: + default: "-1" + PIG: + default: "-1" + PIGLIN: + default: "-1" + PIGLIN_BRUTE: + default: "-1" + PILLAGER: + default: "-1" + POLAR_BEAR: + default: "-1" + POTION: + default: "-1" + PUFFERFISH: + default: "-1" + RABBIT: + default: "-1" + RAVAGER: + default: "-1" + SALMON: + default: "-1" + SHEEP: + default: "-1" + SHULKER: + default: "-1" + SHULKER_BULLET: + default: "-1" + SILVERFISH: + default: "-1" + SKELETON: + default: "-1" + SKELETON_HORSE: + default: "-1" + SLIME: + default: "-1" + SMALL_FIREBALL: + default: "-1" + SNIFFER: + default: "-1" + SNOW_GOLEM: + default: "-1" + SNOWBALL: + default: "-1" + SPAWNER_MINECART: + default: "-1" + SPECTRAL_ARROW: + default: "-1" + SPIDER: + default: "-1" + SQUID: + default: "-1" + STRAY: + default: "-1" + STRIDER: + default: "-1" + TADPOLE: + default: "-1" + TNT_MINECART: + default: "-1" + TRADER_LLAMA: + default: "-1" + TRIDENT: + default: "-1" + TROPICAL_FISH: + default: "-1" + TURTLE: + default: "-1" + VEX: + default: "-1" + VILLAGER: + default: "-1" + VINDICATOR: + default: "-1" + WANDERING_TRADER: + default: "-1" + WARDEN: + default: "-1" + WIND_CHARGE: + default: "-1" + WITCH: + default: "-1" + WITHER: + default: "-1" + WITHER_SKELETON: + default: "-1" + WITHER_SKULL: + default: "-1" + WOLF: + default: "-1" + ZOGLIN: + default: "-1" + ZOMBIE: + default: "-1" + ZOMBIE_HORSE: + default: "-1" + ZOMBIE_VILLAGER: + default: "-1" + ZOMBIFIED_PIGLIN: + default: "-1" + FISHING_BOBBER: + default: "-1" + + enable-cached-minecraft-to-bukkit-entitytype-convert: + default: "true" + description: "Whether to cache the results of converting Minecraft EntityType to Bukkit EntityType." + + dab: + enabled: + default: "true" + description: "Optimize mob AI based on distance (also known as DAB), reducing the AI tick calculation frequency when mobs are far from players." + dont-enable-if-in-water: + default: "false" + description: "Whether non-aquatic mobs should not be affected by DAB when in water." + start-distance: + default: "12" + description: "Distance from the player at which DAB starts to take effect." + max-tick-freq: + default: "20" + description: "How often the furthest entities perform pathfinding and AI-related behavior ticks." + activation-dist-mod: + default: "8" + description: "This configuration defines the extent to which distance affects entity tick calculation frequency." + blacklisted-entities: + default: [] + description: "DAB blacklist; entities on this list will not be affected by DAB." + + dont-save-entity: + dont-save-primed-tnt: + default: "false" + description: "Do not save activated TNT when the chunk unloads." + dont-save-falling-block: + default: "false" + description: "Do not save falling blocks when the chunk unloads." + +########### +# Fixes # +########### +fixes: + dont-place-player-if-server-full: + default: "false" + description: "Whether to prevent players from joining a full server." + +############## +# Gameplay Mechanisms # +############## +gameplay-mechanisms: + use-spigot-item-merging-mechanism: + default: "true" + description: "Whether to use Spigot's default item merging mechanism." + smooth-teleport: + default: "false" + description: 'Whether to attempt using "smooth teleport" when players switch dimensions.' + max-item-stack-count: + max-dropped-items-stack-count: + default: "0" + description: "Maximum stack size for each dropped item." + max-container-destroy-count: + default: "0" + description: "Maximum number of item stacks allowed to drop when a container is destroyed." + knockback: + snowball-knockback-players: + default: "false" + description: "Whether snowballs can knock back players." + egg-knockback-players: + default: "false" + description: "Whether eggs can knock back players." + can-player-knockback-zombie: + default: "true" + description: "Whether players can knock back zombies." + player: + disable-moved-wrongly-threshold: + default: "false" + description: 'Whether to disable Spigot''s built-in "moved too quickly / wrongly" movement speed check.' + max-use-item-distance: + default: "1.0000001" + description: "The maximum distance from which players can interact with items." + +############# +# Network # +############# +network: + protocol-support: + jade-protocol: + default: "false" + description: "Whether to enable support for the Jade protocol." + appleskin-protocol: + default: "false" + description: "Whether to enable support for the AppleSkin protocol." + asteorbar-protocol: + default: "false" + description: "Whether to enable support for the AsteorBar protocol." + chatimage-protocol: + default: "false" + description: "Whether to enable support for the ChatImage protocol." + xaero-map-protocol: + default: "false" + description: "Whether to enable support for the XaeroMap protocol." + xaero-map-server-id: + default: "513317" + description: "Unique numeric ID used by XaeroMap to identify the server." + syncmatica-protocol: + default: "false" + description: "Whether to enable support for the Syncmatica protocol." + syncmatica-quota: + default: "false" + description: "Whether to limit the file size of each shared projection." + syncmatica-quota-limit: + default: "40000000" + description: "Maximum file size for shared projections uploaded to the server (in bytes)." + chat-message-signature: + default: "true" + description: "Whether to enable chat message signatures." + +########## +# Misc # +########## +misc: + message: + unknown-command: + default: "" + description: "Unknown command prompt sent when an unknown command is executed." + rebrand: + server-mod-name: + default: "Leaf" + description: "Server core name." + server-gui-name: + default: "Leaf Console" + description: "Server GUI console name." + sentry: + dsn: + default: "" + description: "Sentry's DSN key. If left empty, Sentry will be disabled." + log-level: + default: "WARN" + description: "Logs at this level or higher will be recorded." + only-log-thrown: + default: "true" + description: "Whether to only log logs with Throwable." + secure-seed: + enabled: + default: "false" + description: "Whether to use secure seed functionality." + remove-vanilla-username-check: + default: "true" + description: "Whether to remove vanilla username checks." + remove-spigot-check-bungee-config: + default: "true" + description: "Whether to allow players to enter backend servers through proxy servers." + remove-change-non-editable-sign-warning: + default: "false" + description: "Whether to print a warning to the console when players attempt to edit signs they cannot edit." + region-format-settings: + region-format: + default: "MCA" + description: "Available chunk format." + linear-compress-level: + default: "1" + description: "Compression level for Linear chunk format files." + throw-on-unknown-extension-detected: + default: "false" + description: "Whether to throw an exception and crash the server when an unknown chunk file format is detected." + flush-interval-seconds: + default: "5" + description: "Frequency of saving Linear chunk format data to disk (in seconds)." + lag-compensation: + enabled: + default: "false" + description: "Lag compensation to ensure a basic gaming experience during server lag or low TPS." + enable-for-water: + default: "false" + description: "Whether to enable lag compensation for water flow." + enable-for-lava: + default: "false" + description: "Whether to enable lag compensation for lava flow." + including-5s-in-get-tps: + default: "true" + description: "Whether to include 5-second TPS data in the results of Bukkit#getTPS and Server#getTPS API methods." + hidden-item-components: + default: [] + description: "Whether to not send specified item component information to the client." + connection-message: + join: + enabled: + default: "true" + description: "Whether to enable join messages." + message: + default: "default" + description: "Player join message." + quit: + enabled: + default: "true" + description: "Whether to enable quit messages." + message: + default: "default" + description: "Player quit message." + cache: + cache-player-profile-result: + default: "true" + description: "Whether to cache PlayerProfile data when players join." + cache-player-profile-result-timeout: + default: "1440" + description: "Cache time for PlayerProfile data (in minutes)." diff --git a/docs/config-spec/leaf/leaf.yml b/docs/config-spec/leaf/leaf.yml new file mode 100644 index 0000000..dda97e6 --- /dev/null +++ b/docs/config-spec/leaf/leaf.yml @@ -0,0 +1,554 @@ +# Leaf Global Config +config-version: + default: "3.0" + description: "配置文件版本,别改啊!" + +########### +# 异步 # +########### +async: + async-entity-tracker: + enabled: + default: "false" + description: "是否使用异步实体追踪,可以显著提高性能,特别是在小范围内拥有大量密集实体的场景中。" + compat-mode: + default: "false" + description: '是否开启兼容模式,以兼容类似 Citizens 或其他使用真实实体或玩家类型的实体作为 "NPC" 的插件。' + max-threads: + default: "0" + description: "异步实体追踪可使用的最大线程数。如果设为 0, 默认使用 CPU 核心数 1/4 的线程数,且不少于 1." + keepalive: + default: "60" + description: "空闲线程的超时时间,超过该时间并且无任务的线程将被销毁。(以 秒 为单位)" + + async-playerdata-save: + enabled: + default: "false" + description: "是否开启异步玩家数据保存 (I/O 操作都很耗时). 实验性功能,在某些情况下可能导致玩家数据丢失!" + + async-pathfinding: + enabled: + default: "false" + description: "是否使用异步生物寻路。" + max-threads: + default: "0" + description: "异步生物寻路可使用的最大线程数。如果设为 0, 默认使用 CPU 核心数 1/4 的线程数,且不少于 1." + keepalive: + default: "60" + description: "空闲线程的超时时间,超过该时间并且无任务的线程将被销毁。(以 秒 为单位)" + + async-mob-spawning: + enabled: + default: "true" + description: "是否使用异步生物生成。" + + async-locator: + enabled: + default: "false" + description: "是否使用异步定位。" + threads: + default: "0" + description: "异步定位可使用的最大线程数。如果设为 <= 0, 默认使用 1 个线程。" + keepalive: + default: "60" + description: "空闲线程的超时时间,超过该时间并且无任务的线程将被销毁。(以 秒 为单位)" + +########## +# 性能 # +########## +performance: + use-virtual-thread-for-async-chat-executor: + default: "true" + description: "是否为异步聊天使用 JDK 21 引入的虚拟线程。" + use-virtual-thread-for-async-scheduler: + default: "true" + description: "是否为异步任务调度器使用 JDK 21 引入的虚拟线程。" + create-snapshot-on-retrieving-blockstate: + default: "true" + description: "是否在获取 TileEntity / BlockState 时创建并使用其快照。" + inactive-goal-selector-throttle: + default: "true" + description: "当实体处在 inactive tick 时,是否将 goal selector 的 tick 计算限制为每秒一次。" + throttle-hopper-when-full: + enabled: + default: "false" + description: "是否当目标容器已满时冷却漏斗,以避免其尝试移动物品。" + skip-ticks: + default: "0" + description: "当漏斗冷却时,等待多长时间再次尝试移动物品的操作。(以 tick 为单位)" + skip-map-item-data-updates-if-map-does-not-have-craftmaprenderer: + default: "true" + description: "如果地图没有渲染器,是否跳过地图内容的更新。" + skip-ai-for-non-aware-mob: + default: "true" + description: "当生物处在不活跃且无感知的状态时,是否跳过其 AI tick 的计算。" + reduce-packets: + reduce-entity-move-packets: + default: "false" + description: "是否减少发送给玩家的无用实体移动数据包。" + optimized-powered-rails: + default: "true" + description: "是否优化动力铁轨的逻辑。" + optimize-minecart: + enabled: + default: "false" + description: "是否优化矿车的 tick 计算。" + skip-tick-count: + default: "30" + description: "每隔多少 tick 计算一次矿车碰撞。(以 tick 为单位)" + + faster-structure-gen-future-sequencing: + default: "true" + description: "是否为世界结构生成使用更快的任务排序。" + + faster-random-generator: + enabled: + default: "false" + description: "是否使用更快的随机数生成器。" + random-generator: + default: "Xoroshiro128PlusPlus" + description: "需要使用哪种随机数生成器。" + enable-for-worldgen: + default: "false" + description: "是否为世界生成使用更快的随机数生成器。" + warn-for-slime-chunk: + default: "true" + description: "在使用快速随机数生成器生成史莱姆区块时,是否在服务器启动时输出警告消息到控制台。" + use-legacy-random-for-slime-chunk: + default: "false" + description: "是否使用原版随机数生成器来生成史莱姆区块,以保持原版行为。" + + entity-timeouts: + ALLAY: + default: "-1" + AREA_EFFECT_CLOUD: + default: "-1" + ARMADILLO: + default: "-1" + ARMOR_STAND: + default: "-1" + ARROW: + default: "-1" + AXOLOTL: + default: "-1" + BAT: + default: "-1" + BEE: + default: "-1" + BLAZE: + default: "-1" + BOAT: + default: "-1" + BOGGED: + default: "-1" + BREEZE: + default: "-1" + BREEZE_WIND_CHARGE: + default: "-1" + CAMEL: + default: "-1" + CAT: + default: "-1" + CAVE_SPIDER: + default: "-1" + CHEST_BOAT: + default: "-1" + CHEST_MINECART: + default: "-1" + CHICKEN: + default: "-1" + COD: + default: "-1" + COMMAND_BLOCK_MINECART: + default: "-1" + COW: + default: "-1" + CREEPER: + default: "-1" + DOLPHIN: + default: "-1" + DONKEY: + default: "-1" + DRAGON_FIREBALL: + default: "-1" + DROWNED: + default: "-1" + EGG: + default: "-1" + ELDER_GUARDIAN: + default: "-1" + ENDER_DRAGON: + default: "-1" + ENDER_PEARL: + default: "-1" + ENDERMAN: + default: "-1" + ENDERMITE: + default: "-1" + EVOKER: + default: "-1" + EVOKER_FANGS: + default: "-1" + EXPERIENCE_BOTTLE: + default: "-1" + EXPERIENCE_ORB: + default: "-1" + EYE_OF_ENDER: + default: "-1" + FIREWORK_ROCKET: + default: "-1" + FOX: + default: "-1" + FROG: + default: "-1" + FURNACE_MINECART: + default: "-1" + GHAST: + default: "-1" + GIANT: + default: "-1" + GLOW_SQUID: + default: "-1" + GOAT: + default: "-1" + GUARDIAN: + default: "-1" + HOGLIN: + default: "-1" + HOPPER_MINECART: + default: "-1" + HORSE: + default: "-1" + HUSK: + default: "-1" + ILLUSIONER: + default: "-1" + IRON_GOLEM: + default: "-1" + ITEM: + default: "-1" + OMINOUS_ITEM_SPAWNER: + default: "-1" + FIREBALL: + default: "-1" + LIGHTNING_BOLT: + default: "-1" + LLAMA: + default: "-1" + LLAMA_SPIT: + default: "-1" + MAGMA_CUBE: + default: "-1" + MOOSHROOM: + default: "-1" + MULE: + default: "-1" + OCELOT: + default: "-1" + PANDA: + default: "-1" + PARROT: + default: "-1" + PHANTOM: + default: "-1" + PIG: + default: "-1" + PIGLIN: + default: "-1" + PIGLIN_BRUTE: + default: "-1" + PILLAGER: + default: "-1" + POLAR_BEAR: + default: "-1" + POTION: + default: "-1" + PUFFERFISH: + default: "-1" + RABBIT: + default: "-1" + RAVAGER: + default: "-1" + SALMON: + default: "-1" + SHEEP: + default: "-1" + SHULKER: + default: "-1" + SHULKER_BULLET: + default: "-1" + SILVERFISH: + default: "-1" + SKELETON: + default: "-1" + SKELETON_HORSE: + default: "-1" + SLIME: + default: "-1" + SMALL_FIREBALL: + default: "-1" + SNIFFER: + default: "-1" + SNOW_GOLEM: + default: "-1" + SNOWBALL: + default: "-1" + SPAWNER_MINECART: + default: "-1" + SPECTRAL_ARROW: + default: "-1" + SPIDER: + default: "-1" + SQUID: + default: "-1" + STRAY: + default: "-1" + STRIDER: + default: "-1" + TADPOLE: + default: "-1" + TNT_MINECART: + default: "-1" + TRADER_LLAMA: + default: "-1" + TRIDENT: + default: "-1" + TROPICAL_FISH: + default: "-1" + TURTLE: + default: "-1" + VEX: + default: "-1" + VILLAGER: + default: "-1" + VINDICATOR: + default: "-1" + WANDERING_TRADER: + default: "-1" + WARDEN: + default: "-1" + WIND_CHARGE: + default: "-1" + WITCH: + default: "-1" + WITHER: + default: "-1" + WITHER_SKELETON: + default: "-1" + WITHER_SKULL: + default: "-1" + WOLF: + default: "-1" + ZOGLIN: + default: "-1" + ZOMBIE: + default: "-1" + ZOMBIE_HORSE: + default: "-1" + ZOMBIE_VILLAGER: + default: "-1" + ZOMBIFIED_PIGLIN: + default: "-1" + FISHING_BOBBER: + default: "-1" + + enable-cached-minecraft-to-bukkit-entitytype-convert: + default: "true" + description: "是否缓存 Minecraft EntityType 到 Bukkit EntityType 的类型转换结果。" + + dab: + enabled: + default: "true" + description: "根据距离优化生物 AI (又称 DAB), 在生物远离玩家时减少大脑 AI tick 计算的频率。" + dont-enable-if-in-water: + default: "false" + description: "非水生生物在水中时,是否不受 DAB 的影响。" + start-distance: + default: "12" + description: "距离玩家多少格 DAB 开始生效。" + max-tick-freq: + default: "20" + description: "最远处的实体每隔多长时间进行一次寻路和 AI 相关行为的 tick 计算。" + activation-dist-mod: + default: "8" + description: "该配置项定义了距离对实体 tick 计算频率的影响程度。" + blacklisted-entities: + default: [] + description: "DAB 黑名单,名单内的生物将不受 DAB 的影响。" + + dont-save-entity: + dont-save-primed-tnt: + default: "false" + description: "区块卸载时不保存激活的 TNT." + dont-save-falling-block: + default: "false" + description: "区块卸载时不保存掉落的方块。" + +########### +# 修复 # +########### +fixes: + dont-place-player-if-server-full: + default: "false" + description: "是否禁止玩家进入已满服务器。" + +############## +# 游戏机制 # +############## +gameplay-mechanisms: + use-spigot-item-merging-mechanism: + default: "true" + description: "是否使用 Spigot 默认的掉落物合并机制。" + smooth-teleport: + default: "false" + description: '是否在玩家切换维度时尝试使用 "平滑传送".' + max-item-stack-count: + max-dropped-items-stack-count: + default: "0" + description: "每组掉落物的最大堆叠大小。" + max-container-destroy-count: + default: "0" + description: "容器被破坏时允许掉落的最大物品堆叠数量。" + knockback: + snowball-knockback-players: + default: "false" + description: "是否允许雪球击退玩家。" + egg-knockback-players: + default: "false" + description: "是否允许鸡蛋击退玩家。" + can-player-knockback-zombie: + default: "true" + description: "是否允许玩家击退僵尸。" + player: + disable-moved-wrongly-threshold: + default: "false" + description: '是否禁用 Spigot 内置的 "moved too quickly / wrongly" 移动速度检查。' + max-use-item-distance: + default: "1.0000001" + description: "玩家允许用物品进行交互的最远距离。" + +############# +# 网络 # +############# +network: + protocol-support: + jade-protocol: + default: "false" + description: "是否开启对 Jade 的协议支持。" + appleskin-protocol: + default: "false" + description: "是否开启对 AppleSkin 的协议支持。" + asteorbar-protocol: + default: "false" + description: "是否开启对 AsteorBar 的协议支持。" + chatimage-protocol: + default: "false" + description: "是否开启对 ChatImage 的协议支持。" + xaero-map-protocol: + default: "false" + description: "是否开启对 XaeroMap 的协议支持。" + xaero-map-server-id: + default: "513317" + description: "XaeroMap 用于标识服务器的唯一数字 ID." + syncmatica-protocol: + default: "false" + description: "是否开启对 Syncmatica 的协议支持。" + syncmatica-quota: + default: "false" + description: "是否限制每个共享投影的文件大小。" + syncmatica-quota-limit: + default: "40000000" + description: "上传至服务器的共享投影的最大文件大小。(以 字节 为单位)" + chat-message-signature: + default: "true" + description: "是否开启聊天消息签名。" + +########## +# 杂项 # +########## +misc: + message: + unknown-command: + default: "" + description: "未知指令提示,在执行未知的指令时将向其发送。" + rebrand: + server-mod-name: + default: "Leaf" + description: "服务端核心名字。" + server-gui-name: + default: "Leaf Console" + description: "服务端 GUI 控制台名字。" + sentry: + dsn: + default: "" + description: "Sentry 的 DSN 密匙。如果设为空,则禁用 Sentry." + log-level: + default: "WARN" + description: "等于或高于此等级的日志将被记录。" + only-log-thrown: + default: "true" + description: "是否仅记录带有 Throwable 的日志。" + secure-seed: + enabled: + default: "false" + description: "是否使用安全种子功能。" + remove-vanilla-username-check: + default: "true" + description: "是否移除原版的用户名检查。" + remove-spigot-check-bungee-config: + default: "true" + description: "是否允许玩家通过代理端进入后端服务器。" + remove-change-non-editable-sign-warning: + default: "false" + description: "当玩家尝试编辑其无法编辑的告示牌时,是否在控制台打印警告信息。" + region-format-settings: + region-format: + default: "MCA" + description: "可用区块格式。" + linear-compress-level: + default: "1" + description: "Linear 区块格式文件的压缩等级。" + throw-on-unknown-extension-detected: + default: "false" + description: "当检测到未知的区块文件格式时,是否在控制台抛出异常并崩溃服务器。" + flush-interval-seconds: + default: "5" + description: "Linear 区块格式数据保存到磁盘的频率。(以 秒 为单位)" + lag-compensation: + enabled: + default: "false" + description: "卡顿滞后补偿,这可以在服务器卡顿或低 TPS 时确保玩家的基本游戏体验。" + enable-for-water: + default: "false" + description: "是否开启水流动的滞后补偿。" + enable-for-lava: + default: "false" + description: "是否开启岩浆流动的滞后补偿。" + including-5s-in-get-tps: + default: "true" + description: "是否在 Bukkit#getTPS 和 Server#getTPS API 方法的结果中包含 5 秒 TPS 数据。" + hidden-item-components: + default: [] + description: "是否不发送指定的物品组件信息给客户端。" + connection-message: + join: + enabled: + default: "true" + description: "是否启用进服信息" + message: + default: "default" + description: "玩家进服信息" + quit: + enabled: + default: "true" + description: "是否启用进服信息退服" + message: + default: "default" + description: "玩家退服提示" + cache: + cache-player-profile-result: + default: "true" + description: "是否在玩家进服时缓存 PlayerProfile 数据。" + cache-player-profile-result-timeout: + default: "1440" + description: "玩家 PlayerProfile 数据的缓存时间。(以 分钟 为单位)" diff --git a/docs/config-spec/leaf/zhHans.data.mts b/docs/config-spec/leaf/zhHans.data.mts new file mode 100644 index 0000000..132e5ac --- /dev/null +++ b/docs/config-spec/leaf/zhHans.data.mts @@ -0,0 +1,29 @@ +import * as fs from "fs"; +import * as yaml from "yaml"; +import { createMarkdownRenderer } from "vitepress"; +import config from "../../.vitepress/config.mts"; + +// noinspection JSUnusedGlobalSymbols +export default { + async load() { + const raw = yaml.parse( + fs.readFileSync("./docs/config-spec/leaf/leaf.yml", "utf-8") + ); + const md = await createMarkdownRenderer(config.srcDir, config.markdown); + + function render(x: any): any { + for (const key in x) { + if (typeof x[key] == "object") { + x[key] = render(x[key]); + } else { + if (key == "content" || key == "description") { + x[key] = md.render(x[key]); + } + } + } + return x; + } + + return render(raw); + }, +}; diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..5d76136 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,41 @@ +--- +layout: home +gitChangelog: false +hero: + name: "Leaf" + text: "Optimized and flexible" + image: + src: /logo.svg + width: 200px + height: 200px + tagline: A Paper fork focusing on performance, stability, and a vanilla-like experience + actions: + - theme: brand + text: Read More + link: /about + - theme: alt + text: Releases + link: https://github.com/Winds-Studio/Leaf/releases + - theme: alt + text: Build History + link: /builds +features: + - title: Powerful and Optimized + icon: ⚡ + details: Stable, high-performance, and designed for large player bases + - title: Practical and Customizable + icon: 🧬 + details: Packed with practical features and fixes, customizable through configurations + - title: Latest Dependencies + icon: 📦 + details: Modernized with always up-to-date dependencies +--- + + diff --git a/pages/BuildHistory.vue b/docs/pages/BuildHistory.vue similarity index 100% rename from pages/BuildHistory.vue rename to docs/pages/BuildHistory.vue diff --git a/pages/builds.md b/docs/pages/builds.md similarity index 80% rename from pages/builds.md rename to docs/pages/builds.md index de0ff92..12b8ebb 100644 --- a/pages/builds.md +++ b/docs/pages/builds.md @@ -1,13 +1,16 @@ --- aside: false +gitChangelog: false --- + # Build History + - \ No newline at end of file + diff --git a/docs/pages/en/about.md b/docs/pages/en/about.md new file mode 100644 index 0000000..0dd3cf2 --- /dev/null +++ b/docs/pages/en/about.md @@ -0,0 +1,14 @@ +# Welcome to the Leaf Documentation + +Leaf is a Paper fork focused on balancing performance optimization, Vanilla, and stability, designed for large networks, dense, and high-load scenarios. + +This documentation includes a series of useful tutorials on Leaf configuration, related development, and more. + +## 📫 Contact + +- Discord: [`https://discord.com/invite/gfgAwdSEuM`](https://discord.com/invite/gfgAwdSEuM) +- Community QQ Group: `619278377` + +::: warning +This Docs site is still under construction! For more information, please join the Leaf community group 619278377. +::: diff --git a/docs/pages/en/dev/api.md b/docs/pages/en/dev/api.md new file mode 100644 index 0000000..b98b132 --- /dev/null +++ b/docs/pages/en/dev/api.md @@ -0,0 +1,37 @@ +# 🧪 API + +## Maven + +```xml + + leafmc + https://maven.nostal.ink/repository/maven-snapshots/ + +``` + +```xml + + cn.dreeam.leaf + leaf-api + 1.21.1-R0.1-SNAPSHOT + provided + +``` + +## Gradle + +```kotlin +repositories { + maven { + url = uri("https://maven.nostal.ink/repository/maven-snapshots/") + } +} + +dependencies { + compileOnly("cn.dreeam.leaf:leaf-api:1.21.1-R0.1-SNAPSHOT") +} + +java { + toolchain.languageVersion.set(JavaLanguageVersion.of(21)) +} +``` diff --git a/docs/pages/en/dev/build.md b/docs/pages/en/dev/build.md new file mode 100644 index 0000000..ff28051 --- /dev/null +++ b/docs/pages/en/dev/build.md @@ -0,0 +1,7 @@ +# Build + +Build the Paperclip JAR for distribution: + +```bash +./gradlew applyPatches && ./gradlew createMojmapPaperclipJar +``` diff --git a/docs/pages/en/dev/contributing.md b/docs/pages/en/dev/contributing.md new file mode 100644 index 0000000..cc31c65 --- /dev/null +++ b/docs/pages/en/dev/contributing.md @@ -0,0 +1,7 @@ +# Contributing Code to Leaf + +Leaf is glad that you are willing to contribute to our project. We are generally very accommodating with submitted PRs, but there are still some guidelines that can help you get started quickly with modifications to the core code and smoothly navigate the PR review process. + +For versions 1.21.4 and above, please refer to Paper's [CONTRIBUTING.md](https://github.com/PaperMC/Paper/blob/main/CONTRIBUTING.md). + +For versions below 1.21.4, please refer to Paper-archive's [CONTRIBUTING.md](https://github.com/PaperMC/Paper-archive/blob/ver/1.21.1/CONTRIBUTING.md). diff --git a/docs/pages/en/dev/index.md b/docs/pages/en/dev/index.md new file mode 100644 index 0000000..62ae7be --- /dev/null +++ b/docs/pages/en/dev/index.md @@ -0,0 +1,5 @@ +# Leaf Development Guide + +Welcome to the Leaf Development Guide! + +In this section, you can learn how to build Leaf, create plugins based on the Leaf API, and even discover how to contribute code to Leaf! diff --git a/docs/pages/en/how-to/setup-sentry.md b/docs/pages/en/how-to/setup-sentry.md new file mode 100644 index 0000000..e28f992 --- /dev/null +++ b/docs/pages/en/how-to/setup-sentry.md @@ -0,0 +1,3 @@ +# Configure Sentry + +> In progress 🚧 diff --git a/docs/pages/en/index.md b/docs/pages/en/index.md new file mode 100644 index 0000000..798fd67 --- /dev/null +++ b/docs/pages/en/index.md @@ -0,0 +1,32 @@ +--- +layout: home +gitChangelog: false +hero: + name: "Leaf" + text: "Optimized and flexible" + image: + src: /logo.svg + width: 200px + height: 200px + tagline: A Paper fork focusing on performance, stability, and a vanilla-like experience + actions: + - theme: brand + text: Read More + link: /pages/en/about + - theme: alt + text: Releases + link: https://github.com/Winds-Studio/Leaf/releases + - theme: alt + text: Build History + link: /builds +features: + - title: Powerful and Optimized + icon: ⚡ + details: Stable, high-performance, and designed for large player bases + - title: Practical and Customizable + icon: 🧬 + details: Packed with practical features and fixes, customizable through configurations + - title: Latest Dependencies + icon: 📦 + details: Modernized with always up-to-date dependencies +--- diff --git a/docs/pages/en/reference/config/gale-global.md b/docs/pages/en/reference/config/gale-global.md new file mode 100644 index 0000000..be06c59 --- /dev/null +++ b/docs/pages/en/reference/config/gale-global.md @@ -0,0 +1,305 @@ +# Gale Global Configuration + +:::info +The following YAML configuration showcases the structure and default values of the Gale global configuration (config/gale-global.yml). + +This configuration file is based on the latest Leaf 1.21.1 branch. + +Click the arrow button next to the configuration items to display their descriptions. +::: + +[[toc]] + +## `small-optimizations` + +### `reduced-intervals` + +#### `increase-time-statistics` + +The interval at which time-related statistics (like total game time, time since last death, etc.) increase, measured in ticks. Changing this value does not affect the speed at which statistics increase from the original game. + +- Example: + - Setting to `20` means total game time increases by 20 ticks per second. + - Setting to `100` means total game time increases by 100 ticks every 5 seconds. + +If the given value is less than or equal to 0, it defaults to the same as Paper. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `100` | `20` | `1` | `1` | + +| **Target Value** | | +| ------------------ | ----------------------------------------------------------------------------------- | +| _Optimization_ | `100` | +| _Vanilla Behavior_ | Lower values are closer to vanilla (`20` is decent, but `1` is usually unnecessary) | + +#### `update-entity-line-of-sight` + +The interval at which it checks if one entity is in the line of sight of another entity, measured in ticks. If the given value is less than or equal to 0, it defaults to the same as Paper. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `4` | `4` | `1` | `1` | + +| **Target Value** | | +| ------------------ | ---- | +| _Optimization_ | `10` | +| _Vanilla Behavior_ | `1` | + +## `use-xor-shift-random` + +Whether to use the [xor-shift random number generator](http://www.codeproject.com/Articles/9187/A-fast-equivalent-for-System-Random) instead of the Java default. + +### `auto-replenish-lootable-refill` + +Whether to use the xor-shift random generator for Paper's `auto-replenish` feature to replenish lootable items. This does not affect regular Minecraft lootable chests. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `true` | `true` | `false` | - | + +| **Target Value** | | +| ---------------- | --------------------------------------- | +| _Optimization_ | `true` | +| _Paper Behavior_ | - (Players won’t notice the difference) | + +### `elytra-firework-speed` + +Whether to use the xor-shift random generator to increase the speed of rockets used while gliding. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `true` | `true` | `false` | `false` | + +| **Target Value** | | +| ------------------ | ------- | +| _Optimization_ | `true` | +| _Vanilla Behavior_ | `false` | + +### `entity-wake-up-duration` + +Whether to use the xor-shift random generator to change the duration of entity activation. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `true` | `true` | - | - | + +| **Target Value** | | +| ---------------- | ------ | +| _Optimization_ | `true` | + +### `generate-tree-with-bukkit-api` + +Whether to use the xor-shift random generator to generate trees through the Bukkit API (`World#generateTree`). + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `true` | `true` | `false` | - | + +| **Target Value** | | +| ---------------- | ------- | +| _Optimization_ | `true` | +| _Paper Behavior_ | `false` | + +## `gameplay-mechanics` + +### `enable-book-writing` + +Whether to allow books to be written. If set to false, players with the permission `gale.writebooks` (default: `op`) can still use books. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `true` | `true` | `true` | + +| **Target Value** | | +| ------------------ | ------ | +| _Optimization_ | - | +| _Vanilla Behavior_ | `true` | + +## `log-to-console` + +Whether to log specific text and events to the console and log files. + +| **Setting** | **Description** | **Recommended Value** | **Default Value** | **Paper** | +| -------------------------------- | -------------------------------------------------------------------------------------------------------------------- | --------------------- | ----------------- | --------- | +| `ignored-advancements` | When player data is loaded and they have advancements that no longer exist | `false` | `true` | `true` | +| `invalid-statistics` | When player data is loaded and they have statistics that no longer exist | `false` | `true` | `true` | +| `legacy-material-initialization` | When loading very old Bukkit plugins | `false` | `false` | `true` | +| `null-id-disconnections` | When a player logs in without sending a valid profile (usually indicates a hacker trying to flood your server) | - | `true` | `true` | +| `player-login-locations` | Whether to include player coordinates in the join message logged to console | - | `true` | `true` | +| `set-block-in-far-chunk` | When a player tries to set a block very far away (usually indicates a hacker trying to get other players' locations) | `false` | `true` | `true` | +| `unrecognized-recipes` | When player data is loaded and they have recipes that no longer exist | `false` | `false` | `true` | + +### `chat` + +| **Setting** | **Description** | **Recommended Value** | **Default Value** | **Paper** | +| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------- | --------------------- | ----------------- | --------- | +| `empty-message-warning` | When a player sends an empty message packet (harmless, usually happens when the player's client is out of date) | `false` | `false` | `true` | +| `expired-message-warning` | When a player's message packet has expired (harmless, usually happens when the player's client chat is slightly out of sync) | `false` | `false` | `true` | +| `out-of-order-message-warning` | When a player's message packet is out of order (harmless, usually happens when the player's client chat is slightly out of sync) | `false` | `false` | `true` | +| `not-secure-marker` | Whether to prepend a [NOT SECURE] marker to unsigned chat packets | - | `true` | `true` | + +### `plugin-library-loader` + +| **Setting** | **Description** | **Recommended Value** | **Default Value** | **Paper** | +| --------------------------------- | -------------------------------------------------------------------- | --------------------- | ----------------- | --------- | +| `downloads` | When the plugin library loader starts downloading libraries | `true` | `true` | `true` | +| `start-load-libraries-for-plugin` | When the plugin library loader starts loading libraries for a plugin | `true` | `true` | `true` | +| `library-loaded` | When the plugin library loader finishes loading libraries | `true` | `true` | `true` | + +### `invalid-pool-element-error-log-level` + +The error log level when the server encounters invalid pool elements in world data. Invalid pool elements are parts of generated structures (like mines) that are corrupted or not correctly updated from old versions. These error logs are often meaningless and frequently occur on old servers that have been updated across multiple Minecraft versions. + +Valid values are `"none"`, `"info"`, `"warn"`, and `"error"`. + +| | **Default Value** | | | +| --------------------- | ----------------- | --------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `"none"` 🛈 | `"info"` | `"error"` | `"error"` | + +> 🛈 = The default value is `"info"` to prevent any errors from going unnoticed, but the recommended value is `"none"` since these errors are usually meaningless and unresolvable. + +## `misc` + +### `ignore-null-legacy-structure-data` + +Whether to ignore any legacy structure data that the NBT tag parser returns null for. + +- If true, no warning will be given when this occurs. +- If false, an exception will be thrown in the console when this occurs. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `true` 🛈 | `false` | `false` | `false` | + +| **Target Value** | | +| ------------------ | ------- | +| _Optimization_ | - | +| _Vanilla Behavior_ | `false` | + +> 🛈 = The default value is `false` to prevent any errors from going unnoticed, but the recommended value is `true` since these errors are usually meaningless and unresolvable. + +### `keepalive` + +#### `send-multiple` + +Whether to send keep-alive packets more frequently than vanilla. + +- If true, a keep-alive packet is sent to each client every second, and if they respond to at least one packet within 30 seconds, they will not be kicked. +- If false, a keep-alive packet is sent to each client every 15 seconds, and if they do not respond within 30 seconds, they will be kicked. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `true` | `true` | `false` | `false` | + +| **Target Value** | | +| ------------------ | --------------------------------- | +| _Optimization_ | - | +| _Vanilla Behavior_ | - (this does not affect gameplay) | + +#### `last-tick-time-in-tps-command` + +##### `enabled` + +Whether to include the time taken for the last tick in the `/tps` command. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `false` | `false` | `false` | `false` | + +| **Target Value** | | +| ---------------- | ------- | +| _Optimization_ | - | +| _Paper Behavior_ | `false` | + +##### `add-oversleep` + +Whether to add the oversleep portion of the last tick time to the `/tps` command. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `false` | `false` | `false` | + +| **Target Value** | | +| ---------------- | --- | +| _Optimization_ | - | +| _Paper Behavior_ | - | + +#### `premium-account-slow-login-timeout` + +The maximum time required for premium account login, measured in ticks. If this time is exceeded, the connection will be closed. If the given value is less than or equal to 0, it defaults to the same as vanilla, currently `600` ticks (30 seconds). + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `-1` | `-1` | `-1` | + +| **Target Value** | | +| ------------------ | ---- | +| _Optimization_ | - | +| _Vanilla Behavior_ | `-1` | + +#### `verify-chat-order` + +Whether to verify the order of chat messages. + +- If this option is set to `true`, and a player sends chat packets out of order, they will be kicked. +- If this option is set to `false`, verification will not occur, and players will not be kicked. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `true` | `true` | `true` | + +| **Target Value** | | +| ------------------ | ------ | +| _Optimization_ | - | +| _Vanilla Behavior_ | `true` | + +#### `include-in-timings-report` + +Whether to include certain information in the timings report (`/timings`). + +##### `hardware-specs` + +Whether to include hardware specifications. + +| | | | **Default Value** | | +| ------------ | --------------- | --------------------- | ----------------- | ------- | +| **Property** | **Description** | **Recommended Value** | _Gale_ | _Paper_ | +| `cpu` | CPU | `true` | `true` | `false` | +| `disks` | Storage | `true` | `true` | `false` | +| `gpus` | GPU | `true` | `true` | `false` | +| `memory` | RAM | `true` | `true` | `false` | + +##### `server-properties` + +Whether to include certain settings from the vanilla `server.properties` configuration file. + +| | | **Default Value** | | +| -------------------------------------- | --------------------- | ----------------- | ------- | +| **Property** | **Recommended Value** | _Gale_ | _Paper_ | +| `data-packs` | `true` | `true` | `false` | +| `enable-rcon` | `false` | `false` | `false` | +| `generator-settings` | `true` | `true` | `false` | +| `level-name` | - | `false` | `false` | +| `motd` | - | `false` | `false` | +| `query-port` | `false` | `false` | `false` | +| `rcon-port` | `false` | `false` | `false` | +| `resource-pack-and-resource-pack-sha1` | - | `false` | `false` | +| `resource-pack-prompt` | - | `false` | `false` | +| `server-ip` | - | `false` | `false` | +| `server-port` | - | `false` | `false` | +| `text-filtering-config` | - | `false` | `false` | diff --git a/docs/pages/en/reference/config/gale-world.md b/docs/pages/en/reference/config/gale-world.md new file mode 100644 index 0000000..ab4d51c --- /dev/null +++ b/docs/pages/en/reference/config/gale-world.md @@ -0,0 +1,540 @@ +# World Settings + +The default settings for each world can be configured in `config/gale-world-defaults.yml`, while specific world overrides are set in `/gale-world.yml`. + +[[toc]] + +## `small-optimizations` + +### `save-fireworks` + +Controls whether fireworks are saved when chunks are saved. + +Fireworks can malfunction, causing them not to explode, and using dispensers may fill a chunk. If set to `true`, any fireworks will be removed when the chunk unloads to prevent such issues. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `true` | `true` | `true` | + +| **Target Value** | | +| ------------------ | -------------------------------------------------------------------------------------------------- | +| _Optimization_ | Generally: - (not very important) If players are expected to try to crash the server: `false` | +| _Vanilla Behavior_ | `true` | + +### `use-optimized-sheep-offspring-color` + +Controls whether to use a faster method to select the color of newly born sheep. + +The selected color is identical to vanilla. If set to `true`, any crafting recipes changed via packets will be ignored. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `true` | `true` | `false` | `false` | + +| **Target Value** | | +| ------------------ | ------- | +| _Optimization_ | `true` | +| _Vanilla Behavior_ | `false` | + +### `load-chunks` + +Controls whether to load chunks under specific circumstances. + +#### `to-spawn-phantoms` + +Whether to load chunks to spawn phantoms. + +If set to `false`, nothing will happen when the server tries to spawn phantoms in unloaded chunks. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `false` | `false` | `true` | `true` | + +| **Target Value** | | +| ------------------ | ------- | +| _Optimization_ | `false` | +| _Vanilla Behavior_ | `true` | + +#### `to-activate-climbing-entities` + +Whether to load chunks to activate climbing entities. + +In Paper, entities like zombies prioritize activation when "climbing." If set to `false`, the server won’t check the climbing priority of entities in unloaded chunks, avoiding unnecessary server hangs. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `false` | `false` | `true` | - | + +| **Target Value** | | +| ---------------- | ------- | +| _Optimization_ | `false` | +| _Paper Behavior_ | `true` | + +## `max-projectile-chunk-loads` + +Controls the chunk loading settings for projectiles (like arrows, tridents, or ender pearls). + +#### `per-tick` + +The maximum number of chunks that can be synchronously loaded by all projectiles in a world per tick. + +If the given value is less than `0`, this setting is disabled, and the number of chunks loaded by projectiles will not be limited. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `10` | `10` | `-1` | `-1` | + +| **Target Value** | | +| ------------------ | ---- | +| _Optimization_ | `2` | +| _Vanilla Behavior_ | `-1` | + +#### `per-projectile` + +##### `max` + +The maximum number of chunks that can be synchronously loaded by a projectile during its lifecycle. + +If the given value is less than `0`, this setting is disabled, and the number of chunks loaded by projectiles will not be limited. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `10` | `10` | `-1` | `-1` | + +| **Target Value** | | +| ------------------ | ---- | +| _Optimization_ | `10` | +| _Vanilla Behavior_ | `-1` | + +##### `reset-movement-after-reach-limit` + +Whether to set the flat speed of the projectile to zero when it exceeds the `max` threshold to stop it from trying to cross chunk boundaries. + +If `remove-from-world-after-reach-limit` is `true`, this setting is ineffective. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `false` | `false` | `false` | + +| **Target Value** | | +| ------------------ | ------------------------------------ | +| _Optimization_ | `true` (in extreme cases, but risky) | +| _Vanilla Behavior_ | `false` | + +##### `remove-from-world-after-reach-limit` + +Whether to completely remove the projectile from the world when it exceeds the `max` threshold. + +Removing projectiles from the world carries risks, as this may affect valuable projectiles for players (like tridents), so it is not recommended to set this value to `true` unless you accept this risk. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `false` | `false` | `false` | `false` | + +| **Target Value** | | +| ------------------ | ---------------------------------- | +| _Optimization_ | `true` in extreme cases, but risky | +| _Vanilla Behavior_ | `false` | + +## `reduced-intervals` + +### `acquire-poi-for-stuck-entity` + +The additional interval in ticks for stuck entities (like vehicles) to attempt to acquire POIs (like villager work blocks). + +If they are no longer stuck during this period, they will be able to acquire POIs again immediately. + +For example, if this value is set to `100`, stuck entities will attempt to find a POI every 5 seconds. + +If the given value is less than `0`, it defaults to the same as Paper. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `60` | `60` | `200` | `0` | + +| **Target Value** | | +| ------------------ | ----- | +| _Optimization_ | `200` | +| _Vanilla Behavior_ | `0` | + +### `check-stuck-in-wall` + +The interval in ticks to check if an entity is stuck in a wall to handle suffocation damage. + +Since there is an interval (about 1 second) after damage is dealt where entities cannot take repeated damage, delaying the suffocation check by less than 1 second is nearly imperceptible. + +For example, if this value is set to `10`, entities will check for suffocation every ½ second. + +If the given value is less than or equal to `0`, it defaults to the same as Paper. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `10` | `10` | `1` | `1` | + +| **Target Value** | | +| ------------------ | ---- | +| _Optimization_ | `10` | +| _Vanilla Behavior_ | `1` | + +### `villager-item-repickup` + +The minimum delay in ticks before items dropped by villagers can be picked up by (other) entities. + +- Prevents villagers from picking up planted items before they reach a hopper in some farm designs. +- Reduces the delay of villagers constantly throwing items at each other when their inventory is full. + +For example, if this value is set to `100`, items dropped by villagers can be picked up by entities after 5 seconds. + +If the given value is less than `0`, it defaults to the same as vanilla, currently `10` ticks (½ second). + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `100` | `100` | `-1` | `-1` | + +| **Target Value** | | +| ------------------ | ----- | +| _Optimization_ | `100` | +| _Vanilla Behavior_ | `-1` | + +### `check-nearby-item.hopper` + +The frequency at which hoppers check for items to pick up. + +This setting only affects items that are in the world (e.g., dropped items) and does not affect pulling items from chests or other storage blocks. + +- `interval` + The frequency at which the hopper block checks for items, measured in ticks. + +For example, if this value is set to `20`, the hopper will check for items above it once per second. + +If the given value is less than or equal to `0`, it defaults to the same as Paper. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `20` | `20` | `1` | `1` | + +| **Target Value** | | +| ------------------ | ---- | +| _Optimization_ | `50` | +| _Vanilla Behavior_ | `1` | + +- `minecart` + +- `interval` + Same as the above `interval` setting, but applies to hopper minecarts. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `20` | `20` | `1` | `1` | + +| **Target Value** | | +| ------------------ | ---- | +| _Optimization_ | `20` | +| _Vanilla Behavior_ | `1` | + +- `temporary-immunity` + + Hopper minecarts can temporarily ignore the above `interval` setting. When the minecart is in an immune state, it can check for items once per tick. + + `duration` + The duration in ticks for which the hopper minecart is temporarily immune to the `interval` setting. + + If the given value is less than or equal to `0`, the hopper minecart will never be temporarily immune to the `interval` setting. + + | | **Default Value** | | | + | --------------------- | ----------------- | ------- | --------- | + | **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | + | `100` | `100` | - | - | + + | **Target Value** | | + | ------------------ | ----------------------------------------------------- | + | _Optimization_ | `75` | + | _Vanilla Behavior_ | - (For vanilla behavior, `interval` must be set to 1) | + + `nearby-item-max-age` + Items older than this value (in ticks) will not cause nearby hopper minecarts to be immune to the `interval` setting. + + If the given value is less than or equal to `0`, there is no minimum age, meaning all items can temporarily make nearby hopper minecarts immune to the `interval` setting. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `1200` | `1200` | - | - | + +| **Target Value** | | +| ------------------ | ----------------------------------------------------- | +| _Optimization_ | `600` | +| _Vanilla Behavior_ | - (For vanilla behavior, `interval` must be set to 1) | + +`check-for-item-near-minecart-interval` + +The frequency at which nearby items are checked to allow hopper minecarts to be temporarily immune to the `interval` setting, measured in ticks. + +If the given value is less than or equal to `0`, the behavior is the same as `1`. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `20` | `20` | - | - | + +| **Target Value** | | +| ------------------ | ----------------------------------------------------- | +| _Optimization_ | `20` | +| _Vanilla Behavior_ | - (For vanilla behavior, `interval` must be set to 1) | + +`check-for-minecart-near-item-while-inactive` + +Whether to check for nearby items to allow inactive hopper minecarts to be temporarily immune to the `interval` setting. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `true` | `true` | - | - | + +| **Target Value** | | +| ------------------ | ----------------------------------------------------- | +| _Optimization_ | `true` | +| _Vanilla Behavior_ | - (For vanilla behavior, `interval` must be set to 1) | + +`max-item-horizontal-distance` + +The maximum horizontal distance from which dropped items can temporarily make the hopper minecart immune to the `interval` setting. + +If the given value is less than `0`, the hopper minecart will never be temporarily immune to the `interval` setting. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `24.0` | `24.0` | - | - | + +| **Target Value** | | +| ------------------ | ----------------------------------------------------- | +| _Optimization_ | `24.0` | +| _Vanilla Behavior_ | - (For vanilla behavior, `interval` must be set to 1) | + +`max-item-vertical-distance` + +Same as `max-item-horizontal-distance`, but this is the maximum vertical distance. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `4.0` | `4.0` | - | - | + +| **Target Value** | | +| ------------------ | ----------------------------------------------------- | +| _Optimization_ | `4.0` | +| _Vanilla Behavior_ | - (For vanilla behavior, `interval` must be set to 1) | + +## `gameplay-mechanics` + +### `arrow-movement-resets-despawn-counter` + +Whether to restart the despawn counter of arrows when they start to fall (e.g., when the block they are stuck in is destroyed). + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `true` | `true` | `true` | + +| **Target Value** | | +| ------------------ | ------- | +| _Optimization_ | `false` | +| _Vanilla Behavior_ | `true` | + +### `entities-can-random-stroll-into-non-ticking-chunks` + +Whether to allow randomly wandering entities to pathfind into non-ticking chunks. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `true` | `true` | `true` | + +| **Target Value** | | +| ------------------ | ------ | +| _Optimization_ | - | +| _Vanilla Behavior_ | `true` | + +### `entity-wake-up-duration-ratio-standard-deviation` + +If this value is set to greater than `0`, the process of waking inactive entities will be spread over time rather than waking multiple entities at once, making their behavior more natural. + +This setting is the [coefficient of variation](https://en.wikipedia.org/wiki/Coefficient_of_variation), or `σ / μ` (the ratio of standard deviation to mean) of inactive duration. + +In other words, this setting is the value of `σ`, so regular inactive durations will be multiplied by a factor of `normal_distribution(μ = 1, σ)`. + +If the given value is less than or equal to `0`, variable entity waking will be disabled. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| `0.2` | `0.2` | `0.0` | - | + +| **Target Value** | | +| ---------------- | ----- | +| _Optimization_ | - | +| _Paper Behavior_ | `0.0` | + +### `hide-flames-on-entities-with-fire-resistance` + +Whether to hide the visible flames on entities that are on fire while having fire resistance potion effects. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `false` | `false` | `false` | + +| **Target Value** | | +| ------------------ | ------- | +| _Optimization_ | - | +| _Vanilla Behavior_ | `false` | + +### `player-max-interaction-distance` + +The maximum distance from which players can interact with blocks (by left or right-clicking). + +Increasing this value makes it more playable for players with poor connections, but it may also allow players using hacked clients to interact from further away than normal. + +If the given value is less than or equal to `0`, it defaults to the same as vanilla, currently `6.0`. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `-1.0` | `-1.0` | `-1.0` | + +| **Target Value** | | +| ------------------ | ------ | +| _Optimization_ | - | +| _Vanilla Behavior_ | `-1.0` | + +### `try-respawn-ender-dragon-after-end-crystal-place` + +Whether to attempt to respawn the Ender Dragon after placing an End Crystal in the correct position. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `true` | `true` | `true` | + +| **Target Value** | | +| ------------------ | ------ | +| _Optimization_ | - | +| _Vanilla Behavior_ | `true` | + +### `fixes` + +#### `sand-duping` + +Whether to fix sand duplication. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `true` | `true` | `false` | + +| **Target Value** | | +| ------------------ | ------- | +| _Optimization_ | - | +| _Vanilla Behavior_ | `false` | + +#### `tripwire-duping` + +Whether to fix tripwire duplication. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `true` | `true` | `false` | + +| **Target Value** | | +| ------------------ | ------- | +| _Optimization_ | - | +| _Vanilla Behavior_ | `false` | + +#### `broadcast-crit-animations-as-the-entity-being-critted` + +Whether to broadcast critical hit animations as the entity being critted. + +This setting does not affect the position of the animation display: it always shows on the entity being critted. If set to `false`, the critical hit animation is broadcast as the player dealing the critical hit. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `false` | `false` | `false` | + +| **Target Value** | | +| ------------------ | ------- | +| _Optimization_ | - | +| _Vanilla Behavior_ | `false` | + +#### `check-can-change-dimensions-before-use-end-gateway` + +Whether to check if an entity can change dimensions when using an End Gateway. + +Note that setting this to `true` means vehicles (like boats or horses) and their passengers will not be able to use the End Gateway. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `false` | `false` | `false` | + +| **Target Value** | | +| ------------------ | ------- | +| _Optimization_ | - | +| _Vanilla Behavior_ | `false` | + +#### `keep-mooshroom-rotation-after-shearing` + +Whether to keep the rotation of Mooshrooms after they are sheared (fixing part of [MC-88967](https://bugs.mojang.com/browse/MC-88967)). + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `true` | `false` | `false` | + +| **Target Value** | | +| ------------------ | ------- | +| _Optimization_ | - | +| _Vanilla Behavior_ | `false` | + +#### `mc-...` + +Whether to fix various Minecraft bugs/inconsistencies. + +| | | | **Default Value** | | +| ----------------------------------------------------- | --------------------- | ------- | ----------------- | --------- | +| **Property** | **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| [mc-31819](https://bugs.mojang.com/browse/MC-31819) | `true` | `true` | `false` | `false` | +| [mc-110386](https://bugs.mojang.com/browse/MC-110386) | `true` | `true` | `false` | `false` | +| [mc-121706](https://bugs.mojang.com/browse/MC-121706) | `true` | `false` | `false` | `false` | +| [mc-238526](https://bugs.mojang.com/browse/MC-238526) | - | `false` | `false` | `false` | + +## `technical` + +#### `load-portal-destination-chunk-before-entity-teleport` + +Whether to fully load the chunk before teleporting an entity to ensure the entire server waits for the chunk to load. + +| | **Default Value** | | | +| --------------------- | ----------------- | ------- | --------- | +| **Recommended Value** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `false` | `false` | `false` | + +| **Target Value** | | +| ------------------ | ------- | +| _Optimization_ | `false` | +| _Vanilla Behavior_ | `false` | diff --git a/docs/pages/en/reference/config/index.md b/docs/pages/en/reference/config/index.md new file mode 100644 index 0000000..2aa29d7 --- /dev/null +++ b/docs/pages/en/reference/config/index.md @@ -0,0 +1,25 @@ +# Configuration + +- **Gale Global Configuration** + + *** + + [Click here to read](gale-global.md) + +- **Gale Default World Configuration** + + *** + + [Click here to read](gale-world.md) + +- **Leaf Global Configuration** + + *** + + [Click here to read](leaf-global.md) + +- **Other Configurations** + + *** + + [Click here to read](misc-config.md) diff --git a/docs/pages/en/reference/config/leaf-global.md b/docs/pages/en/reference/config/leaf-global.md new file mode 100644 index 0000000..dd8de4d --- /dev/null +++ b/docs/pages/en/reference/config/leaf-global.md @@ -0,0 +1,16 @@ +# Leaf Global Configuration + +:::info Information +The following YAML configuration showcases the structure and default values of the Leaf global configuration (config/leaf-global.yml). + +This configuration file is based on the latest Leaf 1.21.1 branch. + +Click the arrow button next to the configuration items to display their descriptions. +::: + + + + diff --git a/docs/pages/en/reference/config/misc-config.md b/docs/pages/en/reference/config/misc-config.md new file mode 100644 index 0000000..038fb38 --- /dev/null +++ b/docs/pages/en/reference/config/misc-config.md @@ -0,0 +1,53 @@ +# Other Configurations + +## Paper Default World Configuration + +```yaml title="paper-world-defaults.yml" +entities: + spawning: + spawning-throttle: + failed-attempts-threshold: disabled + throttled-ticks-per-spawn: + ambient: -1 + axolotls: -1 + creature: -1 + monster: -1 + underground_water_creature: -1 + water_ambient: -1 + water_creature: -1 +``` + +## Purpur Configuration + +```yaml title="purpur.yml" +settings: + messages: + afk-broadcast-away: %s is now AFK + afk-broadcast-back: %s is no longer AFK + afk-title-away: AFK:You are now AFK...:10:70:20 + afk-broadcast-use-display-name: false + afk-tab-list-prefix: "[AFK] " + afk-tab-list-suffix: "" + afk-command-cooldown: 0 + afk-command-cooldown-msg: You need to wait %time%s to use /afk. +``` + +## Moving Pufferfish and Purpur Configuration Items + +### Pufferfish + +| | Before | After | +| --- | ------ | ----- | +| | | | +| | | | +| | | | +| | | | + +### Purpur + +| | Before | After | +| --- | ------ | ----- | +| | | | +| | | | +| | | | +| | | | diff --git a/docs/pages/en/reference/faq.md b/docs/pages/en/reference/faq.md new file mode 100644 index 0000000..e494ad4 --- /dev/null +++ b/docs/pages/en/reference/faq.md @@ -0,0 +1,39 @@ +# Frequently Asked Questions + +### ❓ · How much performance improvement does Leaf offer compared to `""`? + +Currently, we cannot provide specific performance comparisons, but please stay tuned for our upcoming website where we will provide detailed performance testing metrics! + +### ❓ · Is Leaf compatible with Bukkit/Spigot/Paper plugins? + +Yes, Leaf's plugin compatibility is identical to that of Paper. If a plugin is not functioning properly, you can replace Leaf with Purpur and test again. If the issue persists, please report it on [Leaf's GitHub](https://github.com/Winds-Studio/Leaf/issues). + +### ❓ · Does Leaf include `purpur.yml`? + +Yes, Leaf includes all Purpur patches, but some Purpur configuration items have been moved to the Gale and Leaf configurations. + +### ❓ · How often does Leaf update upstream? + +Typically, updates occur every 1 to 3 weeks, depending on the significance of the upstream updates. + +### ❓ · How can I optimize my server? + +You can refer to [YouHaveTrouble's optimization guide](https://github.com/YouHaveTrouble/minecraft-optimization) or check out the [Dumb WIKI Optimization Guide](https://nitwikit.yizhan.wiki/Java/optimize) created by the community for Chinese users. + +### ❓ · Are there any known compatibility issues with Leaf? + +- [RealisticVillagers](https://www.spigotmc.org/resources/realisticvillagers.105055) (incompatible with Leaf versions below 1.21.1). +- If your server has the [Citizens](https://www.spigotmc.org/resources/citizens.13811) plugin and asynchronous entity tracking is enabled, please enable the [compatibility mode for asynchronous entity tracking (`compat-mode`)](./config/leaf-global.md) or disable asynchronous entity tracking! +- Encountering an incompatible plugin? [Please report it here](https://github.com/Winds-Studio/Leaf/issues)! + +### ❓ · What is the difference between Mojmap and Reobf? Which one should I use? + +They are based on different mapping methods. Mojmap uses Mojang's mapping files, while Reobf uses Spigot's mapping files. It is recommended to use Mojmap. + +### ❓ · How can I support this project? + +Anyone can sponsor Dreeam through [Afdian](https://afdian.com/a/Dreeam) (supports Alipay / WeChat Pay). + +!!! note "Tip" + + Do you want to add more content to this *Frequently Asked Questions* section? [Click here to provide feedback](../index.md#-contact)! \ No newline at end of file diff --git a/docs/pages/en/reference/index.md b/docs/pages/en/reference/index.md new file mode 100644 index 0000000..32da294 --- /dev/null +++ b/docs/pages/en/reference/index.md @@ -0,0 +1,19 @@ +# References + +- **Frequently Asked Questions** + + *** + + [Click here to read](faq.md) + +- **Leaf System Properties** + + *** + + [Click here to read](system-properties.md) + +- **Configuration** + + *** + + [Click here to read](./config) \ No newline at end of file diff --git a/docs/pages/en/reference/system-properties.md b/docs/pages/en/reference/system-properties.md new file mode 100644 index 0000000..5911ab8 --- /dev/null +++ b/docs/pages/en/reference/system-properties.md @@ -0,0 +1,39 @@ +# Leaf System Properties + +### -DLeaf.library-download-repo + +- **Default Value:** Not set + + The default Maven Central Repository can be slow to download from in some regions. + + Use this JVM parameter to set a specific mirror repository for SpigotLibraryLoader or PaperLibraryLoader. + + For example, you can set Alibaba Cloud as the mirror repository with the following parameter: + + ``` + -DLeaf.library-download-repo=https://maven.aliyun.com/repository/public + ``` + +### -DLeaf.nearestEntitySensorBucketCount + +- **Default Value:** 10 + + This specifies how many buckets to use for sorting when the number of entities reaches the threshold for [Bucket Sort](https://oi-wiki.org/basic/bucket-sort). + + It is recommended to set this value to the square root of the number of entities. + +### -DLeaf.nearestEntitySensorBucketSortThresholdRatio + +- **Default Value:** 2.0 + + This value controls the ratio for the bucket sort threshold. `(Threshold = Number of Buckets * Ratio)` + +### -DLeaf.enableFMA + +- **Default Value:** false + + This parameter determines whether to use [Fused Multiply-Add (FMA)](https://baike.baidu.com/item/%E4%B9%98%E7%A7%AF%E7%B4%AF%E5%8A%A0%E8%BF%90%E7%AE%97) to accelerate certain mathematical calculations. + + FMA requires CPU support for the FMA instruction set; otherwise, it may lead to a decrease in performance. + + You can use tools like [CPU-Z](https://www.cpuid.com/softwares/cpu-z.html) to check if your machine supports the FMA instruction set. diff --git a/docs/pages/en/todo.md b/docs/pages/en/todo.md new file mode 100644 index 0000000..e5eb7ea --- /dev/null +++ b/docs/pages/en/todo.md @@ -0,0 +1,8 @@ +# TODO List + +> This is a list of things that need to be done. If you want to contribute, please check this list first. + +## Dreeam + +- [ ] Dev section +- [ ] Add Contribution.md / contribution writing standard (some raw concepts, like leave one empty line for every docs file?) diff --git a/docs/pages/en/useful-sites.md b/docs/pages/en/useful-sites.md new file mode 100644 index 0000000..5c7089e --- /dev/null +++ b/docs/pages/en/useful-sites.md @@ -0,0 +1,9 @@ +# Useful Websites + +Here is a series of websites. It's better and recommended to read them with Leaf docs, to get more useful, deeper information about Minecraft server maintaining. + +## List of websites + +- [Paper Docs](https://docs.papermc.io/paper) +- [Purpur Docs](https://purpurmc.org/docs/purpur/) +- [NitWikit](https://nitwikit.yizhan.wiki/) (Chinese) diff --git a/docs/pages/zh/about.md b/docs/pages/zh/about.md new file mode 100644 index 0000000..f9ec578 --- /dev/null +++ b/docs/pages/zh/about.md @@ -0,0 +1,14 @@ +# 欢迎阅读 Leaf 文档 + +Leaf 是一个 Paper 分支,专注于寻找性能优化,Vanilla, 稳定之间的平衡,为大型网络,密集和高承载量场景设计。 + +在本文档中,包括了 Leaf 配置,Leaf 相关开发等一系列有用的教程。 + +## 📫 联系方式 + +- Discord: [`https://discord.com/invite/gfgAwdSEuM`](https://discord.com/invite/gfgAwdSEuM) +- 社区 QQ 群: `619278377` + +::: warning +此 Docs 站仍在建设中!更多信息请加入 Leaf 社区群 619278377 +::: diff --git a/docs/pages/zh/dev/api.md b/docs/pages/zh/dev/api.md new file mode 100644 index 0000000..b98b132 --- /dev/null +++ b/docs/pages/zh/dev/api.md @@ -0,0 +1,37 @@ +# 🧪 API + +## Maven + +```xml + + leafmc + https://maven.nostal.ink/repository/maven-snapshots/ + +``` + +```xml + + cn.dreeam.leaf + leaf-api + 1.21.1-R0.1-SNAPSHOT + provided + +``` + +## Gradle + +```kotlin +repositories { + maven { + url = uri("https://maven.nostal.ink/repository/maven-snapshots/") + } +} + +dependencies { + compileOnly("cn.dreeam.leaf:leaf-api:1.21.1-R0.1-SNAPSHOT") +} + +java { + toolchain.languageVersion.set(JavaLanguageVersion.of(21)) +} +``` diff --git a/docs/pages/zh/dev/build.md b/docs/pages/zh/dev/build.md new file mode 100644 index 0000000..11102e0 --- /dev/null +++ b/docs/pages/zh/dev/build.md @@ -0,0 +1,7 @@ +# 构建 + +构建用于分发的 Paperclip JAR: + +```bash +./gradlew applyPatches && ./gradlew createMojmapPaperclipJar +``` diff --git a/docs/pages/zh/dev/contributing.md b/docs/pages/zh/dev/contributing.md new file mode 100644 index 0000000..802e224 --- /dev/null +++ b/docs/pages/zh/dev/contributing.md @@ -0,0 +1,7 @@ +# 给 Leaf 贡献代码 + +Leaf 很高兴你愿意为我们的项目做出贡献。我们对提交的 PR 通常非常宽容,但仍有一些指南可以帮助你快速上手对核心代码的修改并顺利通过 PR 审查流程。 + +对于 1.21.4 及更高版本,请参阅 Paper 的 [CONTRIBUTING.md](https://github.com/PaperMC/Paper/blob/main/CONTRIBUTING.md). + +对于 1.21.4 以下的版本,请参阅 Paper-archive 的 [CONTRIBUTING.md](https://github.com/PaperMC/Paper-archive/blob/ver/1.21.1/CONTRIBUTING.md). diff --git a/docs/pages/zh/dev/index.md b/docs/pages/zh/dev/index.md new file mode 100644 index 0000000..5eb62f1 --- /dev/null +++ b/docs/pages/zh/dev/index.md @@ -0,0 +1,5 @@ +# Leaf 开发指南 + +欢迎来到 Leaf 开发指南! + +在本章节,你可以了解如何构建 Leaf, 创建基于 Leaf API 的插件,甚至学习如何给 Leaf 贡献代码! diff --git a/docs/pages/zh/how-to/setup-sentry.md b/docs/pages/zh/how-to/setup-sentry.md new file mode 100644 index 0000000..d592e33 --- /dev/null +++ b/docs/pages/zh/how-to/setup-sentry.md @@ -0,0 +1,3 @@ +# 配置 Sentry + +> 施工中 🚧 diff --git a/docs/pages/zh/index.md b/docs/pages/zh/index.md new file mode 100644 index 0000000..e4ba380 --- /dev/null +++ b/docs/pages/zh/index.md @@ -0,0 +1,32 @@ +--- +layout: home +gitChangelog: false +hero: + name: "Leaf" + text: 优化与灵活 + image: + src: /logo.svg + width: 200px + height: 200px + tagline: 一个注重性能、稳定性和原版体验的 Paper 分支 + actions: + - theme: brand + text: 查看更多 + link: ./about + - theme: alt + text: 版本发布 + link: https://github.com/Winds-Studio/Leaf/releases + - theme: alt + text: 构建历史 + link: /builds +features: + - title: 强大且优化 + icon: ⚡ + details: 稳定、高性能,并为大量玩家设计 + - title: 实用且可定制 + icon: 🧬 + details: 包含许多实用功能和修复,可在配置中调整 + - title: 最新依赖 + icon: 📦 + details: 现代化,因为依赖始终保持最新 +--- diff --git a/docs/pages/zh/reference/config/gale-global.md b/docs/pages/zh/reference/config/gale-global.md new file mode 100644 index 0000000..daf698e --- /dev/null +++ b/docs/pages/zh/reference/config/gale-global.md @@ -0,0 +1,305 @@ +# Gale 全局配置 + +::: info 信息 +以下 YAML 配置展示了 Gale 全局配置 (config/gale-global.yml) 的结构及其默认值。 + +此配置文件基于最新的 Leaf 1.21.1 分支。 + +点击配置项后面的箭头按钮以显示其描述。 +::: + +[[toc]] + +## `small-optimizations` + +### `reduced-intervals` + +#### `increase-time-statistics` + +时间相关统计数据(如总游戏时间、上次死亡以来的时间等)增加的间隔,以刻(ticks)为单位。更改此值不会改变统计数据从原版游戏中增加的速度。 + +- 示例: + - 设置为 `20` 时,总游戏时间每秒增加 20 个刻。 + - 设置为 `100` 时,总游戏时间每 5 秒增加 100 个刻。 + +如果给定的值小于或等于 0,则默认为与 Paper 相同。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `100` | `20` | `1` | `1` | + +| **目标值** | | +| ---------- | ---------------------------------------------------- | +| _优化_ | `100` | +| _原版行为_ | 较低更接近原版(`20` 还不错,但 `1` 通常是不必要的) | + +#### `update-entity-line-of-sight` + +更新一个实体是否在另一个实体视线内的间隔,以刻(ticks)为单位。如果给定的值小于或等于 0,则默认为与 Paper 相同。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `4` | `4` | `1` | `1` | + +| **目标值** | | +| ---------- | ---- | +| _优化_ | `10` | +| _原版行为_ | `1` | + +## `use-xor-shift-random` + +是否使用 [xor-shift 随机数生成器](http://www.codeproject.com/Articles/9187/A-fast-equivalent-for-System-Random) 代替 Java 默认值。 + +### `auto-replenish-lootable-refill` + +是否为 Paper 的 `auto-replenish` 功能使用 xor-shift 随机生成器来补充可拾取物品。这不会影响普通 Minecraft 的可拾取箱子。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `true` | `true` | `false` | - | + +| **目标值** | | +| ------------ | ---------------------------------- | +| _优化_ | `true` | +| _Paper 行为_ | - (玩家无论如何都无法注意到差异) | + +### `elytra-firework-speed` + +是否使用 xor-shift 随机生成器来增加滑翔时使用火箭的速度。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `true` | `true` | `false` | `false` | + +| **目标值** | | +| ---------- | ------- | +| _优化_ | `true` | +| _原版行为_ | `false` | + +### `entity-wake-up-duration` + +是否使用 xor-shift 随机生成器来变更实体激活持续时间的变化。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `true` | `true` | - | - | + +| **目标值** | | +| ---------- | ------ | +| _优化_ | `true` | + +### `generate-tree-with-bukkit-api` + +是否使用 xor-shift 随机生成器通过 Bukkit API (`World#generateTree`) 生成树。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `true` | `true` | `false` | - | + +| **目标值** | | +| ------------ | ------- | +| _优化_ | `true` | +| _Paper 行为_ | `false` | + +## `gameplay-mechanics` + +### `enable-book-writing` + +是否允许书籍可写。如果设置为 false,拥有权限 `gale.writebooks`(默认:`op`)的玩家仍然可以使用书籍。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `true` | `true` | `true` | + +| **目标值** | | +| ---------- | ------ | +| _优化_ | - | +| _原版行为_ | `true` | + +## `log-to-console` + +是否将特定文本和事件记录到控制台和日志文件。 + +| **设置** | **描述** | **推荐值** | **默认值** | **Paper** | +| -------------------------------- | ---------------------------------------------------------------------- | ---------- | ---------- | --------- | +| `ignored-advancements` | 当玩家的数据被加载且他们拥有不再存在的成就时 | `false` | `true` | `true` | +| `invalid-statistics` | 当玩家的数据被加载且他们拥有不再存在的统计数据时 | `false` | `true` | `true` | +| `legacy-material-initialization` | 当加载非常旧的 Bukkit 插件时 | `false` | `false` | `true` | +| `null-id-disconnections` | 当玩家在登录时未发送有效的配置文件时(通常表示黑客试图淹没您的服务器) | - | `true` | `true` | +| `player-login-locations` | 是否在记录到控制台的加入消息中包含玩家的坐标 | - | `true` | `true` | +| `set-block-in-far-chunk` | 当玩家尝试设置非常远的方块时(通常表示黑客试图获取其他玩家的位置) | `false` | `true` | `true` | +| `unrecognized-recipes` | 当玩家的数据被加载且他们拥有不再存在的配方书配方时 | `false` | `false` | `true` | + +### `chat` + +| **设置** | **描述** | **推荐值** | **默认值** | **Paper** | +| ------------------------------ | -------------------------------------------------------------------------- | ---------- | ---------- | --------- | +| `empty-message-warning` | 当玩家发送的消息包为空时(这无害,通常发生在玩家的客户端过时) | `false` | `false` | `true` | +| `expired-message-warning` | 当玩家的消息包已过期时(这无害,通常发生在玩家的客户端聊天稍微不同步时) | `false` | `false` | `true` | +| `out-of-order-message-warning` | 当玩家的消息包顺序错误时(这无害,通常发生在玩家的客户端聊天稍微不同步时) | `false` | `false` | `true` | +| `not-secure-marker` | 是否在未签名的聊天包前添加 [NOT SECURE] 标记 | - | `true` | `true` | + +### `plugin-library-loader` + +| **设置** | **描述** | **推荐值** | **默认值** | **Paper** | +| --------------------------------- | -------------------------------- | ---------- | ---------- | --------- | +| `downloads` | 当插件库加载器开始下载库时 | `true` | `true` | `true` | +| `start-load-libraries-for-plugin` | 当插件库加载器开始为插件加载库时 | `true` | `true` | `true` | +| `library-loaded` | 当插件库加载器完成加载库时 | `true` | `true` | `true` | + +### `invalid-pool-element-error-log-level` + +服务器在世界数据中遇到无效池元素时的错误日志级别。无效池元素是生成结构的一部分(如矿井)损坏或未从旧版本正确更新。这些错误日志通常是无意义的,且在跨多个 Minecraft 版本更新的旧服务器上经常发生。 + +有效值为 `"none"`、`"info"`、`"warn"` 和 `"error"`。 + +| | **默认值** | | | +| ---------- | ---------- | --------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `"none"` 🛈 | `"info"` | `"error"` | `"error"` | + +> 🛈 = 默认值为 `"info"`,以防止任何错误默默无闻,但推荐值为 `"none"`,因为这些错误通常是无意义和无法解决的。 + +## `misc` + +### `ignore-null-legacy-structure-data` + +是否忽略任何遗留结构数据,NBT 标签解析器由于某种原因返回 null。 + +- 如果为 true,当发生这种情况时不会给出警告。 +- 如果为 false,当发生这种情况时将在控制台中抛出异常。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `true` 🛈 | `false` | `false` | `false` | + +| **目标值** | | +| ---------- | ------- | +| _优化_ | - | +| _原版行为_ | `false` | + +> 🛈 = 默认值为 `false`,以防止任何错误默默无闻,但推荐值为 `true`,因为这些错误通常是无意义和无法解决的。 + +### `keepalive` + +#### `send-multiple` + +是否发送比原版更频繁的保持连接包。 + +- 如果为 true,每秒向每个客户端发送一个保持连接包,如果他们在 30 秒内响应至少一个包,则不会被踢出。 +- 如果为 false,每 15 秒向每个客户端发送一个保持连接包,如果他们在 30 秒内未响应,则会被踢出。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `true` | `true` | `false` | `false` | + +| **目标值** | | +| ---------- | ---------------------- | +| _优化_ | - | +| _原版行为_ | - (这不影响游戏玩法) | + +#### `last-tick-time-in-tps-command` + +##### `enabled` + +是否在 `/tps` 命令中包含最后一次滴答所花费的时间。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `false` | `false` | `false` | `false` | + +| **目标值** | | +| ------------ | ------- | +| _优化_ | - | +| _Paper 行为_ | `false` | + +##### `add-oversleep` + +是否将最后一次滴答时间的过度睡眠部分添加到 `/tps` 命令中。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `false` | `false` | `false` | + +| **目标值** | | +| ------------ | --- | +| _优化_ | - | +| _Paper 行为_ | - | + +#### `premium-account-slow-login-timeout` + +高级账户登录所需的最大时间,以刻(ticks)为单位。如果超过此时间,连接将关闭。如果给定的值小于或等于 0,则默认为与原版相同,当前为 `600` 刻(30 秒)。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `-1` | `-1` | `-1` | + +| **目标值** | | +| ---------- | ---- | +| _优化_ | - | +| _原版行为_ | `-1` | + +#### `verify-chat-order` + +是否验证聊天消息的顺序。 + +- 如果此选项设置为 `true`,并且玩家发送了顺序错误的聊天包,他们将被踢出。 +- 如果此选项设置为 `false`,则不会进行验证,玩家不会被踢出。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `true` | `true` | `true` | + +| **目标值** | | +| ---------- | ------ | +| _优化_ | - | +| _原版行为_ | `true` | + +#### `include-in-timings-report` + +是否在时间报告(`/timings`)中包含某些信息。 + +##### `hardware-specs` + +是否包含硬件规格。 + +| | | | **默认值** | | +| -------- | -------- | ---------- | ---------- | ------- | +| **属性** | **描述** | **推荐值** | _Gale_ | _Paper_ | +| `cpu` | CPU | `true` | `true` | `false` | +| `disks` | 存储 | `true` | `true` | `false` | +| `gpus` | 显卡 | `true` | `true` | `false` | +| `memory` | RAM | `true` | `true` | `false` | + +##### `server-properties` + +是否包含来自原版 `server.properties` 配置文件的某些设置。 + +| | | **默认值** | | +| -------------------------------------- | ---------- | ---------- | ------- | +| **属性** | **推荐值** | _Gale_ | _Paper_ | +| `data-packs` | `true` | `true` | `false` | +| `enable-rcon` | `false` | `false` | `false` | +| `generator-settings` | `true` | `true` | `false` | +| `level-name` | - | `false` | `false` | +| `motd` | - | `false` | `false` | +| `query-port` | `false` | `false` | `false` | +| `rcon-port` | `false` | `false` | `false` | +| `resource-pack-and-resource-pack-sha1` | - | `false` | `false` | +| `resource-pack-prompt` | - | `false` | `false` | +| `server-ip` | - | `false` | `false` | +| `server-port` | - | `false` | `false` | +| `text-filtering-config` | - | `false` | `false` | diff --git a/docs/pages/zh/reference/config/gale-world.md b/docs/pages/zh/reference/config/gale-world.md new file mode 100644 index 0000000..d6b0e8b --- /dev/null +++ b/docs/pages/zh/reference/config/gale-world.md @@ -0,0 +1,540 @@ +# 世界设置 + +每个世界的默认设置可以在 `config/gale-world-defaults.yml` 中进行配置,特定世界的覆盖设置则在 `/gale-world.yml` 中设置。 + +[[toc]] + +## `small-optimizations` + +### `save-fireworks` + +控制在保存区块时是否保存烟花。 + +烟花可能会出现故障,导致无法引爆,而使用发射器可能会填满一个区块。如果设置为 `true`,则在区块卸载时会移除任何烟花,以防止此类情况。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `true` | `true` | `true` | + +| **目标值** | | +| ---------- | -------------------------------------------------------------- | +| _优化_ | 通常:- (不太重要)如果预计玩家会尝试破坏服务器: `false` | +| _原版行为_ | `true` | + +### `use-optimized-sheep-offspring-color` + +控制是否使用更快的方法选择新出生小羊的颜色。 + +所选择的颜色与原版完全相同。若设置为 `true`,则会忽略任何通过数据包更改的合成配方。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `true` | `true` | `false` | `false` | + +| **目标值** | | +| ---------- | ------- | +| _优化_ | `true` | +| _原版行为_ | `false` | + +### `load-chunks` + +控制是否在特定情况下加载区块。 + +#### `to-spawn-phantoms` + +是否加载区块以生成幻影。 + +若设置为 `false`,当服务器尝试在未加载的区块中生成幻影时,将不会发生任何事情。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `false` | `false` | `true` | `true` | + +| **目标值** | | +| ---------- | ------- | +| _优化_ | `false` | +| _原版行为_ | `true` | + +#### `to-activate-climbing-entities` + +是否加载区块以激活攀爬实体。 + +在 Paper 中,像僵尸这样的实体在“攀爬”时优先激活。若设置为 `false`,则服务器将不会检查未加载区块中的实体的“攀爬”优先级,从而避免不必要的服务器挂起。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `false` | `false` | `true` | - | + +| **目标值** | | +| ------------ | ------- | +| _优化_ | `false` | +| _Paper 行为_ | `true` | + +## `max-projectile-chunk-loads` + +控制投射物(如箭、三叉戟或末影珍珠)加载区块的设置。 + +#### `per-tick` + +每个世界中,所有投射物在一个刻中可以同步加载的最大区块数量。 + +若给定值小于 `0`,则此设置被禁用,投射物加载的区块数量将不受限制。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `10` | `10` | `-1` | `-1` | + +| **目标值** | | +| ---------- | ---- | +| _优化_ | `2` | +| _原版行为_ | `-1` | + +#### `per-projectile` + +##### `max` + +投射物在其生命周期中可以同步加载的最大区块数量。 + +若给定值小于 `0`,则此设置被禁用,投射物加载的区块数量将不受限制。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `10` | `10` | `-1` | `-1` | + +| **目标值** | | +| ---------- | ---- | +| _优化_ | `10` | +| _原版行为_ | `-1` | + +##### `reset-movement-after-reach-limit` + +是否在投射物越过 `max` 阈值时将其平面速度设置为零,以停止其尝试越过区块边界。 + +若 `remove-from-world-after-reach-limit` 为 `true`,则此设置无效。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `false` | `false` | `false` | + +| **目标值** | | +| ---------- | -------------------------------------- | +| _优化_ | `true`(极端情况下,但有风险,见上文) | +| _原版行为_ | `false` | + +##### `remove-from-world-after-reach-limit` + +是否在投射物越过 `max` 阈值时将其从世界中完全移除。 + +从世界中移除投射物有风险,因为这可能影响对玩家有价值的投射物(如三叉戟),因此不建议将此值设置为 `true`,除非您接受此风险。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `false` | `false` | `false` | `false` | + +| **目标值** | | +| ---------- | --------------------------------------- | +| _优化_ | `true` 在极端情况下,但有风险(见上文) | +| _原版行为_ | `false` | + +## `reduced-intervals` + +### `acquire-poi-for-stuck-entity` + +被卡住的实体(如车辆)尝试获取 POI(如村民工作块)的额外间隔,单位为刻(ticks)。 + +若在此期间它们不再卡住,将立即能够再次获取 POI。 + +例如,若此值设置为 `100`,则卡住的实体将每 5 秒尝试找到一个 POI。 + +若给定值小于 `0`,则默认为与 Paper 相同。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `60` | `60` | `200` | `0` | + +| **目标值** | | +| ---------- | ----- | +| _优化_ | `200` | +| _原版行为_ | `0` | + +### `check-stuck-in-wall` + +检查实体是否卡在墙里的间隔,单位为刻(ticks),以处理窒息伤害。 + +由于在造成伤害后会有一个间隔(约为 1 秒),在此期间实体不能受到重复伤害,因此将窒息检查延迟不到 1 秒几乎是不可察觉的。 + +例如,若此值设置为 `10`,则实体将每 ½ 秒检查是否被窒息。 + +若给定值小于或等于 `0`,则默认为与 Paper 相同。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `10` | `10` | `1` | `1` | + +| **目标值** | | +| ---------- | ---- | +| _优化_ | `10` | +| _原版行为_ | `1` | + +### `villager-item-repickup` + +村民掉落的物品被(其他)实体拾取的最小延迟,单位为刻(ticks)。 + +- 防止村民在某些农场设计中在漏斗之前拾取种植的物品。 +- 减少村民在其库存已满时不断相互抛掷大量物品的延迟。 + +例如,若此值设置为 `100`,则村民掉落的物品可以在 5 秒后被实体拾取。 + +若给定值小于 `0`,则默认为与原版相同,当前为 `10` 刻(½ 秒)。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `100` | `100` | `-1` | `-1` | + +| **目标值** | | +| ---------- | ----- | +| _优化_ | `100` | +| _原版行为_ | `-1` | + +### `check-nearby-item.hopper` + +漏斗检查拾取物品的频率。 + +此设置仅影响在世界中的拾取(例如,掉落的)物品,而不影响从箱子或其他存储方块中拉取物品。 + +- `interval` + 漏斗方块检查拾取物品的频率,单位为刻(ticks)。 + +例如,若此值设置为 `20`,则漏斗将每秒检查一次其上方的物品。 + +若给定值小于或等于 `0`,则默认为与 Paper 相同。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `20` | `20` | `1` | `1` | + +| **目标值** | | +| ---------- | ---- | +| _优化_ | `50` | +| _原版行为_ | `1` | + +- `minecart` + +- `interval` + 与上面的 `interval` 设置相同,但适用于漏斗矿车。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `20` | `20` | `1` | `1` | + +| **目标值** | | +| ---------- | ---- | +| _优化_ | `20` | +| _原版行为_ | `1` | + +- `temporary-immunity` + + 漏斗矿车可以暂时免受上述 `interval` 设置的影响。当矿车处于免疫状态时,可以每刻检查一次物品。 + + `duration` + 漏斗矿车在暂时免受 `interval` 设置影响的持续时间,单位为刻(ticks)。 + + 若给定值小于或等于 `0`,则漏斗矿车将永远不会暂时免受 `interval` 设置的影响。 + + | | **默认值** | | | + | ---------- | ---------- | ------- | --------- | + | **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | + | `100` | `100` | - | - | + + | **目标值** | | + | ---------- | ------------------------------------------- | + | _优化_ | `75` | + | _原版行为_ | - (对于原版行为,`interval` 必须设置为 1) | + + `nearby-item-max-age` + 物品的年龄(以刻为单位)高于此值的物品将不会导致附近的漏斗矿车免受 `interval` 设置的影响。 + +若给定值小于或等于 `0`,则表示没有最小年龄,即所有物品均可使附近的漏斗矿车暂时免受 `interval` 设置的影响。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `1200` | `1200` | - | - | + +| **目标值** | | +| ---------- | ------------------------------------------- | +| _优化_ | `600` | +| _原版行为_ | - (对于原版行为,`interval` 必须设置为 1) | + +`check-for-item-near-minecart-interval` + +检查附近的物品的频率,以使漏斗矿车暂时免受 `interval` 设置影响,单位为刻(ticks)。 + +若给定值小于或等于 `0`,则行为如同 `1`。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `20` | `20` | - | - | + +| **目标值** | | +| ---------- | ------------------------------------------- | +| _优化_ | `20` | +| _原版行为_ | - (对于原版行为,`interval` 必须设置为 1) | + +`check-for-minecart-near-item-while-inactive` + +是否检查附近的物品,以使处于非活动状态的漏斗矿车暂时免受 `interval` 设置影响。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `true` | `true` | - | - | + +| **目标值** | | +| ---------- | ------------------------------------------- | +| _优化_ | `true` | +| _原版行为_ | - (对于原版行为,`interval` 必须设置为 1) | + +`max-item-horizontal-distance` + +掉落物品距离漏斗矿车的最大水平距离,以便给它暂时免受 `interval` 设置的影响。 + +若给定值小于 `0`,则漏斗矿车将永远不会暂时免受 `interval` 设置的影响。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `24.0` | `24.0` | - | - | + +| **目标值** | | +| ---------- | ------------------------------------------- | +| _优化_ | `24.0` | +| _原版行为_ | - (对于原版行为,`interval` 必须设置为 1) | + +`max-item-vertical-distance` + +与 `max-item-horizontal-distance` 相同,但这是最大垂直距离。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `4.0` | `4.0` | - | - | + +| **目标值** | | +| ---------- | ------------------------------------------- | +| _优化_ | `4.0` | +| _原版行为_ | - (对于原版行为,`interval` 必须设置为 1) | + +## `gameplay-mechanics` + +### `arrow-movement-resets-despawn-counter` + +当箭开始下落(例如,当它卡在的方块被破坏时)是否重启箭的消失计数器。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `true` | `true` | `true` | + +| **目标值** | | +| ---------- | ------- | +| _优化_ | `false` | +| _原版行为_ | `true` | + +### `entities-can-random-stroll-into-non-ticking-chunks` + +是否允许随机游荡的实体路径查找进入非滴答区块。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `true` | `true` | `true` | + +| **目标值** | | +| ---------- | ------ | +| _优化_ | - | +| _原版行为_ | `true` | + +### `entity-wake-up-duration-ratio-standard-deviation` + +若此值设置为大于 `0`,唤醒非活动实体的过程将分散在时间上,而不是一次性唤醒多个实体,使实体的行为更自然。 + +此设置为[变异系数](https://en.wikipedia.org/wiki/Coefficient_of_variation),或 `σ / μ`(标准差与均值的比率)非活动持续时间。 + +换句话说,此设置为值 `σ`,因此常规非活动持续时间将乘以因子 `normal_distribution(μ = 1, σ)`。 + +若给定值小于或等于 `0`,则禁用可变实体唤醒。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| `0.2` | `0.2` | `0.0` | - | + +| **目标值** | | +| ------------ | ----- | +| _优化_ | - | +| _Paper 行为_ | `0.0` | + +### `hide-flames-on-entities-with-fire-resistance` + +是否隐藏处于火焰状态的实体的可视火焰,同时具有火焰抗性药水效果。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `false` | `false` | `false` | + +| **目标值** | | +| ---------- | ------- | +| _优化_ | - | +| _原版行为_ | `false` | + +### `player-max-interaction-distance` + +玩家可以与之交互的方块的最大距离(通过左键或右键点击)。 + +增加此值使得对连接不良的玩家更具可玩性,但也可能使使用黑客客户端的玩家能够比正常情况更远地进行交互。 + +若给定值小于或等于 `0`,则默认为与原版相同,当前为 `6.0`。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `-1.0` | `-1.0` | `-1.0` | + +| **目标值** | | +| ---------- | ------ | +| _优化_ | - | +| _原版行为_ | `-1.0` | + +### `try-respawn-ender-dragon-after-end-crystal-place` + +在正确的位置上放置末影水晶后,是否尝试重新生成末影龙。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `true` | `true` | `true` | + +| **目标值** | | +| ---------- | ------ | +| _优化_ | - | +| _原版行为_ | `true` | + +### `fixes` + +#### `sand-duping` + +是否修复沙子复制。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `true` | `true` | `false` | + +| **目标值** | | +| ---------- | ------- | +| _优化_ | - | +| _原版行为_ | `false` | + +#### `tripwire-duping` + +是否修复三丝复制。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `true` | `true` | `false` | + +| **目标值** | | +| ---------- | ------- | +| _优化_ | - | +| _原版行为_ | `false` | + +#### `broadcast-crit-animations-as-the-entity-being-critted` + +是否将暴击动画广播为被暴击的实体。 + +此设置不影响动画显示的位置:它始终显示在被暴击的实体上。若设置为 `false`,则暴击动画被广播为进行暴击的玩家。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `false` | `false` | `false` | + +| **目标值** | | +| ---------- | ------- | +| _优化_ | - | +| _原版行为_ | `false` | + +#### `check-can-change-dimensions-before-use-end-gateway` + +是否检查实体在使用末影传送门时是否可以改变维度。 + +请注意,将此设置为 `true` 意味着车辆(如船或马)和车辆的乘客将无法使用末影传送门。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `false` | `false` | `false` | + +| **目标值** | | +| ---------- | ------- | +| _优化_ | - | +| _原版行为_ | `false` | + +#### `keep-mooshroom-rotation-after-shearing` + +是否使牛头人(mooshroom)在被剪毛后保持其旋转(修复部分 [MC-88967](https://bugs.mojang.com/browse/MC-88967))。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `true` | `false` | `false` | + +| **目标值** | | +| ---------- | ------- | +| _优化_ | - | +| _原版行为_ | `false` | + +#### `mc-...` + +是否修复一些 Minecraft 错误/不一致。 + +| | | | **默认值** | | +| ----------------------------------------------------- | ---------- | ------- | ---------- | --------- | +| **属性** | **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| [mc-31819](https://bugs.mojang.com/browse/MC-31819) | `true` | `true` | `false` | `false` | +| [mc-110386](https://bugs.mojang.com/browse/MC-110386) | `true` | `true` | `false` | `false` | +| [mc-121706](https://bugs.mojang.com/browse/MC-121706) | `true` | `false` | `false` | `false` | +| [mc-238526](https://bugs.mojang.com/browse/MC-238526) | - | `false` | `false` | `false` | + +## `technical` + +#### `load-portal-destination-chunk-before-entity-teleport` + +是否在传送实体时完全加载区块,以确保整个服务器等待区块加载。 + +| | **默认值** | | | +| ---------- | ---------- | ------- | --------- | +| **推荐值** | _Gale_ | _Paper_ | _Vanilla_ | +| - | `false` | `false` | `false` | + +| **目标值** | | +| ---------- | ------- | +| _优化_ | `false` | +| _原版行为_ | `false` | diff --git a/docs/pages/zh/reference/config/index.md b/docs/pages/zh/reference/config/index.md new file mode 100644 index 0000000..fca42e4 --- /dev/null +++ b/docs/pages/zh/reference/config/index.md @@ -0,0 +1,25 @@ +# 配置 + +- **Gale 全局配置** + + *** + + [点此阅读](gale-global.md) + +- **Gale 默认世界配置** + + *** + + [点此阅读](gale-world.md) + +- **Leaf 全局配置** + + *** + + [点此阅读](leaf-global.md) + +- **其他配置** + + *** + + [点此阅读](misc-config.md) diff --git a/docs/pages/zh/reference/config/leaf-global.md b/docs/pages/zh/reference/config/leaf-global.md new file mode 100644 index 0000000..304e282 --- /dev/null +++ b/docs/pages/zh/reference/config/leaf-global.md @@ -0,0 +1,18 @@ +# Leaf 全局配置 + +:::info 信息 +以下 YAML 配置展示了 Leaf 全局配置 (config/leaf-global.yml) 的结构及其默认的值 + +此配置文件基于最新的 Leaf 1.21.1 分支 + +点击配置项后面的箭头按钮以显示其描述 +::: + + + + diff --git a/docs/pages/zh/reference/config/misc-config.md b/docs/pages/zh/reference/config/misc-config.md new file mode 100644 index 0000000..90f5436 --- /dev/null +++ b/docs/pages/zh/reference/config/misc-config.md @@ -0,0 +1,55 @@ +# 其他配置 + +因为某些原因, Leaf 在上游提供的配置文件里添加或更改了部分配置项. + +## Paper 默认世界配置 + +```yaml title="paper-world-defaults.yml" +entities: + spawning: + spawning-throttle: + failed-attempts-threshold: disabled + throttled-ticks-per-spawn: + ambient: -1 + axolotls: -1 + creature: -1 + monster: -1 + underground_water_creature: -1 + water_ambient: -1 + water_creature: -1 +``` + +## Purpur 配置 + +```yaml title="purpur.yml" +settings: + messages: + afk-broadcast-away: %s is now AFK + afk-broadcast-back: %s is no longer AFK + afk-title-away: AFK:You are now AFK...:10:70:20 + afk-broadcast-use-display-name: false + afk-tab-list-prefix: "[AFK] " + afk-tab-list-suffix: "" + afk-command-cooldown: 0 + afk-command-cooldown-msg: You need to wait %time%s to use /afk. +``` + +## 移动的 Pufferfish 和 Purpur 配置项 + +### Pufferfish + +| | Before | After | +| --- | ------ | ----- | +| | | | +| | | | +| | | | +| | | | + +### Purpur + +| | Before | After | +| --- | ------ | ----- | +| | | | +| | | | +| | | | +| | | | diff --git a/docs/pages/zh/reference/faq.md b/docs/pages/zh/reference/faq.md new file mode 100644 index 0000000..733e81f --- /dev/null +++ b/docs/pages/zh/reference/faq.md @@ -0,0 +1,39 @@ +# 常见问题与解答 + +### ❓ · Leaf 相比 `"<其他任意 Paper 分支>"` 有多少性能提升? + +目前为止,我们无法提供具体的性能对比,但请关注我们即将上线的网站,我们会提供详细的性能测试指标! + +### ❓ · Leaf 是否兼容 Bukkit/Spigot/Paper 插件? + +是的,Leaf 的插件兼容性与 Paper 完全相同。如果某个插件无法正常工作,可以将 Leaf 替换为 Purpur 并再次测试。如果问题仍然存在,请在 [Leaf 的 GitHub](https://github.com/Winds-Studio/Leaf/issues) 上反馈。 + +### ❓ · Leaf 是否包括 `purpur.yml`? + +是的,Leaf 包含所有 Purpur 的补丁,但部分 Purpur 配置项已移至 Gale 和 Leaf 的配置中。 + +### ❓ · Leaf 多久更新一次上游? + +通常来说为 1 ~ 3 周,具体取决于上游的更新是否重要。 + +### ❓ · 我该如何优化我的服务器? + +你可以参考 [YouHaveTrouble 的优化指南](https://github.com/YouHaveTrouble/minecraft-optimization), 或者参考由社区为中文用户撰写的 [笨蛋 WIKI 优化指南](https://nitwikit.yizhan.wiki/Java/optimize). + +### ❓ · Leaf 有任何已知的不兼容问题吗? + +- [RealisticVillagers](https://www.spigotmc.org/resources/realisticvillagers.105055) (不兼容低于 1.21.1 的 Leaf 版本). +- 如果你的服务器装有 [Citizens](https://www.spigotmc.org/resources/citizens.13811) 插件,并开启了异步实体跟踪,请打开 [异步实体跟踪的兼容模式 (`compat-mode`)](./config/leaf-global.md), 或关闭异步实体跟踪! +- 发现有不兼容的插件?[请在这里反馈](https://github.com/Winds-Studio/Leaf/issues)! + +### ❓ · Mojmap 和 Reobf 有什么区别?我该使用哪个? + +它们是基于不同的映射方式。Mojmap 使用 Mojang 的映射文件,而 Reobf 使用 Spigot 的映射文件。建议使用 Mojmap. + +### ❓ · 我该如何支持该项目? + +任何人都可以通过 [爱发电](https://afdian.com/a/Dreeam) 赞助 Dreeam (支持 支付宝 / 微信支付). + +!!! note "提示" + + 是否需要为此 *常见问题与解答* 添加更多内容? [点此反馈](../index.md#-联系方式)! diff --git a/docs/pages/zh/reference/index.md b/docs/pages/zh/reference/index.md new file mode 100644 index 0000000..3589d90 --- /dev/null +++ b/docs/pages/zh/reference/index.md @@ -0,0 +1,19 @@ +# 参考 + +- **常见问题与解答** + + *** + + [点此阅读](faq.md) + +- **Leaf 系统属性** + + *** + + [点此阅读](system-properties.md) + +- **配置** + + *** + + [点此阅读](./config) diff --git a/docs/pages/zh/reference/system-properties.md b/docs/pages/zh/reference/system-properties.md new file mode 100644 index 0000000..50ac5a4 --- /dev/null +++ b/docs/pages/zh/reference/system-properties.md @@ -0,0 +1,39 @@ +# Leaf 系统属性 + +### -DLeaf.library-download-repo + +- 默认值:未设置 + + 默认的 Maven 中心仓库在某些地区的下载速度非常慢。 + + 使用此 JVM 参数可以为 SpigotLibraryLoader 或 PaperLibraryLoader 设置特定的镜像仓库, + + 例如你可以使用如下参数,将阿里云仓库设置为镜像仓库。 + +``` +-DLeaf.library-download-repo=https://maven.aliyun.com/repository/public +``` + +### -DLeaf.nearestEntitySensorBucketCount + +- 默认值:10 + + 当实体数量达到 [桶排序 (Bucket Sort)](https://oi-wiki.org/basic/bucket-sort) 的阈值时,将使用多少个桶进行排序。 + + 建议此值设置为实体数量的平方根值。 + +### -DLeaf.nearestEntitySensorBucketSortThresholdRatio + +- 默认值:2.0 + + 此值控制桶排序阈值的比例。`(阈值 = 上述桶数量 * 比例)` + +### -DLeaf.enableFMA + +- 默认值:false + + 是否使用 [融合乘加操作 (FMA)](https://baike.baidu.com/item/%E4%B9%98%E7%A7%AF%E7%B4%AF%E5%8A%A0%E8%BF%90%E7%AE%97) 来加速某些数学计算。 + + 需要 CPU 支持 FMA 指令集,否则将导致性能下降。 + + 你可以使用 [CPU-Z](https://www.cpuid.com/softwares/cpu-z.html) 等工具检查你的机器是否支持 FMA 指令集。 diff --git a/docs/pages/zh/todo.md b/docs/pages/zh/todo.md new file mode 100644 index 0000000..1146554 --- /dev/null +++ b/docs/pages/zh/todo.md @@ -0,0 +1,8 @@ +# TODO List + +> 这是一个需要完成的任务列表。如果你想要贡献,请先查看这个列表。 + +## Dreeam + +- [ ] Dev section +- [ ] Add Contribution.md / contribution writing standard (some raw concepts, like leave one empty line for every docs file?) diff --git a/docs/pages/zh/useful-sites.md b/docs/pages/zh/useful-sites.md new file mode 100644 index 0000000..c521193 --- /dev/null +++ b/docs/pages/zh/useful-sites.md @@ -0,0 +1,9 @@ +# 一些有用的网站 + +这里有一些有用的网站,我们推荐配合这些网站来阅读本 Leaf 文档,以达到最好地阅读及理解的体验,并了解更深,更完整的 MC 开服运维知识。 + +## 网站列表 + +- [Paper 文档](https://docs.papermc.io/paper) +- [Purpur 文档](https://purpurmc.org/docs/purpur/) +- [笨蛋文档](https://nitwikit.yizhan.wiki/) diff --git a/pages/public/logo.svg b/docs/public/logo.svg similarity index 100% rename from pages/public/logo.svg rename to docs/public/logo.svg diff --git a/docs/uno.config.mts b/docs/uno.config.mts new file mode 100644 index 0000000..44a616c --- /dev/null +++ b/docs/uno.config.mts @@ -0,0 +1,47 @@ +import { + defineConfig, + presetAttributify, + presetIcons, + presetUno, + presetWebFonts, +} from "unocss"; + +export default defineConfig({ + shortcuts: [], + presets: [ + presetUno({ + dark: "class", + }), + presetAttributify(), + presetIcons({ + prefix: "i-", + scale: 1.2, // size: 1.2 rem + extraProperties: { + display: "inline-block", + "vertical-align": "middle", + "min-width": "1.2rem", + }, + }), + presetWebFonts({ + fonts: { + "chakra-petch": ["Chakra Petch"], + "baloo-2": [ + { + name: "Baloo 2", + }, + { + name: "Noto Sans", + }, + { + name: "Roboto", + }, + { + name: "sans-serif", + provider: "none", + }, + ], + jura: ["Jura"], + }, + }), + ], +}); diff --git a/docs/vite.config.mts b/docs/vite.config.mts new file mode 100644 index 0000000..35cfa63 --- /dev/null +++ b/docs/vite.config.mts @@ -0,0 +1,34 @@ +import { defineConfig } from "vite"; + +import { + GitChangelog, + GitChangelogMarkdownSection, +} from "@nolebase/vitepress-plugin-git-changelog/vite"; +import UnoCSS from "unocss/vite"; +export default defineConfig(async () => { + return { + assetsInclude: ["**/*.mov"], + optimizeDeps: { + exclude: [ + "vitepress", + "@nolebase/vitepress-plugin-enhanced-readabilities", + ], + }, + plugins: [ + GitChangelog({ + repoURL: () => "https://github.com/Winds-Studio/Leaf-website", + }), + GitChangelogMarkdownSection({ sections: { disableContributors: true } }), + UnoCSS(), + ], + ssr: { + noExternal: [ + "@nolebase/ui", + "@nolebase/vitepress-plugin-enhanced-readabilities", + "@nolebase/vitepress-plugin-highlight-targeted-heading", + "@nolebase/vitepress-plugin-inline-link-preview", + "@iminu/vitepress-plugin-auto-sidebar", + ], + }, + }; +}); diff --git a/package.json b/package.json index 7ca41f7..508180b 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,23 @@ { - "devDependencies": { - "vitepress": "1.5.0", - "vue": "^3.5.13" - }, - "scripts": { - "dev": "vitepress dev", - "build": "vitepress build", - "docs:build": "vitepress build", - "preview": "vitepress preview" - }, - "dependencies": { - "typescript": "^5.7.2" - } + "scripts": { + "docs:dev": "vitepress dev docs", + "docs:build": "vitepress build docs", + "docs:preview": "vitepress preview docs" + }, + "devDependencies": { + "@nolebase/markdown-it-bi-directional-links": "^2.12.0", + "@nolebase/markdown-it-unlazy-img": "^2.12.0", + "@nolebase/vitepress-plugin-enhanced-mark": "^2.12.0", + "@nolebase/vitepress-plugin-enhanced-readabilities": "^2.12.0", + "@nolebase/vitepress-plugin-git-changelog": "^2.12.0", + "@nolebase/vitepress-plugin-highlight-targeted-heading": "^2.12.0", + "@nolebase/vitepress-plugin-inline-link-preview": "^2.12.0", + "@types/node": "^22.10.7", + "unocss": "^65.4.2", + "vite": "^6.0.7", + "vitepress": "^1.5.0", + "vitepress-plugin-nprogress": "^0.0.4", + "vue": "^3.5.13", + "yaml": "^2.7.0" + } } \ No newline at end of file diff --git a/pages/de/index.md b/pages/de/index.md deleted file mode 100644 index 0b819b2..0000000 --- a/pages/de/index.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: home - -hero: - name: "Leaf" - text: "Eine leistungsstarke Minecraft Server Software" - image: /logo.svg - tagline: Ein Paper-Fork mit dem Ziel, die Balance zwischen Leistung, Stabilität und Vanilla-Gameplay zu finden - actions: - - theme: brand - text: Veröffentlichungen - link: https://github.com/Winds-Studio/Leaf/releases - - theme: alt - text: Dokumentation - link: https://docs.leafmc.one/ - - theme: alt - text: Build-Historie - link: /builds -features: - - title: ⚡ Leistungsstark und optimiert - details: Stabil, performant und für große Spielerzahlen entwickelt - - title: 🧬 Nützlich und anpassbar - details: Enthält viele nützliche Features und Fixes, die in der Konfiguration angepasst werden können - - title: 📦 Neueste Abhängigkeiten - details: Modern, da Abhängigkeiten immer aktuell gehalten werden ---- \ No newline at end of file diff --git a/pages/index.md b/pages/index.md deleted file mode 100644 index 8d54e97..0000000 --- a/pages/index.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -# https://vitepress.dev/reference/default-theme-home-page -layout: home - -hero: - name: "Leaf" - text: "High performance Minecraft server software" - image: logo.svg - tagline: A Paper fork aim to find balance between performance, vanilla and stability - actions: - - theme: brand - text: Releases - link: https://github.com/Winds-Studio/Leaf/releases - - theme: alt - text: Docs - link: https://docs.leafmc.one/ - - theme: alt - text: Build history - link: /builds - -features: - - title: ⚡ Powerful and optimized - details: Stable and performant, it's designed to handle a large number of players - - title: 🧬 Useful and customizable - details: Contains many useful features and fixes, all of them can be customized in config - - title: 📦 Latest dependencies - details: Modern, keep dependencies up-to-date ---- diff --git a/pages/ru/index.md b/pages/ru/index.md deleted file mode 100644 index b8d6d57..0000000 --- a/pages/ru/index.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: home - -hero: - name: "Leaf" - text: "Современное ПО для Minecraft серверов" - image: /logo.svg - tagline: Цель ядра - удаление некоторых проверок, глубокая кастомизация и высокая производительность. Leaf построен на основе Gale с оптимизациями из других форков - actions: - - theme: brand - text: Релизы - link: https://github.com/Winds-Studio/Leaf/releases - - theme: alt - text: Docs - link: https://docs.leafmc.one/ - - theme: alt - text: История сборок - link: /builds -features: - - title: ⚡ Отличная оптимизация - details: стабильное и производительное ядро, способное выдерживать большое количество игроков - - title: 🧬 Возможность кастомизации - details: В конфиге ядра Вы найдёте много опций для тщательной настройки каждого аспекта работы сервера - - title: 📦 Обновлённые зависимости - details: современное ядро с самыми новыми библиотками и прочими зависимостями ---- \ No newline at end of file diff --git a/pages/zh/index.md b/pages/zh/index.md deleted file mode 100644 index 87672db..0000000 --- a/pages/zh/index.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: home - -hero: - name: "Leaf" - text: "高性能 Minecraft 服务端核心" - image: logo.svg - tagline: 一个 Paper 分支, 专注于寻找性能优化, Vanilla, 稳定之间的平衡, 为大型网络, 密集和高承载量场景设计 - actions: - - theme: brand - text: 下载 - link: https://github.com/Winds-Studio/Leaf/releases - - theme: alt - text: 文档 - link: https://docs.leafmc.one/zh/ - - theme: alt - text: 版本历史 - link: /builds - -features: - - title: ⚡ 高度优化 - details: 稳定且高效, 设计用于承载大量玩家 - - title: 🧬 自定义且实用 - details: 包含实用的功能和修复, 可在配置中自定义 - - title: 📦 保持最新 - details: 现代化, 保持最新的依赖库 ---- diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 65885da..935f422 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,17 +7,49 @@ settings: importers: .: - dependencies: - typescript: - specifier: ^5.7.2 - version: 5.7.2 devDependencies: + '@nolebase/markdown-it-bi-directional-links': + specifier: ^2.12.0 + version: 2.12.0(markdown-it@14.1.0) + '@nolebase/markdown-it-unlazy-img': + specifier: ^2.12.0 + version: 2.12.0(@types/node@22.10.7)(jiti@2.4.2)(less@4.2.1)(markdown-it@14.1.0)(tsx@4.19.2)(yaml@2.7.0) + '@nolebase/vitepress-plugin-enhanced-mark': + specifier: ^2.12.0 + version: 2.12.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3) + '@nolebase/vitepress-plugin-enhanced-readabilities': + specifier: ^2.12.0 + version: 2.12.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3) + '@nolebase/vitepress-plugin-git-changelog': + specifier: ^2.12.0 + version: 2.12.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3) + '@nolebase/vitepress-plugin-highlight-targeted-heading': + specifier: ^2.12.0 + version: 2.12.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3) + '@nolebase/vitepress-plugin-inline-link-preview': + specifier: ^2.12.0 + version: 2.12.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3) + '@types/node': + specifier: ^22.10.7 + version: 22.10.7 + unocss: + specifier: ^65.4.2 + version: 65.4.2(postcss@8.5.1)(rollup@4.30.1)(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(less@4.2.1)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13) + vite: + specifier: ^6.0.7 + version: 6.0.7(@types/node@22.10.7)(jiti@2.4.2)(less@4.2.1)(tsx@4.19.2)(yaml@2.7.0) vitepress: - specifier: 1.5.0 - version: 1.5.0(@algolia/client-search@5.18.0)(postcss@8.4.49)(search-insights@2.13.0)(typescript@5.7.2) + specifier: ^1.5.0 + version: 1.5.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(less@4.2.1)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3) + vitepress-plugin-nprogress: + specifier: ^0.0.4 + version: 0.0.4 vue: specifier: ^3.5.13 - version: 3.5.13(typescript@5.7.2) + version: 3.5.13 + yaml: + specifier: ^2.7.0 + version: 2.7.0 packages: @@ -41,58 +73,68 @@ packages: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/client-abtesting@5.18.0': - resolution: {integrity: sha512-DLIrAukjsSrdMNNDx1ZTks72o4RH/1kOn8Wx5zZm8nnqFexG+JzY4SANnCNEjnFQPJTTvC+KpgiNW/CP2lumng==} + '@algolia/client-abtesting@5.19.0': + resolution: {integrity: sha512-dMHwy2+nBL0SnIsC1iHvkBao64h4z+roGelOz11cxrDBrAdASxLxmfVMop8gmodQ2yZSacX0Rzevtxa+9SqxCw==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.18.0': - resolution: {integrity: sha512-0VpGG2uQW+h2aejxbG8VbnMCQ9ary9/ot7OASXi6OjE0SRkYQ/+pkW+q09+IScif3pmsVVYggmlMPtAsmYWHng==} + '@algolia/client-analytics@5.19.0': + resolution: {integrity: sha512-CDW4RwnCHzU10upPJqS6N6YwDpDHno7w6/qXT9KPbPbt8szIIzCHrva4O9KIfx1OhdsHzfGSI5hMAiOOYl4DEQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.18.0': - resolution: {integrity: sha512-X1WMSC+1ve2qlMsemyTF5bIjwipOT+m99Ng1Tyl36ZjQKTa54oajBKE0BrmM8LD8jGdtukAgkUhFoYOaRbMcmQ==} + '@algolia/client-common@5.19.0': + resolution: {integrity: sha512-2ERRbICHXvtj5kfFpY5r8qu9pJII/NAHsdgUXnUitQFwPdPL7wXiupcvZJC7DSntOnE8AE0lM7oDsPhrJfj5nQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.18.0': - resolution: {integrity: sha512-FAJRNANUOSs/FgYOJ/Njqp+YTe4TMz2GkeZtfsw1TMiA5mVNRS/nnMpxas9771aJz7KTEWvK9GwqPs0K6RMYWg==} + '@algolia/client-insights@5.19.0': + resolution: {integrity: sha512-xPOiGjo6I9mfjdJO7Y+p035aWePcbsItizIp+qVyfkfZiGgD+TbNxM12g7QhFAHIkx/mlYaocxPY/TmwPzTe+A==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.18.0': - resolution: {integrity: sha512-I2dc94Oiwic3SEbrRp8kvTZtYpJjGtg5y5XnqubgnA15AgX59YIY8frKsFG8SOH1n2rIhUClcuDkxYQNXJLg+w==} + '@algolia/client-personalization@5.19.0': + resolution: {integrity: sha512-B9eoce/fk8NLboGje+pMr72pw+PV7c5Z01On477heTZ7jkxoZ4X92dobeGuEQop61cJ93Gaevd1of4mBr4hu2A==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.18.0': - resolution: {integrity: sha512-x6XKIQgKFTgK/bMasXhghoEjHhmgoP61pFPb9+TaUJ32aKOGc65b12usiGJ9A84yS73UDkXS452NjyP50Knh/g==} + '@algolia/client-query-suggestions@5.19.0': + resolution: {integrity: sha512-6fcP8d4S8XRDtVogrDvmSM6g5g6DndLc0pEm1GCKe9/ZkAzCmM3ZmW1wFYYPxdjMeifWy1vVEDMJK7sbE4W7MA==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.18.0': - resolution: {integrity: sha512-qI3LcFsVgtvpsBGR7aNSJYxhsR+Zl46+958ODzg8aCxIcdxiK7QEVLMJMZAR57jGqW0Lg/vrjtuLFDMfSE53qA==} + '@algolia/client-search@5.19.0': + resolution: {integrity: sha512-Ctg3xXD/1VtcwmkulR5+cKGOMj4r0wC49Y/KZdGQcqpydKn+e86F6l3tb3utLJQVq4lpEJud6kdRykFgcNsp8Q==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.18.0': - resolution: {integrity: sha512-bGvJg7HnGGm+XWYMDruZXWgMDPVt4yCbBqq8DM6EoaMBK71SYC4WMfIdJaw+ABqttjBhe6aKNRkWf/bbvYOGyw==} + '@algolia/ingestion@1.19.0': + resolution: {integrity: sha512-LO7w1MDV+ZLESwfPmXkp+KLeYeFrYEgtbCZG6buWjddhYraPQ9MuQWLhLLiaMlKxZ/sZvFTcZYuyI6Jx4WBhcg==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.18.0': - resolution: {integrity: sha512-lBssglINIeGIR+8KyzH05NAgAmn1BCrm5D2T6pMtr/8kbTHvvrm1Zvcltc5dKUQEFyyx3J5+MhNc7kfi8LdjVw==} + '@algolia/monitoring@1.19.0': + resolution: {integrity: sha512-Mg4uoS0aIKeTpu6iv6O0Hj81s8UHagi5TLm9k2mLIib4vmMtX7WgIAHAcFIaqIZp5D6s5EVy1BaDOoZ7buuJHA==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.18.0': - resolution: {integrity: sha512-uSnkm0cdAuFwdMp4pGT5vHVQ84T6AYpTZ3I0b3k/M3wg4zXDhl3aCiY8NzokEyRLezz/kHLEEcgb/tTTobOYVw==} + '@algolia/recommend@5.19.0': + resolution: {integrity: sha512-PbgrMTbUPlmwfJsxjFhal4XqZO2kpBNRjemLVTkUiti4w/+kzcYO4Hg5zaBgVqPwvFDNQ8JS4SS3TBBem88u+g==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.18.0': - resolution: {integrity: sha512-1XFjW0C3pV0dS/9zXbV44cKI+QM4ZIz9cpatXpsjRlq6SUCpLID3DZHsXyE6sTb8IhyPaUjk78GEJT8/3hviqg==} + '@algolia/requester-browser-xhr@5.19.0': + resolution: {integrity: sha512-GfnhnQBT23mW/VMNs7m1qyEyZzhZz093aY2x8p0era96MMyNv8+FxGek5pjVX0b57tmSCZPf4EqNCpkGcGsmbw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.18.0': - resolution: {integrity: sha512-0uodeNdAHz1YbzJh6C5xeQ4T6x5WGiUxUq3GOaT/R4njh5t78dq+Rb187elr7KtnjUmETVVuCvmEYaThfTHzNg==} + '@algolia/requester-fetch@5.19.0': + resolution: {integrity: sha512-oyTt8ZJ4T4fYvW5avAnuEc6Laedcme9fAFryMD9ndUTIUe/P0kn3BuGcCLFjN3FDmdrETHSFkgPPf1hGy3sLCw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.18.0': - resolution: {integrity: sha512-tZCqDrqJ2YE2I5ukCQrYN8oiF6u3JIdCxrtKq+eniuLkjkO78TKRnXrVcKZTmfFJyyDK8q47SfDcHzAA3nHi6w==} + '@algolia/requester-node-http@5.19.0': + resolution: {integrity: sha512-p6t8ue0XZNjcRiqNkb5QAM0qQRAKsCiebZ6n9JjWA+p8fWf8BvnhO55y2fO28g3GW0Imj7PrAuyBuxq8aDVQwQ==} engines: {node: '>= 14.0.0'} + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@antfu/install-pkg@0.4.1': + resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} + + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + '@babel/helper-string-parser@7.25.9': resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} @@ -101,13 +143,13 @@ packages: resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.3': - resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} + '@babel/parser@7.26.5': + resolution: {integrity: sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/types@7.26.3': - resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} + '@babel/types@7.26.5': + resolution: {integrity: sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==} engines: {node: '>=6.9.0'} '@docsearch/css@3.8.2': @@ -139,259 +181,667 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.24.2': + resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.24.2': + resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.24.2': + resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.24.2': + resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.24.2': + resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.24.2': + resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.24.2': + resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.24.2': + resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.24.2': + resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.24.2': + resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.24.2': + resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.24.2': + resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.24.2': + resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.24.2': + resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.24.2': + resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.24.2': + resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.24.2': + resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.24.2': + resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.24.2': + resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.24.2': + resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.24.2': + resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.24.2': + resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.24.2': + resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.24.2': + resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] - '@iconify-json/simple-icons@1.2.17': - resolution: {integrity: sha512-1vXbM6a6HV2rwXxu8ptD2OYhqrqX0ZZRepOg7nIjkvKlKq90Iici4X++A8h36bEVlV2wGjqx8uVYB0pwnPZVSw==} + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.24.2': + resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@iconify-json/carbon@1.2.5': + resolution: {integrity: sha512-aI3TEzOrUDGhs74zIT3ym/ZQBUEziyu8JifntX2Hb4siVzsP5sQ/QEfVdmcCUj37kQUYT3TYBSeAw2vTfCJx9w==} + + '@iconify-json/icon-park-outline@1.2.2': + resolution: {integrity: sha512-7VkMWOZTIMNkC9+oAL4I5kVlVC5Pq3nQpruZ4E3cLyKaeV95gaUrEilUkvGW71fgsFYCBWAmOZ3KpM4ux0j0zA==} + + '@iconify-json/octicon@1.2.2': + resolution: {integrity: sha512-qEPkP9DMMay5uILzyaSmVksSMxRw9i2wSDREfB8OK20mPdSadusjLqD/u69GzpFpw6894c+WNmoq7WzN5KAPeg==} + + '@iconify-json/simple-icons@1.2.20': + resolution: {integrity: sha512-WlQ95zrdxxizrFt2HtkfYjyWatLfE8Z7BKOkew9quG5S5AKYVxF1PkTtOs8LDWShce1DpvxKWQne4W5DQyEGZg==} + + '@iconify-json/svg-spinners@1.2.2': + resolution: {integrity: sha512-DIErwfBWWzLfmAG2oQnbUOSqZhDxlXvr8941itMCrxQoMB0Hiv8Ww6Bln/zIgxwjDvSem2dKJtap+yKKwsB/2A==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + '@iconify/utils@2.2.1': + resolution: {integrity: sha512-0/7J7hk4PqXmxo5PDBDxmnecw5PxklZJfNjIVG9FM0mEfVrvfudS22rYWsqVk6gR3UJ/mSYS90X4R3znXnqfNA==} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - '@rollup/rollup-android-arm-eabi@4.29.1': - resolution: {integrity: sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==} + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nolebase/markdown-it-bi-directional-links@2.12.0': + resolution: {integrity: sha512-TyDHYxR4F5f3erKkSdbe2YGTeKp893h+pszirGObSD1+nykHCgVWStHuV1zjiRSPV1O+SFFAp8K+m/Al7rs45g==} + peerDependencies: + markdown-it: '>=14.0.0' + + '@nolebase/markdown-it-element-transform@2.12.0': + resolution: {integrity: sha512-+lXzBPOVIkykWxRqSfCFaZtpwexRAxYWZVPQIEAcZAWAxrPOZ3fuaRsd/xcidZhUnt8nWRPSJH2K5s0v1TUdBA==} + peerDependencies: + markdown-it: '>=14.0.0' + + '@nolebase/markdown-it-unlazy-img@2.12.0': + resolution: {integrity: sha512-runwZDlfCP/w+lY0e2JFME1cw1I3IafOIBq3VdreeWu9+5767WgKUBY5HleK28LxqaFz86aob/SZahyguecpQw==} + peerDependencies: + markdown-it: '>=14.0.0' + + '@nolebase/ui@2.12.0': + resolution: {integrity: sha512-QL2mXIIUE6uItO7MUJdIJsPqmTQkEI7Leah+i51WGEfouuvrBDgFnH2LEqhXh3fmO2Bu7HiVpUu3meduSrORLg==} + + '@nolebase/vitepress-plugin-enhanced-mark@2.12.0': + resolution: {integrity: sha512-pU5UWEDTaNTj5KFpgp5p1nsWKNt1pf1M3niYhi5rfj/BGwQUvIUr0pgSqTmbkERFjmc1FbbnOqscuEJGzrdSpQ==} + + '@nolebase/vitepress-plugin-enhanced-readabilities@2.12.0': + resolution: {integrity: sha512-sK5byozn2GZQiFvjvAo7lsdG6lgCifpEmpwMV8kji6p9SFz5lsTrIavg1tisFjN3glwpaSVSXaMDTJuuwDWdQw==} + + '@nolebase/vitepress-plugin-git-changelog@2.12.0': + resolution: {integrity: sha512-4zkzVo5gaqJaj40Q+8YVED04y7zcCeLL7/DWka900E4WQ3Z7So6Wnl/ZQZWLW0C/VGBDIZ0Tg91kfayT7fJnKA==} + + '@nolebase/vitepress-plugin-highlight-targeted-heading@2.12.0': + resolution: {integrity: sha512-o84cHRLxcxIez7yeuRWBn4FUzXYMyIguAyA08zbIvwtUh3U99waGlCx3BlH1PifHUr/gUkEnI6opAEbtbd1yoQ==} + + '@nolebase/vitepress-plugin-inline-link-preview@2.12.0': + resolution: {integrity: sha512-s+Y7HnVw8RH6BynezHINJIfi9pdOdnJAv/fD9hNZWCGWF6XDuL26nm2Os6G6+ixcRdED8BP8jYt1IdzWSPXcDA==} + + '@polka/url@1.0.0-next.28': + resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + + '@rollup/pluginutils@5.1.4': + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.30.1': + resolution: {integrity: sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.29.1': - resolution: {integrity: sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==} + '@rollup/rollup-android-arm64@4.30.1': + resolution: {integrity: sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.29.1': - resolution: {integrity: sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==} + '@rollup/rollup-darwin-arm64@4.30.1': + resolution: {integrity: sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.29.1': - resolution: {integrity: sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==} + '@rollup/rollup-darwin-x64@4.30.1': + resolution: {integrity: sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.29.1': - resolution: {integrity: sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==} + '@rollup/rollup-freebsd-arm64@4.30.1': + resolution: {integrity: sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.29.1': - resolution: {integrity: sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==} + '@rollup/rollup-freebsd-x64@4.30.1': + resolution: {integrity: sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.29.1': - resolution: {integrity: sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==} + '@rollup/rollup-linux-arm-gnueabihf@4.30.1': + resolution: {integrity: sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg==} cpu: [arm] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.29.1': - resolution: {integrity: sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==} + '@rollup/rollup-linux-arm-musleabihf@4.30.1': + resolution: {integrity: sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug==} cpu: [arm] os: [linux] + libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.29.1': - resolution: {integrity: sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==} + '@rollup/rollup-linux-arm64-gnu@4.30.1': + resolution: {integrity: sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw==} cpu: [arm64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.29.1': - resolution: {integrity: sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==} + '@rollup/rollup-linux-arm64-musl@4.30.1': + resolution: {integrity: sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA==} cpu: [arm64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-loongarch64-gnu@4.29.1': - resolution: {integrity: sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==} + '@rollup/rollup-linux-loongarch64-gnu@4.30.1': + resolution: {integrity: sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ==} cpu: [loong64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-powerpc64le-gnu@4.29.1': - resolution: {integrity: sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==} + '@rollup/rollup-linux-powerpc64le-gnu@4.30.1': + resolution: {integrity: sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw==} cpu: [ppc64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.29.1': - resolution: {integrity: sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==} + '@rollup/rollup-linux-riscv64-gnu@4.30.1': + resolution: {integrity: sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw==} cpu: [riscv64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-s390x-gnu@4.29.1': - resolution: {integrity: sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==} + '@rollup/rollup-linux-s390x-gnu@4.30.1': + resolution: {integrity: sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA==} cpu: [s390x] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.29.1': - resolution: {integrity: sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==} + '@rollup/rollup-linux-x64-gnu@4.30.1': + resolution: {integrity: sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg==} cpu: [x64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.29.1': - resolution: {integrity: sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==} + '@rollup/rollup-linux-x64-musl@4.30.1': + resolution: {integrity: sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow==} cpu: [x64] os: [linux] + libc: [musl] - '@rollup/rollup-win32-arm64-msvc@4.29.1': - resolution: {integrity: sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==} + '@rollup/rollup-win32-arm64-msvc@4.30.1': + resolution: {integrity: sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.29.1': - resolution: {integrity: sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==} + '@rollup/rollup-win32-ia32-msvc@4.30.1': + resolution: {integrity: sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.29.1': - resolution: {integrity: sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==} + '@rollup/rollup-win32-x64-msvc@4.30.1': + resolution: {integrity: sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og==} cpu: [x64] os: [win32] - '@shikijs/core@1.24.4': - resolution: {integrity: sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==} + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + + '@shikijs/core@1.27.2': + resolution: {integrity: sha512-ns1dokDr0KE1lQ9mWd4rqaBkhSApk0qGCK1+lOqwnkQSkVZ08UGqXj1Ef8dAcTMZNFkN6PSNjkL5TYNX7pyPbQ==} + + '@shikijs/engine-javascript@1.27.2': + resolution: {integrity: sha512-0JB7U5vJc16NShBdxv9hSSJYSKX79+32O7F4oXIxJLdYfomyFvx4B982ackUI9ftO9T3WwagkiiD3nOxOOLiGA==} - '@shikijs/engine-javascript@1.24.4': - resolution: {integrity: sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==} + '@shikijs/engine-oniguruma@1.27.2': + resolution: {integrity: sha512-FZYKD1KN7srvpkz4lbGLOYWlyDU4Rd+2RtuKfABTkafAPOFr+J6umfIwY/TzOQqfNtWjL7SAwPAO0dcOraRLaQ==} - '@shikijs/engine-oniguruma@1.24.4': - resolution: {integrity: sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==} + '@shikijs/langs@1.27.2': + resolution: {integrity: sha512-MSrknKL0DbeXvhtSigMLIzjPOOQfvK7fsbcRv2NUUB0EvuTTomY8/U+lAkczYrXY2+dygKOapJKk8ScFYbtoNw==} - '@shikijs/transformers@1.24.4': - resolution: {integrity: sha512-0jq5p9WLB7ToM/O7RWfxuIwirTJbIQsUR06jxdG3h3CEuO5m7ik8GnDsxwHhyIEfgJSZczSnVUZWFrNKy5It6g==} + '@shikijs/themes@1.27.2': + resolution: {integrity: sha512-Yw/uV7EijjWavIIZLoWneTAohcbBqEKj6XMX1bfMqO3llqTKsyXukPp1evf8qPqzUHY7ibauqEaQchhfi857mg==} - '@shikijs/types@1.24.4': - resolution: {integrity: sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==} + '@shikijs/transformers@1.27.2': + resolution: {integrity: sha512-BJFeXP9/zlYidJocv2ShkOvXI22fepS2oK/vItfCbCcuJ0783eWgEn6/mMrXmk+p+Twu49ntDVQe665uy6RPWw==} - '@shikijs/vscode-textmate@9.3.1': - resolution: {integrity: sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==} + '@shikijs/types@1.27.2': + resolution: {integrity: sha512-DM9OWUyjmdYdnKDpaGB/GEn9XkToyK1tqxuqbmc5PV+5K8WjjwfygL3+cIvbkSw2v1ySwHDgqATq/+98pJ4Kyg==} + + '@shikijs/vscode-textmate@10.0.1': + resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==} + + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} @@ -411,6 +861,15 @@ packages: '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + '@types/node@22.10.7': + resolution: {integrity: sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==} + + '@types/prop-types@15.7.14': + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + + '@types/react@18.3.18': + resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==} + '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -420,6 +879,86 @@ packages: '@ungap/structured-clone@1.2.1': resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} + '@unocss/astro@65.4.2': + resolution: {integrity: sha512-5UR8KmonbpeeSG5pxWtBYlwr9XNbcsrVTfXKzWZAic5kRUWQREFpmjMcDL/+Co+OYWe4z5WWayjwfQUmLLPG5w==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 + peerDependenciesMeta: + vite: + optional: true + + '@unocss/cli@65.4.2': + resolution: {integrity: sha512-eQmzBhph67CDe+MNz8k/3rMwR1g1xCKZIWfrFoSQv7CqlJxgjRgFOxmnIw7pGhUEC0wenrvauGkVjFkIUHFqeg==} + engines: {node: '>=14'} + hasBin: true + + '@unocss/config@65.4.2': + resolution: {integrity: sha512-2xyWDt6t879rsdxJ0TiRbk9ENkGuLjAWjl3aAph5HHxwgGaBN1c9S5G9607j/WXP+tO6c37B4Q1iG/XYx35HBA==} + engines: {node: '>=14'} + + '@unocss/core@65.4.2': + resolution: {integrity: sha512-VmXy5D25por+pt9LBlKZ3gk4rOE5ldm80MyVOEnLcpaFb9LqB0g/8qUU9/Dk3TSA+ZPeoGm53Juo0p8LMFIigA==} + + '@unocss/extractor-arbitrary-variants@65.4.2': + resolution: {integrity: sha512-qm5JXfjbxgXqhQAeOfV1jFT1ThBTi1bP1m+Nu2p6tB9EUbAUp+AKY4sODueqDXoriUtOc7h0QzyW3Lm+s3fTGw==} + + '@unocss/inspector@65.4.2': + resolution: {integrity: sha512-64m6SpjbeTQNqgWLUQpVwu1WQpuv4RshA1KIs4cc6WdDivckWb4woA+4Zdm+DjYjm0aLqX7oUE0kWwjK+pIZdA==} + + '@unocss/postcss@65.4.2': + resolution: {integrity: sha512-LKb8K9B1zTFN6zaQYIYSiFRz4a+HpNHKSIGjo/dtN0p0R1ME7VaGOgwg3+cEsNguNhTeXoaX5y/ADp8KP/HD6A==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + + '@unocss/preset-attributify@65.4.2': + resolution: {integrity: sha512-DHFHU+tvknLMk01cWQjLjEdJkRyPIdVYVoCoR9yzmwwVT6n7JKK1R/Ailwofm2229GjplY5c9qu1PjA5K1K7Vw==} + + '@unocss/preset-icons@65.4.2': + resolution: {integrity: sha512-XytFiMSbIqPshiVtsiFoq1nqyFYNTGnxMe6g3w+Zj5B+vNwfwHPR6CD8pTSkXpbW6zo+Ed/CBYe0pRwCrYjcgw==} + + '@unocss/preset-mini@65.4.2': + resolution: {integrity: sha512-4ZZK9KwDHjI8wFUKeB+30GHekPmy1OzXncjlXhqm+vNQ7FO3xCee7VY00E5bgz5Tt0pXALcKFlrEspjpSaeCoQ==} + + '@unocss/preset-tagify@65.4.2': + resolution: {integrity: sha512-Ldk2QU8Zmy9irQQ/ZlFLBTPfPTHDBXcbxsxCFFCjI/MiTMh1Wac6cpryoYlju5SJ+yQuys4sIKzjkhRUD2d7Ug==} + + '@unocss/preset-typography@65.4.2': + resolution: {integrity: sha512-Mp3GSS24qP8Fdf3wH2UeM4PRqGOuJGvKMNuZsIPX09Y/HcpleyjolBDNiagaM2rdp5cs2jcvWDAJ2fz9OXR3HQ==} + + '@unocss/preset-uno@65.4.2': + resolution: {integrity: sha512-rJcGx/+EWA3wXGOAZdYQFSEn8knsiqiST/Ji1adN+9dTq4BVYMZ9n3zYRF6GZ8p61aZomhU4jmzpLk12RMdxpg==} + + '@unocss/preset-web-fonts@65.4.2': + resolution: {integrity: sha512-YVgjB3igldU5uKgwkDXNvxe9cISiLBnaKwW2bjJJyyTZ3QbjbYklgI4LyakxtnY4hf6U1vO+1W83/GIhl2RAdw==} + + '@unocss/preset-wind@65.4.2': + resolution: {integrity: sha512-TQm9P2UHpqfn92APfZJtbK2brkXQ+GInFL2evup/ZChU1fqdbH9mL0ef6ZNQbCH4gjY6mEzwPXt4lhGod6CajA==} + + '@unocss/reset@65.4.2': + resolution: {integrity: sha512-Sas0lTGEgzdWKafSiT+dyhhrUOkOpPbhJYbPMgjW6Ol/tB5JXhdlCNm90Xue1wt453P8O3J4v+dQcyrdRSq0Ig==} + + '@unocss/rule-utils@65.4.2': + resolution: {integrity: sha512-OdMSJZiZUr8XmLo3Bz3Wrw1nZLT1nTPnPOV8gdi4vZ+2RgCChua9o8Dz4IyeQ7mMhLXoqHIUpJ7jE5Nv+Uz1Fw==} + engines: {node: '>=14'} + + '@unocss/transformer-attributify-jsx@65.4.2': + resolution: {integrity: sha512-3jANN8pnOd3xX8PhkUMhRYEwT97HOYNLMiACpRb2x3MRxYjmpOPR/We31r/tYz23hMsbGkR0C5xvpuCkDj2QAA==} + + '@unocss/transformer-compile-class@65.4.2': + resolution: {integrity: sha512-9kRV7W6LA7D+OBfbA2ayKJyZl9RnOb1mv+XW0KcFdD8KP0r8DfxT5rOj6QpEt88d6KwDo09iOaExsy0rHU7ZTg==} + + '@unocss/transformer-directives@65.4.2': + resolution: {integrity: sha512-u/hbpRe/mEasRdzznGQnKmJqDHcoJ2MJJBLpDc2RisiAEokz73dno3JtT70HZVA+DN7Y9ddAKioxlvSU+iJxFA==} + + '@unocss/transformer-variant-group@65.4.2': + resolution: {integrity: sha512-a5xjR9mPUo7n6wD3nO5tcEcH7j0ks25E3d100XdNUeVUJeszzMAeLZ/uYrkd6Z3amyLLxwVOkAdYcczGhKdsbA==} + + '@unocss/vite@65.4.2': + resolution: {integrity: sha512-pEIU/egxec0CErgUwo/Nuyfi+ZZPIBD+XQBi2Pa51VKeuD91BBnXc1JGu9yzRT2WbrGP3hwsDgYqhj2G6wGXyA==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 + '@vitejs/plugin-vue@5.2.1': resolution: {integrity: sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==} engines: {node: ^18.0.0 || >=20.0.0} @@ -439,14 +978,14 @@ packages: '@vue/compiler-ssr@3.5.13': resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} - '@vue/devtools-api@7.6.8': - resolution: {integrity: sha512-ma6dY/sZR36zALVsV1W7eC57c6IJPXsy8SNgZn1PLVWU4z4dPn5TIBmnF4stmdJ4sQcixqKaQ8pwjbMPzEZwiA==} + '@vue/devtools-api@7.7.0': + resolution: {integrity: sha512-bHEv6kT85BHtyGgDhE07bAUMAy7zpv6nnR004nSTd0wWMrAOtcrYoXO5iyr20Hkf5jR8obQOfS3byW+I3l2CCA==} - '@vue/devtools-kit@7.6.8': - resolution: {integrity: sha512-JhJ8M3sPU+v0P2iZBF2DkdmR9L0dnT5RXJabJqX6o8KtFs3tebdvfoXV2Dm3BFuqeECuMJIfF1aCzSt+WQ4wrw==} + '@vue/devtools-kit@7.7.0': + resolution: {integrity: sha512-5cvZ+6SA88zKC8XiuxUfqpdTwVjJbvYnQZY5NReh7qlSGPvVDjjzyEtW+gdzLXNSd8tStgOjAdMCpvDQamUXtA==} - '@vue/devtools-shared@7.6.8': - resolution: {integrity: sha512-9MBPO5Z3X1nYGFqTJyohl6Gmf/J7UNN1oicHdyzBVZP4jnhZ4c20MgtaHDIzWmHDHCMYVS5bwKxT3jxh7gOOKA==} + '@vue/devtools-shared@7.7.0': + resolution: {integrity: sha512-jtlQY26R5thQxW9YQTpXbI0HoK0Wf9Rd4ekidOkRvSy7ChfK0kIU6vvcBtjj87/EcpeOSK49fZAicaFNJcoTcQ==} '@vue/reactivity@3.5.13': resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} @@ -515,13 +1054,46 @@ packages: '@vueuse/shared@11.3.0': resolution: {integrity: sha512-P8gSSWQeucH5821ek2mn/ciCk+MS/zoRKqdQIM3bHq6p7GXDAJLmnRRKmF5F65sAVJIfzQlwR3aDzwCn10s8hA==} - algoliasearch@5.18.0: - resolution: {integrity: sha512-/tfpK2A4FpS0o+S78o3YSdlqXr0MavJIDlFK3XZrlXLy7vaRXJvW5jYg3v5e/wCaF8y0IpMjkYLhoV6QqfpOgw==} + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + + algoliasearch@5.19.0: + resolution: {integrity: sha512-zrLtGhC63z3sVLDDKGW+SlCRN9eJHFTgdEmoAOpsVh6wgGL1GgTTDou7tpCBjevzgIvi3AIyDAQO3Xjbg5eqZg==} engines: {node: '>= 14.0.0'} + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + birpc@0.2.19: resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + bundle-require@5.1.0: + resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.18' + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -531,23 +1103,69 @@ packages: character-entities-legacy@3.0.0: resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + consola@3.4.0: + resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} + engines: {node: ^14.18.0 || >=16.10.0} + + copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + copy-anything@3.0.5: resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} engines: {node: '>=12.13'} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + date-fns@4.1.0: + resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -555,22 +1173,105 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + + es-toolkit@1.31.0: + resolution: {integrity: sha512-vwS0lv/tzjM2/t4aZZRAgN9I9TP0MSkWuvt6By+hEXfG/uLs8yg2S1/ayRXH/x3pinbLgVJYT+eppueg3cM6tg==} + esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} hasBin: true + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.24.2: + resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + engines: {node: '>=18'} + hasBin: true + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - focus-trap@7.6.2: - resolution: {integrity: sha512-9FhUxK1hVju2+AiQIDJ5Dd//9R2n2RAfJ0qfhF4IHGHgcoEUTMpbTeG/zbEuwaiYXfuAH6XE0/aCyxDdRM+W5w==} + execa@9.5.2: + resolution: {integrity: sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==} + engines: {node: ^18.19.0 || >=20.5.0} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fastq@1.18.0: + resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} + + fdir@6.4.2: + resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + focus-trap@7.6.4: + resolution: {integrity: sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==} fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + globals@15.14.0: + resolution: {integrity: sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==} + engines: {node: '>=18'} + + globby@14.0.2: + resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} + engines: {node: '>=18'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + hast-util-to-html@9.0.4: resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==} @@ -583,19 +1284,132 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + human-signals@8.0.0: + resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==} + engines: {node: '>=18.18.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + importx@0.5.1: + resolution: {integrity: sha512-YrRaigAec1sC2CdIJjf/hCH1Wp9Ii8Cq5ROw4k5nJ19FVl2FcJUHZ5gGIb1vs8+JNYIyOJpc2fcufS2330bxDw==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + + is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + is-what@4.1.16: resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} engines: {node: '>=12.13'} + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + less@4.2.1: + resolution: {integrity: sha512-CasaJidTIhWmjcqv0Uj5vccMI7pJgfD9lMkKtlnTHAdJdYK/7l8pM9tumLyJ0zhbD4KJLo/YvTj+xznQd5NBhg==} + engines: {node: '>=6'} + hasBin: true + + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + local-pkg@0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} + engines: {node: '>=14'} + magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + mark.js@8.11.1: resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + markdown-it-attrs@4.3.1: + resolution: {integrity: sha512-/ko6cba+H6gdZ0DOw7BbNMZtfuJTRp9g/IrGIuz8lYc/EfnmWRpaR3CFPnNbVz0LDvF8Gf1hFGPqrQqq7De0rg==} + engines: {node: '>=6'} + peerDependencies: + markdown-it: '>= 9.0.0' + + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + mdast-util-to-hast@13.2.0: resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + micromark-util-character@2.1.1: resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} @@ -611,19 +1425,89 @@ packages: micromark-util-types@2.0.1: resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + minisearch@7.1.1: resolution: {integrity: sha512-b3YZEYCEH4EdCAtYP7OlDyx7FdPwNzuNwLQ34SfJpM9dlbBZzeXndGavTrC+VCiRWomL21SWfMc6SCKO/U2ZNw==} mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + mlly@1.7.4: + resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} + + mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + nanoid@3.3.8: resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - oniguruma-to-es@0.8.1: - resolution: {integrity: sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==} + needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + + node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + + nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + + ofetch@1.4.1: + resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + + oniguruma-to-es@2.0.0: + resolution: {integrity: sha512-pE7+9jQgomy10aK6BJKRNHj1Nth0YLOzb3iRuhlz4gRzNSBSd7hga6U8BE6o0SoSuSkqv+PPtt511Msd1Hkl0w==} + + package-manager-detector@0.2.8: + resolution: {integrity: sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==} + + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathe@2.0.1: + resolution: {integrity: sha512-6jpjMpOth5S9ITVu5clZ7NOgHNsv5vRQdheL9ztp2vZmM6fRbLvyua1tiBIL4lk8SAe3ARzeXEly6siXCjDHDw==} perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} @@ -631,16 +1515,49 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - postcss@8.4.49: - resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + postcss@8.5.1: + resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} engines: {node: ^10 || ^12 || >=14} preact@10.25.4: resolution: {integrity: sha512-jLdZDb+Q+odkHJ+MpW/9U5cODzqnB+fy2EiHSZES7ldV5LK7yjlVzTp7R8Xy6W6y75kfK8iWYtFVH7lvjwrCMA==} + pretty-ms@9.2.0: + resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} + engines: {node: '>=18'} + property-information@6.5.0: resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + regex-recursion@5.1.1: resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} @@ -650,24 +1567,72 @@ packages: regex@5.1.1: resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rollup@4.29.1: - resolution: {integrity: sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==} + rollup@4.30.1: + resolution: {integrity: sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - search-insights@2.13.0: - resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + search-insights@2.17.3: + resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} + + section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shiki@1.27.2: + resolution: {integrity: sha512-QtA1C41oEVixKog+V8I3ia7jjGls7oCZ8Yul8vdHrVBga5uPoyTtMvFF4lMMXIyAZo5A5QbXq91bot2vA6Q+eQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} - shiki@1.24.4: - resolution: {integrity: sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==} + sirv@3.0.0: + resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} + engines: {node: '>=18'} + + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -675,9 +1640,20 @@ packages: resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} engines: {node: '>=0.10.0'} + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + superjson@2.2.2: resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} engines: {node: '>=16'} @@ -685,14 +1661,55 @@ packages: tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyglobby@0.2.10: + resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} + engines: {node: '>=12.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - typescript@5.7.2: - resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} - engines: {node: '>=14.17'} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsx@4.19.2: + resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} + engines: {node: '>=18.0.0'} hasBin: true + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + + unconfig@0.6.0: + resolution: {integrity: sha512-4C67J0nIF2QwSXty2kW3zZx1pMZ3iXabylvJWWgHybWVUcMf9pxwsngoQt0gC+AVstRywFqrRBp3qOXJayhpOw==} + + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} @@ -708,6 +1725,18 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + unocss@65.4.2: + resolution: {integrity: sha512-fAmolcpWyU9TlYw04cXu1ba4+lxh/PKjT5xKEAobWCTmwkS+yQDJ3LrEkqfGvry2EJr2os+/qhQm1lAx/0o7Ww==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 65.4.2 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} @@ -745,6 +1774,49 @@ packages: terser: optional: true + vite@6.0.7: + resolution: {integrity: sha512-RDt8r/7qx9940f8FcOIAH9PTViRrghKaK2K1jY3RaAURrEUbm9Du1mJ72G+jlhtG3WwodnfzY8ORQZbBavZEAQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitepress-plugin-nprogress@0.0.4: + resolution: {integrity: sha512-YzW36kBnjuFH91DOFIA5snyBf4WpF/cYfhAiyNefhqif8QQIKGsbpzvI8VN0M8RHLGr9iQyHhF7dQsm//Xf5Hw==} + vitepress@1.5.0: resolution: {integrity: sha512-q4Q/G2zjvynvizdB3/bupdYkCJe2umSAMv9Ju4d92E6/NXJ59z70xB0q5p/4lpRyAwflDsbwy1mLV9Q5+nlB+g==} hasBin: true @@ -768,6 +1840,11 @@ packages: '@vue/composition-api': optional: true + vue-flow-layout@0.1.1: + resolution: {integrity: sha512-JdgRRUVrN0Y2GosA0M68DEbKlXMqJ7FQgsK8CjQD2vxvNSqAU6PZEpi4cfcTVtfM2GVOMjHo7GKKLbXxOBqDqA==} + peerDependencies: + vue: ^3.4.37 + vue@3.5.13: resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} peerDependencies: @@ -776,134 +1853,160 @@ packages: typescript: optional: true + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + yaml@2.7.0: + resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} + engines: {node: '>= 14'} + hasBin: true + + yoctocolors@2.1.1: + resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} + engines: {node: '>=18'} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} snapshots: - '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.18.0)(algoliasearch@5.18.0)(search-insights@2.13.0)': + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.18.0)(algoliasearch@5.18.0)(search-insights@2.13.0) - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.18.0)(algoliasearch@5.18.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.18.0)(algoliasearch@5.18.0)(search-insights@2.13.0)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.18.0)(algoliasearch@5.18.0) - search-insights: 2.13.0 + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) + search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.18.0)(algoliasearch@5.18.0)': + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)': + dependencies: + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) + '@algolia/client-search': 5.19.0 + algoliasearch: 5.19.0 + + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.18.0)(algoliasearch@5.18.0) - '@algolia/client-search': 5.18.0 - algoliasearch: 5.18.0 + '@algolia/client-search': 5.19.0 + algoliasearch: 5.19.0 - '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.18.0)(algoliasearch@5.18.0)': + '@algolia/client-abtesting@5.19.0': dependencies: - '@algolia/client-search': 5.18.0 - algoliasearch: 5.18.0 + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 - '@algolia/client-abtesting@5.18.0': + '@algolia/client-analytics@5.19.0': dependencies: - '@algolia/client-common': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 - '@algolia/client-analytics@5.18.0': + '@algolia/client-common@5.19.0': {} + + '@algolia/client-insights@5.19.0': dependencies: - '@algolia/client-common': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 - '@algolia/client-common@5.18.0': {} + '@algolia/client-personalization@5.19.0': + dependencies: + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 - '@algolia/client-insights@5.18.0': + '@algolia/client-query-suggestions@5.19.0': dependencies: - '@algolia/client-common': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 - '@algolia/client-personalization@5.18.0': + '@algolia/client-search@5.19.0': dependencies: - '@algolia/client-common': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 - '@algolia/client-query-suggestions@5.18.0': + '@algolia/ingestion@1.19.0': dependencies: - '@algolia/client-common': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 - '@algolia/client-search@5.18.0': + '@algolia/monitoring@1.19.0': dependencies: - '@algolia/client-common': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 - '@algolia/ingestion@1.18.0': + '@algolia/recommend@5.19.0': dependencies: - '@algolia/client-common': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 - '@algolia/monitoring@1.18.0': + '@algolia/requester-browser-xhr@5.19.0': dependencies: - '@algolia/client-common': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + '@algolia/client-common': 5.19.0 - '@algolia/recommend@5.18.0': + '@algolia/requester-fetch@5.19.0': dependencies: - '@algolia/client-common': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + '@algolia/client-common': 5.19.0 - '@algolia/requester-browser-xhr@5.18.0': + '@algolia/requester-node-http@5.19.0': dependencies: - '@algolia/client-common': 5.18.0 + '@algolia/client-common': 5.19.0 - '@algolia/requester-fetch@5.18.0': + '@ampproject/remapping@2.3.0': dependencies: - '@algolia/client-common': 5.18.0 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 - '@algolia/requester-node-http@5.18.0': + '@antfu/install-pkg@0.4.1': dependencies: - '@algolia/client-common': 5.18.0 + package-manager-detector: 0.2.8 + tinyexec: 0.3.2 + + '@antfu/utils@0.7.10': {} '@babel/helper-string-parser@7.25.9': {} '@babel/helper-validator-identifier@7.25.9': {} - '@babel/parser@7.26.3': + '@babel/parser@7.26.5': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 - '@babel/types@7.26.3': + '@babel/types@7.26.5': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 '@docsearch/css@3.8.2': {} - '@docsearch/js@3.8.2(@algolia/client-search@5.18.0)(search-insights@2.13.0)': + '@docsearch/js@3.8.2(@algolia/client-search@5.19.0)(@types/react@18.3.18)(search-insights@2.17.3)': dependencies: - '@docsearch/react': 3.8.2(@algolia/client-search@5.18.0)(search-insights@2.13.0) + '@docsearch/react': 3.8.2(@algolia/client-search@5.19.0)(@types/react@18.3.18)(search-insights@2.17.3) preact: 10.25.4 transitivePeerDependencies: - '@algolia/client-search' @@ -912,215 +2015,860 @@ snapshots: - react-dom - search-insights - '@docsearch/react@3.8.2(@algolia/client-search@5.18.0)(search-insights@2.13.0)': + '@docsearch/react@3.8.2(@algolia/client-search@5.19.0)(@types/react@18.3.18)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.18.0)(algoliasearch@5.18.0)(search-insights@2.13.0) - '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.18.0)(algoliasearch@5.18.0) + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) '@docsearch/css': 3.8.2 - algoliasearch: 5.18.0 + algoliasearch: 5.19.0 optionalDependencies: - search-insights: 2.13.0 + '@types/react': 18.3.18 + search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' '@esbuild/aix-ppc64@0.21.5': optional: true + '@esbuild/aix-ppc64@0.23.1': + optional: true + + '@esbuild/aix-ppc64@0.24.2': + optional: true + '@esbuild/android-arm64@0.21.5': optional: true + '@esbuild/android-arm64@0.23.1': + optional: true + + '@esbuild/android-arm64@0.24.2': + optional: true + '@esbuild/android-arm@0.21.5': optional: true + '@esbuild/android-arm@0.23.1': + optional: true + + '@esbuild/android-arm@0.24.2': + optional: true + '@esbuild/android-x64@0.21.5': optional: true + '@esbuild/android-x64@0.23.1': + optional: true + + '@esbuild/android-x64@0.24.2': + optional: true + '@esbuild/darwin-arm64@0.21.5': optional: true + '@esbuild/darwin-arm64@0.23.1': + optional: true + + '@esbuild/darwin-arm64@0.24.2': + optional: true + '@esbuild/darwin-x64@0.21.5': optional: true + '@esbuild/darwin-x64@0.23.1': + optional: true + + '@esbuild/darwin-x64@0.24.2': + optional: true + '@esbuild/freebsd-arm64@0.21.5': optional: true + '@esbuild/freebsd-arm64@0.23.1': + optional: true + + '@esbuild/freebsd-arm64@0.24.2': + optional: true + '@esbuild/freebsd-x64@0.21.5': optional: true + '@esbuild/freebsd-x64@0.23.1': + optional: true + + '@esbuild/freebsd-x64@0.24.2': + optional: true + '@esbuild/linux-arm64@0.21.5': optional: true + '@esbuild/linux-arm64@0.23.1': + optional: true + + '@esbuild/linux-arm64@0.24.2': + optional: true + '@esbuild/linux-arm@0.21.5': optional: true + '@esbuild/linux-arm@0.23.1': + optional: true + + '@esbuild/linux-arm@0.24.2': + optional: true + '@esbuild/linux-ia32@0.21.5': optional: true + '@esbuild/linux-ia32@0.23.1': + optional: true + + '@esbuild/linux-ia32@0.24.2': + optional: true + '@esbuild/linux-loong64@0.21.5': optional: true + '@esbuild/linux-loong64@0.23.1': + optional: true + + '@esbuild/linux-loong64@0.24.2': + optional: true + '@esbuild/linux-mips64el@0.21.5': optional: true + '@esbuild/linux-mips64el@0.23.1': + optional: true + + '@esbuild/linux-mips64el@0.24.2': + optional: true + '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.21.5': + '@esbuild/linux-ppc64@0.23.1': optional: true - '@esbuild/linux-s390x@0.21.5': + '@esbuild/linux-ppc64@0.24.2': optional: true - '@esbuild/linux-x64@0.21.5': + '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.21.5': + '@esbuild/linux-riscv64@0.23.1': optional: true - '@esbuild/openbsd-x64@0.21.5': + '@esbuild/linux-riscv64@0.24.2': optional: true - '@esbuild/sunos-x64@0.21.5': + '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/win32-arm64@0.21.5': + '@esbuild/linux-s390x@0.23.1': optional: true - '@esbuild/win32-ia32@0.21.5': + '@esbuild/linux-s390x@0.24.2': optional: true - '@esbuild/win32-x64@0.21.5': + '@esbuild/linux-x64@0.21.5': optional: true - '@iconify-json/simple-icons@1.2.17': - dependencies: - '@iconify/types': 2.0.0 + '@esbuild/linux-x64@0.23.1': + optional: true - '@iconify/types@2.0.0': {} + '@esbuild/linux-x64@0.24.2': + optional: true - '@jridgewell/sourcemap-codec@1.5.0': {} + '@esbuild/netbsd-arm64@0.24.2': + optional: true - '@rollup/rollup-android-arm-eabi@4.29.1': + '@esbuild/netbsd-x64@0.21.5': optional: true - '@rollup/rollup-android-arm64@4.29.1': + '@esbuild/netbsd-x64@0.23.1': optional: true - '@rollup/rollup-darwin-arm64@4.29.1': + '@esbuild/netbsd-x64@0.24.2': optional: true - '@rollup/rollup-darwin-x64@4.29.1': + '@esbuild/openbsd-arm64@0.23.1': optional: true - '@rollup/rollup-freebsd-arm64@4.29.1': + '@esbuild/openbsd-arm64@0.24.2': optional: true - '@rollup/rollup-freebsd-x64@4.29.1': + '@esbuild/openbsd-x64@0.21.5': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.29.1': + '@esbuild/openbsd-x64@0.23.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.29.1': + '@esbuild/openbsd-x64@0.24.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.29.1': + '@esbuild/sunos-x64@0.21.5': optional: true - '@rollup/rollup-linux-arm64-musl@4.29.1': + '@esbuild/sunos-x64@0.23.1': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.29.1': + '@esbuild/sunos-x64@0.24.2': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.29.1': + '@esbuild/win32-arm64@0.21.5': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.29.1': + '@esbuild/win32-arm64@0.23.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.29.1': + '@esbuild/win32-arm64@0.24.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.29.1': + '@esbuild/win32-ia32@0.21.5': optional: true - '@rollup/rollup-linux-x64-musl@4.29.1': + '@esbuild/win32-ia32@0.23.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.29.1': + '@esbuild/win32-ia32@0.24.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.29.1': - optional: true + '@esbuild/win32-x64@0.21.5': + optional: true + + '@esbuild/win32-x64@0.23.1': + optional: true + + '@esbuild/win32-x64@0.24.2': + optional: true + + '@iconify-json/carbon@1.2.5': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify-json/icon-park-outline@1.2.2': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify-json/octicon@1.2.2': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify-json/simple-icons@1.2.20': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify-json/svg-spinners@1.2.2': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.2.1': + dependencies: + '@antfu/install-pkg': 0.4.1 + '@antfu/utils': 0.7.10 + '@iconify/types': 2.0.0 + debug: 4.4.0 + globals: 15.14.0 + kolorist: 1.8.0 + local-pkg: 0.5.1 + mlly: 1.7.4 + transitivePeerDependencies: + - supports-color + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.18.0 + + '@nolebase/markdown-it-bi-directional-links@2.12.0(markdown-it@14.1.0)': + dependencies: + colorette: 2.0.20 + debug: 4.4.0 + markdown-it: 14.1.0 + tinyglobby: 0.2.10 + transitivePeerDependencies: + - supports-color + + '@nolebase/markdown-it-element-transform@2.12.0(markdown-it@14.1.0)': + dependencies: + markdown-it: 14.1.0 + + '@nolebase/markdown-it-unlazy-img@2.12.0(@types/node@22.10.7)(jiti@2.4.2)(less@4.2.1)(markdown-it@14.1.0)(tsx@4.19.2)(yaml@2.7.0)': + dependencies: + colorette: 2.0.20 + markdown-it: 14.1.0 + tinyglobby: 0.2.10 + vite: 6.0.7(@types/node@22.10.7)(jiti@2.4.2)(less@4.2.1)(tsx@4.19.2)(yaml@2.7.0) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - yaml + + '@nolebase/ui@2.12.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3)': + dependencies: + '@iconify-json/octicon': 1.2.2 + less: 4.2.1 + vitepress: 1.5.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(less@4.2.1)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3) + vue: 3.5.13 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - lightningcss + - markdown-it-mathjax3 + - nprogress + - postcss + - qrcode + - react + - react-dom + - sass + - sass-embedded + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - typescript + - universal-cookie + + '@nolebase/vitepress-plugin-enhanced-mark@2.12.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3)': + dependencies: + less: 4.2.1 + vitepress: 1.5.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(less@4.2.1)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3) + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - lightningcss + - markdown-it-mathjax3 + - nprogress + - postcss + - qrcode + - react + - react-dom + - sass + - sass-embedded + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - typescript + - universal-cookie + + '@nolebase/vitepress-plugin-enhanced-readabilities@2.12.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3)': + dependencies: + '@iconify-json/carbon': 1.2.5 + '@iconify-json/icon-park-outline': 1.2.2 + '@nolebase/ui': 2.12.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3) + less: 4.2.1 + vitepress: 1.5.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(less@4.2.1)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3) + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - lightningcss + - markdown-it-mathjax3 + - nprogress + - postcss + - qrcode + - react + - react-dom + - sass + - sass-embedded + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - typescript + - universal-cookie + + '@nolebase/vitepress-plugin-git-changelog@2.12.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3)': + dependencies: + '@iconify-json/octicon': 1.2.2 + '@nolebase/ui': 2.12.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3) + colorette: 2.0.20 + date-fns: 4.1.0 + defu: 6.1.4 + es-toolkit: 1.31.0 + execa: 9.5.2 + globby: 14.0.2 + gray-matter: 4.0.3 + less: 4.2.1 + uncrypto: 0.1.3 + vitepress: 1.5.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(less@4.2.1)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3) + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - lightningcss + - markdown-it-mathjax3 + - nprogress + - postcss + - qrcode + - react + - react-dom + - sass + - sass-embedded + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - typescript + - universal-cookie + + '@nolebase/vitepress-plugin-highlight-targeted-heading@2.12.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3)': + dependencies: + less: 4.2.1 + vitepress: 1.5.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(less@4.2.1)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3) + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - lightningcss + - markdown-it-mathjax3 + - nprogress + - postcss + - qrcode + - react + - react-dom + - sass + - sass-embedded + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - typescript + - universal-cookie + + '@nolebase/vitepress-plugin-inline-link-preview@2.12.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3)': + dependencies: + '@iconify-json/icon-park-outline': 1.2.2 + '@iconify-json/octicon': 1.2.2 + '@iconify-json/svg-spinners': 1.2.2 + '@nolebase/markdown-it-element-transform': 2.12.0(markdown-it@14.1.0) + '@nolebase/ui': 2.12.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3) + less: 4.2.1 + markdown-it: 14.1.0 + markdown-it-attrs: 4.3.1(markdown-it@14.1.0) + vitepress: 1.5.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(less@4.2.1)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3) + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - lightningcss + - markdown-it-mathjax3 + - nprogress + - postcss + - qrcode + - react + - react-dom + - sass + - sass-embedded + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - typescript + - universal-cookie + + '@polka/url@1.0.0-next.28': {} + + '@rollup/pluginutils@5.1.4(rollup@4.30.1)': + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.30.1 + + '@rollup/rollup-android-arm-eabi@4.30.1': + optional: true + + '@rollup/rollup-android-arm64@4.30.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.30.1': + optional: true + + '@rollup/rollup-darwin-x64@4.30.1': + optional: true + + '@rollup/rollup-freebsd-arm64@4.30.1': + optional: true + + '@rollup/rollup-freebsd-x64@4.30.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.30.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.30.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.30.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.30.1': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.30.1': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.30.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.30.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.30.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.30.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.30.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.30.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.30.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.30.1': + optional: true + + '@sec-ant/readable-stream@0.4.1': {} + + '@shikijs/core@1.27.2': + dependencies: + '@shikijs/engine-javascript': 1.27.2 + '@shikijs/engine-oniguruma': 1.27.2 + '@shikijs/types': 1.27.2 + '@shikijs/vscode-textmate': 10.0.1 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.4 + + '@shikijs/engine-javascript@1.27.2': + dependencies: + '@shikijs/types': 1.27.2 + '@shikijs/vscode-textmate': 10.0.1 + oniguruma-to-es: 2.0.0 + + '@shikijs/engine-oniguruma@1.27.2': + dependencies: + '@shikijs/types': 1.27.2 + '@shikijs/vscode-textmate': 10.0.1 + + '@shikijs/langs@1.27.2': + dependencies: + '@shikijs/types': 1.27.2 + + '@shikijs/themes@1.27.2': + dependencies: + '@shikijs/types': 1.27.2 + + '@shikijs/transformers@1.27.2': + dependencies: + shiki: 1.27.2 + + '@shikijs/types@1.27.2': + dependencies: + '@shikijs/vscode-textmate': 10.0.1 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.1': {} + + '@sindresorhus/merge-streams@2.3.0': {} + + '@sindresorhus/merge-streams@4.0.0': {} + + '@types/estree@1.0.6': {} + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/linkify-it@5.0.0': {} + + '@types/markdown-it@14.1.2': + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdurl@2.0.0': {} + + '@types/node@22.10.7': + dependencies: + undici-types: 6.20.0 + + '@types/prop-types@15.7.14': + optional: true + + '@types/react@18.3.18': + dependencies: + '@types/prop-types': 15.7.14 + csstype: 3.1.3 + optional: true + + '@types/unist@3.0.3': {} + + '@types/web-bluetooth@0.0.20': {} + + '@ungap/structured-clone@1.2.1': {} + + '@unocss/astro@65.4.2(rollup@4.30.1)(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(less@4.2.1)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13)': + dependencies: + '@unocss/core': 65.4.2 + '@unocss/reset': 65.4.2 + '@unocss/vite': 65.4.2(rollup@4.30.1)(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(less@4.2.1)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13) + optionalDependencies: + vite: 6.0.7(@types/node@22.10.7)(jiti@2.4.2)(less@4.2.1)(tsx@4.19.2)(yaml@2.7.0) + transitivePeerDependencies: + - rollup + - supports-color + - vue + + '@unocss/cli@65.4.2(rollup@4.30.1)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.4(rollup@4.30.1) + '@unocss/config': 65.4.2 + '@unocss/core': 65.4.2 + '@unocss/preset-uno': 65.4.2 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.4.0 + magic-string: 0.30.17 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + tinyglobby: 0.2.10 + transitivePeerDependencies: + - rollup + - supports-color + + '@unocss/config@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + unconfig: 0.6.0 + transitivePeerDependencies: + - supports-color + + '@unocss/core@65.4.2': {} + + '@unocss/extractor-arbitrary-variants@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + + '@unocss/inspector@65.4.2(vue@3.5.13)': + dependencies: + '@unocss/core': 65.4.2 + '@unocss/rule-utils': 65.4.2 + colorette: 2.0.20 + gzip-size: 6.0.0 + sirv: 3.0.0 + vue-flow-layout: 0.1.1(vue@3.5.13) + transitivePeerDependencies: + - vue - '@rollup/rollup-win32-x64-msvc@4.29.1': - optional: true + '@unocss/postcss@65.4.2(postcss@8.5.1)': + dependencies: + '@unocss/config': 65.4.2 + '@unocss/core': 65.4.2 + '@unocss/rule-utils': 65.4.2 + css-tree: 3.1.0 + postcss: 8.5.1 + tinyglobby: 0.2.10 + transitivePeerDependencies: + - supports-color - '@shikijs/core@1.24.4': + '@unocss/preset-attributify@65.4.2': dependencies: - '@shikijs/engine-javascript': 1.24.4 - '@shikijs/engine-oniguruma': 1.24.4 - '@shikijs/types': 1.24.4 - '@shikijs/vscode-textmate': 9.3.1 - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.4 + '@unocss/core': 65.4.2 - '@shikijs/engine-javascript@1.24.4': + '@unocss/preset-icons@65.4.2': dependencies: - '@shikijs/types': 1.24.4 - '@shikijs/vscode-textmate': 9.3.1 - oniguruma-to-es: 0.8.1 + '@iconify/utils': 2.2.1 + '@unocss/core': 65.4.2 + ofetch: 1.4.1 + transitivePeerDependencies: + - supports-color - '@shikijs/engine-oniguruma@1.24.4': + '@unocss/preset-mini@65.4.2': dependencies: - '@shikijs/types': 1.24.4 - '@shikijs/vscode-textmate': 9.3.1 + '@unocss/core': 65.4.2 + '@unocss/extractor-arbitrary-variants': 65.4.2 + '@unocss/rule-utils': 65.4.2 - '@shikijs/transformers@1.24.4': + '@unocss/preset-tagify@65.4.2': dependencies: - shiki: 1.24.4 + '@unocss/core': 65.4.2 - '@shikijs/types@1.24.4': + '@unocss/preset-typography@65.4.2': dependencies: - '@shikijs/vscode-textmate': 9.3.1 - '@types/hast': 3.0.4 + '@unocss/core': 65.4.2 + '@unocss/preset-mini': 65.4.2 - '@shikijs/vscode-textmate@9.3.1': {} + '@unocss/preset-uno@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + '@unocss/preset-mini': 65.4.2 + '@unocss/preset-wind': 65.4.2 + '@unocss/rule-utils': 65.4.2 - '@types/estree@1.0.6': {} + '@unocss/preset-web-fonts@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + ofetch: 1.4.1 - '@types/hast@3.0.4': + '@unocss/preset-wind@65.4.2': dependencies: - '@types/unist': 3.0.3 + '@unocss/core': 65.4.2 + '@unocss/preset-mini': 65.4.2 + '@unocss/rule-utils': 65.4.2 - '@types/linkify-it@5.0.0': {} + '@unocss/reset@65.4.2': {} - '@types/markdown-it@14.1.2': + '@unocss/rule-utils@65.4.2': dependencies: - '@types/linkify-it': 5.0.0 - '@types/mdurl': 2.0.0 + '@unocss/core': 65.4.2 + magic-string: 0.30.17 - '@types/mdast@4.0.4': + '@unocss/transformer-attributify-jsx@65.4.2': dependencies: - '@types/unist': 3.0.3 + '@unocss/core': 65.4.2 - '@types/mdurl@2.0.0': {} + '@unocss/transformer-compile-class@65.4.2': + dependencies: + '@unocss/core': 65.4.2 - '@types/unist@3.0.3': {} + '@unocss/transformer-directives@65.4.2': + dependencies: + '@unocss/core': 65.4.2 + '@unocss/rule-utils': 65.4.2 + css-tree: 3.1.0 - '@types/web-bluetooth@0.0.20': {} + '@unocss/transformer-variant-group@65.4.2': + dependencies: + '@unocss/core': 65.4.2 - '@ungap/structured-clone@1.2.1': {} + '@unocss/vite@65.4.2(rollup@4.30.1)(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(less@4.2.1)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.4(rollup@4.30.1) + '@unocss/config': 65.4.2 + '@unocss/core': 65.4.2 + '@unocss/inspector': 65.4.2(vue@3.5.13) + chokidar: 3.6.0 + magic-string: 0.30.17 + tinyglobby: 0.2.10 + vite: 6.0.7(@types/node@22.10.7)(jiti@2.4.2)(less@4.2.1)(tsx@4.19.2)(yaml@2.7.0) + transitivePeerDependencies: + - rollup + - supports-color + - vue - '@vitejs/plugin-vue@5.2.1(vite@5.4.11)(vue@3.5.13(typescript@5.7.2))': + '@vitejs/plugin-vue@5.2.1(vite@5.4.11(@types/node@22.10.7)(less@4.2.1))(vue@3.5.13)': dependencies: - vite: 5.4.11 - vue: 3.5.13(typescript@5.7.2) + vite: 5.4.11(@types/node@22.10.7)(less@4.2.1) + vue: 3.5.13 '@vue/compiler-core@3.5.13': dependencies: - '@babel/parser': 7.26.3 + '@babel/parser': 7.26.5 '@vue/shared': 3.5.13 entities: 4.5.0 estree-walker: 2.0.2 @@ -1133,14 +2881,14 @@ snapshots: '@vue/compiler-sfc@3.5.13': dependencies: - '@babel/parser': 7.26.3 + '@babel/parser': 7.26.5 '@vue/compiler-core': 3.5.13 '@vue/compiler-dom': 3.5.13 '@vue/compiler-ssr': 3.5.13 '@vue/shared': 3.5.13 estree-walker: 2.0.2 magic-string: 0.30.17 - postcss: 8.4.49 + postcss: 8.5.1 source-map-js: 1.2.1 '@vue/compiler-ssr@3.5.13': @@ -1148,13 +2896,13 @@ snapshots: '@vue/compiler-dom': 3.5.13 '@vue/shared': 3.5.13 - '@vue/devtools-api@7.6.8': + '@vue/devtools-api@7.7.0': dependencies: - '@vue/devtools-kit': 7.6.8 + '@vue/devtools-kit': 7.7.0 - '@vue/devtools-kit@7.6.8': + '@vue/devtools-kit@7.7.0': dependencies: - '@vue/devtools-shared': 7.6.8 + '@vue/devtools-shared': 7.7.0 birpc: 0.2.19 hookable: 5.5.3 mitt: 3.0.1 @@ -1162,7 +2910,7 @@ snapshots: speakingurl: 14.0.1 superjson: 2.2.2 - '@vue/devtools-shared@7.6.8': + '@vue/devtools-shared@7.7.0': dependencies: rfdc: 1.4.1 @@ -1182,86 +2930,165 @@ snapshots: '@vue/shared': 3.5.13 csstype: 3.1.3 - '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.7.2))': + '@vue/server-renderer@3.5.13(vue@3.5.13)': dependencies: '@vue/compiler-ssr': 3.5.13 '@vue/shared': 3.5.13 - vue: 3.5.13(typescript@5.7.2) + vue: 3.5.13 '@vue/shared@3.5.13': {} - '@vueuse/core@11.3.0(vue@3.5.13(typescript@5.7.2))': + '@vueuse/core@11.3.0(vue@3.5.13)': dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 11.3.0 - '@vueuse/shared': 11.3.0(vue@3.5.13(typescript@5.7.2)) - vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.2)) + '@vueuse/shared': 11.3.0(vue@3.5.13) + vue-demi: 0.14.10(vue@3.5.13) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/integrations@11.3.0(focus-trap@7.6.2)(vue@3.5.13(typescript@5.7.2))': + '@vueuse/integrations@11.3.0(focus-trap@7.6.4)(nprogress@0.2.0)(vue@3.5.13)': dependencies: - '@vueuse/core': 11.3.0(vue@3.5.13(typescript@5.7.2)) - '@vueuse/shared': 11.3.0(vue@3.5.13(typescript@5.7.2)) - vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.2)) + '@vueuse/core': 11.3.0(vue@3.5.13) + '@vueuse/shared': 11.3.0(vue@3.5.13) + vue-demi: 0.14.10(vue@3.5.13) optionalDependencies: - focus-trap: 7.6.2 + focus-trap: 7.6.4 + nprogress: 0.2.0 transitivePeerDependencies: - '@vue/composition-api' - vue '@vueuse/metadata@11.3.0': {} - '@vueuse/shared@11.3.0(vue@3.5.13(typescript@5.7.2))': + '@vueuse/shared@11.3.0(vue@3.5.13)': dependencies: - vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.2)) + vue-demi: 0.14.10(vue@3.5.13) transitivePeerDependencies: - '@vue/composition-api' - vue - algoliasearch@5.18.0: - dependencies: - '@algolia/client-abtesting': 5.18.0 - '@algolia/client-analytics': 5.18.0 - '@algolia/client-common': 5.18.0 - '@algolia/client-insights': 5.18.0 - '@algolia/client-personalization': 5.18.0 - '@algolia/client-query-suggestions': 5.18.0 - '@algolia/client-search': 5.18.0 - '@algolia/ingestion': 1.18.0 - '@algolia/monitoring': 1.18.0 - '@algolia/recommend': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + acorn@8.14.0: {} + + algoliasearch@5.19.0: + dependencies: + '@algolia/client-abtesting': 5.19.0 + '@algolia/client-analytics': 5.19.0 + '@algolia/client-common': 5.19.0 + '@algolia/client-insights': 5.19.0 + '@algolia/client-personalization': 5.19.0 + '@algolia/client-query-suggestions': 5.19.0 + '@algolia/client-search': 5.19.0 + '@algolia/ingestion': 1.19.0 + '@algolia/monitoring': 1.19.0 + '@algolia/recommend': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + binary-extensions@2.3.0: {} birpc@0.2.19: {} + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + bundle-require@5.1.0(esbuild@0.24.2): + dependencies: + esbuild: 0.24.2 + load-tsconfig: 0.2.5 + + cac@6.7.14: {} + ccount@2.0.1: {} character-entities-html4@2.1.0: {} character-entities-legacy@3.0.0: {} + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + colorette@2.0.20: {} + comma-separated-tokens@2.0.3: {} + confbox@0.1.8: {} + + consola@3.4.0: {} + + copy-anything@2.0.6: + dependencies: + is-what: 3.14.1 + copy-anything@3.0.5: dependencies: is-what: 4.1.16 + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + csstype@3.1.3: {} + date-fns@4.1.0: {} + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + defu@6.1.4: {} + dequal@2.0.3: {} + destr@2.0.3: {} + devlop@1.1.0: dependencies: dequal: 2.0.3 + duplexer@0.1.2: {} + emoji-regex-xs@1.0.0: {} entities@4.5.0: {} + errno@0.1.8: + dependencies: + prr: 1.0.1 + optional: true + + es-toolkit@1.31.0: {} + esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -1288,15 +3115,153 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + + esbuild@0.24.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.2 + '@esbuild/android-arm': 0.24.2 + '@esbuild/android-arm64': 0.24.2 + '@esbuild/android-x64': 0.24.2 + '@esbuild/darwin-arm64': 0.24.2 + '@esbuild/darwin-x64': 0.24.2 + '@esbuild/freebsd-arm64': 0.24.2 + '@esbuild/freebsd-x64': 0.24.2 + '@esbuild/linux-arm': 0.24.2 + '@esbuild/linux-arm64': 0.24.2 + '@esbuild/linux-ia32': 0.24.2 + '@esbuild/linux-loong64': 0.24.2 + '@esbuild/linux-mips64el': 0.24.2 + '@esbuild/linux-ppc64': 0.24.2 + '@esbuild/linux-riscv64': 0.24.2 + '@esbuild/linux-s390x': 0.24.2 + '@esbuild/linux-x64': 0.24.2 + '@esbuild/netbsd-arm64': 0.24.2 + '@esbuild/netbsd-x64': 0.24.2 + '@esbuild/openbsd-arm64': 0.24.2 + '@esbuild/openbsd-x64': 0.24.2 + '@esbuild/sunos-x64': 0.24.2 + '@esbuild/win32-arm64': 0.24.2 + '@esbuild/win32-ia32': 0.24.2 + '@esbuild/win32-x64': 0.24.2 + + esprima@4.0.1: {} + estree-walker@2.0.2: {} - focus-trap@7.6.2: + execa@9.5.2: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.6 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.0 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.2.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.1 + + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fastq@1.18.0: + dependencies: + reusify: 1.0.4 + + fdir@6.4.2(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + focus-trap@7.6.4: dependencies: tabbable: 6.2.0 fsevents@2.3.3: optional: true + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + + get-tsconfig@4.8.1: + dependencies: + resolve-pkg-maps: 1.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + globals@15.14.0: {} + + globby@14.0.2: + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.3 + ignore: 5.3.2 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + + graceful-fs@4.2.11: + optional: true + + gray-matter@4.0.3: + dependencies: + js-yaml: 3.14.1 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + hast-util-to-html@9.0.4: dependencies: '@types/hast': 3.0.4 @@ -1319,14 +3284,116 @@ snapshots: html-void-elements@3.0.0: {} + human-signals@8.0.0: {} + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + + ignore@5.3.2: {} + + image-size@0.5.5: + optional: true + + importx@0.5.1: + dependencies: + bundle-require: 5.1.0(esbuild@0.24.2) + debug: 4.4.0 + esbuild: 0.24.2 + jiti: 2.4.2 + pathe: 1.1.2 + tsx: 4.19.2 + transitivePeerDependencies: + - supports-color + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-extendable@0.1.1: {} + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-plain-obj@4.1.0: {} + + is-stream@4.0.1: {} + + is-unicode-supported@2.1.0: {} + + is-what@3.14.1: {} + is-what@4.1.16: {} + isexe@2.0.0: {} + + jiti@2.4.2: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + kind-of@6.0.3: {} + + kolorist@1.8.0: {} + + less@4.2.1: + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.8.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + + load-tsconfig@0.2.5: {} + + local-pkg@0.5.1: + dependencies: + mlly: 1.7.4 + pkg-types: 1.3.1 + magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + optional: true + mark.js@8.11.1: {} + markdown-it-attrs@4.3.1(markdown-it@14.1.0): + dependencies: + markdown-it: 14.1.0 + + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + mdast-util-to-hast@13.2.0: dependencies: '@types/hast': 3.0.4 @@ -1339,6 +3406,12 @@ snapshots: unist-util-visit: 5.0.0 vfile: 6.0.3 + mdn-data@2.12.2: {} + + mdurl@2.0.0: {} + + merge2@1.4.1: {} + micromark-util-character@2.1.1: dependencies: micromark-util-symbol: 2.0.1 @@ -1356,23 +3429,94 @@ snapshots: micromark-util-types@2.0.1: {} + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime@1.6.0: + optional: true + minisearch@7.1.1: {} mitt@3.0.1: {} + mlly@1.7.4: + dependencies: + acorn: 8.14.0 + pathe: 2.0.1 + pkg-types: 1.3.1 + ufo: 1.5.4 + + mrmime@2.0.0: {} + + ms@2.1.3: {} + nanoid@3.3.8: {} - oniguruma-to-es@0.8.1: + needle@3.3.1: + dependencies: + iconv-lite: 0.6.3 + sax: 1.4.1 + optional: true + + node-fetch-native@1.6.4: {} + + normalize-path@3.0.0: {} + + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + + nprogress@0.2.0: {} + + ofetch@1.4.1: + dependencies: + destr: 2.0.3 + node-fetch-native: 1.6.4 + ufo: 1.5.4 + + oniguruma-to-es@2.0.0: dependencies: emoji-regex-xs: 1.0.0 regex: 5.1.1 regex-recursion: 5.1.1 + package-manager-detector@0.2.8: {} + + parse-ms@4.0.0: {} + + parse-node-version@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-type@5.0.0: {} + + pathe@1.1.2: {} + + pathe@2.0.1: {} + perfect-debounce@1.0.0: {} picocolors@1.1.1: {} - postcss@8.4.49: + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pify@4.0.1: + optional: true + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.7.4 + pathe: 2.0.1 + + postcss@8.5.1: dependencies: nanoid: 3.3.8 picocolors: 1.1.1 @@ -1380,8 +3524,23 @@ snapshots: preact@10.25.4: {} + pretty-ms@9.2.0: + dependencies: + parse-ms: 4.0.0 + property-information@6.5.0: {} + prr@1.0.1: + optional: true + + punycode.js@2.3.1: {} + + queue-microtask@1.2.3: {} + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + regex-recursion@5.1.1: dependencies: regex: 5.1.1 @@ -1393,64 +3552,153 @@ snapshots: dependencies: regex-utilities: 2.3.0 + resolve-pkg-maps@1.0.0: {} + + reusify@1.0.4: {} + rfdc@1.4.1: {} - rollup@4.29.1: + rollup@4.30.1: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.29.1 - '@rollup/rollup-android-arm64': 4.29.1 - '@rollup/rollup-darwin-arm64': 4.29.1 - '@rollup/rollup-darwin-x64': 4.29.1 - '@rollup/rollup-freebsd-arm64': 4.29.1 - '@rollup/rollup-freebsd-x64': 4.29.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.29.1 - '@rollup/rollup-linux-arm-musleabihf': 4.29.1 - '@rollup/rollup-linux-arm64-gnu': 4.29.1 - '@rollup/rollup-linux-arm64-musl': 4.29.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.29.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.29.1 - '@rollup/rollup-linux-riscv64-gnu': 4.29.1 - '@rollup/rollup-linux-s390x-gnu': 4.29.1 - '@rollup/rollup-linux-x64-gnu': 4.29.1 - '@rollup/rollup-linux-x64-musl': 4.29.1 - '@rollup/rollup-win32-arm64-msvc': 4.29.1 - '@rollup/rollup-win32-ia32-msvc': 4.29.1 - '@rollup/rollup-win32-x64-msvc': 4.29.1 + '@rollup/rollup-android-arm-eabi': 4.30.1 + '@rollup/rollup-android-arm64': 4.30.1 + '@rollup/rollup-darwin-arm64': 4.30.1 + '@rollup/rollup-darwin-x64': 4.30.1 + '@rollup/rollup-freebsd-arm64': 4.30.1 + '@rollup/rollup-freebsd-x64': 4.30.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.30.1 + '@rollup/rollup-linux-arm-musleabihf': 4.30.1 + '@rollup/rollup-linux-arm64-gnu': 4.30.1 + '@rollup/rollup-linux-arm64-musl': 4.30.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.30.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.30.1 + '@rollup/rollup-linux-riscv64-gnu': 4.30.1 + '@rollup/rollup-linux-s390x-gnu': 4.30.1 + '@rollup/rollup-linux-x64-gnu': 4.30.1 + '@rollup/rollup-linux-x64-musl': 4.30.1 + '@rollup/rollup-win32-arm64-msvc': 4.30.1 + '@rollup/rollup-win32-ia32-msvc': 4.30.1 + '@rollup/rollup-win32-x64-msvc': 4.30.1 fsevents: 2.3.3 - search-insights@2.13.0: {} + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safer-buffer@2.1.2: + optional: true + + sax@1.4.1: + optional: true + + search-insights@2.17.3: {} + + section-matter@1.0.0: + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + + semver@5.7.2: + optional: true + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} - shiki@1.24.4: + shiki@1.27.2: dependencies: - '@shikijs/core': 1.24.4 - '@shikijs/engine-javascript': 1.24.4 - '@shikijs/engine-oniguruma': 1.24.4 - '@shikijs/types': 1.24.4 - '@shikijs/vscode-textmate': 9.3.1 + '@shikijs/core': 1.27.2 + '@shikijs/engine-javascript': 1.27.2 + '@shikijs/engine-oniguruma': 1.27.2 + '@shikijs/langs': 1.27.2 + '@shikijs/themes': 1.27.2 + '@shikijs/types': 1.27.2 + '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 + signal-exit@4.1.0: {} + + sirv@3.0.0: + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.0 + totalist: 3.0.1 + + slash@5.1.0: {} + source-map-js@1.2.1: {} + source-map@0.6.1: + optional: true + space-separated-tokens@2.0.2: {} speakingurl@14.0.1: {} + sprintf-js@1.0.3: {} + stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 + strip-bom-string@1.0.0: {} + + strip-final-newline@4.0.0: {} + superjson@2.2.2: dependencies: copy-anything: 3.0.5 tabbable@6.2.0: {} + tinyexec@0.3.2: {} + + tinyglobby@0.2.10: + dependencies: + fdir: 6.4.2(picomatch@4.0.2) + picomatch: 4.0.2 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + totalist@3.0.1: {} + trim-lines@3.0.1: {} - typescript@5.7.2: {} + tslib@2.8.1: {} + + tsx@4.19.2: + dependencies: + esbuild: 0.23.1 + get-tsconfig: 4.8.1 + optionalDependencies: + fsevents: 2.3.3 + + uc.micro@2.1.0: {} + + ufo@1.5.4: {} + + unconfig@0.6.0: + dependencies: + '@antfu/utils': 0.7.10 + defu: 6.1.4 + importx: 0.5.1 + transitivePeerDependencies: + - supports-color + + uncrypto@0.1.3: {} + + undici-types@6.20.0: {} + + unicorn-magic@0.1.0: {} + + unicorn-magic@0.3.0: {} unist-util-is@6.0.0: dependencies: @@ -1475,6 +3723,33 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 + unocss@65.4.2(postcss@8.5.1)(rollup@4.30.1)(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(less@4.2.1)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13): + dependencies: + '@unocss/astro': 65.4.2(rollup@4.30.1)(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(less@4.2.1)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13) + '@unocss/cli': 65.4.2(rollup@4.30.1) + '@unocss/core': 65.4.2 + '@unocss/postcss': 65.4.2(postcss@8.5.1) + '@unocss/preset-attributify': 65.4.2 + '@unocss/preset-icons': 65.4.2 + '@unocss/preset-mini': 65.4.2 + '@unocss/preset-tagify': 65.4.2 + '@unocss/preset-typography': 65.4.2 + '@unocss/preset-uno': 65.4.2 + '@unocss/preset-web-fonts': 65.4.2 + '@unocss/preset-wind': 65.4.2 + '@unocss/transformer-attributify-jsx': 65.4.2 + '@unocss/transformer-compile-class': 65.4.2 + '@unocss/transformer-directives': 65.4.2 + '@unocss/transformer-variant-group': 65.4.2 + '@unocss/vite': 65.4.2(rollup@4.30.1)(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(less@4.2.1)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13) + optionalDependencies: + vite: 6.0.7(@types/node@22.10.7)(jiti@2.4.2)(less@4.2.1)(tsx@4.19.2)(yaml@2.7.0) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + - vue + vfile-message@4.0.2: dependencies: '@types/unist': 3.0.3 @@ -1485,36 +3760,55 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite@5.4.11: + vite@5.4.11(@types/node@22.10.7)(less@4.2.1): dependencies: esbuild: 0.21.5 - postcss: 8.4.49 - rollup: 4.29.1 + postcss: 8.5.1 + rollup: 4.30.1 + optionalDependencies: + '@types/node': 22.10.7 + fsevents: 2.3.3 + less: 4.2.1 + + vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(less@4.2.1)(tsx@4.19.2)(yaml@2.7.0): + dependencies: + esbuild: 0.24.2 + postcss: 8.5.1 + rollup: 4.30.1 optionalDependencies: + '@types/node': 22.10.7 fsevents: 2.3.3 + jiti: 2.4.2 + less: 4.2.1 + tsx: 4.19.2 + yaml: 2.7.0 + + vitepress-plugin-nprogress@0.0.4: + dependencies: + nprogress: 0.2.0 - vitepress@1.5.0(@algolia/client-search@5.18.0)(postcss@8.4.49)(search-insights@2.13.0)(typescript@5.7.2): + vitepress@1.5.0(@algolia/client-search@5.19.0)(@types/node@22.10.7)(@types/react@18.3.18)(less@4.2.1)(nprogress@0.2.0)(postcss@8.5.1)(search-insights@2.17.3): dependencies: '@docsearch/css': 3.8.2 - '@docsearch/js': 3.8.2(@algolia/client-search@5.18.0)(search-insights@2.13.0) - '@iconify-json/simple-icons': 1.2.17 - '@shikijs/core': 1.24.4 - '@shikijs/transformers': 1.24.4 - '@shikijs/types': 1.24.4 + '@docsearch/js': 3.8.2(@algolia/client-search@5.19.0)(@types/react@18.3.18)(search-insights@2.17.3) + '@iconify-json/simple-icons': 1.2.20 + '@shikijs/core': 1.27.2 + '@shikijs/transformers': 1.27.2 + '@shikijs/types': 1.27.2 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.1(vite@5.4.11)(vue@3.5.13(typescript@5.7.2)) - '@vue/devtools-api': 7.6.8 + '@vitejs/plugin-vue': 5.2.1(vite@5.4.11(@types/node@22.10.7)(less@4.2.1))(vue@3.5.13) + '@vue/devtools-api': 7.7.0 '@vue/shared': 3.5.13 - '@vueuse/core': 11.3.0(vue@3.5.13(typescript@5.7.2)) - '@vueuse/integrations': 11.3.0(focus-trap@7.6.2)(vue@3.5.13(typescript@5.7.2)) - focus-trap: 7.6.2 + '@vueuse/core': 11.3.0(vue@3.5.13) + '@vueuse/integrations': 11.3.0(focus-trap@7.6.4)(nprogress@0.2.0)(vue@3.5.13) + focus-trap: 7.6.4 mark.js: 8.11.1 minisearch: 7.1.1 - shiki: 1.24.4 - vite: 5.4.11 - vue: 3.5.13(typescript@5.7.2) + shiki: 1.27.2 + vite: 5.4.11(@types/node@22.10.7)(less@4.2.1) + vue: 3.5.13 optionalDependencies: - postcss: 8.4.49 + postcss: 8.5.1 transitivePeerDependencies: - '@algolia/client-search' - '@types/node' @@ -1543,18 +3837,28 @@ snapshots: - typescript - universal-cookie - vue-demi@0.14.10(vue@3.5.13(typescript@5.7.2)): + vue-demi@0.14.10(vue@3.5.13): + dependencies: + vue: 3.5.13 + + vue-flow-layout@0.1.1(vue@3.5.13): dependencies: - vue: 3.5.13(typescript@5.7.2) + vue: 3.5.13 - vue@3.5.13(typescript@5.7.2): + vue@3.5.13: dependencies: '@vue/compiler-dom': 3.5.13 '@vue/compiler-sfc': 3.5.13 '@vue/runtime-dom': 3.5.13 - '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.7.2)) + '@vue/server-renderer': 3.5.13(vue@3.5.13) '@vue/shared': 3.5.13 - optionalDependencies: - typescript: 5.7.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + yaml@2.7.0: {} + + yoctocolors@2.1.1: {} zwitch@2.0.4: {}
+ {{ value.title === undefined ? value.type.toUpperCase() : value.title }} +