Halo 文档
+查找安装、使用和开发 Halo 所需的文档。
+ +diff --git a/.agents/skills/rspress-best-practices/SKILL.md b/.agents/skills/rspress-best-practices/SKILL.md new file mode 100644 index 00000000..af0370b9 --- /dev/null +++ b/.agents/skills/rspress-best-practices/SKILL.md @@ -0,0 +1,82 @@ +--- +name: rspress-best-practices +description: Rspress best practices for config, CLI workflow, content organization, frontmatter, MDX, themes, i18n, search, static assets, deployment, and debugging. Use when writing, reviewing, or troubleshooting Rspress documentation sites. +--- + +# Rspress Best Practices + +Apply these rules when writing or reviewing Rspress (v2) sites. + +## Configuration + +- Use `rspress.config.ts` and `defineConfig` from `@rspress/core` +- Set `root` explicitly when docs are not under the default `docs/` directory +- Keep site-wide settings such as `title`, `description`, `icon`, `logo`, `base`, and `lang` in config instead of repeating them in page files +- Prefer first-class Rspress options before custom theme code or low-level bundler overrides +- Keep custom theme code in a top-level `theme/` directory and import original theme pieces from `@rspress/core/theme-original` + +## CLI + +- Use `rspress dev` for local development +- Use `rspress build` for production output +- Use `rspress preview` only for local preview of the built site +- Use `rspress eject` only when CSS variables, class overrides, or layout wrapping cannot solve the customization + +## Docs Structure And Navigation + +- Keep docs content under one clear docs root and group pages by topic or workflow, not by team ownership +- Use `_meta.json` or `_nav.json` to control sidebar and navigation labels/order instead of encoding order in filenames +- Put reusable MDX snippets or shared components in shared files instead of duplicating them across pages +- Keep landing pages concise and link to deeper task-oriented guides from them + +## Writing And Frontmatter + +- Add clear `title` and `description` frontmatter, and set `sidebar`, `outline`, `navbar`, or `footer` only when page defaults are not enough +- Use `pageType: home`, `doc`, `doc-wide`, `custom`, or `blank` intentionally based on layout needs +- Write task-first headings and short intros; avoid marketing-heavy copy in technical docs +- Prefer one topic per page and split overly long pages by workflow or feature area +- Keep code examples minimal, runnable, and version-accurate + +## MDX And Components + +- Use MDX for interactive docs and embedded components, but keep the main narrative understandable as plain markdown +- Prefer documented Rspress theme/runtime APIs over importing from internal source paths +- For app-wide UI or providers, use `globalUIComponents` or theme overrides instead of repeating imports in each page + +## Theme And Styling + +- Prefer CSS variables for brand colors, spacing, and surface styling +- Prefer BEM class overrides or `Layout` slots before ejecting built-in components +- In `theme/` files, keep `export * from '@rspress/core/theme-original'` unless intentionally replacing a named export +- Avoid full component ejection unless config, CSS, and wrapping cannot meet the requirement + +## I18n, Search, And AI + +- For multilingual sites, organize locale content under per-language directories and keep navigation mirrored where practical +- Keep descriptions and other frontmatter text in the same language as the page content +- Configure search intentionally: use local search for small or medium sites, and hosted search when scale or cross-version indexing requires it +- Enable `llms` or `ssgMd` only when the site benefits from machine-readable outputs, and keep descriptions accurate because those outputs surface page summaries + +## Assets And Public Files + +- Import source-managed images and components from docs/theme source when they belong to the content +- Use `public/` only for assets that must keep stable URL paths, such as favicons, social images, or download files +- Reference public assets by absolute site path and make sure they still work when `base` is set + +## Plugins And Integration + +- Prefer official Rspress plugins for search, preview, and API-doc scenarios before building custom solutions +- For component or library docs, use `@rspress/plugin-preview` and `@rspress/plugin-api-docgen` when interactive demos or API tables are needed +- Keep plugin usage explicit in config and remove unused plugins to reduce maintenance cost + +## Build, Deploy, And Debugging + +- Validate both `rspress dev` and `rspress build`; a page that works in dev can still fail during static generation +- Verify broken links, missing assets, and wrong `base` handling before deployment +- Keep generated output out of source control unless the hosting workflow explicitly requires committed artifacts +- When debugging content issues, inspect the resolved docs root, frontmatter, and theme overrides before assuming a bundler problem + +## Documentation + +- For the latest Rspress docs, read https://rspress.rs/llms.txt +- Use the config and API docs when checking exact option names or current behavior diff --git a/.agents/skills/rspress-custom-theme/SKILL.md b/.agents/skills/rspress-custom-theme/SKILL.md new file mode 100644 index 00000000..2ee763cf --- /dev/null +++ b/.agents/skills/rspress-custom-theme/SKILL.md @@ -0,0 +1,242 @@ +--- +name: rspress-custom-theme +description: Customize Rspress themes using CSS variables, Layout slots, component wrapping, or component ejection. Use when a user wants to change the look and feel of an Rspress site, override theme components, add custom navigation/sidebar/footer content, inject global providers, or modify the default Rspress theme in any way. Also use when a user mentions theme/index.tsx, Layout slots, BEM class overrides, or rspress eject. +--- + +# Rspress Custom Theme + +Guide for customizing Rspress (v2) themes. Rspress offers four levels of customization, from lightest to heaviest. Always prefer the lightest approach that meets the requirement — lighter approaches are more maintainable and survive Rspress upgrades. + +## Workflow + +1. **Understand the user's goal** — what do they want to change? (colors, layout, inject content, replace a component entirely?) +2. **Pick the right level** using the decision flow below +3. **Set up `theme/index.tsx`** if needed (Levels 1A, 3, 4 all need it) +4. **Implement** following the patterns in this skill and reference files +5. **Verify** the user's Rspress version is v2 (imports use `@rspress/core/*` not `rspress/*`) + +## Decision Flow + +| User wants to... | Level | Approach | +| ---------------------------------------------------------------- | ----- | --------------------------- | +| Change brand colors, fonts, spacing, shadows | 1 | CSS variables | +| Adjust a specific component's style (borders, padding, etc.) | 2 | BEM class overrides | +| Add content around existing components (banners, footers, logos) | 3 | Layout slots (wrap) | +| Override MDX rendering (custom `
`, etc.) | 3 | `components` slot |
+| Wrap the app in a provider (state, analytics, auth) | 4 | Eject `Root` |
+| Replace built-in icons (logo, GitHub, search, etc.) | — | Icon re-export |
+| Completely replace a built-in component | 4 | Eject that component |
+| Add a global floating component (back-to-top, chat widget) | — | `globalUIComponents` config |
+| Control page layout structure (hide sidebar, blank page) | — | Frontmatter `pageType` |
+
+---
+
+## theme/index.tsx — The Entry Point
+
+Levels 1A, 3, and 4 all require a `theme/index.tsx` file in the project root (sibling to `docs/`). This is the single entry point for all theme customizations:
+
+```text
+project/
+├── docs/
+├── theme/
+│ ├── index.tsx # Theme entry — re-exports + overrides
+│ ├── index.css # CSS variable / BEM overrides (optional)
+│ └── components/ # Ejected components (Level 4)
+└── rspress.config.ts
+```
+
+Minimal setup:
+
+```tsx
+// theme/index.tsx
+import './index.css'; // optional
+export * from '@rspress/core/theme-original';
+```
+
+**Critical import rule**: Inside `theme/` files, always import from `@rspress/core/theme-original`. The path `@rspress/core/theme` resolves to your own `theme/index.tsx`, which causes circular imports. (In `docs/` MDX files, `@rspress/core/theme` is fine — it correctly points to your custom theme.)
+
+---
+
+## Level 1: CSS Variables
+
+Override CSS custom properties for brand colors, backgrounds, text, code blocks, and more.
+
+**Option A** — `theme/index.css` (use when you also have component overrides in `theme/index.tsx`):
+
+```css
+/* theme/index.css */
+:root {
+ --rp-c-brand: #7c3aed;
+ --rp-c-brand-light: #8b5cf6;
+ --rp-c-brand-dark: #6d28d9;
+}
+.dark {
+ --rp-c-brand: #a78bfa;
+}
+```
+
+**Option B** — `globalStyles` (use when you only need CSS changes, no component overrides):
+
+```ts
+// rspress.config.ts
+export default defineConfig({
+ globalStyles: path.join(__dirname, 'styles/custom.css'),
+});
+```
+
+> **Full variable list**: Read `references/css-variables.md` for all available CSS variables with light/dark defaults.
+
+---
+
+## Level 2: BEM Class Overrides
+
+All built-in components follow BEM naming: `.rp-[component]__[element]--[modifier]`.
+
+Common targets: `.rp-nav`, `.rp-link`, `.rp-tabs`, `.rp-codeblock`, `.rp-codeblock__title`, `.rp-nav-menu__item--active`.
+
+Use these in your CSS file for targeted style changes when CSS variables aren't granular enough.
+
+---
+
+## Level 3: Wrap (Layout Slots)
+
+Inject content at specific positions in the layout without replacing built-in components. Override `Layout` in `theme/index.tsx`:
+
+```tsx
+// theme/index.tsx
+import { Layout as OriginalLayout } from '@rspress/core/theme-original';
+export * from '@rspress/core/theme-original';
+
+export function Layout() {
+ return (
+ } bottom={ } />
+ );
+}
+```
+
+Use runtime hooks inside slot components — import from `@rspress/core/runtime`: `useDark()`, `useLang()`, `useVersion()`, `usePage()`, `useSite()`, `useFrontmatter()`, `useI18n()`.
+
+> **All slots & examples**: Read `references/layout-slots.md` for the complete slot list and usage patterns including i18n and MDX component overrides.
+
+---
+
+## Level 4: Eject
+
+Copy a built-in component's source for full replacement. Only use when wrap/slots cannot achieve the customization.
+
+```bash
+rspress eject # list available components
+rspress eject DocFooter # eject to theme/components/DocFooter/
+```
+
+Then re-export in `theme/index.tsx` (named export takes precedence over the wildcard):
+
+```tsx
+export * from '@rspress/core/theme-original';
+export { DocFooter } from './components/DocFooter';
+```
+
+> **Component list & patterns**: Read `references/eject-components.md` for available components, workflow, and common patterns.
+
+---
+
+## Custom Icons
+
+Rspress has 27 built-in icons used across the UI. You can replace any of them by re-exporting your own icon component with the same name — no ejection needed. This uses the same `theme/index.tsx` mechanism: your named export takes precedence over the wildcard re-export.
+
+**Icon type**: Each icon is a React component or a URL string:
+
+```ts
+import type { FC, SVGProps } from 'react';
+type Icon = FC> | string;
+```
+
+**Example 1** — Replace an icon with a custom SVG component:
+
+```tsx
+// theme/index.tsx
+export * from '@rspress/core/theme-original';
+
+// Named export overrides the wildcard — replaces the GitHub icon site-wide
+export const IconGithub = (props: React.SVGProps) => (
+
+);
+```
+
+**Example 2** — Use an SVGR import:
+
+```tsx
+// theme/index.tsx
+export * from '@rspress/core/theme-original';
+
+import CustomGithubIcon from './icons/github.svg?react';
+export const IconGithub = CustomGithubIcon;
+```
+
+**Using `SvgWrapper` in MDX or custom components**:
+
+```mdx
+import { SvgWrapper, IconGithub } from '@rspress/core/theme';
+
+
+```
+
+**Available icons**: `IconArrowDown`, `IconArrowRight`, `IconClose`, `IconCopy`, `IconDeprecated`, `IconDown`, `IconEdit`, `IconEmpty`, `IconExperimental`, `IconExternalLink`, `IconFile`, `IconGithub`, `IconGitlab`, `IconHeader`, `IconJump`, `IconLink`, `IconLoading`, `IconMenu`, `IconMoon`, `IconScrollToTop`, `IconSearch`, `IconSmallMenu`, `IconSuccess`, `IconSun`, `IconTitle`, `IconWrap`, `IconWrapped`.
+
+> **Source**: See the [icons source](https://github.com/web-infra-dev/rspress/blob/main/packages/core/src/theme/icons.ts) for default implementations.
+
+---
+
+## Global UI Components
+
+For components that should render on every page without theme overrides:
+
+```ts
+// rspress.config.ts
+export default defineConfig({
+ globalUIComponents: [
+ path.join(__dirname, 'components', 'BackToTop.tsx'),
+ [
+ path.join(__dirname, 'components', 'Analytics.tsx'),
+ { trackingId: '...' },
+ ],
+ ],
+});
+```
+
+---
+
+## Page Types
+
+Control layout per page via frontmatter `pageType`:
+
+| Value | Description |
+| ---------- | ------------------------------------- |
+| `home` | Home page with navbar |
+| `doc` | Standard doc with sidebar and outline |
+| `doc-wide` | Doc without sidebar/outline |
+| `custom` | Custom content with navbar only |
+| `blank` | Custom content without navbar |
+| `404` | 404 error page |
+
+Fine-grained: set `navbar: false`, `sidebar: false`, `outline: false`, `footer: false` individually.
+
+---
+
+## Common Pitfalls
+
+- **Circular import**: Using `@rspress/core/theme` instead of `@rspress/core/theme-original` in `theme/` files — causes infinite loop.
+- **Eject over-use**: Ejecting when a Layout slot or CSS variable would suffice — creates upgrade burden.
+- **Missing re-export**: Forgetting `export * from '@rspress/core/theme-original'` in `theme/index.tsx` — breaks all un-overridden components.
+- **v1 imports**: Using `rspress/theme` or `@rspress/theme-default` — these are v1 paths. v2 uses `@rspress/core/theme-original`.
+
+## Reference
+
+- Custom theme guide:
+- CSS variables:
+- Layout component:
+- Built-in icons:
+- Built-in hooks:
+- CLI commands (eject):
diff --git a/.agents/skills/rspress-custom-theme/references/css-variables.md b/.agents/skills/rspress-custom-theme/references/css-variables.md
new file mode 100644
index 00000000..a06573c0
--- /dev/null
+++ b/.agents/skills/rspress-custom-theme/references/css-variables.md
@@ -0,0 +1,177 @@
+# CSS Variables Reference
+
+Complete list of CSS variables exposed by Rspress for theme customization.
+
+- **Override location**: `theme/index.css` or `globalStyles` in `rspress.config.ts`
+- **Dark mode selector**: `.dark { ... }`
+- **Official docs**:
+
+---
+
+## Brand Colors (shared)
+
+```css
+:root {
+ --rp-c-brand: #0095ff;
+ --rp-c-brand-light: #33adff;
+ --rp-c-brand-lighter: #c6e0fd;
+ --rp-c-brand-dark: #0077ff;
+ --rp-c-brand-darker: #005fcc;
+ --rp-c-brand-tint: rgba(127, 163, 255, 0.16);
+}
+```
+
+## Base Variables
+
+| Variable | Light | Dark |
+| ---------------------- | --------------------- | ------------------------ |
+| `--rp-c-bg` | `#ffffff` | `#121212` |
+| `--rp-c-bg-soft` | `#f8f8f9` | `#292e37` |
+| `--rp-c-bg-mute` | `#f1f1f1` | `#343a46` |
+| `--rp-c-bg-alt` | `#fff` | `#000` |
+| `--rp-c-divider` | `rgba(0, 0, 0, 0.25)` | `rgba(84, 84, 84, 0.65)` |
+| `--rp-c-divider-light` | `rgba(0, 0, 0, 0.12)` | `rgba(84, 84, 84, 0.48)` |
+
+## Text Colors
+
+| Variable | Light | Dark |
+| --------------- | ------------------------ | --------------------------- |
+| `--rp-c-text-0` | `#000000` | `#ffffff` |
+| `--rp-c-text-1` | `#242424` | `rgba(255, 255, 245, 0.93)` |
+| `--rp-c-text-2` | `rgba(0, 0, 0, 0.7)` | `rgba(255, 255, 245, 0.65)` |
+| `--rp-c-text-3` | `rgba(60, 60, 60, 0.33)` | `rgba(235, 235, 235, 0.38)` |
+| `--rp-c-text-4` | `rgba(60, 60, 60, 0.18)` | `rgba(235, 235, 235, 0.18)` |
+| `--rp-c-link` | `var(--rp-c-brand-dark)` | `var(--rp-c-brand-light)` |
+
+## Inline Code
+
+| Variable | Light | Dark |
+| ------------------------- | --------------------------- | --------------------------- |
+| `--rp-c-text-code` | `#476582` | `#c9def1` |
+| `--rp-c-text-code-bg` | `rgba(153, 161, 179, 0.06)` | `rgba(255, 255, 255, 0.06)` |
+| `--rp-c-text-code-border` | `rgba(0, 0, 0, 0.035)` | `rgba(255, 255, 255, 0.04)` |
+
+## Code Blocks
+
+| Variable | Light | Dark |
+| ------------------------ | ------------------------------------- | ------------------------------------- |
+| `--rp-code-font-size` | `0.875rem` | `0.875rem` |
+| `--rp-code-title-bg` | `#f8f8f9` | `#191919` |
+| `--rp-code-block-color` | `rgb(46, 52, 64)` | `rgb(229, 231, 235)` |
+| `--rp-code-block-bg` | `var(--rp-c-bg)` | `var(--rp-c-bg)` |
+| `--rp-code-block-border` | `1px solid var(--rp-c-divider-light)` | `1px solid var(--rp-c-divider-light)` |
+| `--rp-code-block-shadow` | `none` | `none` |
+
+## Shiki Syntax Highlighting
+
+Rspress uses `.dark` on `html` as the public dark-mode toggle for general theme overrides. The Shiki token blocks below target `html:not(.rp-dark)` and `html.rp-dark`, which Rspress uses internally for syntax highlighting variables.
+
+### Light
+
+```css
+html:not(.rp-dark) {
+ --shiki-foreground: inherit;
+ --shiki-background: transparent;
+ --shiki-token-constant: #1976d2;
+ --shiki-token-string: #31a94d;
+ --shiki-token-comment: rgb(182, 180, 180);
+ --shiki-token-keyword: #cf2727;
+ --shiki-token-parameter: #f59403;
+ --shiki-token-function: #7041c8;
+ --shiki-token-string-expression: #218438;
+ --shiki-token-punctuation: #242323;
+ --shiki-token-link: #22863a;
+ --shiki-token-deleted: #d32828;
+ --shiki-token-inserted: #22863a;
+}
+```
+
+### Dark
+
+```css
+html.rp-dark {
+ --shiki-foreground: inherit;
+ --shiki-background: transparent;
+ --shiki-token-constant: #6fb0fa;
+ --shiki-token-string: #f9a86e;
+ --shiki-token-comment: #6a727b;
+ --shiki-token-keyword: #f47481;
+ --shiki-token-parameter: #ff9800;
+ --shiki-token-function: #ae8eeb;
+ --shiki-token-string-expression: #4fb74d;
+ --shiki-token-punctuation: #bbbbbb;
+ --shiki-token-link: #f9a76d;
+ --shiki-token-deleted: #ee6d7a;
+ --shiki-token-inserted: #36c47f;
+}
+```
+
+## Grays (shared)
+
+```css
+:root {
+ --rp-c-gray: #8e8e8e;
+ --rp-c-gray-light-1: #aeaeae;
+ --rp-c-gray-light-2: #c7c7c7;
+ --rp-c-gray-light-3: #d1d1d1;
+ --rp-c-gray-light-4: #e5e5e5;
+ --rp-c-gray-light-5: #f2f2f2;
+}
+```
+
+## Shadows (shared)
+
+```css
+:root {
+ --rp-shadow-1: 0 1px 2px rgba(0, 0, 0, 0.02), 0 1px 0 rgba(0, 0, 0, 0.06);
+ --rp-shadow-2: 0 3px 12px rgba(0, 0, 0, 0.06), 0 1px 4px rgba(0, 0, 0, 0.07);
+ --rp-shadow-3: 0 12px 32px rgba(0, 0, 0, 0.1), 0 2px 6px rgba(0, 0, 0, 0.08);
+ --rp-shadow-4: 0 14px 44px rgba(0, 0, 0, 0.12), 0 3px 9px rgba(0, 0, 0, 0.12);
+ --rp-shadow-5:
+ 0 18px 56px rgba(0, 0, 0, 0.16), 0 4px 12px rgba(0, 0, 0, 0.16);
+}
+```
+
+## Radius (shared)
+
+```css
+:root {
+ --rp-radius: 1rem;
+ --rp-radius-small: 0.5rem;
+ --rp-radius-large: 1.5rem;
+}
+```
+
+## Home Page
+
+Note: `...` in gradient values marks omitted gradient parameters, not literal CSS. See the official docs link above for complete values.
+
+| Variable | Light | Dark |
+| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
+| `--rp-home-hero-secondary-color` | `#a673ff` | `#a673ff` |
+| `--rp-home-hero-title-color` | `transparent` | `transparent` |
+| `--rp-home-hero-title-bg` | `linear-gradient(90deg, var(--rp-c-brand-dark) 0%, var(--rp-c-brand-dark) 30%, var(--rp-home-hero-secondary-color) 100%)` | (same) |
+| `--rp-home-background-bg` | `radial-gradient(...), radial-gradient(...), radial-gradient(...), #fff` | `radial-gradient(...), radial-gradient(...), radial-gradient(...), #121212` |
+| `--rp-home-feature-bg` | `linear-gradient(135deg, #fff, #f9f9f980)` | `linear-gradient(135deg, #ffffff00, #ffffff08)` |
+
+## Quick Start
+
+```css
+/* Example brand color overrides for the custom theme scaffold. */
+/* For more CSS variables, see https://rspress.rs/ui/vars. */
+:root {
+ --rp-c-brand: #ff5e00;
+ --rp-c-brand-dark: #ff704d;
+ --rp-c-brand-darker: #ff704d;
+ --rp-c-brand-light: #ff7524;
+ --rp-c-brand-lighter: #ff7524;
+ --rp-c-brand-tint: rgba(255, 94, 0, 0.07);
+
+ --rp-home-hero-secondary-color: #ff5e00;
+}
+
+.dark {
+ --rp-c-brand: #ff8c4d;
+ --rp-home-hero-secondary-color: #ff8c4d;
+}
+```
diff --git a/.agents/skills/rspress-custom-theme/references/eject-components.md b/.agents/skills/rspress-custom-theme/references/eject-components.md
new file mode 100644
index 00000000..235800fe
--- /dev/null
+++ b/.agents/skills/rspress-custom-theme/references/eject-components.md
@@ -0,0 +1,154 @@
+# Eject Components Reference
+
+Eject copies a built-in component's source code into your project for full customization. This is the heaviest approach — ejected components do not receive automatic updates when Rspress upgrades. Prefer CSS variables, BEM overrides, or Layout slots whenever possible.
+
+Official reference:
+
+---
+
+## Eject Command
+
+```bash
+# List all available components
+rspress eject
+
+# Eject a specific component
+rspress eject
+```
+
+Ejected source is placed in `theme/components//`.
+
+## Available Components
+
+| Component | Description | Consider wrapping first? |
+| ---------------- | ----------------------------------------- | ------------------------------------------------ |
+| `Layout` | Main layout container with all slot props | Yes — use Layout slots instead |
+| `Root` | Application root wrapper | Only eject for global providers |
+| `Banner` | Notification banner at top of page | Check `top` slot first |
+| `NavTitle` | Navigation logo and title | Check `navTitle` / `beforeNavTitle` slots |
+| `HomeLayout` | Complete home page layout | Check home page slots first |
+| `HomeHero` | Hero section on home page | Check `beforeHero` / `afterHero` slots |
+| `HomeFeature` | Feature grid cards | Check `beforeFeatures` / `afterFeatures` slots |
+| `HomeBackground` | Home page background effects | Try CSS variables first |
+| `HomeFooter` | Home page footer | Check `bottom` slot first |
+| `DocFooter` | Documentation page footer | Check `beforeDocFooter` / `afterDocFooter` slots |
+| `EditLink` | "Edit this page" link | Configure via `themeConfig.editLink` |
+| `LastUpdated` | Last updated timestamp | Usually config is enough |
+| `PrevNextPage` | Previous/next page navigation | Check `beforeDocFooter` slot |
+| `OverviewGroup` | Overview page group cards | — |
+| `Tag` | Tag/label component | — |
+
+## Step-by-Step Eject Workflow
+
+1. **Eject the component:**
+
+ ```bash
+ rspress eject DocFooter
+ ```
+
+2. **Re-export in theme/index.tsx:**
+
+ ```tsx
+ // theme/index.tsx
+ export * from '@rspress/core/theme-original';
+ export { DocFooter } from './components/DocFooter';
+ ```
+
+ The named export takes precedence over the wildcard re-export, so Rspress uses your custom version.
+
+3. **Modify the ejected source** in `theme/components/DocFooter/`.
+
+## Common Pattern: Root for Global Providers
+
+The most common eject use case is wrapping the entire app in a context provider (state management, analytics, auth, etc.):
+
+```tsx
+// theme/components/Root/index.tsx
+import type { RootProps } from '@rspress/core/theme';
+
+export function Root({ children }: RootProps) {
+ return (
+
+ {children}
+
+ );
+}
+```
+
+```tsx
+// theme/index.tsx
+export * from '@rspress/core/theme-original';
+export { Root } from './components/Root';
+```
+
+## Common Pattern: Custom Home Page (HomeLayout)
+
+When the default home page structure (Hero + Features) doesn't meet the design requirements — for example, you need a completely different landing page with custom sections, animations, or a non-standard layout — write a custom `HomeLayout` component and re-export it directly:
+
+```tsx
+// theme/components/HomeLayout/index.tsx
+import { useSite, useLang } from '@rspress/core/runtime';
+
+export function HomeLayout() {
+ const site = useSite();
+ const lang = useLang();
+ const { title, description } = site.siteData;
+
+ return (
+
+
+ {title}
+ {description}
+
+
+ Get Started
+
+
+ GitHub
+
+
+
+
+
+ {/* Custom content: testimonials, stats, demos, etc. */}
+
+
+ );
+}
+```
+
+```tsx
+// theme/index.tsx
+export * from '@rspress/core/theme-original';
+export { HomeLayout } from './components/HomeLayout';
+```
+
+The named export overrides the built-in `HomeLayout` from the wildcard re-export — no need to eject first.
+
+If you only need to add content before/after the Hero or Features sections (without replacing the entire home page), prefer Layout slots (`beforeHero`, `afterHero`, `beforeFeatures`, `afterFeatures`) instead — see `references/layout-slots.md`.
+
+## Common Pattern: Custom Doc Footer
+
+```tsx
+// theme/components/DocFooter/index.tsx
+import { useFrontmatter } from '@rspress/core/runtime';
+
+export function DocFooter() {
+ const frontmatter = useFrontmatter();
+ return (
+
+ );
+}
+```
+
+## Important Notes
+
+- Always import from `@rspress/core/theme-original` in `theme/` files, never from `@rspress/core/theme` (the latter resolves to your own `theme/index.tsx`, causing circular imports).
+- After ejecting, you own that component. Track Rspress changelogs for upstream changes you might want to incorporate manually.
+- Run `rspress eject` (no args) to see the up-to-date list of available components — the list above may change between Rspress versions.
diff --git a/.agents/skills/rspress-custom-theme/references/layout-slots.md b/.agents/skills/rspress-custom-theme/references/layout-slots.md
new file mode 100644
index 00000000..1774218c
--- /dev/null
+++ b/.agents/skills/rspress-custom-theme/references/layout-slots.md
@@ -0,0 +1,153 @@
+# Layout Slots Reference
+
+The `Layout` component accepts slot props (`React.ReactNode`) for injecting content at specific positions without replacing built-in components. This is the recommended way to extend Rspress before considering eject.
+
+Official reference:
+
+---
+
+## All Available Slots
+
+### Navigation Bar
+
+| Slot | Position |
+| ---------------- | ------------------------------------ |
+| `beforeNav` | Before the entire navigation bar |
+| `afterNav` | After the entire navigation bar |
+| `beforeNavTitle` | Before the nav title/logo (top-left) |
+| `navTitle` | Replaces the nav title content |
+| `afterNavTitle` | After the nav title/logo |
+| `beforeNavMenu` | Before the nav menu items |
+| `afterNavMenu` | After the nav menu items |
+
+### Sidebar & Outline
+
+| Slot | Position |
+| --------------- | ----------------------------------- |
+| `beforeSidebar` | Above the left sidebar |
+| `afterSidebar` | Below the left sidebar |
+| `beforeOutline` | Above the right outline (TOC) panel |
+| `afterOutline` | Below the right outline panel |
+
+### Home Page
+
+| Slot | Position |
+| ---------------- | ------------------------ |
+| `beforeHero` | Before the Hero section |
+| `afterHero` | After the Hero section |
+| `beforeFeatures` | Before the Features grid |
+| `afterFeatures` | After the Features grid |
+
+### Doc Page
+
+| Slot | Position |
+| ------------------ | ------------------------------------- |
+| `beforeDoc` | At the very beginning of the doc page |
+| `afterDoc` | At the very end of the doc page |
+| `beforeDocContent` | Before the document content area |
+| `afterDocContent` | After the document content area |
+| `beforeDocFooter` | Before the doc footer (prev/next nav) |
+| `afterDocFooter` | After the doc footer |
+
+### Global
+
+| Slot | Position |
+| ------------ | ---------------------------------------------------------------------- |
+| `top` | At the very top of the entire page |
+| `bottom` | At the very bottom of the entire page |
+| `components` | Custom MDX component overrides (`Record`) |
+
+---
+
+## Usage Pattern
+
+All examples below follow the same structure in `theme/index.tsx`. The key parts:
+
+- Import `Layout` from `@rspress/core/theme-original` (not `@rspress/core/theme` — that causes circular imports)
+- Re-export everything: `export * from '@rspress/core/theme-original'`
+- Export your custom `Layout` that wraps the original with slot props
+
+### Basic — Single Slot
+
+```tsx
+// theme/index.tsx
+import { Layout as OriginalLayout } from '@rspress/core/theme-original';
+export * from '@rspress/core/theme-original';
+
+export function Layout() {
+ return } />;
+}
+```
+
+### Multiple Slots
+
+```tsx
+// theme/index.tsx
+import { Layout as OriginalLayout } from '@rspress/core/theme-original';
+export * from '@rspress/core/theme-original';
+
+export function Layout() {
+ return (
+ New version released!}
+ bottom={}
+ afterOutline={Related resources}
+ />
+ );
+}
+```
+
+### With i18n Hooks
+
+```tsx
+// theme/index.tsx
+import { Layout as OriginalLayout } from '@rspress/core/theme-original';
+import { useLang } from '@rspress/core/runtime';
+export * from '@rspress/core/theme-original';
+
+function LocalizedBanner() {
+ const lang = useLang();
+ return {lang === 'zh' ? '欢迎' : 'Welcome'};
+}
+
+export function Layout() {
+ return } />;
+}
+```
+
+### Override MDX Components
+
+The `components` slot accepts a `Record` to override how MDX elements render:
+
+```tsx
+// theme/index.tsx
+import { Layout as OriginalLayout } from '@rspress/core/theme-original';
+export * from '@rspress/core/theme-original';
+
+function CustomH1({ children }: { children: React.ReactNode }) {
+ return (
+ {children}
+ );
+}
+
+export function Layout() {
+ return ;
+}
+```
+
+---
+
+## Available Hooks
+
+Use these hooks inside slot components. Import from `@rspress/core/runtime`.
+
+| Hook | Purpose |
+| ------------------ | ----------------------------------- |
+| `useDark()` | Returns whether dark mode is active |
+| `useLang()` | Returns current language code |
+| `useVersion()` | Returns current doc version |
+| `usePage()` | Returns current page metadata |
+| `usePages()` | Returns all pages metadata |
+| `useSite()` | Returns site-level configuration |
+| `useFrontmatter()` | Returns current page frontmatter |
+| `useI18n()` | Returns i18n translation function |
diff --git a/.agents/skills/rspress-description-generator/SKILL.md b/.agents/skills/rspress-description-generator/SKILL.md
new file mode 100644
index 00000000..5c5f760c
--- /dev/null
+++ b/.agents/skills/rspress-description-generator/SKILL.md
@@ -0,0 +1,118 @@
+---
+name: rspress-description-generator
+description: Generate and maintain description frontmatter for Rspress documentation files (.md/.mdx). Use when a user wants to add SEO descriptions, improve search engine snippets, generate llms.txt metadata, prepare docs for AI summarization, or batch-update frontmatter across an Rspress doc site. Also use when adding new documentation pages to an Rspress project — every new doc file needs a description.
+---
+
+# Rspress Description Generator
+
+The `description` field in Rspress frontmatter generates `` tags, which are used for search engine snippets, social media previews, and AI-oriented formats like llms.txt.
+
+## Step 1 — Locate the docs root
+
+1. Find the Rspress config file. Search for `rspress.config.ts`, `.js`, `.mjs`, or `.cjs`. It may be at the project root or inside a subdirectory like `website/`.
+2. Read the config and extract the `root` option.
+ - The value might be a plain string (`root: 'docs'`) or a JS expression (`root: path.join(__dirname, 'docs')`). In either case, determine the resolved directory path.
+ - If `root` is set, resolve it relative to the config file's directory.
+ - If `root` is not set, default to `docs` relative to the config file's directory.
+3. Confirm the directory exists. If neither `docs` nor the configured root exists, check for `doc` as a fallback.
+
+## Step 2 — Detect i18n structure
+
+Rspress i18n projects place language subdirectories (e.g., `en/`, `zh/`) directly under the docs root:
+
+```
+docs/
+├── en/
+│ ├── guide/
+│ └── index.md
+└── zh/
+ ├── guide/
+ └── index.md
+```
+
+Check if the docs root contains language subdirectories (two-letter codes like `en`, `zh`, `ja`, `ko`, etc.). If so, process each language directory separately — the description language should match the content language.
+
+If there are no language subdirectories, treat the entire docs root as a single-language site.
+
+## Step 3 — Scan and process files
+
+Glob for `**/*.md` and `**/*.mdx` under the docs root. Exclude:
+
+- `node_modules`, build output (`doc_build`, `.rspress`, `dist`)
+- `_meta.json` / `_nav.json` (sidebar/nav config files, not doc pages)
+- `**/shared/**` directories (reusable snippets included via `@import`, not standalone pages)
+
+For each file:
+
+1. **Read the file.**
+2. **Check for existing `description` in frontmatter.** If it exists and is non-empty, skip.
+3. **Check `pageType` in frontmatter.** For `home` pages, derive the description from the `hero.text` / `hero.tagline` fields or the features list, not from body content.
+4. **Generate a description** following the writing guidelines below.
+5. **Insert `description` into frontmatter:**
+ - If the file has frontmatter with a `title` field, insert `description` on the line after `title`.
+ - If the file has frontmatter without `title`, insert `description` as the first field.
+ - If the file has no frontmatter block, add one:
+
+ ```yaml
+ ---
+ description: Your generated description here
+ ---
+ ```
+
+### YAML formatting
+
+Most descriptions can be bare YAML strings:
+
+```yaml
+description: Step-by-step guide to setting up your first Rspress site
+```
+
+If the description contains colons, quotes, or other special YAML characters, wrap in double quotes:
+
+```yaml
+description: 'API reference for Rspress configuration: plugins, themes, and build options'
+```
+
+## Step 4 — Batch processing
+
+For sites with many files, use parallel agent calls to process independent files simultaneously. Group by directory (e.g., all files in `guide/`, then all in `api/`) to maintain focus and consistency within each section.
+
+After processing all files, do a quick scan to ensure no files were missed — re-glob and check for any remaining files without `description`.
+
+## Description Writing Guidelines
+
+The description serves three audiences: search engines (Google snippet), AI systems (llms.txt, summarization), and humans (scanning search results). A good description helps all three.
+
+### Rules
+
+- **Length**: 50–160 characters. Under 50 is too vague for search engines; over 160 gets truncated in snippets.
+- **Language**: Match the document content. Chinese docs get Chinese descriptions, English docs get English descriptions.
+- **Be direct**: State what the page covers. Avoid starting with "This document", "This page", "Learn about" — jump straight to the substance.
+- **Be specific**: Mention concrete technologies, APIs, or concepts the page covers. "Configure Rspress plugins for search, analytics, and internationalization" beats "How to use plugins."
+- **No markdown**: Plain text only, no formatting syntax.
+
+### Examples
+
+**Good:**
+
+| Content | Description |
+| -------------------------- | ---------------------------------------------------------------------------- |
+| Plugin development guide | Create custom Rspress plugins using the Node.js plugin API and runtime hooks |
+| MDX component usage | Import and use React components in MDX documentation files |
+| Rspress 快速开始 | 从安装到本地预览,搭建 Rspress 文档站点的完整流程 |
+| 主题配置 | 自定义 Rspress 主题的导航栏、侧边栏、页脚和暗色模式 |
+| Home page (pageType: home) | Rspress documentation framework — fast, MDX-powered static site generator |
+
+**Bad:**
+
+| Description | Why |
+| ------------------------------------------------------- | ------------------------------------------------ |
+| "About plugins" | Too vague — which plugins? what about them? |
+| "This page explains how to configure the Rspress theme" | Wastes characters on "This page explains how to" |
+| "Learn everything about Rspress!" | Marketing fluff, says nothing specific |
+
+## Documentation
+
+- Frontmatter fields:
+- Basic config (`root` option):
+- Full Rspress docs:
diff --git a/.claude/skills/rspress-best-practices b/.claude/skills/rspress-best-practices
new file mode 120000
index 00000000..0785fd57
--- /dev/null
+++ b/.claude/skills/rspress-best-practices
@@ -0,0 +1 @@
+../../.agents/skills/rspress-best-practices
\ No newline at end of file
diff --git a/.claude/skills/rspress-custom-theme b/.claude/skills/rspress-custom-theme
new file mode 120000
index 00000000..5e838133
--- /dev/null
+++ b/.claude/skills/rspress-custom-theme
@@ -0,0 +1 @@
+../../.agents/skills/rspress-custom-theme
\ No newline at end of file
diff --git a/.claude/skills/rspress-description-generator b/.claude/skills/rspress-description-generator
new file mode 120000
index 00000000..142a0156
--- /dev/null
+++ b/.claude/skills/rspress-description-generator
@@ -0,0 +1 @@
+../../.agents/skills/rspress-description-generator
\ No newline at end of file
diff --git a/.editorconfig b/.editorconfig
deleted file mode 100644
index 45b5839a..00000000
--- a/.editorconfig
+++ /dev/null
@@ -1,9 +0,0 @@
-root = true
-
-[*.md]
-indent_style = space
-indent_size = 2
-end_of_line = lf
-charset = utf-8
-trim_trailing_whitespace = false
-insert_final_newline = true
\ No newline at end of file
diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml
index d7ba4b0a..c2775e57 100644
--- a/.github/workflows/node.js.yml
+++ b/.github/workflows/node.js.yml
@@ -20,15 +20,15 @@ jobs:
- uses: pnpm/action-setup@v3
with:
- version: 10
+ version: 11
- uses: actions/setup-node@v4
with:
- node-version: "20"
+ node-version: "24"
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Lint
- run: pnpm lint
\ No newline at end of file
+ run: pnpm check:ci
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index f167dfd3..35f8d286 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,24 +1,15 @@
-# Dependencies
-/node_modules
-
-# Production
-/build
-
-# Generated files
-.docusaurus
-.cache-loader
-
-# Misc
+# Local
.DS_Store
-.env.local
-.env.development.local
-.env.test.local
-.env.production.local
-
-# Editor
-
-.idea
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
+*.local
+*.log*
+
+# Dist
+node_modules
+dist/
+doc_build/
+build/
+
+# IDE
+.vscode/*
+!.vscode/extensions.json
+.idea
\ No newline at end of file
diff --git a/.husky/pre-commit b/.husky/pre-commit
deleted file mode 100755
index 2c3af062..00000000
--- a/.husky/pre-commit
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-. "$(dirname "$0")/_/husky.sh"
-
-pnpm lint
diff --git a/.markdownlint.json b/.markdownlint.json
deleted file mode 100644
index 9860909a..00000000
--- a/.markdownlint.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "MD033": false,
- "MD024": false,
- "MD029": false,
- "MD041": false,
- "MD010": {
- "code_blocks": true,
- "spaces_per_tab": 4
- },
- "MD046": false,
- "line-length": false,
- "fix": true
-}
\ No newline at end of file
diff --git a/.npmrc b/.npmrc
deleted file mode 100644
index bf2e7648..00000000
--- a/.npmrc
+++ /dev/null
@@ -1 +0,0 @@
-shamefully-hoist=true
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
deleted file mode 100644
index f75b997f..00000000
--- a/.vscode/extensions.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "recommendations": ["davidanson.vscode-markdownlint"]
-}
diff --git a/.vscode/settings.json b/.vscode/settings.json
index ad67b6c8..2a2d6066 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,8 +1,13 @@
{
- "[markdown]": {
- "editor.defaultFormatter": "yzhang.markdown-all-in-one"
- },
- "i18n-ally.localesPaths": [
- "i18n"
- ]
-}
+ "json.schemas": [
+ {
+ "fileMatch": ["**/_meta.json"],
+ "url": "./node_modules/@rspress/core/meta-json-schema.json"
+ },
+ {
+ "fileMatch": ["**/_nav.json"],
+ "url": "./node_modules/@rspress/core/nav-json-schema.json"
+ }
+ ],
+ "editor.defaultFormatter": "biomejs.biome"
+}
\ No newline at end of file
diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 00000000..2d1aab0a
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,30 @@
+# Repository Guidelines
+
+## Project Structure & Module Organization
+
+This repository contains the Halo documentation site built with Rspress. Author documentation in `docs/`: user guides live under `docs/guide/`, developer material under `docs/developer-guide/`, and stable static assets under `docs/public/`. Use `_nav.json` and `_meta.json` files to control navigation labels and ordering. Site configuration belongs in `rspress.config.ts`; shared styling belongs in `styles/index.css`. The `build/` directory is generated output and must not be edited.
+
+## Build, Test, and Development Commands
+
+Use pnpm 11.24.0, as declared in `package.json`.
+
+- `pnpm install` installs dependencies.
+- `pnpm dev` starts the local Rspress development server.
+- `pnpm build` creates the production site in `build/` and checks static rendering and dead links.
+- `pnpm preview` serves the latest production build locally.
+- `pnpm check` runs Biome checks and applies safe fixes.
+- `pnpm format` formats supported files with Biome.
+
+Do not hand-edit `pnpm-lock.yaml` or other generated artifacts.
+
+## Coding Style & Naming Conventions
+
+Biome is the source of truth for TypeScript, JavaScript, JSON, and CSS formatting. Use spaces for indentation and single quotes in JavaScript/TypeScript. Keep configuration in TypeScript and prefer existing Rspress options over custom components. Name documentation files in lowercase kebab-case, such as `migrate-from-1.x.md`. Use MDX only when a page needs components; otherwise prefer Markdown. Keep headings task-oriented and code samples minimal and runnable.
+
+## Testing Guidelines
+
+There is no dedicated automated test suite or coverage threshold. Treat `pnpm build` as the required validation for documentation changes. Before submitting, open affected pages with `pnpm dev` or `pnpm preview` and verify navigation, links, code blocks, and images. For visual changes, check both desktop and narrow viewport layouts.
+
+## Commit & Pull Request Guidelines
+
+The current history contains only generic `init` commits, so it does not establish a useful convention. Write short, imperative subjects that describe the change, for example `Document offline installation`. Keep each pull request focused on one topic, explain the user-facing impact, link the relevant issue when one exists, and include screenshots for layout or styling changes. Run `pnpm check` and `pnpm build` before requesting review; avoid force-pushing after review begins.
diff --git a/OWNERS b/OWNERS
deleted file mode 100644
index ef70b5ef..00000000
--- a/OWNERS
+++ /dev/null
@@ -1,10 +0,0 @@
-reviewers:
-- ruibaby
-- guqing
-- JohnNiang
-- wan92hen
-
-approvers:
-- ruibaby
-- guqing
-- JohnNiang
diff --git a/README.md b/README.md
index ccbcf87c..96418faf 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,11 @@
# The open-source repo for [docs.halo.run](https://docs.halo.run)
-This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
+This website is built using [Rspress](https://rspress.rs/), a modern static website generator.
### Installation
```
-$ pnpm install
+pnpm install
```
> If you don’t have pnpm installed, you can install it with the following command:
@@ -17,7 +17,7 @@ npm install -g pnpm
### Local Development
```
-$ pnpm start
+pnpm start
```
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
@@ -25,7 +25,7 @@ This command starts a local development server and opens up a browser window. Mo
### Build
```
-$ pnpm build
+pnpm build
```
This command generates static content into the `build` directory and can be served using any static contents hosting service.
diff --git a/biome.json b/biome.json
new file mode 100644
index 00000000..d9d2b76c
--- /dev/null
+++ b/biome.json
@@ -0,0 +1,34 @@
+{
+ "$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
+ "assist": {
+ "actions": {
+ "source": {
+ "organizeImports": "on"
+ }
+ }
+ },
+ "vcs": {
+ "enabled": true,
+ "clientKind": "git",
+ "useIgnoreFile": true
+ },
+ "formatter": {
+ "indentStyle": "space"
+ },
+ "javascript": {
+ "formatter": {
+ "quoteStyle": "single"
+ }
+ },
+ "css": {
+ "parser": {
+ "cssModules": true
+ }
+ },
+ "linter": {
+ "enabled": true,
+ "rules": {
+ "preset": "recommended"
+ }
+ }
+}
diff --git a/context7.json b/context7.json
index fac45d77..0c9dd139 100644
--- a/context7.json
+++ b/context7.json
@@ -1,4 +1,4 @@
{
"url": "https://context7.com/halo-dev/docs",
"public_key": "pk_9qoEjMaOs3nLQ4cT00vyN"
-}
\ No newline at end of file
+}
diff --git a/docs/_nav.json b/docs/_nav.json
new file mode 100644
index 00000000..95cbe1cd
--- /dev/null
+++ b/docs/_nav.json
@@ -0,0 +1,39 @@
+[
+ {
+ "text": "使用指南",
+ "link": "/guide/",
+ "activeMatch": "/guide/",
+ "position": "left"
+ },
+ {
+ "text": "开发者指南",
+ "link": "/developer-guide/",
+ "activeMatch": "/developer-guide/",
+ "position": "left"
+ },
+ {
+ "text": "版本",
+ "items": [
+ {
+ "text": "历史版本",
+ "link": "https://github.com/halo-dev/docs/branches"
+ },
+ {
+ "text": "已归档版本",
+ "link": "https://v2.archive-docs.halo.run/"
+ }
+ ]
+ },
+ {
+ "text": "官网",
+ "link": "https://www.halo.run/"
+ },
+ {
+ "text": "论坛",
+ "link": "https://bbs.halo.run"
+ },
+ {
+ "text": "版本对比",
+ "link": "https://www.lxware.cn/halo?code=mcYhwMkn"
+ }
+]
diff --git a/docs/about.md b/docs/about.md
deleted file mode 100644
index d0eb7313..00000000
--- a/docs/about.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: 关于文档
-description: 关于本文档站点的一些说明
----
-
-:::note
-此文档使用 [Docusaurus](https://docusaurus.io/) 搭建,感谢 [Docusaurus](https://github.com/facebook/docusaurus) 社区所做的贡献。
-:::
-
-## 参与贡献
-
-:::tip
-如果你发现文档中有不正确或者需要添加的内容,非常欢迎参与到文档编辑当中。
-:::
-
-当前文档的仓库地址为 [halo-dev/docs](https://github.com/halo-dev/docs) ,所以你可以 fork 此仓库,修改之后提交 `Pull request` 等待我们合并即可。
diff --git a/docs/developer-guide/_meta.json b/docs/developer-guide/_meta.json
new file mode 100644
index 00000000..353dabe7
--- /dev/null
+++ b/docs/developer-guide/_meta.json
@@ -0,0 +1,39 @@
+[
+ {
+ "type": "file",
+ "name": "index",
+ "label": "概览"
+ },
+ {
+ "type": "dir",
+ "name": "core",
+ "label": "系统开发",
+ "collapsed": true
+ },
+ {
+ "type": "dir",
+ "name": "plugin",
+ "label": "插件开发",
+ "collapsed": true
+ },
+ {
+ "type": "dir",
+ "name": "theme",
+ "label": "主题开发",
+ "collapsed": true
+ },
+ {
+ "type": "dir",
+ "name": "restful-api",
+ "label": "RESTful API",
+ "collapsed": true
+ },
+ {
+ "type": "dir",
+ "name": "app-store",
+ "label": "应用市场",
+ "collapsed": true
+ },
+ "form-schema",
+ "annotations-form"
+]
diff --git a/docs/developer-guide/annotations-form.md b/docs/developer-guide/annotations-form.md
index 89899eaa..f7266edd 100644
--- a/docs/developer-guide/annotations-form.md
+++ b/docs/developer-guide/annotations-form.md
@@ -6,7 +6,7 @@ title: 元数据表单定义
定义元数据编辑表单同样使用 `FormKit Schema`,但和主题或插件的定义方式稍有不同,其中输入组件类型可参考 [表单定义](./form-schema.md)。
-:::info[提示]
+:::info annotations 表单值必须为字符串
因为 `metadata.annotations` 是一个键值都为字符串类型的对象,所以表单项的值必须为字符串类型。这就意味着,FormKit 的 `number`、`group`、`repeater` 等类型的输入组件都不能使用。`checkbox` 类型的输入组件应通过 `on-value` 和 `off-value` 指定字符串值,以替代默认的布尔值。
:::
diff --git a/docs/developer-guide/app-store/_meta.json b/docs/developer-guide/app-store/_meta.json
new file mode 100644
index 00000000..c76f5f2f
--- /dev/null
+++ b/docs/developer-guide/app-store/_meta.json
@@ -0,0 +1 @@
+["publish-app", "app-review-guidelines"]
diff --git a/docs/developer-guide/app-store/index.md b/docs/developer-guide/app-store/index.md
new file mode 100644
index 00000000..002a831a
--- /dev/null
+++ b/docs/developer-guide/app-store/index.md
@@ -0,0 +1,4 @@
+---
+title: 应用市场
+overview: true
+---
\ No newline at end of file
diff --git a/docs/developer-guide/core/_meta.json b/docs/developer-guide/core/_meta.json
new file mode 100644
index 00000000..165a8336
--- /dev/null
+++ b/docs/developer-guide/core/_meta.json
@@ -0,0 +1 @@
+["prepare", "run", "build", "framework"]
diff --git a/docs/developer-guide/core/build.md b/docs/developer-guide/core/build.md
index e98c0d9a..c49661bb 100644
--- a/docs/developer-guide/core/build.md
+++ b/docs/developer-guide/core/build.md
@@ -3,7 +3,7 @@ title: 构建
description: 构建为可执行 JAR 和 Docker 镜像的文档
---
-:::info
+:::info 构建前准备
在此之前,我们推荐你先阅读[《准备工作》](./prepare),检查本地环境是否满足要求。
:::
@@ -61,7 +61,7 @@ cd path/to/halo
构建完成之后,在 Halo 项目下产生的 `application/build/libs/halo-${version}.jar` 即为构建完成的文件。
-最终部署文档可参考:[使用 JAR 文件部署](../../getting-started/install/jar-file.md)。
+最终部署文档可参考:[使用 JAR 文件部署](../../guide/install/jar-file.md)。
## 构建 Docker 镜像
@@ -81,4 +81,4 @@ docker build -t halo-dev/halo:${tag_name} .
docker images | grep halo
```
-最终部署文档可参考:[使用 Docker Compose 部署](../../getting-started/install/docker-compose.md)。
+最终部署文档可参考:[使用 Docker Compose 部署](../../guide/install/docker-compose.mdx)。
diff --git a/docs/developer-guide/core/index.md b/docs/developer-guide/core/index.md
new file mode 100644
index 00000000..96cd1d53
--- /dev/null
+++ b/docs/developer-guide/core/index.md
@@ -0,0 +1,4 @@
+---
+title: 系统开发
+overview: true
+---
\ No newline at end of file
diff --git a/docs/developer-guide/core/run.md b/docs/developer-guide/core/run.md
index 46fb143e..1fcc0eea 100644
--- a/docs/developer-guide/core/run.md
+++ b/docs/developer-guide/core/run.md
@@ -3,7 +3,7 @@ title: 开发环境运行
description: 开发环境运行的指南
---
-:::info
+:::info 运行前准备
在此之前,我们推荐你先阅读[《准备工作》](./prepare),检查本地环境是否满足要求。
:::
@@ -15,7 +15,7 @@ description: 开发环境运行的指南
2. UI,包括 Console 控制台和 UC 个人中心(托管在 Halo 主项目)
3. 主题(Halo 主项目内已包含默认主题)
-:::info[说明]
+:::info UI 需要单独运行
从 Halo 2.11 开始,Halo 项目的 `ui` 目录同时包含了 Console(管理控制台)和 UC(个人中心),以下统称为 UI。
当前 Halo 主项目并不会将 UI 的构建资源托管到 Git 版本控制,所以在开发环境是需要同时运行 UI 项目的。当然,在我们的最终发布版本的时候会在 CI 中自动构建 UI 到 Halo 主项目。
@@ -56,7 +56,7 @@ VITE v8.0.0 ready in 805 ms
➜ Network: http://192.168.1.7:3000/
```
-:::info[提示]
+:::info 通过 Halo 代理访问 UI
请不要直接使用 UI 的运行端口 3000 访问,会因为跨域问题导致无法正常登录,建议按照后续的步骤以 dev 的配置文件运行 Halo,在 dev 的配置文件中,我们默认代理了 UI 页面的访问地址,所以后续访问 UI 页面使用 `http://localhost:8090/console` 和 `http://localhost:8090/uc` 访问即可,代理的相关配置:
```yaml
diff --git a/docs/developer-guide/core/structure.md b/docs/developer-guide/core/structure.md
index 66084b07..3910b853 100644
--- a/docs/developer-guide/core/structure.md
+++ b/docs/developer-guide/core/structure.md
@@ -31,6 +31,6 @@ description: Halo 项目的构成
在开发的时候,希望大家能够在 `~/halo-dev/application.yml` 中进行添加自定义配置。当然后面也会讲到如何用`运行参数` 和 `VM options` 进行控制配置,届时可根据具体情况进行选择。
-:::warning
+:::warning 不要修改源码配置文件
开发的时候,我们不建议直接更改`项目源码`中的所包含的`配置文件`,包括 `application.yml`、`application-dev.yml`、`application-test.yml` 和 `application-user.yml`。
:::
diff --git a/docs/developer-guide/form-schema.md b/docs/developer-guide/form-schema.md
index 7cd619e5..d8afb5b6 100644
--- a/docs/developer-guide/form-schema.md
+++ b/docs/developer-guide/form-schema.md
@@ -11,7 +11,7 @@ FormKit 相关文档:
- Form Schema: [https://formkit.com/essentials/schema](https://formkit.com/essentials/schema)
- FormKit Inputs: [https://formkit.com/inputs](https://formkit.com/inputs)
-:::tip
+:::tip 组件支持范围
目前不支持 FormKit Pro 中的输入组件,但 Halo 额外提供了部分输入组件,将在下面文档列出。
:::
@@ -54,7 +54,7 @@ spec:
value: ""
```
-:::tip
+:::tip YAML 与 JSON 格式转换
需要注意的是,FormKit Schema 本身应该是 JSON 格式的,但目前我们定义一个表单所使用的是 YAML,可能在参考 FormKit 写法时需要手动转换一下。
:::
@@ -225,7 +225,7 @@ spec:
fieldSelectorKey: metadata.name
```
-:::tip
+:::tip 分页数据的默认选项
当远程数据具有分页时,可能会出现默认选项不在第一页的情况,此时 Select 组件将会发送另一个查询请求,以获取默认选项的数据。此接口会携带如下参数:
```ts
@@ -241,7 +241,7 @@ fieldSelector: `${requestOption.fieldSelectorKey}=(value1,value2,value3)`
列表类型的输入组件,支持动态添加、删除数据项。
-:::tip
+:::tip list 与 array 的区别
`list` 组件与 [array](#array) 组件功能类似,但它们的用途不同。`list` 组件适合展示基本类型的数据,而 `array` 组件更适合于展示复杂类型的数据。
:::
@@ -273,7 +273,7 @@ fieldSelector: `${requestOption.fieldSelectorKey}=(value1,value2,value3)`
validation: required
```
-:::tip
+:::tip list 子节点限制
`list` 组件有且只有一个子节点,并且必须为子节点传递 `index` 属性。若想提供多个字段组成对象,则建议改为使用 [array](#array) 组件。
:::
@@ -317,7 +317,7 @@ fieldSelector: `${requestOption.fieldSelectorKey}=(value1,value2,value3)`
validation: required
```
-:::tip
+:::tip verificationForm 不改变数据结构
尽管 `verificationForm` 本身是一个输入组件,但与其他输入组件不同的是,它仅仅用于包装待验证的数据,所以并不会破坏原始数据的格式。例如上述示例中的值在保存后为:
```json
@@ -367,7 +367,7 @@ UI 效果:
### ~~repeater~~(已过时)
-:::warning
+:::warning 请使用 array 组件
`repeater` 组件已不再推荐使用,请使用 [array](#array) 组件代替。
:::
@@ -418,7 +418,7 @@ UI 效果:
value: ""
```
-:::tip
+:::tip 设置 repeater 默认值
使用 `repeater` 类型时,一定要设置默认值,如果不需要默认有任何元素,可以设置为 `[]`。
:::
@@ -443,7 +443,7 @@ UI 效果:
#### 描述
-:::info
+:::info Halo 2.22 的 attachment 类型变更
在 Halo 2.22 中,我们重构了原有的 attachment 表单类型,支持了预览和直接上传文件,并将旧版的表单类型更名为了 [attachmentInput](#attachmentinput)。
:::
@@ -531,7 +531,7 @@ UI 效果:
value: []
```
-:::info
+:::info menuSelect 兼容 select 参数
menuSelect 基于 select,并兼容 select 的[参数](#select-params)。
:::
@@ -733,7 +733,7 @@ UI 效果:
- `emptyText`: 当数组为空时显示的文本
- `itemLabels`: 列表元素上显示的内容,数据类型为 `{ type: "image" | "text" | "iconify"; label: string }[]`
-:::tip
+:::tip 建议设置 itemLabels
强烈建议为 `array` 设置 `itemLabels` 属性,以便于更直观的展示元素内容,设置的元素内容将按照设置顺序展示在列表元素上。
在 `itemLabels` 中定义 `label` 时,可以使用 `$value` 来指向当前项的值。
@@ -768,7 +768,7 @@ UI 效果:
value: ""
```
-:::warning
+:::warning itemLabels 的条件限制
由于目前无法通过单个 `itemLabels` 定义涵盖所有子项变动的情况,因此在 `itemLabels` 中使用 `$value` ,无法获取到具有 `if` 属性的组件值。
例如:
@@ -877,7 +877,7 @@ UI 效果:
密钥输入组件,用于选择一个密钥资源。
-:::note
+:::note 使用 Secret 存储敏感数据
在 Halo 中,我们提供了一种更加安全的数据存储模型,即 Secret,通常我们使用 Secret 来存储敏感数据,比如密码、token、密钥等。
主要注意的是,此表单类型通常与后端配合使用,需要在后端查询密钥资源。
diff --git a/docs/developer-guide/index.md b/docs/developer-guide/index.md
new file mode 100644
index 00000000..7f5d48de
--- /dev/null
+++ b/docs/developer-guide/index.md
@@ -0,0 +1,4 @@
+---
+title: 开发者指南
+overview: true
+---
\ No newline at end of file
diff --git a/docs/developer-guide/plugin/_meta.json b/docs/developer-guide/plugin/_meta.json
new file mode 100644
index 00000000..f235b542
--- /dev/null
+++ b/docs/developer-guide/plugin/_meta.json
@@ -0,0 +1,42 @@
+[
+ "introduction",
+ "prepare",
+ "hello-world",
+ {
+ "type": "dir",
+ "name": "basics",
+ "label": "基础",
+ "collapsed": true
+ },
+ {
+ "type": "dir",
+ "name": "api-reference",
+ "label": "API 参考",
+ "collapsed": true
+ },
+ {
+ "type": "dir",
+ "name": "extension-points",
+ "label": "扩展点和定制化",
+ "collapsed": true
+ },
+ {
+ "type": "dir",
+ "name": "interaction",
+ "label": "与其他插件交互",
+ "collapsed": true
+ },
+ {
+ "type": "dir",
+ "name": "security",
+ "label": "安全和权限管理",
+ "collapsed": true
+ },
+ {
+ "type": "dir",
+ "name": "examples",
+ "label": "案例和最佳实践",
+ "collapsed": true
+ },
+ "api-changelog"
+]
diff --git a/docs/developer-guide/plugin/api-reference/_meta.json b/docs/developer-guide/plugin/api-reference/_meta.json
new file mode 100644
index 00000000..ce18bcb4
--- /dev/null
+++ b/docs/developer-guide/plugin/api-reference/_meta.json
@@ -0,0 +1,14 @@
+[
+ {
+ "type": "dir",
+ "name": "server",
+ "label": "服务端",
+ "collapsed": true
+ },
+ {
+ "type": "dir",
+ "name": "ui",
+ "label": "UI",
+ "collapsed": true
+ }
+]
diff --git a/docs/developer-guide/plugin/api-reference/index.md b/docs/developer-guide/plugin/api-reference/index.md
new file mode 100644
index 00000000..04e975ba
--- /dev/null
+++ b/docs/developer-guide/plugin/api-reference/index.md
@@ -0,0 +1,4 @@
+---
+title: API 参考
+overview: true
+---
\ No newline at end of file
diff --git a/docs/developer-guide/plugin/api-reference/server/_meta.json b/docs/developer-guide/plugin/api-reference/server/_meta.json
new file mode 100644
index 00000000..5e099afa
--- /dev/null
+++ b/docs/developer-guide/plugin/api-reference/server/_meta.json
@@ -0,0 +1,13 @@
+[
+ "extension",
+ "reconciler",
+ "extension-client",
+ "setting-fetcher",
+ "reverseproxy",
+ "notification",
+ "finder-for-theme",
+ "template-for-theme",
+ "websocket",
+ "login-handler-enhancer",
+ "extension-getter"
+]
diff --git a/docs/developer-guide/plugin/api-reference/server/extension-client.md b/docs/developer-guide/plugin/api-reference/server/extension-client.md
index bc50b131..75e17016 100644
--- a/docs/developer-guide/plugin/api-reference/server/extension-client.md
+++ b/docs/developer-guide/plugin/api-reference/server/extension-client.md
@@ -160,7 +160,7 @@ ListOptions.builder()
在 `FieldSelector` 中使用的所有字段都必须添加为索引,否则会抛出异常表示不支持该字段。关于如何使用索引请参考 [自定义模型使用索引](./extension.md#using-indexes)。
-:::note
+:::note 使用 Queries 构建查询
从 2.22.0 开始,`QueryFactory` 已过时,请使用 `Queries` 创建查询条件。取反查询可以通过 `Queries.not(condition)` 或 `condition.not()` 构建。
diff --git a/docs/developer-guide/plugin/api-reference/server/extension-getter.md b/docs/developer-guide/plugin/api-reference/server/extension-getter.md
index 80f0e348..b1e52497 100644
--- a/docs/developer-guide/plugin/api-reference/server/extension-getter.md
+++ b/docs/developer-guide/plugin/api-reference/server/extension-getter.md
@@ -47,7 +47,7 @@ public interface ExtensionGetter {
2. `getEnabledExtensions(Class extensionPoint)`: 根据传入的扩展点类获取所有已启用扩展。如果没有在扩展设置页面配置过则会返回所有可用的扩展。
3. `getExtensions(Class extensionPointClass)`: 获取所有与扩展点类相关的扩展,无论是否在扩展设置中启用它。
-:::tip
+:::tip 根据扩展点类型选择方法
使用 `getEnabledExtension` 方法或者 `getEnabledExtensions` 方法取决于扩展点声明的 `type` 是 `SINGLETON` 还是 `MULTI_INSTANCE`。
通过使用 `ExtensionGetter`,开发者可以轻松地在插件中访问和管理各种扩展点,提升插件的功能和灵活性。
diff --git a/docs/developer-guide/plugin/api-reference/server/extension.md b/docs/developer-guide/plugin/api-reference/server/extension.md
index 5e14d759..b53cf84d 100644
--- a/docs/developer-guide/plugin/api-reference/server/extension.md
+++ b/docs/developer-guide/plugin/api-reference/server/extension.md
@@ -206,7 +206,7 @@ public void start() {
- keyType:索引值类型,必须实现 `Comparable`,例如 `String`、`Boolean`、`Integer`、`Long`、`Instant` 等。
- indexFunc:索引函数,用于获取索引值,接收当前自定义模型对象。单值索引返回一个 `keyType` 类型的值,可以返回 `null`;多值索引返回 `Set`。
-:::note
+:::note 使用新版索引 API
从 2.22.0 开始,`IndexAttributeFactory.simpleAttribute()`、`IndexAttributeFactory.multiValueAttribute()` 和直接创建 `new IndexSpec()` 的写法已过时,请优先使用 `IndexSpecs.single()` 和 `IndexSpecs.multi()`。
@@ -223,7 +223,7 @@ Halo 默认会为每个自定义模型建立以下几个索引,因此不需要
创建了索引的字段可以在查询时使用 `fieldSelector` 参数来查询,参考 [自定义模型 API](#extension-apis)。
-:::tip
+:::tip 为查询字段创建索引
- 索引是一种存储数据结构,可提供对数据集中字段的高效查找。
- 索引将自定义模型中的字段映射到数据库行,以便在查询特定字段时不需要完整的扫描。
diff --git a/docs/developer-guide/plugin/api-reference/server/index.md b/docs/developer-guide/plugin/api-reference/server/index.md
new file mode 100644
index 00000000..32f60f52
--- /dev/null
+++ b/docs/developer-guide/plugin/api-reference/server/index.md
@@ -0,0 +1,4 @@
+---
+title: 服务端 API 参考
+overview: true
+---
\ No newline at end of file
diff --git a/docs/developer-guide/plugin/api-reference/server/template-for-theme.md b/docs/developer-guide/plugin/api-reference/server/template-for-theme.md
index d6a1af88..3353fee7 100644
--- a/docs/developer-guide/plugin/api-reference/server/template-for-theme.md
+++ b/docs/developer-guide/plugin/api-reference/server/template-for-theme.md
@@ -12,7 +12,7 @@ description: 了解如何为主题扩充模板。
首先,你需要在插件的 `resources` 目录下创建一个 `templates` 目录,然后在 `templates` 目录下提供你的模板,例如:
-```text
+```tree
├── templates
│ ├── moment.html
```
diff --git a/docs/developer-guide/plugin/api-reference/ui/_meta.json b/docs/developer-guide/plugin/api-reference/ui/_meta.json
new file mode 100644
index 00000000..c3bc4804
--- /dev/null
+++ b/docs/developer-guide/plugin/api-reference/ui/_meta.json
@@ -0,0 +1,12 @@
+[
+ "route",
+ "api-request",
+ "formkit",
+ "shared",
+ {
+ "type": "dir",
+ "name": "components",
+ "label": "组件",
+ "collapsed": true
+ }
+]
diff --git a/docs/developer-guide/plugin/api-reference/ui/api-request.md b/docs/developer-guide/plugin/api-reference/ui/api-request.md
index 22ed281d..5c8384f4 100644
--- a/docs/developer-guide/plugin/api-reference/ui/api-request.md
+++ b/docs/developer-guide/plugin/api-reference/ui/api-request.md
@@ -67,6 +67,6 @@ axiosInstance.get("/apis/foo.halo.run/v1alpha1/bar").then(response => {
直接从 `axios` 导入的是共享的标准 Axios 模块,不包含 Halo 的认证配置。请勿修改它的全局 defaults 或 interceptors;需要独立配置时使用 `axios.create()`。`@halo-dev/api-client` 导出的 `axiosInstance` 是另一个带有 Halo 认证和统一错误处理的实例,也不应修改它的 defaults 或 interceptors。
-:::info[提醒]
+:::info 同步提高 Halo 版本要求
如果插件中使用了 `@halo-dev/api-client@2.17.0` 和 `@halo-dev/ui-plugin-bundler-kit@2.17.0`,需要提升 `plugin.yaml` 中的 `spec.requires` 版本为 `>=2.17.0`。
:::
diff --git a/docs/developer-guide/plugin/api-reference/ui/components/_meta.json b/docs/developer-guide/plugin/api-reference/ui/components/_meta.json
new file mode 100644
index 00000000..22c2258d
--- /dev/null
+++ b/docs/developer-guide/plugin/api-reference/ui/components/_meta.json
@@ -0,0 +1,14 @@
+[
+ "uppy-upload",
+ "filter-dropdown",
+ "filter-clean-button",
+ "annotations-form",
+ "attachment-file-type-icon",
+ "attachment-selector-modal",
+ "has-permission",
+ "search-input",
+ "plugin-detail-modal",
+ "v-codemirror",
+ "v-tooltip",
+ "v-permission"
+]
diff --git a/docs/developer-guide/plugin/api-reference/ui/components/attachment-selector-modal.md b/docs/developer-guide/plugin/api-reference/ui/components/attachment-selector-modal.md
index 50f1ba9a..bbcbdae7 100644
--- a/docs/developer-guide/plugin/api-reference/ui/components/attachment-selector-modal.md
+++ b/docs/developer-guide/plugin/api-reference/ui/components/attachment-selector-modal.md
@@ -5,7 +5,7 @@ description: 附件选择组件
此组件用于调出附件选择器,以供用户选择附件。
-:::info[注意]
+:::info 仅支持 Console
此组件当前仅在 Console 中可用。
:::
diff --git a/docs/developer-guide/plugin/api-reference/ui/components/index.md b/docs/developer-guide/plugin/api-reference/ui/components/index.md
index 57741de2..5f529c70 100644
--- a/docs/developer-guide/plugin/api-reference/ui/components/index.md
+++ b/docs/developer-guide/plugin/api-reference/ui/components/index.md
@@ -1,6 +1,7 @@
---
title: 组件
description: 在 Halo UI 中可使用的组件。
+overview: true
---
此文档将介绍所有在插件中可用的组件,以及它们的使用方法和区别。
@@ -34,9 +35,3 @@ import { VButton } from "@halo-dev/components";
除了基础组件库,我们还为 Halo 的前端封装了一些业务组件和指令,这些组件已经在全局注册,你可以直接在插件中使用这些组件和指令。
以下是所有可用的业务组件和指令:
-
-```mdx-code-block
-import DocCardList from '@theme/DocCardList';
-
-
-```
diff --git a/docs/developer-guide/plugin/api-reference/ui/index.md b/docs/developer-guide/plugin/api-reference/ui/index.md
new file mode 100644
index 00000000..2c5bdea7
--- /dev/null
+++ b/docs/developer-guide/plugin/api-reference/ui/index.md
@@ -0,0 +1,4 @@
+---
+title: UI API 参考
+overview: true
+---
\ No newline at end of file
diff --git a/docs/developer-guide/plugin/api-reference/ui/route.md b/docs/developer-guide/plugin/api-reference/ui/route.md
index ce75f607..33f3184f 100644
--- a/docs/developer-guide/plugin/api-reference/ui/route.md
+++ b/docs/developer-guide/plugin/api-reference/ui/route.md
@@ -94,7 +94,7 @@ export interface RouteRecordAppend {
- `PostsRoot`(文章)
- `NotificationsRoot`(消息)
-:::info[提示]
+:::info RouteRecordRaw 类型来源
`RouteRecordRaw` 来自 Vue Router,详见 [API 文档 | Vue Router](https://router.vuejs.org/zh/api/#Type-Aliases-RouteRecordRaw)
:::
diff --git a/docs/developer-guide/plugin/basics/_meta.json b/docs/developer-guide/plugin/basics/_meta.json
new file mode 100644
index 00000000..281d9711
--- /dev/null
+++ b/docs/developer-guide/plugin/basics/_meta.json
@@ -0,0 +1,17 @@
+[
+ "structure",
+ "manifest",
+ "devtools",
+ {
+ "type": "dir",
+ "name": "server",
+ "label": "服务端",
+ "collapsed": true
+ },
+ {
+ "type": "dir",
+ "name": "ui",
+ "label": "UI",
+ "collapsed": true
+ }
+]
diff --git a/docs/developer-guide/plugin/basics/devtools.md b/docs/developer-guide/plugin/basics/devtools.md
index 22386f56..f5798332 100644
--- a/docs/developer-guide/plugin/basics/devtools.md
+++ b/docs/developer-guide/plugin/basics/devtools.md
@@ -93,7 +93,7 @@ halo {
- `debugPort`:调试模式下的调试端口号,默认是自动分配端口号,你可以修改此配置来固定调试端口号。
- `suspend`:是否在启动时挂起,如果开启则会在启动时挂起直到有调试器连接到 Halo 服务。
-:::warning
+:::warning Halo 2.20 版本兼容性
由于 Halo 2.20.0 版本更改了初始化和登录流程,如果 `halo.version` 指定 `2.20.x` 版本需要将 `run.halo.plugin.devtools` 版本升级到 `0.2.0` 及以上。
:::
@@ -123,7 +123,7 @@ logging:
run.halo.app: DEBUG
```
-更多配置项请参考 [Halo 配置列表](../../../getting-started/install/config.md#配置列表)。
+更多配置项请参考 [Halo 配置列表](../../../guide/install/config.md#配置列表)。
### haloServer 任务
@@ -357,12 +357,12 @@ const { data } = await momentsConsoleApiClient.moment.listTags({
});
```
-:::tip
+:::tip API 客户端生成流程
它会先执行 `generateOpenApiDocs` 任务根据配置访问 `/v3/api-docs/extensionApis` 获取 OpenAPI 文档,
并将 OpenAPI 的 Schema 文件保存到 `openApi.outputDir` 目录下,然后再由 `generateApiClient` 任务根据 Schema 文件生成 API 客户端代码到 `openApi.generator.outputDir` 目录下。
:::
-:::warning
+:::warning 避免误删生成目录
执行 `generateApiClient` 任务时会先删除 `openApi.generator.outputDir` 下的所有文件,因此建议将 API client 的输出目录设置为一个独立的目录,以避免误删其他文件。
执行 `generateApiClient` 前建议注释掉你所配置的 `build` 任务对应的 `dependsOn` 任务,以避免因依赖前端构建任务可能无法生成 API Client 的问题。
diff --git a/docs/developer-guide/plugin/basics/index.md b/docs/developer-guide/plugin/basics/index.md
new file mode 100644
index 00000000..a61a47dd
--- /dev/null
+++ b/docs/developer-guide/plugin/basics/index.md
@@ -0,0 +1,4 @@
+---
+title: 基础
+overview: true
+---
\ No newline at end of file
diff --git a/docs/developer-guide/plugin/basics/manifest.md b/docs/developer-guide/plugin/basics/manifest.md
index 2683243b..41945f9c 100644
--- a/docs/developer-guide/plugin/basics/manifest.md
+++ b/docs/developer-guide/plugin/basics/manifest.md
@@ -50,7 +50,7 @@ spec:
| `spec.description` | 插件的简短描述,用于说明插件的用途。 |
| `spec.license` | 插件的许可协议,包含协议名称和链接。参考:[Software License](https://en.wikipedia.org/wiki/Software_license)。 |
-:::tip
+:::tip settingName 需要对应资源
如果你在 plugin.yaml 中配置了 `settingName` 但确没有对应的 `Setting` 自定义模型资源文件,会导致插件无法启动,原因是 `Setting` 模型 `metadata.name` 为你配置的 `settingName` 的资源无法找到。
:::
@@ -100,7 +100,7 @@ halo:
- C:\path\to\halo-plugin-hello-world
```
-:::tip
+:::tip development 模式的插件加载方式
1. `development` 开发模式下,既可以运行 `fixed-plugin-path` 下的插件,也可以运行通过 `Console` 管理端安装的 JAR 格式的插件。
2. 如果使用 [DevTools 运行方式](../hello-world.md#run-with-devtools) 来开发插件,则不需要配置 `runtime-mode` 和 `fixed-plugin-path`。
diff --git a/docs/developer-guide/plugin/basics/server/_meta.json b/docs/developer-guide/plugin/basics/server/_meta.json
new file mode 100644
index 00000000..327b21f4
--- /dev/null
+++ b/docs/developer-guide/plugin/basics/server/_meta.json
@@ -0,0 +1 @@
+["lifecycle", "object-management"]
diff --git a/docs/developer-guide/plugin/basics/server/index.md b/docs/developer-guide/plugin/basics/server/index.md
new file mode 100644
index 00000000..0843e4a5
--- /dev/null
+++ b/docs/developer-guide/plugin/basics/server/index.md
@@ -0,0 +1,4 @@
+---
+title: 服务端基础
+overview: true
+---
\ No newline at end of file
diff --git a/docs/developer-guide/plugin/basics/server/lifecycle.md b/docs/developer-guide/plugin/basics/server/lifecycle.md
index 7aea5326..9c62628d 100644
--- a/docs/developer-guide/plugin/basics/server/lifecycle.md
+++ b/docs/developer-guide/plugin/basics/server/lifecycle.md
@@ -27,7 +27,7 @@ public void delete() {
1. 继承 `run.halo.app.plugin.BasePlugin` 类后,你可以重写这些方法来干预插件的生命周期,例如在插件启动时初始化一些资源,在插件停止时清理掉这些资源。
2. 一个插件项目只允许有一个类继承 `BasePlugin` 类且标记为 Bean,此时这个类将被作为插件的后端入口,如果有多个类继承了 `BasePlugin` 会导致插件无法启动或生命周期方法无法被调用。
-:::tip
+:::tip 将 BasePlugin 注册为 Bean
如果一个类继承了 `BasePlugin` 类但没有标记为 Bean,那么它将不会被 Halo 识别到,其中的生命周期方法也不会被调用。
:::
diff --git a/docs/developer-guide/plugin/basics/structure.md b/docs/developer-guide/plugin/basics/structure.md
index 3195528f..5f8e4d33 100644
--- a/docs/developer-guide/plugin/basics/structure.md
+++ b/docs/developer-guide/plugin/basics/structure.md
@@ -5,7 +5,7 @@ description: 了解插件项目的文件结构
当你创建一个新的插件项目时,典型的目录结构如下所示:
-```text
+```tree
├── ui
│ ├── src
│ │ ├── assets
@@ -50,7 +50,7 @@ description: 了解插件项目的文件结构
- `plugin.yaml`:这是插件的描述文件,位于 `src/main/resources` 目录下。该文件是必须的,包含插件的基本信息,如插件名称、版本、作者、描述以及依赖等内容。
- `resources/ui`:插件 JAR 中的推荐 UI 资源目录。Gradle 会将 `ui/build/dist` 的完整构建产物复制到 `build/resources/main/ui` 后打包,其中可能包含 `ui-plugin.json`、入口、样式、异步分块和其他静态资源。如果插件不包含 UI 部分,此目录可以忽略。
-:::warning[注意]
+:::warning 优先使用 resources/ui
从 2.11 开始,Halo 支持了 UC 个人中心,且个人中心和 Console 的插件机制共享,因此推荐使用 `resources/ui`。Halo 2.x 仍兼容旧项目使用的 `resources/console`,并优先读取 `ui`。
:::
diff --git a/docs/developer-guide/plugin/basics/ui/_meta.json b/docs/developer-guide/plugin/basics/ui/_meta.json
new file mode 100644
index 00000000..3afd53f4
--- /dev/null
+++ b/docs/developer-guide/plugin/basics/ui/_meta.json
@@ -0,0 +1 @@
+["intro", "entry", "build"]
diff --git a/docs/developer-guide/plugin/basics/ui/build.md b/docs/developer-guide/plugin/basics/ui/build.md
index 2e10700c..9cd300e3 100644
--- a/docs/developer-guide/plugin/basics/ui/build.md
+++ b/docs/developer-guide/plugin/basics/ui/build.md
@@ -269,7 +269,7 @@ export default viteConfig({
成功的 ESM 构建会额外生成保留文件 `ui-plugin.json`,并可能包含异步 JavaScript、CSS 和其他静态资源。以下目录仅作示意,实际入口和启动样式路径以 `ui-plugin.json` 为准:
-```text
+```tree
build/dist/
├── ui-plugin.json
├── main..js # 默认 ESM 入口
diff --git a/docs/developer-guide/plugin/basics/ui/index.md b/docs/developer-guide/plugin/basics/ui/index.md
new file mode 100644
index 00000000..9b047543
--- /dev/null
+++ b/docs/developer-guide/plugin/basics/ui/index.md
@@ -0,0 +1,4 @@
+---
+title: UI 基础
+overview: true
+---
\ No newline at end of file
diff --git a/docs/developer-guide/plugin/examples/index.md b/docs/developer-guide/plugin/examples/index.md
new file mode 100644
index 00000000..74adc8eb
--- /dev/null
+++ b/docs/developer-guide/plugin/examples/index.md
@@ -0,0 +1,4 @@
+---
+title: 案例和最佳实践
+overview: true
+---
\ No newline at end of file
diff --git a/docs/developer-guide/plugin/extension-points/_meta.json b/docs/developer-guide/plugin/extension-points/_meta.json
new file mode 100644
index 00000000..ce18bcb4
--- /dev/null
+++ b/docs/developer-guide/plugin/extension-points/_meta.json
@@ -0,0 +1,14 @@
+[
+ {
+ "type": "dir",
+ "name": "server",
+ "label": "服务端",
+ "collapsed": true
+ },
+ {
+ "type": "dir",
+ "name": "ui",
+ "label": "UI",
+ "collapsed": true
+ }
+]
diff --git a/docs/developer-guide/plugin/extension-points/index.md b/docs/developer-guide/plugin/extension-points/index.md
new file mode 100644
index 00000000..25613b3d
--- /dev/null
+++ b/docs/developer-guide/plugin/extension-points/index.md
@@ -0,0 +1,4 @@
+---
+title: 扩展点和定制化
+overview: true
+---
\ No newline at end of file
diff --git a/docs/developer-guide/plugin/extension-points/server/_meta.json b/docs/developer-guide/plugin/extension-points/server/_meta.json
new file mode 100644
index 00000000..705a68a6
--- /dev/null
+++ b/docs/developer-guide/plugin/extension-points/server/_meta.json
@@ -0,0 +1,18 @@
+[
+ "additional-webfilter",
+ "authentication-webfilter",
+ "attachment",
+ "comment-subject",
+ "comment-widget",
+ "element-tag-post-processor",
+ "excerpt-generator",
+ "halo-documents-provider",
+ "notifier",
+ "search-engine",
+ "template-head-processor",
+ "template-footer-processor",
+ "post-content",
+ "singlepage-content",
+ "user-creating-handler",
+ "username-password-authentication-manager"
+]
diff --git a/docs/developer-guide/plugin/extension-points/server/index.md b/docs/developer-guide/plugin/extension-points/server/index.md
index 45cb79ec..30816e61 100644
--- a/docs/developer-guide/plugin/extension-points/server/index.md
+++ b/docs/developer-guide/plugin/extension-points/server/index.md
@@ -1,6 +1,7 @@
---
-title: 扩展点
+title: 服务端扩展点
description: Halo 服务端为插件提供的扩展点接口
+overview: true
---
术语:
@@ -48,7 +49,7 @@ spec:
description: "Support sending notifications to users via email"
```
-:::tip
+:::tip 声明扩展点资源
单实例或多实例的扩展点需要声明对应的 `ExtensionPointDefinition` 自定义模型对象被称之为扩展点定义,用于描述该扩展点的信息,例如:扩展点的名称、描述、扩展点的类型等。
单实例或多实例扩展点的实现也必须声明一个对应的 `ExtensionDefinition` 自定义模型对象被称之为扩展定义,用于描述该扩展的信息,例如:扩展的名称、描述、对应扩展点的对象名称等。
@@ -57,9 +58,3 @@ spec:
关于如何在插件中声明自定义模型对象请参考:[自定义模型](../../api-reference/server/extension.md#declare-extension-object)
以下是目前已支持的扩展点列表:
-
-```mdx-code-block
-import DocCardList from '@theme/DocCardList';
-
-
-```
diff --git a/docs/developer-guide/plugin/extension-points/ui/_meta.json b/docs/developer-guide/plugin/extension-points/ui/_meta.json
new file mode 100644
index 00000000..d58cf590
--- /dev/null
+++ b/docs/developer-guide/plugin/extension-points/ui/_meta.json
@@ -0,0 +1,24 @@
+[
+ "attachment-selector-create",
+ "editor-create",
+ "plugin-self-tabs-create",
+ "default-editor-extension-create",
+ "comment-subject-ref-create",
+ "backup-tabs-create",
+ "plugin-installation-tabs-create",
+ "theme-list-tabs-create",
+ "post-list-item-operation-create",
+ "single-page-list-item-operation-create",
+ "comment-list-item-operation-create",
+ "reply-list-item-operation-create",
+ "plugin-list-item-operation-create",
+ "backup-list-item-operation-create",
+ "attachment-list-item-operation-create",
+ "theme-list-item-operation-create",
+ "plugin-list-item-field-create",
+ "post-list-item-field-create",
+ "single-page-list-item-field-create",
+ "user-detail-tabs-create",
+ "uc-user-profile-tabs-create",
+ "dashboard-widgets"
+]
diff --git a/docs/developer-guide/plugin/extension-points/ui/attachment-list-item-operation-create.md b/docs/developer-guide/plugin/extension-points/ui/attachment-list-item-operation-create.md
deleted file mode 100644
index 441f69d6..00000000
--- a/docs/developer-guide/plugin/extension-points/ui/attachment-list-item-operation-create.md
+++ /dev/null
@@ -1,98 +0,0 @@
----
-title: 附件数据列表操作菜单
-description: 扩展附件数据列表操作菜单 - attachment:list-item:operation:create
----
-
-此扩展点用于扩展附件数据列表的操作菜单项。
-
-
-
-## 定义方式
-
-```ts
-export default definePlugin({
- extensionPoints: {
- "attachment:list-item:operation:create": (
- attachment: Ref
- ): OperationItem[] | Promise[]> => {
- return [
- {
- priority: 10,
- component: markRaw(VDropdownItem),
- props: {},
- action: (item?: Attachment) => {
- // do something
- },
- label: "foo",
- hidden: false,
- permissions: [],
- children: [],
- },
- ];
- },
- },
-});
-```
-
-```mdx-code-block
-import OperationItem from "./interface/OperationItem.md";
-
-
-```
-
-## 示例
-
-此示例将实现一个下载附件到本地的操作菜单项。
-
-```ts
-import { definePlugin, type OperationItem } from "@halo-dev/ui-shared";
-import { Toast, VDropdownItem } from "@halo-dev/components";
-import { markRaw, type Ref } from "vue";
-import type { Attachment } from "@halo-dev/api-client";
-
-export default definePlugin({
- extensionPoints: {
- "attachment:list-item:operation:create": (
- attachment: Ref
- ): OperationItem[] | Promise[]> => {
- return [
- {
- priority: 10,
- component: markRaw(VDropdownItem),
- props: {},
- action: (item?: Attachment) => {
- if (!item?.status?.permalink) {
- Toast.error("该附件没有下载地址");
- return;
- }
-
- const a = document.createElement("a");
- a.href = item.status.permalink;
- a.download = item?.spec.displayName || item.metadata.name;
- a.click();
- },
- label: "下载",
- hidden: false,
- permissions: [],
- children: [],
- },
- ];
- },
- },
-});
-
-```
-
-## 实现案例
-
-- [https://github.com/halo-dev/plugin-s3](https://github.com/halo-dev/plugin-s3)
-
-## 类型定义
-
-### Attachment
-
-```mdx-code-block
-import Attachment from "./interface/Attachment.md";
-
-
-```
diff --git a/versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/attachment-list-item-operation-create.md b/docs/developer-guide/plugin/extension-points/ui/attachment-list-item-operation-create.mdx
similarity index 98%
rename from versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/attachment-list-item-operation-create.md
rename to docs/developer-guide/plugin/extension-points/ui/attachment-list-item-operation-create.mdx
index 441f69d6..63eedf12 100644
--- a/versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/attachment-list-item-operation-create.md
+++ b/docs/developer-guide/plugin/extension-points/ui/attachment-list-item-operation-create.mdx
@@ -34,11 +34,9 @@ export default definePlugin({
});
```
-```mdx-code-block
import OperationItem from "./interface/OperationItem.md";
-```
## 示例
@@ -91,8 +89,6 @@ export default definePlugin({
### Attachment
-```mdx-code-block
import Attachment from "./interface/Attachment.md";
-```
diff --git a/docs/developer-guide/plugin/extension-points/ui/backup-list-item-operation-create.md b/docs/developer-guide/plugin/extension-points/ui/backup-list-item-operation-create.md
deleted file mode 100644
index c545d7d4..00000000
--- a/docs/developer-guide/plugin/extension-points/ui/backup-list-item-operation-create.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: 备份数据列表操作菜单
-description: 扩展备份数据列表操作菜单 - backup:list-item:operation:create
----
-
-此扩展点用于扩展备份数据列表的操作菜单项。
-
-
-
-## 定义方式
-
-```ts
-export default definePlugin({
- extensionPoints: {
- "backup:list-item:operation:create": (
- backup: Ref
- ): OperationItem[] | Promise[]> => {
- return [
- {
- priority: 10,
- component: markRaw(VDropdownItem),
- props: {},
- action: (item?: Backup) => {
- // do something
- },
- label: "foo",
- hidden: false,
- permissions: [],
- children: [],
- },
- ];
- },
- },
-});
-```
-
-```mdx-code-block
-import OperationItem from "./interface/OperationItem.md";
-
-
-```
diff --git a/versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/backup-list-item-operation-create.md b/docs/developer-guide/plugin/extension-points/ui/backup-list-item-operation-create.mdx
similarity index 97%
rename from versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/backup-list-item-operation-create.md
rename to docs/developer-guide/plugin/extension-points/ui/backup-list-item-operation-create.mdx
index c545d7d4..66d7dc24 100644
--- a/versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/backup-list-item-operation-create.md
+++ b/docs/developer-guide/plugin/extension-points/ui/backup-list-item-operation-create.mdx
@@ -34,8 +34,6 @@ export default definePlugin({
});
```
-```mdx-code-block
import OperationItem from "./interface/OperationItem.md";
-```
diff --git a/docs/developer-guide/plugin/extension-points/ui/comment-list-item-operation-create.md b/docs/developer-guide/plugin/extension-points/ui/comment-list-item-operation-create.md
deleted file mode 100644
index edcd1b01..00000000
--- a/docs/developer-guide/plugin/extension-points/ui/comment-list-item-operation-create.md
+++ /dev/null
@@ -1,81 +0,0 @@
----
-title: 评论数据列表操作菜单
-description: 扩展评论数据列表操作菜单 - comment:list-item:operation:create
----
-
-此扩展点用于扩展评论数据列表的操作菜单项。
-
-
-
-## 定义方式
-
-```ts
-export default definePlugin({
- extensionPoints: {
- "comment:list-item:operation:create": (
- comment: Ref
- ): OperationItem[] | Promise[]> => {
- return [
- {
- priority: 10,
- component: markRaw(VDropdownItem),
- props: {},
- action: (item?: ListedComment) => {
- // do something
- },
- label: "foo",
- hidden: false,
- permissions: [],
- children: [],
- },
- ];
- },
- },
-});
-```
-
-```mdx-code-block
-import OperationItem from "./interface/OperationItem.md";
-
-
-```
-
-## 示例
-
-此示例将实现一个操作菜单项。
-
-```ts
-import type { ListedComment } from "@halo-dev/api-client";
-import { VDropdownItem } from "@halo-dev/components";
-import { definePlugin } from "@halo-dev/ui-shared";
-import { markRaw } from "vue";
-
-export default definePlugin({
- extensionPoints: {
- "comment:list-item:operation:create": () => {
- return [
- {
- priority: 21,
- component: markRaw(VDropdownItem),
- label: "测试评论菜单",
- visible: true,
- permissions: [],
- action: async (comment: ListedComment) => {
- console.log(comment)
- },
- },
- ];
- },
- },
-});
-```
-
-## 类型定义
-
-### ListedComment
-
-```mdx-code-block
-import ListedComment from "./interface/ListedComment.md";
-
-
-```
diff --git a/versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/comment-list-item-operation-create.md b/docs/developer-guide/plugin/extension-points/ui/comment-list-item-operation-create.mdx
similarity index 97%
rename from versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/comment-list-item-operation-create.md
rename to docs/developer-guide/plugin/extension-points/ui/comment-list-item-operation-create.mdx
index edcd1b01..7fec7f4b 100644
--- a/versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/comment-list-item-operation-create.md
+++ b/docs/developer-guide/plugin/extension-points/ui/comment-list-item-operation-create.mdx
@@ -34,11 +34,9 @@ export default definePlugin({
});
```
-```mdx-code-block
import OperationItem from "./interface/OperationItem.md";
-```
## 示例
@@ -74,8 +72,6 @@ export default definePlugin({
### ListedComment
-```mdx-code-block
import ListedComment from "./interface/ListedComment.md";
-```
diff --git a/docs/developer-guide/plugin/extension-points/ui/comment-subject-ref-create.md b/docs/developer-guide/plugin/extension-points/ui/comment-subject-ref-create.md
index 6c9e51c4..a8f70099 100644
--- a/docs/developer-guide/plugin/extension-points/ui/comment-subject-ref-create.md
+++ b/docs/developer-guide/plugin/extension-points/ui/comment-subject-ref-create.md
@@ -5,7 +5,7 @@ description: 扩展评论来源显示 - comment:subject-ref:create
Console 的评论管理列表的评论来源默认仅支持显示来自文章和页面的评论,如果其他插件中的业务模块也使用了评论,那么就可以通过该拓展点来扩展评论来源的显示。
-:::info[提示]
+:::info 需要后端扩展点配合
此扩展点需要后端配合使用,请参考 [评论主体展示](../server/comment-subject.md)。
:::
diff --git a/docs/developer-guide/plugin/extension-points/ui/default-editor-extension-create.md b/docs/developer-guide/plugin/extension-points/ui/default-editor-extension-create.md
index 7b3935f8..ae13f046 100644
--- a/docs/developer-guide/plugin/extension-points/ui/default-editor-extension-create.md
+++ b/docs/developer-guide/plugin/extension-points/ui/default-editor-extension-create.md
@@ -17,7 +17,7 @@ export default definePlugin({
});
```
-:::info[提示]
+:::info 扩展类型与 Tiptap 一致
AnyExtension 类型来自 [Tiptap](https://github.com/ueberdosis/tiptap),这意味着 Halo 默认编辑器的扩展点返回类型与 Tiptap 的扩展完全一致,Tiptap 的扩展文档可参考:[https://tiptap.dev/docs/editor/api/extensions](https://tiptap.dev/docs/editor/api/extensions)。此外,Halo 也为默认编辑器的扩展提供了一些独有的参数,用于实现工具栏、指令等扩展。
:::
diff --git a/docs/developer-guide/plugin/extension-points/ui/index.md b/docs/developer-guide/plugin/extension-points/ui/index.md
deleted file mode 100644
index 8d6b594c..00000000
--- a/docs/developer-guide/plugin/extension-points/ui/index.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: 扩展点
-description: Halo UI 为插件提供的扩展点接口
----
-
-UI 扩展点是用于扩展 Console 和 UC 的界面的接口,通过实现扩展点接口,插件可以在 Console 和 UC 中扩展功能。
-
-以下是目前已支持的扩展点列表:
-
-```mdx-code-block
-import DocCardList from '@theme/DocCardList';
-
-
-```
diff --git a/versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/index.md b/docs/developer-guide/plugin/extension-points/ui/index.mdx
similarity index 71%
rename from versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/index.md
rename to docs/developer-guide/plugin/extension-points/ui/index.mdx
index 8d6b594c..1819a7fc 100644
--- a/versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/index.md
+++ b/docs/developer-guide/plugin/extension-points/ui/index.mdx
@@ -1,14 +1,9 @@
---
-title: 扩展点
+title: UI 扩展点
description: Halo UI 为插件提供的扩展点接口
+overview: true
---
UI 扩展点是用于扩展 Console 和 UC 的界面的接口,通过实现扩展点接口,插件可以在 Console 和 UC 中扩展功能。
以下是目前已支持的扩展点列表:
-
-```mdx-code-block
-import DocCardList from '@theme/DocCardList';
-
-
-```
diff --git a/docs/developer-guide/plugin/extension-points/ui/plugin-list-item-field-create.md b/docs/developer-guide/plugin/extension-points/ui/plugin-list-item-field-create.mdx
similarity index 98%
rename from docs/developer-guide/plugin/extension-points/ui/plugin-list-item-field-create.md
rename to docs/developer-guide/plugin/extension-points/ui/plugin-list-item-field-create.mdx
index 508d08c7..17845bbb 100644
--- a/docs/developer-guide/plugin/extension-points/ui/plugin-list-item-field-create.md
+++ b/docs/developer-guide/plugin/extension-points/ui/plugin-list-item-field-create.mdx
@@ -77,8 +77,6 @@ export default definePlugin({
### Plugin
-```mdx-code-block
import Plugin from "./interface/Plugin.md";
-```
diff --git a/docs/developer-guide/plugin/extension-points/ui/plugin-list-item-operation-create.md b/docs/developer-guide/plugin/extension-points/ui/plugin-list-item-operation-create.mdx
similarity index 96%
rename from docs/developer-guide/plugin/extension-points/ui/plugin-list-item-operation-create.md
rename to docs/developer-guide/plugin/extension-points/ui/plugin-list-item-operation-create.mdx
index 1c7e31de..508181da 100644
--- a/docs/developer-guide/plugin/extension-points/ui/plugin-list-item-operation-create.md
+++ b/docs/developer-guide/plugin/extension-points/ui/plugin-list-item-operation-create.mdx
@@ -34,11 +34,9 @@ export default definePlugin({
});
```
-```mdx-code-block
import OperationItem from "./interface/OperationItem.md";
-```
## 实现案例
@@ -48,8 +46,6 @@ import OperationItem from "./interface/OperationItem.md";
### Plugin
-```mdx-code-block
import Plugin from "./interface/Plugin.md";
-```
diff --git a/docs/developer-guide/plugin/extension-points/ui/plugin-self-tabs-create.md b/docs/developer-guide/plugin/extension-points/ui/plugin-self-tabs-create.md
deleted file mode 100644
index 88b5d54f..00000000
--- a/docs/developer-guide/plugin/extension-points/ui/plugin-self-tabs-create.md
+++ /dev/null
@@ -1,90 +0,0 @@
----
-title: 插件详情选项卡
-description: 扩展当前插件的详情选项卡 - plugin:self:tabs:create
----
-
-此扩展点用于在 Console 的插件详情页面中添加自定义选项卡,可以用于自定义插件的配置页面。
-
-
-
-## 定义方式
-
-```ts
-export default definePlugin({
- extensionPoints: {
- "plugin:self:tabs:create": (): PluginTab[] | Promise => {
- return [
- {
- id: "foo",
- label: "foo",
- component: markRaw(FooComponent),
- permissions: [],
- },
- ];
- },
- },
-});
-```
-
-```ts title="PluginTab"
-export interface PluginTab {
- id: string; // 选项卡 ID,不能与设置表单的 group 重复
- label: string; // 选项卡标题
- component: Raw; // 选项卡面板组件
- permissions?: string[]; // 选项卡权限
-}
-```
-
-其中,`component` 组件可以注入(inject)以下属性:
-
-- `plugin`:当前插件对象,类型为 Ref\<[Plugin](#plugin)\>。
-
-## 示例
-
-此示例实现了一个自定义选项卡,用于获取插件的数据并显示名称。
-
-```ts
-import { definePlugin, PluginTab } from "@halo-dev/ui-shared";
-import MyComponent from "./views/my-component.vue";
-import { markRaw } from "vue";
-export default definePlugin({
- components: {},
- routes: [],
- extensionPoints: {
- "plugin:self:tabs:create": () : PluginTab[] => {
- return [
- {
- id: "my-tab-panel",
- label: "My Tab Panel",
- component: markRaw(MyComponent),
- permissions: []
- },
- ];
- },
- },
-});
-```
-
-```vue title="./views/my-component.vue"
-
-
-
- {{ plugin?.spec.displayName }}
-
-```
-
-## 实现案例
-
-- [https://github.com/halo-dev/plugin-app-store](https://github.com/halo-dev/plugin-app-store)
-
-## 类型定义
-
-### Plugin
-
-```mdx-code-block
-import Plugin from "./interface/Plugin.md";
-
-
-```
diff --git a/versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/plugin-self-tabs-create.md b/docs/developer-guide/plugin/extension-points/ui/plugin-self-tabs-create.mdx
similarity index 98%
rename from versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/plugin-self-tabs-create.md
rename to docs/developer-guide/plugin/extension-points/ui/plugin-self-tabs-create.mdx
index 88b5d54f..7a4a2177 100644
--- a/versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/plugin-self-tabs-create.md
+++ b/docs/developer-guide/plugin/extension-points/ui/plugin-self-tabs-create.mdx
@@ -83,8 +83,6 @@ const plugin = inject>("plugin");
### Plugin
-```mdx-code-block
import Plugin from "./interface/Plugin.md";
-```
diff --git a/docs/developer-guide/plugin/extension-points/ui/post-list-item-field-create.md b/docs/developer-guide/plugin/extension-points/ui/post-list-item-field-create.md
deleted file mode 100644
index 277a13af..00000000
--- a/docs/developer-guide/plugin/extension-points/ui/post-list-item-field-create.md
+++ /dev/null
@@ -1,80 +0,0 @@
----
-title: 文章数据列表显示字段
-description: 扩展文章数据列表显示字段 - post:list-item:field:create
----
-
-此扩展点用于扩展文章数据列表的显示字段。
-
-
-
-## 定义方式
-
-```ts
-export default definePlugin({
- extensionPoints: {
- "post:list-item:field:create": (post: Ref): EntityFieldItem[] | Promise => {
- return [
- {
- priority: 0,
- position: "start",
- component: markRaw(FooComponent),
- props: {},
- permissions: [],
- hidden: false,
- }
- ];
- },
- },
-});
-```
-
-```ts title="EntityFieldItem"
-export interface EntityFieldItem {
- priority: number;
- position: "start" | "end";
- component: Raw;
- props?: Record\;
- permissions?: string[];
- hidden?: boolean;
-}
-```
-
-## 示例
-
-此示例将添加一个显示文章 slug(别名)的字段。
-
-```ts
-import { definePlugin } from "@halo-dev/ui-shared";
-import { markRaw, type Ref } from "vue";
-import type { ListedPost } from "@halo-dev/api-client";
-import { VEntityField } from "@halo-dev/components";
-
-export default definePlugin({
- extensionPoints: {
- "post:list-item:field:create": (post: Ref) => {
- return [
- {
- priority: 0,
- position: "end",
- component: markRaw(VEntityField),
- props: {
- description: post.value.post.spec.slug,
- },
- permissions: [],
- hidden: false,
- },
- ];
- },
- },
-});
-```
-
-## 类型定义
-
-### ListedPost
-
-```mdx-code-block
-import ListedPost from "./interface/ListedPost.md";
-
-
-```
diff --git a/versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/post-list-item-field-create.md b/docs/developer-guide/plugin/extension-points/ui/post-list-item-field-create.mdx
similarity index 98%
rename from versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/post-list-item-field-create.md
rename to docs/developer-guide/plugin/extension-points/ui/post-list-item-field-create.mdx
index 277a13af..d324c603 100644
--- a/versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/post-list-item-field-create.md
+++ b/docs/developer-guide/plugin/extension-points/ui/post-list-item-field-create.mdx
@@ -73,8 +73,6 @@ export default definePlugin({
### ListedPost
-```mdx-code-block
import ListedPost from "./interface/ListedPost.md";
-```
diff --git a/docs/developer-guide/plugin/extension-points/ui/post-list-item-operation-create.md b/docs/developer-guide/plugin/extension-points/ui/post-list-item-operation-create.mdx
similarity index 98%
rename from docs/developer-guide/plugin/extension-points/ui/post-list-item-operation-create.md
rename to docs/developer-guide/plugin/extension-points/ui/post-list-item-operation-create.mdx
index d686e185..c0055000 100644
--- a/docs/developer-guide/plugin/extension-points/ui/post-list-item-operation-create.md
+++ b/docs/developer-guide/plugin/extension-points/ui/post-list-item-operation-create.mdx
@@ -34,11 +34,9 @@ export default definePlugin({
});
```
-```mdx-code-block
import OperationItem from "./interface/OperationItem.md";
-```
## 示例
@@ -85,8 +83,6 @@ export default definePlugin({
### ListedPost
-```mdx-code-block
import ListedPost from "./interface/ListedPost.md";
-```
diff --git a/docs/developer-guide/plugin/extension-points/ui/reply-list-item-operation-create.md b/docs/developer-guide/plugin/extension-points/ui/reply-list-item-operation-create.mdx
similarity index 97%
rename from docs/developer-guide/plugin/extension-points/ui/reply-list-item-operation-create.md
rename to docs/developer-guide/plugin/extension-points/ui/reply-list-item-operation-create.mdx
index ccbe7bf7..d17752f4 100644
--- a/docs/developer-guide/plugin/extension-points/ui/reply-list-item-operation-create.md
+++ b/docs/developer-guide/plugin/extension-points/ui/reply-list-item-operation-create.mdx
@@ -34,11 +34,9 @@ export default definePlugin({
});
```
-```mdx-code-block
import OperationItem from "./interface/OperationItem.md";
-```
## 示例
@@ -74,8 +72,6 @@ export default definePlugin({
### ListedReply
-```mdx-code-block
import ListedReply from "./interface/ListedReply.md";
-```
diff --git a/docs/developer-guide/plugin/extension-points/ui/single-page-list-item-field-create.md b/docs/developer-guide/plugin/extension-points/ui/single-page-list-item-field-create.md
deleted file mode 100644
index 23c90c97..00000000
--- a/docs/developer-guide/plugin/extension-points/ui/single-page-list-item-field-create.md
+++ /dev/null
@@ -1,80 +0,0 @@
----
-title: 页面数据列表显示字段
-description: 扩展页面数据列表显示字段 - single-page:list-item:field:create
----
-
-此扩展点用于扩展页面数据列表的显示字段。
-
-
-
-## 定义方式
-
-```ts
-export default definePlugin({
- extensionPoints: {
- "single-page:list-item:field:create": (singlePage: Ref): EntityFieldItem[] | Promise => {
- return [
- {
- priority: 0,
- position: "start",
- component: markRaw(FooComponent),
- props: {},
- permissions: [],
- hidden: false,
- }
- ];
- },
- },
-});
-```
-
-```ts title="EntityFieldItem"
-export interface EntityFieldItem {
- priority: number;
- position: "start" | "end";
- component: Raw;
- props?: Record\;
- permissions?: string[];
- hidden?: boolean;
-}
-```
-
-## 示例
-
-此示例将添加一个显示页面 slug(别名)的字段。
-
-```ts
-import { definePlugin } from "@halo-dev/ui-shared";
-import { markRaw, type Ref } from "vue";
-import type { ListedSinglePage } from "@halo-dev/api-client";
-import { VEntityField } from "@halo-dev/components";
-
-export default definePlugin({
- extensionPoints: {
- "single-page:list-item:field:create": (singlePage: Ref) => {
- return [
- {
- priority: 0,
- position: "end",
- component: markRaw(VEntityField),
- props: {
- description: singlePage.value.page.spec.slug,
- },
- permissions: [],
- hidden: false,
- },
- ];
- },
- },
-});
-```
-
-## 类型定义
-
-### ListedSinglePage
-
-```mdx-code-block
-import ListedSinglePage from "./interface/ListedSinglePage.md";
-
-
-```
diff --git a/versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/single-page-list-item-field-create.md b/docs/developer-guide/plugin/extension-points/ui/single-page-list-item-field-create.mdx
similarity index 98%
rename from versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/single-page-list-item-field-create.md
rename to docs/developer-guide/plugin/extension-points/ui/single-page-list-item-field-create.mdx
index 23c90c97..1058ea55 100644
--- a/versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/single-page-list-item-field-create.md
+++ b/docs/developer-guide/plugin/extension-points/ui/single-page-list-item-field-create.mdx
@@ -73,8 +73,6 @@ export default definePlugin({
### ListedSinglePage
-```mdx-code-block
import ListedSinglePage from "./interface/ListedSinglePage.md";
-```
diff --git a/docs/developer-guide/plugin/extension-points/ui/single-page-list-item-operation-create.md b/docs/developer-guide/plugin/extension-points/ui/single-page-list-item-operation-create.md
deleted file mode 100644
index 890901fe..00000000
--- a/docs/developer-guide/plugin/extension-points/ui/single-page-list-item-operation-create.md
+++ /dev/null
@@ -1,92 +0,0 @@
----
-title: 页面数据列表操作菜单
-description: 扩展页面数据列表操作菜单 - single-page:list-item:operation:create
----
-
-此扩展点用于扩展页面数据列表的操作菜单项。
-
-
-
-## 定义方式
-
-```ts
-export default definePlugin({
- extensionPoints: {
- "single-page:list-item:operation:create": (
- singlePage: Ref
- ): OperationItem[] | Promise[]> => {
- return [
- {
- priority: 10,
- component: markRaw(VDropdownItem),
- props: {},
- action: (item?: ListedSinglePage) => {
- // do something
- },
- label: "foo",
- hidden: false,
- permissions: [],
- children: [],
- },
- ];
- },
- },
-});
-```
-
-```mdx-code-block
-import OperationItem from "./interface/OperationItem.md";
-
-
-```
-
-## 示例
-
-此示例将实现一个操作菜单项,点击后会将页面内容作为文件下载到本地。
-
-```ts
-import type { ListedSinglePage } from "@halo-dev/api-client";
-import { VDropdownItem } from "@halo-dev/components";
-import { definePlugin } from "@halo-dev/ui-shared";
-import axios from "axios";
-import { markRaw } from "vue";
-
-export default definePlugin({
- extensionPoints: {
- "single-page:list-item:operation:create": () => {
- return [
- {
- priority: 21,
- component: markRaw(VDropdownItem),
- label: "下载到本地",
- visible: true,
- permissions: [],
- action: async (singlePage: ListedSinglePage) => {
- const { data } = await axios.get(
- `/apis/api.console.halo.run/v1alpha1/single-pages/${singlePage.page.metadata.name}/head-content`
- );
- const blob = new Blob([data.raw], {
- type: "text/plain;charset=utf-8",
- });
- const url = window.URL.createObjectURL(blob);
- const link = document.createElement("a");
- link.href = url;
- link.download = `${singlePage.page.spec.title}.${data.rawType}`;
- link.click();
- },
- },
- ];
- },
- },
-});
-```
-
-## 类型定义
-
-### ListedSinglePage
-
-```mdx-code-block
-import ListedSinglePage from "./interface/ListedSinglePage.md";
-
-
-```
diff --git a/versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/single-page-list-item-operation-create.md b/docs/developer-guide/plugin/extension-points/ui/single-page-list-item-operation-create.mdx
similarity index 98%
rename from versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/single-page-list-item-operation-create.md
rename to docs/developer-guide/plugin/extension-points/ui/single-page-list-item-operation-create.mdx
index 890901fe..4c1c3256 100644
--- a/versioned_docs/version-2.23/developer-guide/plugin/extension-points/ui/single-page-list-item-operation-create.md
+++ b/docs/developer-guide/plugin/extension-points/ui/single-page-list-item-operation-create.mdx
@@ -34,11 +34,9 @@ export default definePlugin({
});
```
-```mdx-code-block
import OperationItem from "./interface/OperationItem.md";
-```
## 示例
@@ -85,8 +83,6 @@ export default definePlugin({
### ListedSinglePage
-```mdx-code-block
import ListedSinglePage from "./interface/ListedSinglePage.md";
-```
diff --git a/docs/developer-guide/plugin/extension-points/ui/theme-list-item-operation-create.md b/docs/developer-guide/plugin/extension-points/ui/theme-list-item-operation-create.md
deleted file mode 100644
index 8d4f1696..00000000
--- a/docs/developer-guide/plugin/extension-points/ui/theme-list-item-operation-create.md
+++ /dev/null
@@ -1,91 +0,0 @@
----
-title: 主题数据列表操作菜单
-description: 扩展主题数据列表操作菜单 - theme:list-item:operation:create
----
-
-此扩展点用于扩展主题数据列表的操作菜单项。
-
-
-
-## 定义方式
-
-```ts
-export default definePlugin({
- extensionPoints: {
- "theme:list-item:operation:create": (
- theme: Ref
- ): OperationItem[] | Promise[]> => {
- return [
- {
- priority: 10,
- component: markRaw(VDropdownItem),
- props: {},
- action: (item?: Theme) => {
- // do something
- },
- label: "foo",
- hidden: false,
- permissions: [],
- children: [],
- },
- ];
- },
- },
-});
-```
-
-```mdx-code-block
-import OperationItem from "./interface/OperationItem.md";
-
-
-```
-
-## 示例
-
-此示例将实现一个跳转到前台预览主题的操作菜单项。
-
-```ts
-import { definePlugin, type OperationItem } from "@halo-dev/ui-shared";
-import { VButton } from "@halo-dev/components";
-import { markRaw, type Ref } from "vue";
-import type { Theme } from "@halo-dev/api-client";
-
-export default definePlugin({
- extensionPoints: {
- "theme:list-item:operation:create": (
- theme: Ref
- ): OperationItem[] | Promise[]> => {
- return [
- {
- priority: 10,
- component: markRaw(VButton),
- props: {
- size: "sm",
- },
- action: (item?: Theme) => {
- window.open(`/?preview-theme=${item?.metadata.name}`);
- },
- label: "前台预览",
- hidden: false,
- permissions: [],
- children: [],
- },
- ];
- },
- },
-});
-```
-
-## 实现案例
-
-- [https://github.com/halo-dev/plugin-app-store](https://github.com/halo-dev/plugin-app-store)
-
-## 类型定义
-
-### Theme
-
-```mdx-code-block
-import Theme from "./interface/Theme.md";
-
-
-```
diff --git a/versioned_docs/version-2.22/developer-guide/plugin/extension-points/ui/theme-list-item-operation-create.md b/docs/developer-guide/plugin/extension-points/ui/theme-list-item-operation-create.mdx
similarity index 97%
rename from versioned_docs/version-2.22/developer-guide/plugin/extension-points/ui/theme-list-item-operation-create.md
rename to docs/developer-guide/plugin/extension-points/ui/theme-list-item-operation-create.mdx
index 8d4f1696..0a86de83 100644
--- a/versioned_docs/version-2.22/developer-guide/plugin/extension-points/ui/theme-list-item-operation-create.md
+++ b/docs/developer-guide/plugin/extension-points/ui/theme-list-item-operation-create.mdx
@@ -34,11 +34,9 @@ export default definePlugin({
});
```
-```mdx-code-block
import OperationItem from "./interface/OperationItem.md";
-```
## 示例
@@ -84,8 +82,6 @@ export default definePlugin({
### Theme
-```mdx-code-block
import Theme from "./interface/Theme.md";
-```
diff --git a/docs/developer-guide/plugin/index.md b/docs/developer-guide/plugin/index.md
new file mode 100644
index 00000000..ecec1e1e
--- /dev/null
+++ b/docs/developer-guide/plugin/index.md
@@ -0,0 +1,4 @@
+---
+title: 插件开发
+overview: true
+---
\ No newline at end of file
diff --git a/docs/developer-guide/plugin/interaction/_meta.json b/docs/developer-guide/plugin/interaction/_meta.json
new file mode 100644
index 00000000..c493e2cb
--- /dev/null
+++ b/docs/developer-guide/plugin/interaction/_meta.json
@@ -0,0 +1 @@
+["dependency", "shared-events", "making-plugin-extensible"]
diff --git a/docs/developer-guide/plugin/interaction/dependency.md b/docs/developer-guide/plugin/interaction/dependency.md
index b16b9e6d..23427e85 100644
--- a/docs/developer-guide/plugin/interaction/dependency.md
+++ b/docs/developer-guide/plugin/interaction/dependency.md
@@ -94,7 +94,7 @@ Halo 插件系统支持在 `plugin.yaml` 文件中通过 `pluginDependencies`
在 Gradle 项目中,推荐使用标准的项目结构,以便于插件代码的管理和依赖的声明。以下是一个典型的 Halo 插件项目结构示例:
-```plaintext
+```tree
my-halo-plugin/
├── build.gradle # 项目的构建配置
├── settings.gradle # Gradle 设置文件
@@ -117,7 +117,7 @@ my-halo-plugin/
以下是一个优化后的项目结构示例,包含 `api` 和 `plugin` 模块:
-```plaintext
+```tree
my-halo-plugin/
├── build.gradle # 根项目构建配置文件
├── settings.gradle # 设置文件,声明子模块
diff --git a/docs/developer-guide/plugin/interaction/index.md b/docs/developer-guide/plugin/interaction/index.md
new file mode 100644
index 00000000..54b7937e
--- /dev/null
+++ b/docs/developer-guide/plugin/interaction/index.md
@@ -0,0 +1,4 @@
+---
+title: 与其他插件交互
+overview: true
+---
\ No newline at end of file
diff --git a/docs/developer-guide/plugin/interaction/shared-events.md b/docs/developer-guide/plugin/interaction/shared-events.md
index e72662a8..f7a7e7ab 100644
--- a/docs/developer-guide/plugin/interaction/shared-events.md
+++ b/docs/developer-guide/plugin/interaction/shared-events.md
@@ -130,7 +130,7 @@ public class CustomEventPublisher {
3. 配置插件 B 的 `plugin.yaml` 中的 `pluginDependencies` 依赖插件 A,参考 [插件依赖声明](dependency.md#依赖声明方式)
-:::info
+:::info 将依赖插件 API 声明为 compileOnly
关于为什么必须将插件 A 的 `plugin-a-api` 声明为 `compileOnly`?
插件类加载的顺序是:
diff --git a/docs/developer-guide/plugin/prepare.md b/docs/developer-guide/plugin/prepare.md
index de624924..ec9d3786 100644
--- a/docs/developer-guide/plugin/prepare.md
+++ b/docs/developer-guide/plugin/prepare.md
@@ -7,7 +7,7 @@ description: 插件开发的准备工作
在创建你的第一个插件之前,请确保你具备以下条件:
-- 你能通过 [Docker 运行 Halo](../../getting-started/install/docker) 或在[开发环境运行 Halo](../core/run.md)。
+- 你能通过 [Docker 运行 Halo](../../guide/install/docker.mdx) 或在[开发环境运行 Halo](../core/run.md)。
- 你熟悉 Java Web 开发并掌握 [Spring Boot](https://spring.io/projects/spring-boot/) 框架。
- 你需要在计算机上安装最新的 LTS 版本的 Node.js,如果你还没有 Node.js 安装,你可以在这里下载 [Node.js 18 LTS](https://nodejs.org/)。
- 你熟悉 Vue 和 TypeScript。
diff --git a/docs/developer-guide/plugin/security/index.md b/docs/developer-guide/plugin/security/index.md
new file mode 100644
index 00000000..79add5af
--- /dev/null
+++ b/docs/developer-guide/plugin/security/index.md
@@ -0,0 +1,4 @@
+---
+title: 安全和权限管理
+overview: true
+---
\ No newline at end of file
diff --git a/docs/developer-guide/plugin/security/role-template.md b/docs/developer-guide/plugin/security/role-template.md
index 60ee69d6..3de75e42 100644
--- a/docs/developer-guide/plugin/security/role-template.md
+++ b/docs/developer-guide/plugin/security/role-template.md
@@ -46,7 +46,7 @@ rules:
- 以 `/api` 开头,且以 `/api//[//]` 规则组成 APIs,最少路径层级为 3 即 `/api//`,最多路径层级为 5 即包含 `` 和 ``,例如 `/api/v1/posts`。
- 以 `/apis///[//]` 规则组成的 APIs,最少路径层级为 4 即 `/apis///`,最多路径层级为 6 即包含 `` 和 ``,例如 `/apis/my-plugin.halo.run/v1alpha1/persons`。
-:::info[注意]
+:::info API 路径限制
`[]`包裹的部分表示可选,`/api` 前缀被 Halo 保留,不允许插件定义以 `/api` 开头的资源型 APIs,所以插件的资源型 APIs 都是以 `/apis` 开头的。
:::
diff --git a/docs/developer-guide/restful-api/_meta.json b/docs/developer-guide/restful-api/_meta.json
new file mode 100644
index 00000000..8b0c4b38
--- /dev/null
+++ b/docs/developer-guide/restful-api/_meta.json
@@ -0,0 +1 @@
+["introduction", "api-client"]
diff --git a/docs/developer-guide/restful-api/api-client.md b/docs/developer-guide/restful-api/api-client.md
index 1e1a236f..d40780fb 100644
--- a/docs/developer-guide/restful-api/api-client.md
+++ b/docs/developer-guide/restful-api/api-client.md
@@ -13,7 +13,7 @@ description: 介绍使用 API Client 请求库发起 API 请求的方式
pnpm install @halo-dev/api-client axios
```
-:::info[提示]
+:::info 推荐使用 TypeScript
推荐在项目中引入 TypeScript,可以获得更好的类型提示。
:::
@@ -107,6 +107,6 @@ coreApiClient.content.post.listPost().then(response => {
})
```
-:::info[提示]
+:::info 查看认证方式
认证方式的说明请参考:[认证方式](./introduction.md#认证方式)
:::
diff --git a/docs/developer-guide/restful-api/index.md b/docs/developer-guide/restful-api/index.md
new file mode 100644
index 00000000..1d2adc0f
--- /dev/null
+++ b/docs/developer-guide/restful-api/index.md
@@ -0,0 +1,4 @@
+---
+title: RESTful API
+overview: true
+---
\ No newline at end of file
diff --git a/docs/developer-guide/restful-api/introduction.md b/docs/developer-guide/restful-api/introduction.md
index 90da9a77..de86b5e8 100644
--- a/docs/developer-guide/restful-api/introduction.md
+++ b/docs/developer-guide/restful-api/introduction.md
@@ -27,7 +27,7 @@ Halo 提供了 RESTful 风格的 API,Halo 的前端(主要为 Console 和 UC
个人令牌是一种用于访问 Halo API 的安全凭证,你可以使用个人令牌代替您的 Halo 账户密码进行身份验证。
-在个人中心的**个人令牌**页面中,可以根据当前用户已有的权限创建个人令牌,创建方式可参考:[个人中心 / 个人令牌](../../user-guide/user-center.md#个人令牌)
+在个人中心的**个人令牌**页面中,可以根据当前用户已有的权限创建个人令牌,创建方式可参考:[个人中心 / 个人令牌](../../guide/use/user-center.md#个人令牌)
创建成功后,将会得到一个 `pat_` 开头的字符串,接下来在所需请求的请求头中添加 `Authorization` 字段,值为 `Bearer ` 即可。
@@ -59,10 +59,10 @@ axios.get('https://demo.halo.run/apis/content.halo.run/v1alpha1/posts', {
### Basic Auth
-:::warning
+:::warning Basic Auth 默认关闭
Basic Auth 认证方式已经在 Halo 2.20 默认关闭,需要手动添加 `halo.security.basic-auth.disabled=false` 启动参数来开启。
-配置详情可见:[配置列表](../../getting-started/install/config.md#halo-独有配置)
+配置详情可见:[配置列表](../../guide/install/config.md#halo-独有配置)
:::
Basic Auth 是一种通过用户名和密码进行身份验证的方式,你可以使用 Halo 账户的用户名和密码进行身份验证。
diff --git a/docs/developer-guide/theme/_meta.json b/docs/developer-guide/theme/_meta.json
new file mode 100644
index 00000000..a2cd3d73
--- /dev/null
+++ b/docs/developer-guide/theme/_meta.json
@@ -0,0 +1,27 @@
+[
+ "prepare",
+ "config",
+ "structure",
+ "ui-plugin",
+ "page-layout",
+ "static-resources",
+ "settings",
+ "annotations",
+ {
+ "type": "dir",
+ "name": "template-variables",
+ "label": "模板编写",
+ "collapsed": true
+ },
+ {
+ "type": "dir",
+ "name": "finder-apis",
+ "label": "Finder API",
+ "collapsed": true
+ },
+ "image-optimization",
+ "global-variables",
+ "template-tag",
+ "code-snippets",
+ "api-changelog"
+]
diff --git a/docs/developer-guide/theme/config.md b/docs/developer-guide/theme/config.md
index db14bcda..dc883794 100644
--- a/docs/developer-guide/theme/config.md
+++ b/docs/developer-guide/theme/config.md
@@ -90,6 +90,6 @@ npx @halo-dev/convert-theme-config-to-next theme
执行完成之后即可看到主题目录下生成了 `theme.2.0.yaml` 文件,重命名为 `theme.yaml` 即可。
-:::tip
+:::tip 修改转换后的资源名称
转换完成之后需要修改 `metadata.name`、`spec.settingName` 和 `spec.configMapName`。
:::
diff --git a/docs/developer-guide/theme/finder-apis.md b/docs/developer-guide/theme/finder-apis.md
deleted file mode 100644
index fc4522f3..00000000
--- a/docs/developer-guide/theme/finder-apis.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: Finder API
-description: 本文档介绍 Finder API 的使用方法。
----
-
-import DocCardList from '@theme/DocCardList';
-
-目前在主题模板中获取数据可以使用对应路由提供的 [模板变量](./template-variables),但为了满足在任意位置获取数据的需求,我们提供了 Finder API。
-
-
diff --git a/docs/developer-guide/theme/finder-apis/_meta.json b/docs/developer-guide/theme/finder-apis/_meta.json
new file mode 100644
index 00000000..6f44f5be
--- /dev/null
+++ b/docs/developer-guide/theme/finder-apis/_meta.json
@@ -0,0 +1,12 @@
+[
+ "category",
+ "tag",
+ "post",
+ "single-page",
+ "comment",
+ "contributor",
+ "menu",
+ "site-stats",
+ "theme",
+ "plugin"
+]
diff --git a/docs/developer-guide/theme/finder-apis/category.md b/docs/developer-guide/theme/finder-apis/category.md
deleted file mode 100644
index 4ecef87a..00000000
--- a/docs/developer-guide/theme/finder-apis/category.md
+++ /dev/null
@@ -1,224 +0,0 @@
----
-title: 文章分类
-description: 文章分类 - CategoryFinder
----
-
-import CategoryVo from "../vo/_CategoryVo.md"
-import CategoryTreeVo from "../vo/_CategoryTreeVo.md"
-
-## getByName(name)
-
-```js
-categoryFinder.getByName(name)
-```
-
-:::info[提示]
-通常建议配合 [主题设置](../settings.md) 和 [分类选择器](../../form-schema.md#categoryselect) 使用,让用户自行选择所需的分类。
-:::
-
-### 描述
-
-根据 `metadata.name` 获取文章分类。
-
-### 参数
-
-1. `name:string` - 分类的唯一标识 `metadata.name`。
-
-### 返回值
-
-[#CategoryVo](#categoryvo)
-
-### 示例
-
-```html
-
-```
-
-## getByNames(names)
-
-```js
-categoryFinder.getByNames(names)
-```
-
-:::info[提示]
-通常建议配合 [主题设置](../settings.md) 和 [分类选择器](../../form-schema.md#categoryselect) 使用,让用户自行选择所需的分类。
-:::
-
-### 描述
-
-根据一组 `metadata.name` 获取文章分类。
-
-### 参数
-
-1. `names:List` - 分类的唯一标识 `metadata.name` 的集合。
-
-### 返回值
-
-List\<[#CategoryVo](#categoryvo)\>
-
-### 示例
-
-```html
-
-```
-
-## list(page,size)
-
-```js
-categoryFinder.list(page,size)
-```
-
-### 描述
-
-根据分页参数获取分类列表。
-
-### 参数
-
-1. `page:int` - 分页页码,从 1 开始
-2. `size:int` - 分页条数
-
-### 返回值
-
-[#ListResult\](#listresultcategoryvo)
-
-### 示例
-
-```html
-
-```
-
-## listAll()
-
-```js
-categoryFinder.listAll()
-```
-
-### 描述
-
-获取所有文章分类。
-
-### 参数
-
-无
-
-### 返回值
-
-List\<[#CategoryVo](#categoryvo)\>
-
-### 示例
-
-```html
-
-```
-
-## listAsTree()
-
-```js
-categoryFinder.listAsTree()
-```
-
-### 描述
-
-获取所有文章分类的多层级结构。
-
-### 参数
-
-无
-
-### 返回值
-
-List\<[#CategoryTreeVo](#categorytreevo)\>
-
-### 示例
-
-```html
-
-
-
-
-
-```
-
-```html title="/templates/category-tree.html"
-
- -
-
-
-
-
-
-
-
-
-```
-
-## getBreadcrumbs(name)
-
-```js
-categoryFinder.getBreadcrumbs('category-foo')
-```
-
-### 描述
-
-获取分类树结构的路径节点,可以通过此方法来构建面包屑导航。
-
-### 参数
-
-- `name:string` - 分类的唯一标识 `metadata.name`,必填。
-
-### 返回值
-
-List\<[#CategoryVo](#categoryvo)\>
-
-### 示例
-
-```html
-
-```
-
-## 类型定义
-
-### CategoryVo
-
-
-
-### ListResult\
-
-```json title="ListResult"
-{
- "page": 0, // 当前页码
- "size": 0, // 每页条数
- "total": 0, // 总条数
- "items": "List<#CategoryVo>", // 分类列表数据
- "first": true, // 是否为第一页
- "last": true, // 是否为最后一页
- "hasNext": true, // 是否有下一页
- "hasPrevious": true, // 是否有上一页
- "totalPages": 0 // 总页数
-}
-```
-
-- [#CategoryVo](#categoryvo)
-
-### CategoryTreeVo
-
-
-
-- [#CategoryTreeVo](#categorytreevo)
diff --git a/versioned_docs/version-2.22/developer-guide/theme/finder-apis/category.md b/docs/developer-guide/theme/finder-apis/category.mdx
similarity index 98%
rename from versioned_docs/version-2.22/developer-guide/theme/finder-apis/category.md
rename to docs/developer-guide/theme/finder-apis/category.mdx
index 4ecef87a..a3002b2a 100644
--- a/versioned_docs/version-2.22/developer-guide/theme/finder-apis/category.md
+++ b/docs/developer-guide/theme/finder-apis/category.mdx
@@ -12,7 +12,7 @@ import CategoryTreeVo from "../vo/_CategoryTreeVo.md"
categoryFinder.getByName(name)
```
-:::info[提示]
+:::info 配合分类选择器使用
通常建议配合 [主题设置](../settings.md) 和 [分类选择器](../../form-schema.md#categoryselect) 使用,让用户自行选择所需的分类。
:::
@@ -42,7 +42,7 @@ categoryFinder.getByName(name)
categoryFinder.getByNames(names)
```
-:::info[提示]
+:::info 配合分类选择器使用
通常建议配合 [主题设置](../settings.md) 和 [分类选择器](../../form-schema.md#categoryselect) 使用,让用户自行选择所需的分类。
:::
diff --git a/docs/developer-guide/theme/finder-apis/comment.md b/docs/developer-guide/theme/finder-apis/comment.mdx
similarity index 100%
rename from docs/developer-guide/theme/finder-apis/comment.md
rename to docs/developer-guide/theme/finder-apis/comment.mdx
diff --git a/docs/developer-guide/theme/finder-apis/contributor.md b/docs/developer-guide/theme/finder-apis/contributor.mdx
similarity index 100%
rename from docs/developer-guide/theme/finder-apis/contributor.md
rename to docs/developer-guide/theme/finder-apis/contributor.mdx
diff --git a/docs/developer-guide/theme/finder-apis/index.md b/docs/developer-guide/theme/finder-apis/index.md
new file mode 100644
index 00000000..24d272b5
--- /dev/null
+++ b/docs/developer-guide/theme/finder-apis/index.md
@@ -0,0 +1,7 @@
+---
+title: Finder API
+description: 本文档介绍 Finder API 的使用方法。
+overview: true
+---
+
+目前在主题模板中获取数据可以使用对应路由提供的 [模板变量](../template-variables/index.md),但为了满足在任意位置获取数据的需求,我们提供了 Finder API。
diff --git a/docs/developer-guide/theme/finder-apis/menu.md b/docs/developer-guide/theme/finder-apis/menu.mdx
similarity index 100%
rename from docs/developer-guide/theme/finder-apis/menu.md
rename to docs/developer-guide/theme/finder-apis/menu.mdx
diff --git a/docs/developer-guide/theme/finder-apis/post.md b/docs/developer-guide/theme/finder-apis/post.mdx
similarity index 99%
rename from docs/developer-guide/theme/finder-apis/post.md
rename to docs/developer-guide/theme/finder-apis/post.mdx
index 2d63b606..3e345bed 100644
--- a/docs/developer-guide/theme/finder-apis/post.md
+++ b/docs/developer-guide/theme/finder-apis/post.mdx
@@ -72,7 +72,7 @@ postFinder.cursor(postName);
根据文章的 `metadata.name` 获取相邻的文章(上一篇 / 下一篇)。
-:::info[提示]
+:::info 上一篇与下一篇的定义
上一篇文章是指发布时间较当前文章更早的文章,下一篇文章是指发布时间较当前文章更新的文章。
:::
@@ -115,7 +115,7 @@ postFinder.cursorByCategory(postName);
主分类为文章 `spec.categories` 中的第一个分类。此方法只匹配同一分类下的文章,不会包含子分类中的文章。如果当前文章没有分类、未发布或者不存在,将返回空的导航结果。
-:::info[提示]
+:::info 上一篇与下一篇的定义
上一篇文章是指发布时间较当前文章更早的文章,下一篇文章是指发布时间较当前文章更新的文章。
:::
diff --git a/docs/developer-guide/theme/finder-apis/single-page.md b/docs/developer-guide/theme/finder-apis/single-page.mdx
similarity index 100%
rename from docs/developer-guide/theme/finder-apis/single-page.md
rename to docs/developer-guide/theme/finder-apis/single-page.mdx
diff --git a/docs/developer-guide/theme/finder-apis/tag.md b/docs/developer-guide/theme/finder-apis/tag.md
deleted file mode 100644
index 0e8a4c5d..00000000
--- a/docs/developer-guide/theme/finder-apis/tag.md
+++ /dev/null
@@ -1,147 +0,0 @@
----
-title: 文章标签
-description: 文章标签 - TagFinder
----
-
-import TagVo from "../vo/_TagVo.md"
-
-## getByName(name)
-
-```js
-tagFinder.getByName(name)
-```
-
-:::info[提示]
-通常建议配合 [主题设置](../settings.md) 和 [标签选择器](../../form-schema.md#tagselect) 使用,让用户自行选择所需的标签。
-:::
-
-### 描述
-
-根据 `metadata.name` 获取标签。
-
-### 参数
-
-1. `name:string` - 标签的唯一标识 `metadata.name`。
-
-### 返回值
-
-[#TagVo](#tagvo)
-
-### 示例
-
-```html
-
-```
-
-## getByNames(names)
-
-```js
-tagFinder.getByNames(names)
-```
-
-:::info[提示]
-通常建议配合 [主题设置](../settings.md) 和 [标签选择器](../../form-schema.md#tagselect) 使用,让用户自行选择所需的标签。
-:::
-
-### 描述
-
-根据一组 `metadata.name` 获取标签。
-
-### 参数
-
-1. `names:List` - 标签的唯一标识 `metadata.name` 的集合。
-
-### 返回值
-
-List\<[#TagVo](#tagvo)\>
-
-### 示例
-
-```html
-
-```
-
-## list(page,size)
-
-```js
-tagFinder.list(page,size)
-```
-
-### 描述
-
-根据分页参数获取标签列表。
-
-### 参数
-
-1. `page:int` - 分页页码,从 1 开始
-2. `size:int` - 分页条数
-
-### 返回值
-
-[#ListResult\](#listresulttagvo)
-
-### 示例
-
-```html
-
-```
-
-## listAll()
-
-```js
-tagFinder.listAll()
-```
-
-### 描述
-
-获取所有文章标签。
-
-### 参数
-
-无
-
-### 返回值
-
-List\<[#TagVo](#tagvo)\>
-
-### 示例
-
-```html
-
-```
-
-## 类型定义
-
-### TagVo
-
-
-
-### ListResult\
-
-```json title="ListResult"
-{
- "page": 0, // 当前页码
- "size": 0, // 每页条数
- "total": 0, // 总条数
- "items": "List<#TagVo>", // 标签列表数据
- "first": true, // 是否为第一页
- "last": true, // 是否为最后一页
- "hasNext": true, // 是否有下一页
- "hasPrevious": true, // 是否有上一页
- "totalPages": 0 // 总页数
-}
-```
-
-- [#TagVo](#tagvo)
diff --git a/versioned_docs/version-2.23/developer-guide/theme/finder-apis/tag.md b/docs/developer-guide/theme/finder-apis/tag.mdx
similarity index 97%
rename from versioned_docs/version-2.23/developer-guide/theme/finder-apis/tag.md
rename to docs/developer-guide/theme/finder-apis/tag.mdx
index 0e8a4c5d..14227fad 100644
--- a/versioned_docs/version-2.23/developer-guide/theme/finder-apis/tag.md
+++ b/docs/developer-guide/theme/finder-apis/tag.mdx
@@ -11,7 +11,7 @@ import TagVo from "../vo/_TagVo.md"
tagFinder.getByName(name)
```
-:::info[提示]
+:::info 配合标签选择器使用
通常建议配合 [主题设置](../settings.md) 和 [标签选择器](../../form-schema.md#tagselect) 使用,让用户自行选择所需的标签。
:::
@@ -41,7 +41,7 @@ tagFinder.getByName(name)
tagFinder.getByNames(names)
```
-:::info[提示]
+:::info 配合标签选择器使用
通常建议配合 [主题设置](../settings.md) 和 [标签选择器](../../form-schema.md#tagselect) 使用,让用户自行选择所需的标签。
:::
diff --git a/docs/developer-guide/theme/global-variables.md b/docs/developer-guide/theme/global-variables.md
deleted file mode 100644
index 3ed501a6..00000000
--- a/docs/developer-guide/theme/global-variables.md
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: 全局变量
-description: 本文档介绍 Halo 为模板引擎提供的专有全局变量。
----
-
-import SiteSettingVo from "./vo/_SiteSettingVo.md"
-import ThemeVo from "./vo/_ThemeVo.md"
-
-Halo 目前为模板引擎在全局提供了一些变量,本文档将列出已提供的变量以及介绍这些变量的使用方法。
-
-## site
-
-### 描述
-
-提供了部分可公开的系统相关的设置项,其中所有参数均来自于 Console 的系统设置。
-
-### 类型
-
-
-
-### 示例
-
-显示站点标题:
-
-```html
-
-```
-
-显示站点 Logo:
-
-```html
-
-```
-
-显示当前 Halo 版本:
-
-```html
-
-```
-
-## #halo.matchVersion(constraint)
-
-### 描述
-
-用于判断当前运行的 Halo 版本是否满足指定的语义化版本范围,适合在主题模板中为依赖新版 Halo 能力的片段添加兼容判断。
-
-版本范围格式遵循 [Semantic Range Expressions](https://github.com/zafarkhaja/jsemver#range-expressions),例如 `>=2.25.0`、`>2.0.0 & <3.0.0` 等。
-
-:::tip
-开发版本 `0.0.0` 会始终返回 `true`,以便在本地开发环境中调试主题模板。
-:::
-
-### 示例
-
-仅在 Halo 版本满足要求时渲染模板片段:
-
-```html
-
-
-
-```
-
-判断一个版本范围:
-
-```html
-
-
-
-```
-
-## theme
-
-### 描述
-
-关于当前激活主题的信息。
-
-### 类型
-
-
-
-### 示例
-
-显示主题名称:
-
-```html
-
-```
-
-在静态资源加入版本号参数,以防止升级之后的缓存问题:
-
-```html
-
-
-```
diff --git a/versioned_docs/version-2.25/developer-guide/theme/global-variables.md b/docs/developer-guide/theme/global-variables.mdx
similarity index 98%
rename from versioned_docs/version-2.25/developer-guide/theme/global-variables.md
rename to docs/developer-guide/theme/global-variables.mdx
index 3ed501a6..59ae1f86 100644
--- a/versioned_docs/version-2.25/developer-guide/theme/global-variables.md
+++ b/docs/developer-guide/theme/global-variables.mdx
@@ -46,7 +46,7 @@ Halo 目前为模板引擎在全局提供了一些变量,本文档将列出已
版本范围格式遵循 [Semantic Range Expressions](https://github.com/zafarkhaja/jsemver#range-expressions),例如 `>=2.25.0`、`>2.0.0 & <3.0.0` 等。
-:::tip
+:::tip 开发版本行为
开发版本 `0.0.0` 会始终返回 `true`,以便在本地开发环境中调试主题模板。
:::
diff --git a/docs/developer-guide/theme/image-optimization.md b/docs/developer-guide/theme/image-optimization.md
index 83eac94e..c4227753 100644
--- a/docs/developer-guide/theme/image-optimization.md
+++ b/docs/developer-guide/theme/image-optimization.md
@@ -13,13 +13,13 @@ description: 本文档介绍如何使用 Halo 的缩略图特性来优化图片
- 提升加载性能:通过为图片提供多个尺寸的缩略图,浏览器可以选择最适合当前视窗的图片进行加载,从而减少不必要的带宽使用,提升页面加载速度,改善用户体验。
- 兼容性好:响应式图片是基于 HTML 标准的实现,不需要额外的 JavaScript 或 CSS,因此兼容性非常好。
-:::info
+:::info 了解响应式图片
建议阅读 [响应式图片](https://developer.mozilla.org/zh-CN/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images) 文档,以了解更多关于响应式图片的知识,以及如何在不同场景下使用。
:::
## Finder API
-:::info
+:::info Halo 2.22 自动添加响应式属性
从 Halo 2.22 开始,Halo 会自动为页面上的所有图片添加响应式图片的相关属性,无需主题主动适配,如果你的主题需要手动为部分图片自定义属性,可以使用下方的 `Finder API`。
:::
diff --git a/docs/developer-guide/theme/index.md b/docs/developer-guide/theme/index.md
new file mode 100644
index 00000000..bee7f6dd
--- /dev/null
+++ b/docs/developer-guide/theme/index.md
@@ -0,0 +1,4 @@
+---
+title: 主题开发
+overview: true
+---
\ No newline at end of file
diff --git a/docs/developer-guide/theme/prepare.md b/docs/developer-guide/theme/prepare.md
index 02a1d7d8..1fef557f 100644
--- a/docs/developer-guide/theme/prepare.md
+++ b/docs/developer-guide/theme/prepare.md
@@ -7,9 +7,9 @@ description: 主题开发所需的准备工作和基本的项目搭建
## 搭建开发环境
-Halo 在本地开发环境的运行可参考[开发环境运行](../core/run.md),或者使用 [Docker](../../getting-started/install/docker.md) 运行。
+Halo 在本地开发环境的运行可参考[开发环境运行](../core/run.md),或者使用 [Docker](../../guide/install/docker.mdx) 运行。
-:::tip
+:::tip 启用主题实时更新
为了保证在开发时,主题代码可以实时生效,需要注意以下事项:
- 使用 Halo 源码运行时,需要在配置文件中包含如下配置:
@@ -53,11 +53,11 @@ spec:
url: "https://github.com/halo-sigs/theme-foo/blob/main/LICENSE"
```
-:::info[提示]
+:::info 查看主题配置文档
主题的配置文件详细文档请参考 [配置文件](./config.md)。
:::
-:::info[提示]
+:::info 查看主题目录结构
主题项目的目录结构请参考 [主题目录结构](./structure.md)。
:::
@@ -69,7 +69,7 @@ spec:
- [halo-sigs/theme-vite-starter](https://github.com/halo-dev/theme-vite-starter) - 与 Vite 集成的主题模板,由 Vite 负责资源构建。
- [halo-sigs/theme-astro-starter](https://github.com/halo-sigs/theme-astro-starter) - 以 Astro 作为预渲染框架的主题模板。
-:::info[提示]
+:::info 从模板仓库创建主题
以上 GitHub 都被设置为了模板仓库(Template repository),点击仓库主页的 `Use this template` 按钮即可通过此模板创建一个新的仓库。
创建新的主题仓库并克隆到本地开发环境之后,需要确保主题文件夹名称和 `theme.yaml` 中的 `metadata.name` 字段一致,否则可能导致部分资源无法正常加载。
diff --git a/docs/developer-guide/theme/settings.md b/docs/developer-guide/theme/settings.md
index 3e2639de..f15d0d2d 100644
--- a/docs/developer-guide/theme/settings.md
+++ b/docs/developer-guide/theme/settings.md
@@ -5,7 +5,7 @@ description: 介绍主题如何定义以及使用设置选项。
此文档将讲解如何在主题中定义和使用设置项,如 [表单定义](../form-schema) 中所说,目前 Halo 的 Console 端的所有表单都使用了 [FormKit](https://github.com/formkit/formkit) 的方案。
-:::tip
+:::tip 先了解 FormKit 表单定义
有关 FormKit 定义表单的更多信息,请参考 [表单定义](../form-schema),此文档仅针对主题中的设置项进行讲解。
:::
@@ -39,7 +39,7 @@ spec:
url: "https://github.com/halo-sigs/theme-foo/blob/main/LICENSE"
```
-:::tip
+:::tip 保持配置名称一致
`settingName` 和 `configMapName` 必须同时配置,且可以自定义名称,但是 `settingName` 必须和 Setting 的 `metadata.name` 一致。
:::
@@ -82,7 +82,7 @@ spec:
value: "double"
```
-:::tip
+:::tip 保持 Setting 名称一致
Setting 资源的 `metadata.name` 必须和 `theme.yaml` 中的 `spec.settingName` 一致。
:::
@@ -134,6 +134,6 @@ npx @halo-dev/convert-theme-config-to-next settings
执行完成之后即可看到主题目录下生成了 `settings.2.0.yaml` 文件,重命名为 `settings.yaml` 即可。
-:::tip
+:::tip 修改转换后的资源名称
转换完成之后需要修改 `metadata.name` 字段。
:::
diff --git a/docs/developer-guide/theme/static-resources.md b/docs/developer-guide/theme/static-resources.md
index 7bd22609..563be7d9 100644
--- a/docs/developer-guide/theme/static-resources.md
+++ b/docs/developer-guide/theme/static-resources.md
@@ -24,7 +24,7 @@ description: 本文档介绍主题的静态资源的引用方法。
以上方式仅支持在 HTML 标签中使用,且必须使用 `@{}` 包裹才能渲染为正确的路径。如果需要在非 HTML 标签中得到正确的路径,我们提供了 `#theme.assets()` API。
-:::info[注意]
+:::info 资源地址无需包含 /assets/
需要注意的是,调用 `#theme.assets()` 的时候,资源地址不需要添加 `/assets/`。
:::
@@ -50,6 +50,6 @@ function loadScript(url) {
```
-:::info[提示]
+:::info 在 JavaScript 中使用 Thymeleaf
关于在 JavaScript 中使用 Thymeleaf 语法可以参考 Thymeleaf 官方文档:[JavaScript inlining](https://www.thymeleaf.org/doc/tutorials/3.1/usingthymeleaf.html#javascript-inlining)
:::
diff --git a/docs/developer-guide/theme/structure.md b/docs/developer-guide/theme/structure.md
index 1b2a7a6a..37cfe157 100644
--- a/docs/developer-guide/theme/structure.md
+++ b/docs/developer-guide/theme/structure.md
@@ -5,7 +5,7 @@ description: 主题的目录结构介绍
Halo 2.0 的主题基本目录结构如下:
-```bash title="~/halo2-dev/themes/my-theme"
+```tree title="~/halo2-dev/themes/my-theme"
my-theme
├── templates/
│ ├── assets/
diff --git a/docs/developer-guide/theme/template-route-mapping.md b/docs/developer-guide/theme/template-route-mapping.md
index f72852ff..b9cb11fe 100644
--- a/docs/developer-guide/theme/template-route-mapping.md
+++ b/docs/developer-guide/theme/template-route-mapping.md
@@ -79,7 +79,7 @@ customTemplates:
最终使用者即可在文章设置、独立页面设置、分类设置中选择自定义模板。
-:::info[提示]
+:::info 自定义模板要求
1. 自定义模板与默认模板的功能相同,区别仅在于可以让使用者选择不同于默认模板风格的模板。
2. 自定义模板的文件名需要以 `.html` 结尾,且需要在 `/templates/` 目录下创建。
diff --git a/docs/developer-guide/theme/template-tag.md b/docs/developer-guide/theme/template-tag.md
index 0394a7fe..84613065 100644
--- a/docs/developer-guide/theme/template-tag.md
+++ b/docs/developer-guide/theme/template-tag.md
@@ -51,6 +51,6 @@ Halo 为满足部分代码注入和模板扩展点的需求,提供了一些专
```
-:::info[注意]
+:::info 建议实现完整标签
为了保证 Halo 的功能完整性,建议主题开发者尽可能在主题中实现此标签。
:::
diff --git a/docs/developer-guide/theme/template-variables.md b/docs/developer-guide/theme/template-variables.md
deleted file mode 100644
index 48dd15c6..00000000
--- a/docs/developer-guide/theme/template-variables.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-title: 模板编写
----
-
-此章节我们将详细介绍如何在主题中编写页面的模板,以下是 Halo 核心中支持的所有模板:
-
-```mdx-code-block
-import DocCardList from '@theme/DocCardList';
-
-
-```
diff --git a/docs/developer-guide/theme/template-variables/_meta.json b/docs/developer-guide/theme/template-variables/_meta.json
new file mode 100644
index 00000000..a8c2bca3
--- /dev/null
+++ b/docs/developer-guide/theme/template-variables/_meta.json
@@ -0,0 +1,13 @@
+[
+ "index_",
+ "post",
+ "page",
+ "archives",
+ "tags",
+ "tag",
+ "categories",
+ "category",
+ "author",
+ "auth",
+ "error"
+]
diff --git a/docs/developer-guide/theme/template-variables/archives.md b/docs/developer-guide/theme/template-variables/archives.mdx
similarity index 100%
rename from docs/developer-guide/theme/template-variables/archives.md
rename to docs/developer-guide/theme/template-variables/archives.mdx
diff --git a/docs/developer-guide/theme/template-variables/auth.md b/docs/developer-guide/theme/template-variables/auth.md
index ad5c3680..f5a4da8e 100644
--- a/docs/developer-guide/theme/template-variables/auth.md
+++ b/docs/developer-guide/theme/template-variables/auth.md
@@ -13,7 +13,7 @@ Halo 2.20 重构了登录、注册等页面,现在支持通过主题自定义
要实现自定义登录、注册等模板,只需要在主题的 `templates` 目录中新建与 Halo 源码中 `application/src/main/resources/templates` 同名的模板文件即可,下面是 Halo 源码中的目录结构:
-```bash
+```tree
├── challenges
│ └── two-factor
│ ├── totp.html 两步验证页面
diff --git a/docs/developer-guide/theme/template-variables/author.md b/docs/developer-guide/theme/template-variables/author.mdx
similarity index 100%
rename from docs/developer-guide/theme/template-variables/author.md
rename to docs/developer-guide/theme/template-variables/author.mdx
diff --git a/docs/developer-guide/theme/template-variables/categories.md b/docs/developer-guide/theme/template-variables/categories.mdx
similarity index 100%
rename from docs/developer-guide/theme/template-variables/categories.md
rename to docs/developer-guide/theme/template-variables/categories.mdx
diff --git a/docs/developer-guide/theme/template-variables/category.md b/docs/developer-guide/theme/template-variables/category.md
deleted file mode 100644
index 2a775540..00000000
--- a/docs/developer-guide/theme/template-variables/category.md
+++ /dev/null
@@ -1,146 +0,0 @@
----
-title: 分类归档
-description: category.html - /categories/:slug
----
-
-import CategoryVo from "../vo/_CategoryVo.md"
-import TagVo from "../vo/_TagVo.md"
-import ContributorVo from "../vo/_ContributorVo.md";
-import ListedPostVo from "../vo/_ListedPostVo.md"
-
-用于根据分类列出所有文章的页面。
-
-## 路由信息
-
-- 模板路径:`/templates/category.html`
-- 访问路径:`/categories/:slug`
-
-### 自定义模板
-
-除了上面提到的 `category.html`,主题作者还可以添加多种形式的额外渲染模板,提供给用户选择,可以通过这个功能实现将网站上的文章内容进行领域划分,比如网站上同时存在新闻、文档、博客等分区,那么就可以利用这个功能提供多个模板,同时 Halo 还支持为分类设置文章渲染模板,详情可见[新建文章分类](../../../user-guide/posts.md#新建文章分类)。
-
-定义方式为:
-
-```yaml title="theme.yaml"
-customTemplates:
- category:
- - name: {name}
- description: {description}
- screenshot: {screenshot}
- file: {file}.html
-```
-
-- `name`:模板名称
-- `description`:模板描述
-- `screenshot`:模板预览图
-- `file`:模板文件名,需要在 `/templates/` 目录下创建
-
-示例:
-
-```yaml title="theme.yaml"
-customTemplates:
- category:
- - name: 新闻
- description: 用于展示新闻分类下的文章
- screenshot:
- file: category_news.html
- - name: 博客
- description: 用于展示博客分类下的文章
- screenshot:
- file: category_blog.html
-```
-
-:::info
-需要注意,修改 theme.yaml 需要[重载主题配置](../../../user-guide/themes.md#重载主题配置)。
-:::
-
-## 变量
-
-### category
-
-#### 变量类型
-
-[#CategoryVo](#categoryvo)
-
-### posts
-
-#### 变量类型
-
-[#UrlContextListResult\](#urlcontextlistresultlistedpostvo)
-
-#### 示例
-
-```html title="/templates/category.html"
-
-```
-
-### _templateId
-
-#### 变量值
-
-`category`
-
-## 类型定义
-
-### CategoryVo
-
-
-
-### TagVo
-
-
-
-### ContributorVo
-
-
-
-### ListedPostVo
-
-
-
-- [#CategoryVo](#categoryvo)
-- [#TagVo](#tagvo)
-- [#ContributorVo](#contributorvo)
-
-### UrlContextListResult\
-
-```json title="UrlContextListResult"
-{
- "page": 0, // 当前页码
- "size": 0, // 每页条数
- "total": 0, // 总条数
- "items": "List<#ListedPostVo>", // 文章列表数据
- "first": true, // 是否为第一页
- "last": true, // 是否为最后一页
- "hasNext": true, // 是否有下一页
- "hasPrevious": true, // 是否有上一页
- "totalPages": 0, // 总页数
- "nextUrl": "string", // 下一页链接
- "prevUrl": "string" // 上一页链接
-}
-```
-
-- [#ListedPostVo](#listedpostvo)
diff --git a/versioned_docs/version-2.23/developer-guide/theme/template-variables/category.md b/docs/developer-guide/theme/template-variables/category.mdx
similarity index 95%
rename from versioned_docs/version-2.23/developer-guide/theme/template-variables/category.md
rename to docs/developer-guide/theme/template-variables/category.mdx
index 2a775540..2e6aaeec 100644
--- a/versioned_docs/version-2.23/developer-guide/theme/template-variables/category.md
+++ b/docs/developer-guide/theme/template-variables/category.mdx
@@ -17,7 +17,7 @@ import ListedPostVo from "../vo/_ListedPostVo.md"
### 自定义模板
-除了上面提到的 `category.html`,主题作者还可以添加多种形式的额外渲染模板,提供给用户选择,可以通过这个功能实现将网站上的文章内容进行领域划分,比如网站上同时存在新闻、文档、博客等分区,那么就可以利用这个功能提供多个模板,同时 Halo 还支持为分类设置文章渲染模板,详情可见[新建文章分类](../../../user-guide/posts.md#新建文章分类)。
+除了上面提到的 `category.html`,主题作者还可以添加多种形式的额外渲染模板,提供给用户选择,可以通过这个功能实现将网站上的文章内容进行领域划分,比如网站上同时存在新闻、文档、博客等分区,那么就可以利用这个功能提供多个模板,同时 Halo 还支持为分类设置文章渲染模板,详情可见[新建文章分类](../../../guide/use/posts.md#新建文章分类)。
定义方式为:
@@ -50,8 +50,8 @@ customTemplates:
file: category_blog.html
```
-:::info
-需要注意,修改 theme.yaml 需要[重载主题配置](../../../user-guide/themes.md#重载主题配置)。
+:::info 修改 theme.yaml 后重载配置
+需要注意,修改 theme.yaml 需要[重载主题配置](../../../guide/use/themes.md#重载主题配置)。
:::
## 变量
diff --git a/docs/developer-guide/theme/template-variables/error.md b/docs/developer-guide/theme/template-variables/error.md
index d5211ece..38127351 100644
--- a/docs/developer-guide/theme/template-variables/error.md
+++ b/docs/developer-guide/theme/template-variables/error.md
@@ -8,7 +8,7 @@ description: 关于错误页面的模板变量
- 模板路径:`/templates/error/{404,4xx,500,5xx,error}.html`
- 访问路径:无固定访问路径,由异常决定
-:::info[提示]
+:::info 错误模板匹配顺序
错误页面的可使用模板由状态码决定,例如 404 状态码对应的模板为 `/templates/error/404.html` 或者 `/templates/error/4xx.html`。也可以使用 `/templates/error/error.html` 作为默认模板。
识别顺序如下:
diff --git a/versioned_docs/version-2.23/developer-guide/theme/template-variables.md b/docs/developer-guide/theme/template-variables/index.md
similarity index 63%
rename from versioned_docs/version-2.23/developer-guide/theme/template-variables.md
rename to docs/developer-guide/theme/template-variables/index.md
index 48dd15c6..808b2d23 100644
--- a/versioned_docs/version-2.23/developer-guide/theme/template-variables.md
+++ b/docs/developer-guide/theme/template-variables/index.md
@@ -1,11 +1,6 @@
---
title: 模板编写
+overview: true
---
此章节我们将详细介绍如何在主题中编写页面的模板,以下是 Halo 核心中支持的所有模板:
-
-```mdx-code-block
-import DocCardList from '@theme/DocCardList';
-
-
-```
diff --git a/docs/developer-guide/theme/template-variables/index_.md b/docs/developer-guide/theme/template-variables/index_.mdx
similarity index 100%
rename from docs/developer-guide/theme/template-variables/index_.md
rename to docs/developer-guide/theme/template-variables/index_.mdx
diff --git a/docs/developer-guide/theme/template-variables/page.md b/docs/developer-guide/theme/template-variables/page.md
deleted file mode 100644
index 56cac963..00000000
--- a/docs/developer-guide/theme/template-variables/page.md
+++ /dev/null
@@ -1,90 +0,0 @@
----
-title: 单页面
-description: page.html - /:slug
----
-
-import SinglePageVo from "../vo/_SinglePageVo.md"
-import ContributorVo from "../vo/_ContributorVo.md"
-import ContentVo from "../vo/_ContentVo.md"
-
-页面与文章类似,同样包含页面标题和富文本形式的页面内容。与文章不同的是页面无法设置所属分类和标签信息,一般用于站点中单一展示功能的页面,例如常见的站点关于页面、联系我们页面等。
-
-## 路由信息
-
-- 模板路径:`/templates/page.html`
-- 访问路径:`/:slug`
-
-### 自定义模板
-
-除了上面提到的 `page.html`,主题作者还可以添加多种形式的额外渲染模板,提供给用户选择,此举可以丰富网站的使用类型。
-
-定义方式为:
-
-```yaml title="theme.yaml"
-customTemplates:
- page:
- - name: {name}
- description: {description}
- screenshot: {screenshot}
- file: {file}.html
-```
-
-- `name`:模板名称
-- `description`:模板描述
-- `screenshot`:模板预览图
-- `file`:模板文件名,需要在 `/templates/` 目录下创建
-
-示例:
-
-```yaml title="theme.yaml"
-customTemplates:
- page:
- - name: 关于公司
- description: 用于展示公司的一些信息
- screenshot:
- file: page_about.html
-```
-
-:::info
-需要注意,修改 theme.yaml 需要[重载主题配置](../../../user-guide/themes.md#重载主题配置)。
-:::
-
-## 变量
-
-### singlePage
-
-#### 变量类型
-
-[#SinglePageVo](#singlepagevo)
-
-#### 示例
-
-```html title="/templates/page.html"
-
-
-
-
-```
-
-### _templateId
-
-#### 变量值
-
-`page`
-
-## 类型定义
-
-### SinglePageVo
-
-
-
-- [#ContentVo](#contentvo)
-- [#ContributorVo](#contributorvo)
-
-### ContentVo
-
-
-
-### ContributorVo
-
-
diff --git a/versioned_docs/version-2.22/developer-guide/theme/template-variables/page.md b/docs/developer-guide/theme/template-variables/page.mdx
similarity index 95%
rename from versioned_docs/version-2.22/developer-guide/theme/template-variables/page.md
rename to docs/developer-guide/theme/template-variables/page.mdx
index 56cac963..5c19e62a 100644
--- a/versioned_docs/version-2.22/developer-guide/theme/template-variables/page.md
+++ b/docs/developer-guide/theme/template-variables/page.mdx
@@ -45,8 +45,8 @@ customTemplates:
file: page_about.html
```
-:::info
-需要注意,修改 theme.yaml 需要[重载主题配置](../../../user-guide/themes.md#重载主题配置)。
+:::info 修改 theme.yaml 后重载配置
+需要注意,修改 theme.yaml 需要[重载主题配置](../../../guide/use/themes.md#重载主题配置)。
:::
## 变量
diff --git a/docs/developer-guide/theme/template-variables/post.md b/docs/developer-guide/theme/template-variables/post.md
deleted file mode 100644
index 0be11f4c..00000000
--- a/docs/developer-guide/theme/template-variables/post.md
+++ /dev/null
@@ -1,97 +0,0 @@
----
-title: 文章
-description: post.html - /archives/:slug
----
-
-import CategoryVo from "../vo/_CategoryVo.md"
-import TagVo from "../vo/_TagVo.md"
-import ContentVo from "../vo/_ContentVo.md"
-import ContributorVo from "../vo/_ContributorVo.md"
-import PostVo from "../vo/_PostVo.md"
-
-文章详情页面的模板。
-
-## 路由信息
-
-- 模板路径:`/templates/post.html`
-- 访问路径:默认为 `/archives/:slug`,用户可手动更改为其他路由形式,可参考:[主题路由设置](../../../user-guide/settings.md#主题路由设置)
-
-### 自定义模板
-
-除了上面提到的 `post.html`,主题作者还可以添加多种形式的额外渲染模板,提供给用户选择,此举可以丰富网站的使用类型,用户设置方式可参考 [文章设置](../../../user-guide/posts.md#文章设置)。
-
-定义方式为:
-
-```yaml title="theme.yaml"
-customTemplates:
- post:
- - name: {name}
- description: {description}
- screenshot: {screenshot}
- file: {file}.html
-```
-
-- `name`:模板名称
-- `description`:模板描述
-- `screenshot`:模板预览图
-- `file`:模板文件名,需要在 `/templates/` 目录下创建
-
-示例:
-
-```yaml title="theme.yaml"
-customTemplates:
- post:
- - name: 文档
- description: 文档类型的文章
- screenshot:
- file: post_documentation.html
-```
-
-:::info
-需要注意,修改 theme.yaml 需要[重载主题配置](../../../user-guide/themes.md#重载主题配置)。
-:::
-
-## 变量
-
-### post
-
-#### 变量类型
-
-[#PostVo](#postvo)
-
-#### 示例
-
-```html title="/templates/post.html"
-
-
-
-
-```
-
-### _templateId
-
-#### 变量值
-
-`post`
-
-## 类型定义
-
-### CategoryVo
-
-
-
-### TagVo
-
-
-
-### ContributorVo
-
-
-
-### ContentVo
-
-
-
-### PostVo
-
-
diff --git a/versioned_docs/version-2.23/developer-guide/theme/template-variables/post.md b/docs/developer-guide/theme/template-variables/post.mdx
similarity index 89%
rename from versioned_docs/version-2.23/developer-guide/theme/template-variables/post.md
rename to docs/developer-guide/theme/template-variables/post.mdx
index 0be11f4c..cf293487 100644
--- a/versioned_docs/version-2.23/developer-guide/theme/template-variables/post.md
+++ b/docs/developer-guide/theme/template-variables/post.mdx
@@ -14,11 +14,11 @@ import PostVo from "../vo/_PostVo.md"
## 路由信息
- 模板路径:`/templates/post.html`
-- 访问路径:默认为 `/archives/:slug`,用户可手动更改为其他路由形式,可参考:[主题路由设置](../../../user-guide/settings.md#主题路由设置)
+- 访问路径:默认为 `/archives/:slug`,用户可手动更改为其他路由形式,可参考:[主题路由设置](../../../guide/use/settings.md#主题路由设置)
### 自定义模板
-除了上面提到的 `post.html`,主题作者还可以添加多种形式的额外渲染模板,提供给用户选择,此举可以丰富网站的使用类型,用户设置方式可参考 [文章设置](../../../user-guide/posts.md#文章设置)。
+除了上面提到的 `post.html`,主题作者还可以添加多种形式的额外渲染模板,提供给用户选择,此举可以丰富网站的使用类型,用户设置方式可参考 [文章设置](../../../guide/use/posts.md#文章设置)。
定义方式为:
@@ -47,8 +47,8 @@ customTemplates:
file: post_documentation.html
```
-:::info
-需要注意,修改 theme.yaml 需要[重载主题配置](../../../user-guide/themes.md#重载主题配置)。
+:::info 修改 theme.yaml 后重载配置
+需要注意,修改 theme.yaml 需要[重载主题配置](../../../guide/use/themes.md#重载主题配置)。
:::
## 变量
diff --git a/docs/developer-guide/theme/template-variables/tag.md b/docs/developer-guide/theme/template-variables/tag.mdx
similarity index 100%
rename from docs/developer-guide/theme/template-variables/tag.md
rename to docs/developer-guide/theme/template-variables/tag.mdx
diff --git a/docs/developer-guide/theme/template-variables/tags.md b/docs/developer-guide/theme/template-variables/tags.mdx
similarity index 100%
rename from docs/developer-guide/theme/template-variables/tags.md
rename to docs/developer-guide/theme/template-variables/tags.mdx
diff --git a/docs/developer-guide/theme/ui-plugin.md b/docs/developer-guide/theme/ui-plugin.md
index d03657fb..0299aa85 100644
--- a/docs/developer-guide/theme/ui-plugin.md
+++ b/docs/developer-guide/theme/ui-plugin.md
@@ -11,7 +11,7 @@ description: 通过主题扩展 Console 和 UC 界面
将 UI 项目放在主题根目录的 `ui-plugin` 目录中:
-```text
+```tree
theme-root/
├── templates/
├── theme.yaml
diff --git a/docs/getting-started/first-post.md b/docs/getting-started/first-post.md
deleted file mode 100644
index 3c370d91..00000000
--- a/docs/getting-started/first-post.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-title: 第一篇文章
-description: Halo 安装后写第一篇文章:进入控制台、编辑发布、分类标签与前台访问。
----
-
-
-
-
-## 登录管理端
-
-浏览器访问 `/console` 即可进入 Halo 管理端。
-
-## 新建文章
-
-Halo 安装完成后,默认初始化了一篇 `Hello Halo` 文章,接下来我们将创建并发布一篇自己的文章。
-
-1. 在 Halo 管理端,点击仪表盘页面中的 `创建文章` 快捷入口,即可进入到文章编辑页面。
-2. 在文章编辑器中,你可以尽情写下你想展现的内容。
-3. 当内容编辑完成后,点击右上角的 `发布` 按钮,给文章设置一个合适的标题和别名,同时可以设置文章所属分类、标签及其他一些高级设置。
-4. 确认无误后,点击弹框下方的 `发布` 按钮,我们的第一篇文章就成功发布了。
-
-:::info
-关于文章相关其他功能及文章各种设置项的说明,请参考《[用户指南 - 文章](../user-guide/posts.md)》章节
-:::
-
-## 查看文章
-
-文章发布成功后,就可以在主题端查看到我们刚刚创建的文章了。
-
-浏览器访问域名进入站点首页,站点展示的内容及样式由当前启用的主题所决定。
-
-接下来,选一款喜欢的主题,尽情体验 Halo 吧!
diff --git a/docs/getting-started/install/bt-panel.md b/docs/getting-started/install/bt-panel.md
deleted file mode 100644
index 38f960b3..00000000
--- a/docs/getting-started/install/bt-panel.md
+++ /dev/null
@@ -1,92 +0,0 @@
----
-title: 使用宝塔面板部署
-description: 通过宝塔面板部署 Halo:环境要求、站点与反向代理配置说明。
----
-
-::::info
-在继续操作之前,我们推荐您先阅读[《写在前面》](../prepare),这可以快速帮助你了解 Halo。
-::::
-
-## 宝塔面板简介
-
-宝塔面板是一个常见的 Linux 服务器运维面板,提供网站、数据库、SSL、Docker 等可视化管理能力。通过宝塔面板的 Docker 模块和应用商店,可以比较方便地完成 Halo 的安装、运行和升级。
-
-
-
-### 准备工作
-
-在开始之前,需要确保你已经完成以下准备:
-
-- 已安装并可以正常登录宝塔面板。
-- 已在服务器上安装宝塔的 Docker 模块。
-- 已放行服务器的 `80` 和 `443` 端口。
-- 如果计划使用域名访问 Halo,需要提前将域名解析到当前服务器。
-
-## 安装 Halo 应用
-
-进入宝塔面板左侧的 **Docker**,在 **应用商店** 中搜索 `Halo`,然后点击 **安装**。
-
-
-
-在安装配置页面中,按照实际情况填写参数:
-
-
-
-参数说明:
-
-- **名称**:当前 Halo 应用的名称。
-- **版本选择**:建议优先选择最新的稳定版本。
-- **域名**:Halo 对外访问使用的域名,建议填写已经完成解析的域名。
-- **允许外部访问**:如果希望直接通过 `IP:端口` 访问,可以启用此选项;如果只打算通过域名访问,通常不需要开启。
-- **端口**:Halo 容器暴露的服务端口。
-- **外部访问地址**:Halo 的最终访问地址,建议与实际访问地址保持一致,例如 `https://www.example.com`。
-- **CPU 核心数限制**、**内存限制**:按服务器资源情况选填,不限制可以保持默认值。
-- **编辑模板**:默认模板通常即可满足使用需求;如果需要调整镜像、挂载目录或其他编排参数,可以切换到自定义模板。
-
-宝塔提供的 Halo 应用模板会自动创建 Halo 运行所需的容器。确认参数无误后,点击 **确定** 开始安装。
-
-如果需要查看或调整底层的 Docker Compose 配置,可以切换到 **自定义** 模板模式:
-
-:::info
-宝塔的 Docker 应用商店的 Halo 版本可能会滞后于官方最新版本,通常建议自定义镜像版本,查看最新版本请前往 [Halo 版本发布](https://releases.halo.run/)。
-
-此外,宝塔的默认编排是 Halo 社区版本,如果你想安装 Halo 专业版或者商城版,将镜像修改为 `registry.fit2cloud.com/halo/halo-pro` 即可。
-:::
-
-
-
-安装完成后,进入 **Docker** 的 **已安装** 列表,等待 Halo 应用变为运行中状态。
-
-
-
-## 配置网站和 SSL
-
-如果你在安装 Halo 时填写了域名,宝塔通常会同步创建对应的网站配置。你可以在已安装应用卡片中点击 **管理网站**,或者直接进入左侧菜单的 **网站** 查看站点状态。
-
-
-
-如果站点的 **SSL 证书** 一栏显示未部署,可以进入站点管理页面,在 **SSL** 标签页中申请证书。
-
-
-
-证书申请成功后,即可通过你配置的域名使用 `https` 访问 Halo。首次访问时,根据页面提示完成 Halo 的[初始化](../setup.md)即可。
-
-::::info
-如果证书申请失败,建议优先检查域名解析是否生效,以及服务器的 `80`、`443` 端口是否已经正确放行。
-::::
-
-## 升级 Halo
-
-当需要升级 Halo 时,可以进入 **Docker** 的 **容器编排**,找到当前的 Halo 项目,修改镜像版本为最新版本,然后点击 **确定** 按钮即可完成升级。
-
-:::info
-查看最新版本请前往 [Halo 版本发布](https://releases.halo.run/)。
-:::
-
-
-
-更新完成后,宝塔会重新拉取镜像并重建相关容器。建议升级前先备份 Halo 数据目录和数据库,并前往 [Halo 版本发布](https://releases.halo.run/) 查看对应版本的更新说明。
-
-## 激活许可证
-
-可以参考 [许可证激活](../../user-guide/activate.md) 进行激活,社区版无需此步骤。
diff --git a/docs/getting-started/install/cloud/alibaba-cloud-market.md b/docs/getting-started/install/cloud/alibaba-cloud-market.md
deleted file mode 100644
index 1bb61fea..00000000
--- a/docs/getting-started/install/cloud/alibaba-cloud-market.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-title: 阿里云云市场部署
-description: 使用阿里云云市场 Halo 镜像快速创建实例与初始化说明。
----
-
-阿里云云市场提供围绕云计算产品的软件应用及服务,包括数据与 API、专业服务、基础软件、建站小程序、企业应用、安全、AI 与大数据计算、开发与运维、解决方案以及 IoT 十大类目市场,商品数量达上万种。
-
-Halo 目前已上架至阿里云云市场,助力用户打造高效便捷的建站体验!本指南将介绍如何通过阿里云云市场购买、部署和使用 **Halo** 镜像,并提供购买服务器的优惠链接。
-
-阿里云的 Halo 镜像不仅包括了已经部署好的 Halo 服务,还集成了 [1Panel](https://1panel.cn/) Linux 管理面板,可以更加方便地升级 Halo 和配置网站。
-
-## 购买服务器
-
-### 通过优惠链接
-
-目前阿里云针对 Halo 用户推出了 5.5 折优惠,您可以通过以下链接购买服务器:[专属阿里云特价链接 5.5 折优惠](https://market.aliyun.com/common/dashi/halo?userCode=kmemb8jp)
-
-
-
-
-
-### 创建 ECS 时选择 Halo 镜像
-
-您也可以自行购买[阿里云服务器](https://ecs-buy.aliyun.com/ecs?userCode=kmemb8jp),并在选择镜像时选择云市场镜像并搜索 **Halo**,即可快速选择镜像进行部署。
-
-
-
-
-
-服务器初始化完成之后,进入 ECS 控制台即可看到服务器信息,如下图所示:
-
-
-
-## 访问 Halo
-
-首先需要在服务器的安全组开放 80 端口,然后就可以通过服务器的公网 IP 访问 Halo 了。
-
-
-
-首次访问会进入 Halo 初始化页面,填写初始化信息即可完成 Halo 的安装。
-
-:::info[提示]
-Halo 初始化文档可查阅:[初始化](../../setup.md)
-:::
-
-## 管理 Halo
-
-该镜像的 Halo 使用 Docker Compose 方式部署,相关文件位于 `/opt/halo` 目录中。
-
-### 查看服务状态
-
-```bash
-cd /opt/halo
-docker compose ps
-```
-
-### 升级 Halo
-
-修改 `/opt/halo/docker-compose.yml` 中 Halo 容器使用的镜像标签为对应版本后,执行 `docker compose up -d` 命令即可进行升级。
diff --git a/docs/getting-started/install/cloud/tencent-cloud-lighthouse.md b/docs/getting-started/install/cloud/tencent-cloud-lighthouse.md
deleted file mode 100644
index 6da784eb..00000000
--- a/docs/getting-started/install/cloud/tencent-cloud-lighthouse.md
+++ /dev/null
@@ -1,71 +0,0 @@
----
-title: 腾讯云轻量应用模板
-description: 腾讯云轻量应用服务器应用模板一键部署 Halo 的步骤说明。
----
-
-腾讯云目前已经在轻量应用服务器的应用模板中添加了 Halo 的模板镜像,选择应用模板购买服务器之后就预装了 Halo 和 [1Panel](https://1panel.cn/)。
-
-## 购买轻量应用服务器
-
-购买地址:[轻量应用服务器](https://buy.cloud.tencent.com/lighthouse?blueprintType=APP_OS&blueprintOfficialId=lhbp-pjoqcja2®ionId=8&zone=ap-beijing-3&bundleId=bundle_starter_mc_med2_01&loginSet=AUTO&from=lh-console)
-
-然后在应用模板中选择 Halo,然后选择所需地域、可用区、套餐等,点击立即购买即可。
-
-
-
-## 应用管理
-
-
-
-服务器初始化完成之后,进入应用 **管理页面** 即可看到 Halo 和 1Panel 的相关信息。
-
-## 访问 Halo
-
-在 **应用管理** 页面中点击 **管理员登录地址** 即可进入 Halo 初始化页面,填写初始化信息即可完成 Halo 的安装。
-
-
-
-## 1Panel 管理
-
-1. 在 **应用管理** 页面中可以看到预装的 1Panel 信息,首先需要将 1Panel 的端口开放,进入防火墙页面添加默认端口 8090 即可:
-
- 
-2. 登录到实例获取 1Panel 初始用户名和密码:
-
- 
-3. 然后就可以通过 `http://ip:8090/tencentcloud` 进入 1Panel 的管理后台:
-
- 
- 
-
-## 查看预装应用
-
-为了保证 Halo 的正常运行,1Panel 中预装了 Halo 所需的环境,可以在 **应用商店** 的 **已安装** 选项卡中查看:
-
-
-
-关于应用商店,可查阅 [1Panel 文档](https://1panel.cn/docs/user_manual/appstore/appstore/)。
-
-## 升级 Halo
-
-在 **应用商店** 的 **可升级** 选项卡中检查 Halo 是否有更新,如果有新的版本,点击应用卡片的 **升级** 按钮即可。
-
-
-
-## 绑定域名
-
-:::info
-该操作要求用户有一个可用的域名,并在 DNS 服务商处添加对应的解析记录。
-:::
-
-在 **网站** 页面中,此镜像默认添加了一个关联 Halo 应用的网站,你可以点击配置按钮然后添加自己的域名。
-
-
-
-
-
-除此之外,在绑定域名之后,还需要修改一下 Halo 的 **外部访问地址** 参数为实际的网站访问地址(如:[https://demo.halo.run](https://demo.halo.run)),否则 Halo 的部分功能或者插件可能会出现使用问题,只需要按照下图所示修改应用的参数然后点击确认即可。
-
-
-
-关于网站管理,可查阅 [1Panel 文档](https://1panel.cn/docs/user_manual/websites/websites/)。
diff --git a/docs/getting-started/install/docker-compose.md b/docs/getting-started/install/docker-compose.md
deleted file mode 100644
index 27d2c67a..00000000
--- a/docs/getting-started/install/docker-compose.md
+++ /dev/null
@@ -1,345 +0,0 @@
----
-title: 使用 Docker Compose 部署
-description: 使用 Docker Compose 部署 Halo:推荐方式、compose 配置与持久化卷说明。
----
-
-```mdx-code-block
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-import DockerArgs from "./slots/_docker-args.md"
-import DockerRegistryList from "./slots/_docker-registry-list.md"
-```
-
-:::info
-在继续操作之前,我们推荐您先阅读[《写在前面》](../prepare.md),这可以快速帮助你了解 Halo。
-:::
-
-## 环境搭建
-
-- Docker 安装文档:[https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/)
-- Docker Compose 安装文档:[https://docs.docker.com/compose/install/](https://docs.docker.com/compose/install/)
-
-## 部署 Halo
-
-### 镜像说明
-
-
-
-### 创建容器
-
-1. 在系统任意位置创建一个文件夹,此文档以 `~/halo` 为例。
-
- ```bash
- mkdir ~/halo && cd ~/halo
- ```
-
- :::info
- 注意:后续操作中,Halo 产生的所有数据都会保存在这个目录,请妥善保存。
- :::
-
-2. 创建 `docker-compose.yaml`
-
- 此文档提供几种场景的 Docker Compose 配置文件,请根据你的需要**选择一种**。
-
-
-
- ```yaml {24-30,44} title="~/halo/docker-compose.yaml"
- services:
- halo:
- image: registry.fit2cloud.com/halo/halo-pro:2.26
- restart: on-failure:3
- depends_on:
- halodb:
- condition: service_healthy
- networks:
- halo_network:
- volumes:
- - ./halo2:/root/.halo2
- ports:
- - "8090:8090"
- healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
- interval: 30s
- timeout: 5s
- retries: 5
- start_period: 30s
- environment:
- # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
- - JVM_OPTS=-Xmx256m -Xms256m
- command:
- - --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
- - --spring.r2dbc.username=halo
- # PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
- - --spring.r2dbc.password=openpostgresql
- - --spring.sql.init.platform=postgresql
- # 外部访问地址,请根据实际需要修改
- - --halo.external-url=http://localhost:8090/
- halodb:
- image: postgres:15.4
- restart: on-failure:3
- networks:
- halo_network:
- volumes:
- - ./db:/var/lib/postgresql/data
- healthcheck:
- test: [ "CMD", "pg_isready" ]
- interval: 10s
- timeout: 5s
- retries: 5
- environment:
- - POSTGRES_PASSWORD=openpostgresql
- - POSTGRES_USER=halo
- - POSTGRES_DB=halo
- - PGUSER=halo
-
- networks:
- halo_network:
- ```
- :::info
- 此示例的 PostgreSQL 数据库容器默认没有设置端口映射,如果需要在容器外部访问数据库,可以自行在 `halodb` 服务中添加端口映射,PostgreSQL 的端口为 `5432`。
- :::
-
-
- ```yaml {24-30,52} title="~/halo/docker-compose.yaml"
- services:
- halo:
- image: registry.fit2cloud.com/halo/halo-pro:2.26
- restart: on-failure:3
- depends_on:
- halodb:
- condition: service_healthy
- networks:
- halo_network:
- volumes:
- - ./halo2:/root/.halo2
- ports:
- - "8090:8090"
- healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
- interval: 30s
- timeout: 5s
- retries: 5
- start_period: 30s
- environment:
- # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
- - JVM_OPTS=-Xmx256m -Xms256m
- command:
- - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
- - --spring.r2dbc.username=root
- # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
- - --spring.r2dbc.password=o#DwN&JSa56
- - --spring.sql.init.platform=mysql
- # 外部访问地址,请根据实际需要修改
- - --halo.external-url=http://localhost:8090/
-
- halodb:
- image: mysql:8.1.0
- restart: on-failure:3
- networks:
- halo_network:
- command:
- - --default-authentication-plugin=caching_sha2_password
- - --character-set-server=utf8mb4
- - --collation-server=utf8mb4_general_ci
- - --explicit_defaults_for_timestamp=true
- volumes:
- - ./mysql:/var/lib/mysql
- - ./mysqlBackup:/data/mysqlBackup
- healthcheck:
- test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
- interval: 3s
- retries: 5
- start_period: 30s
- environment:
- # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
- - MYSQL_ROOT_PASSWORD=o#DwN&JSa56
- - MYSQL_DATABASE=halo
-
- networks:
- halo_network:
- ```
-
- :::info
- 此示例的 MySQL 数据库容器默认没有设置端口映射,如果需要在容器外部访问数据库,可以自行在 `halodb` 服务中添加端口映射,MySQL 的端口为 `3306`。
- :::
-
-
- :::warning
- 不推荐在生产环境使用默认的 H2 数据库,这可能因为操作不当导致数据文件损坏。如果因为某些原因(如内存不足以运行独立数据库)必须要使用,建议按时[备份数据](../../user-guide/backup.md)。
- :::
-
- ```yaml {20} title="~/halo/docker-compose.yaml"
- services:
- halo:
- image: registry.fit2cloud.com/halo/halo-pro:2.26
- restart: on-failure:3
- volumes:
- - ./halo2:/root/.halo2
- ports:
- - "8090:8090"
- healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
- interval: 30s
- timeout: 5s
- retries: 5
- start_period: 30s
- environment:
- # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
- - JVM_OPTS=-Xmx256m -Xms256m
- command:
- # 外部访问地址,请根据实际需要修改
- - --halo.external-url=http://localhost:8090/
- ```
-
-
- ```yaml {5,13-20} title="~/halo/docker-compose.yaml"
- services:
- halo:
- image: registry.fit2cloud.com/halo/halo-pro:2.26
- restart: on-failure:3
- network_mode: "host"
- volumes:
- - ./halo2:/root/.halo2
- environment:
- # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
- - JVM_OPTS=-Xmx256m -Xms256m
- command:
- # 修改为自己已有的 MySQL 配置
- - --spring.r2dbc.url=r2dbc:pool:mysql://localhost:3306/halo
- - --spring.r2dbc.username=root
- - --spring.r2dbc.password=
- - --spring.sql.init.platform=mysql
- # 外部访问地址,请根据实际需要修改
- - --halo.external-url=http://localhost:8090/
- # 端口号 默认8090
- - --server.port=8090
- ```
-
- :::info
- 使用外部数据库时,需要提前手动创建好数据库,以 MySQL 为例:
-
- ```sql
- create database halo character set utf8mb4 collate utf8mb4_bin;
- ```
- :::
-
-
-
- 运行参数详解:
-
-
-
- :::info
- 为了保持部署流程的简洁,此文档仅提供了必要的配置示例,完整的配置选项列表可查阅:[配置说明](./config.md)
- :::
-
-3. 启动 Halo 服务
-
- ```bash
- docker compose up -d
- ```
-
- 实时查看日志:
-
- ```bash
- docker-compose logs -f
- ```
-
-4. 用浏览器访问 /console 即可进入 Halo 管理页面,首次启动会进入初始化页面。
-
- :::tip
- 如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 `http://ip:端口号` 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。
- :::
-
-5. 激活许可证,可以参考 [许可证激活](../../user-guide/activate.md) 进行激活,社区版无需此步骤。
-
-## 升级 Halo
-
-1. 备份数据,可以参考 [备份与恢复](../../user-guide/backup.md) 进行完整备份(可选,但推荐备份)。
-2. 更新 Halo 服务
-
- 修改 `docker-compose.yaml` 中配置的镜像版本。
-
- ```yaml {3}
- services:
- halo:
- image: registry.fit2cloud.com/halo/halo-pro:2.26
- ```
-
- ```bash
- docker compose up -d
- ```
-
-## 反向代理
-
-你可以在下面的反向代理软件中任选一项,我们假设你已经安装好了其中一项,并对其的基本操作有一定了解。如果你对它们没有任何了解,可以参考我们更为详细的反向代理文档:
-
-1. 使用 [Nginx Proxy Manager](../install/other/nginxproxymanager.md)
-2. 使用 [Traefik](../install/other/traefik.md)
-
-### Nginx
-
-```nginx {2,7,10}
-upstream halo {
- server 127.0.0.1:8090;
-}
-server {
- listen 80;
- listen [::]:80;
- server_name www.yourdomain.com;
- client_max_body_size 1024m;
- location / {
- proxy_pass http://halo;
- proxy_set_header HOST $host;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- }
-}
-```
-
-### Caddy 2
-
-```txt {1,5}
-www.yourdomain.com
-
-encode gzip
-
-reverse_proxy 127.0.0.1:8090
-```
-
-### Traefik
-
-更新 halo 容器组的配置
-
-1. `networks` 中引入已存在的网络 `traefik`(此网络需要 [提前创建](../install/other/traefik.md#创建-traefik))
-2. `services.halo.networks` 中添加网络 `traefik`
-3. 修改外部地址为你的域名
-4. 声明路由规则、开启 TLS
-
-```yaml {2-3,14,18,23-29}
-networks:
- traefik:
- external: true
- halo:
-
-services:
- halo:
- image: registry.fit2cloud.com/halo/halo-pro:2.26
- restart: on-failure:3
- volumes:
- - ./halo2:/root/.halo2
- networks:
- - traefik
- - halo
- command:
- # 外部访问地址,请根据实际需要修改
- - --halo.external-url=https://yourdomain.com
- labels:
- traefik.enable: "true"
- traefik.docker.network: traefik
- traefik.http.routers.halo.rule: Host(`yourdomain.com`)
- traefik.http.routers.halo.tls: "true"
- traefik.http.routers.halo.tls.certresolver: myresolver
- traefik.http.services.halo.loadbalancer.server.port: 8090
-```
diff --git a/docs/getting-started/install/docker.md b/docs/getting-started/install/docker.md
deleted file mode 100644
index 51b12915..00000000
--- a/docs/getting-started/install/docker.md
+++ /dev/null
@@ -1,85 +0,0 @@
----
-title: 使用 Docker 部署
-description: 使用 Docker 单容器运行 Halo:镜像、端口映射与数据目录挂载要点。
----
-
-import DockerArgs from "./slots/_docker-args.md"
-import DockerRegistryList from "./slots/_docker-registry-list.md"
-
-:::info
-在继续操作之前,我们推荐您先阅读[《写在前面》](../prepare),这可以快速帮助你了解 Halo。
-:::
-
-:::warning
-此文档仅提供使用默认 H2 数据库的 Docker 运行方式,主要用于体验和测试,在生产环境我们不推荐使用 H2 数据库,这可能因为操作不当导致数据文件损坏。如果因为某些原因(如内存不足以运行独立数据库)必须要使用,建议按时[备份数据](../../user-guide/backup.md)。
-
-如果需要使用其他数据库部署,我们推荐使用 Docker Compose 部署:[使用 Docker Compose 部署](./docker-compose)
-:::
-
-## 环境搭建
-
-- Docker 安装文档:[https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/)
-
-## 部署 Halo
-
-### 镜像说明
-
-
-
-### 创建容器
-
-1. 创建容器
-
- ```bash
- docker run -it -d --name halo -p 8090:8090 -v ~/.halo2:/root/.halo2 -e JVM_OPTS="-Xmx256m -Xms256m" registry.fit2cloud.com/halo/halo-pro:2.26
- ```
-
- :::info
- 注意:此命令默认使用自带的 H2 Database 数据库。如需使用 PostgreSQL,请参考:[使用 Docker Compose 部署](./docker-compose)
- :::
-
- - **-it**:开启输入功能并连接伪终端
- - **-d**:后台运行容器
- - **--name**:为容器指定一个名称
- - **-p**:端口映射,格式为 `主机(宿主)端口:容器端口` ,可在 `application.yaml` 配置。
- - **-v**:工作目录映射。形式为:`-v 宿主机路径:/root/.halo2`,后者不能修改。
-
- 运行参数详解:
-
-
-
- :::info
- 为了保持部署流程的简洁,此文档仅提供了必要的配置示例,完整的配置选项列表可查阅:[配置说明](./config.md)
- :::
-
-2. 用浏览器访问 `/console` 即可进入 Halo 管理页面,首次启动会进入初始化页面。
-
- :::tip
- 如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 `http://ip:端口号` 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。
- :::
-
-3. 激活许可证,可以参考 [许可证激活](../../user-guide/activate.md) 进行激活,社区版无需此步骤。
-
-## 升级 Halo
-
-1. 备份数据,可以参考 [备份与恢复](../../user-guide/backup.md) 进行完整备份(可选,但推荐备份)。
-2. 拉取新版本镜像
-
- ```bash
- docker pull registry.fit2cloud.com/halo/halo-pro:2.26
- ```
-
-3. 停止运行中的容器
-
- ```bash
- docker stop halo
- docker rm halo
- ```
-
-4. 更新 Halo
-
- 修改版本号后,按照最初安装的方式,重新创建容器即可。
-
- ```bash
- docker run -it -d --name halo -p 8090:8090 -v ~/.halo2:/root/.halo2 registry.fit2cloud.com/halo/halo-pro:2.26
- ```
diff --git a/docs/getting-started/install/helm.md b/docs/getting-started/install/helm.md
deleted file mode 100644
index d412b061..00000000
--- a/docs/getting-started/install/helm.md
+++ /dev/null
@@ -1,142 +0,0 @@
----
-title: 使用 Helm 部署
-description: 使用 Helm Chart 在 Kubernetes 集群中安装与升级 Halo 的说明。
----
-
-import DockerArgs from "./slots/_docker-args.md"
-
-:::info
-在继续操作之前,我们推荐您先阅读[《写在前面》](../prepare.md),这可以快速帮助你了解 Halo。
-:::
-
-## 先决条件
-
-1. 拥有可用的 1.19 或更高版本的 Kubernetes 集群
-2. 安装有 Helm 客户端 3.2 或更高的版本
-3. 指定 StorageClass 自动创建存储卷时需要底层存储驱动支持
-4. 用户对 Kubernetes 及 Helm 相关概念及如何使用有基本了解
-
-## 快速部署
-
-通过以下命令可以使用默认安装参数快速部署 Halo。默认参数下该 Chart 会自动部署 PostgreSQL 数据库给 Halo 使用,同时 Halo 工作目录及 PostgreSQL 数据目录通过指定 StorageClass 的方式自动创建存储卷进行持久化。
-
-```bash
-# 添加 Halo 项目的 Helm Charts 仓库
-helm repo add halo https://halo-sigs.github.io/charts/
-# 从 chart 仓库中更新本地可用chart的信息
-helm repo update
-# 使用默认参数,在当前的 Kubernetes namespace 中安装 Halo
-helm install halo halo/halo
-```
-
-命令执行成功后会返回类似下文中的提示,通过提示中的命令可以获取到 NodePort 方式的 Halo 访问地址及默认的控制台管理员用户名和密码。
-
-```bash
-NAME: halo
-LAST DEPLOYED: Sun Jun 25 15:49:53 2023
-NAMESPACE: halo
-STATUS: deployed
-REVISION: 1
-TEST SUITE: None
-NOTES:
-CHART NAME: halo
-CHART VERSION: 1.1.0
-APP VERSION: 2.6.1
-
-** Please be patient while the chart is being deployed **
-
-Your Halo site can be accessed through the following DNS name from within your cluster:
-
- halo.halo.svc.cluster.local (port 80)
-
-To access your Halo site from outside the cluster follow the steps below:
-
-1. Get the Halo URL by running these commands:
-
- export NODE_PORT=$(kubectl get --namespace halo -o jsonpath="{.spec.ports[0].nodePort}" services halo)
- export NODE_IP=$(kubectl get nodes --namespace halo -o jsonpath="{.items[0].status.addresses[0].address}")
- echo "Halo URL: http://$NODE_IP:$NODE_PORT/"
- echo "Halo Console URL: http://$NODE_IP:$NODE_PORT/console"
-
-2. Open a browser and access Halo using the obtained URL.
-
-3. Login with the following credentials below to see your site:
-
- echo Username: admin
- echo Password: $(kubectl get secret --namespace halo halo -o jsonpath="{.data.halo-password}" | base64 -d)
-```
-
-:::info[参数说明]
-
-- 使用 Halo Helm Chart 仓库中 [values.yaml](https://github.com/halo-sigs/charts/blob/main/charts/halo/values.yaml) 文件中的默认参数进行安装;
-- 关于 PostgreSQL 数据库的更多参数说明,请参考 [Bitnami PostgreSQL Chart](https://github.com/bitnami/charts/tree/main/bitnami/postgresql#parameters),在原有参数格式上增加 `postgresql.` 前缀即可。
-:::
-
-## 卸载
-
-使用命令 `helm uninstall halo` 可卸载已安装的 Halo 应用,其中 `halo` 为安装时指定的 Halo 应用名称。
-
-:::warning
-卸载应用前请确认数据库及 Halo 工作空间中的文件已进行备份或不再需要。
-:::
-
-## 使用 MySQL 数据库
-
-当用户希望使用 MySQL 数据库而非默认的 PostgreSQL 数据库时,可以参考以下命令进行部署。
-
-```bash
-helm install halo halo/halo --set mysql.enabled=true --set postgresql.enabled=false
-```
-
-:::info[参数说明]
-
-- `mysql.enabled=true`:自动安装 MySQL 数据库;
-- `postgresql.enabled=false`:不自动安装 PostgreSQL 数据库;
-- 关于 mysql 的更多参数说明,请参考 [Bitnami MySQL Chart](https://github.com/bitnami/charts/tree/main/bitnami/mysql#parameters),在原有参数格式上增加 `mysql.` 前缀即可。
-:::
-
-## 使用已有的数据库
-
-当用户希望使用已有的数据库而非自动安装新数据库时,可以参考以下命令进行部署。
-
-```bash
-helm install halo halo/halo \
- --set mysql.enabled=false \
- --set postgresql.enabled=false \
- --set externalDatabase.platform=mysql \
- --set externalDatabase.host=mysql \
- --set externalDatabase.port=3306 \
- --set externalDatabase.user=halo \
- --set externalDatabase.password=0P0gJrCyzz \
- --set externalDatabase.database=halo
-```
-
-:::info[参数说明]
-
-- `mysql.enabled=true`:不自动安装 MySQL 数据库;
-- `postgresql.enabled=false`:不自动安装 PostgreSQL 数据库;
-- `externalDatabase.platform=mysql`:外部数据库类型,例如 `postgresql`、`mysql`;
-- `externalDatabase.host=mysql`:外部数据库连接地址;
-- `externalDatabase.port=3306`:外部数据库连接端口;
-- `externalDatabase.user=halo`:外部数据库用户名;
-- `externalDatabase.password=0P0gJrCyzz`:外部数据库密码;
-- `externalDatabase.database=halo`:外部数据库库名;
-:::
-
-## 创建 Ingress
-
-当用户希望通过 Ingress 将 Halo 应用暴露到 Kubernetes 集群外进行访问时,可以参考以下安装参数。
-
-```bash
-helm install halo halo/halo --set ingress.enabled=true --set ingress.hostname=demo.halo.run
-```
-
-对于已有的 Halo 应用,可以通过如下命令更新应用参数,为 Halo 应用创建 Ingress。
-
-```bash
-helm upgrade halo halo/halo --set ingress.enabled=true --set ingress.hostname=demo.halo.run
-```
-
-## 其他参数
-
-完整参数列表请参考 Halo 项目的 [Helm Chart 仓库](https://github.com/halo-sigs/charts#parameters)。
diff --git a/docs/getting-started/install/jar-file.md b/docs/getting-started/install/jar-file.md
deleted file mode 100644
index be633501..00000000
--- a/docs/getting-started/install/jar-file.md
+++ /dev/null
@@ -1,312 +0,0 @@
----
-title: 使用 JAR 文件部署
-description: 使用 JAR 与 Java 运行 Halo:数据库要求、启动参数与生产环境建议。
----
-
-:::info
-在继续操作之前,我们推荐您先阅读[《写在前面》](../prepare.md),这可以快速帮助你了解 Halo。
-:::
-
-## 依赖检查
-
-在开始之前,需要确保服务器已经满足以下条件:
-
-1. [Java](https://openjdk.org) 环境,版本要求:
- - 2.21 以上版本:**JRE 21**
- - 2.20 及以下版本:**JRE 17**
-2. 数据库(任一)
- - [MySQL 5.7+](https://www.mysql.com)
- - [MariaDB](https://mariadb.org)
- - [PostgreSQL](https://www.postgresql.org)
-
-由于 Linux 发行版本的差异以及包管理器的不同,此文档不会涉及到如何安装 Java 环境以及数据库,建议查阅对应依赖的官方文档进行安装。
-
-## 安装
-
-1. 创建新的系统用户
-
- :::info
- 我们不推荐直接使用系统 root 用户来运行 Halo。如果你需要直接使用 root 用户,请跳过这一步。
- :::
-
- 创建一个名为 halo 的用户(名字可以随意)
-
- ```bash
- useradd -m halo
- ```
-
- 为 halo 用户创建密码
-
- ```bash
- passwd halo
- ```
-
- 登录到 halo 账户
-
- ```bash
- su - halo
- ```
-
-2. 创建存放运行包的目录,这里以 `~/app` 为例
-
- ```bash
- mkdir ~/app && cd ~/app
- ```
-
-3. 下载运行包
-
- :::info
- Halo 主要区分为[社区版和付费版](../prepare.md#发行版本),这两个版本使用不同的 JAR 文件,以下是 JAR 文件下载地址:
- 1. [https://download.halo.run](https://download.halo.run)
- 2. [GitHub Releases(社区版)](https://github.com/halo-dev/halo/releases)
-
- 后续文档将使用 `halo-pro-.jar` 为例,如果需要使用社区版,将 `halo-pro` 改为 `halo` 即可。
- :::
-
- ```bash
- wget https://dl.halo.run/release/halo-pro-2.26.0.jar -O halo.jar
- ```
-
-4. 创建 [工作目录](../prepare#工作目录)
-
- ```bash
- mkdir ~/.halo2 && cd ~/.halo2
- ```
-
-5. 创建 Halo 配置文件
-
- ```bash
- vim application.yaml
- ```
-
- 将以下内容复制到 `application.yaml` 中,根据下面的配置说明进行配置。
-
- ```yaml title="application.yaml"
- server:
- # 运行端口
- port: 8090
- spring:
- # 数据库配置,支持 MySQL、MariaDB、PostgreSQL、H2 Database,具体配置方式可以参考下面的数据库配置
- r2dbc:
- url: r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE
- username: admin
- password: 123456
- sql:
- init:
- mode: always
- # 需要配合 r2dbc 的配置进行改动
- platform: h2
- halo:
- # 工作目录位置
- work-dir: ${user.home}/.halo2
- # 外部访问地址
- external-url: http://localhost:8090
- # 附件映射配置,通常用于迁移场景
- attachment:
- resource-mappings:
- - pathPattern: /upload/**
- locations:
- - migrate-from-1.x
- ```
-
- 数据库配置说明:
-
- | 参数名 | 描述 |
- | -------------------------- | --------------------------------------------------------------------- |
- | `spring.r2dbc.url` | 数据库连接地址,详细可查阅下方的 `配置对应关系` |
- | `spring.r2dbc.username` | 数据库用户名 |
- | `spring.r2dbc.password` | 数据库密码 |
- | `spring.sql.init.platform` | 数据库平台名称,支持 `postgresql`、`mysql`、`mariadb`、`h2` |
-
- 配置对应关系:
-
- | 链接方式 | 链接地址格式 | `spring.sql.init.platform` |
- | ------------------ | ---------------------------------------------------------------------------------- | -------------------------- |
- | PostgreSQL(推荐) | `r2dbc:pool:postgresql://{HOST}:{PORT}/{DATABASE}` | postgresql |
- | MySQL | `r2dbc:pool:mysql://{HOST}:{PORT}/{DATABASE}` | mysql |
- | MariaDB | `r2dbc:pool:mariadb://{HOST}:{PORT}/{DATABASE}` | mariadb |
- | H2 Database | `r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE` | h2 |
-
- :::info
- - HOST:数据库服务地址,如 `localhost`
- - PORT:数据库服务端口,如 `3306`
- - DATABASE:数据库名称,如 `halo`,需要提前创建,以 MySQL 为例:
-
- ```sql
- create database halo character set utf8mb4 collate utf8mb4_bin;
- ```
-
- :::
-
- :::warning
- 不推荐在生产环境使用默认的 H2 数据库,这可能因为操作不当导致数据文件损坏。如果因为某些原因(如内存不足以运行独立数据库)必须要使用,建议按时[备份数据](../../user-guide/backup.md)。
- :::
-
- :::info
- 为了保持部署流程的简洁,此文档仅提供了必要的配置示例,完整的配置选项列表可查阅:[配置说明](./config.md)
- :::
-
- 配置完成之后,保存即可。
-
-6. 测试运行 Halo
-
- ```bash
- cd ~/app && java -Dfile.encoding=UTF-8 -jar halo.jar --spring.config.additional-location=optional:file:$HOME/.halo2/
- ```
-
- :::tip
- 如果指定了其他工作目录,请将 `$HOME/.halo2/` 替换为相应的绝对路径,并确保路径末尾带有 `/`。
- :::
-
-7. 如果没有观察到异常日志,即可尝试访问 Halo
-
- 打开 `http://ip:端口号` 即可跳转到初始化页面。
-
- :::info
- 如测试启动正常,请继续看[作为服务运行](#作为服务运行)部分,第 8 步仅仅作为测试。当你关闭 ssh 连接之后,服务会停止。你可使用 CTRL+C 停止运行测试进程。
- :::
-
- :::tip
- 如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 `http://ip:端口号` 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。
- :::
-
-8. 激活许可证,可以参考 [许可证激活](../../user-guide/activate.md) 进行激活,社区版无需此步骤。
-
-## 作为服务运行
-
-下面将介绍如何将 Halo 作为服务运行,以实现在关闭 ssh 连接后,Halo 仍然可以正常运行。
-
-此文档以 Systemd 为例,也可以参考:[Installing Spring Boot Applications](https://docs.spring.io/spring-boot/docs/current/reference/html/deployment.html#deployment.installing)
-
-1. 退出 halo 账户,登录到 root 账户
-
- > 如果当前就是 root 账户,请略过此步骤。
-
- ```bash
- exit
- ```
-
-2. 创建 halo.service 文件
-
- ```bash
- vim /etc/systemd/system/halo.service
- ```
-
- 将以下内容复制到 `halo.service` 中,根据下面的配置说明进行配置。
-
- ```ini {9,10} title="/etc/systemd/system/halo.service"
- [Unit]
- Description=Halo Service
- Documentation=https://docs.halo.run
- After=network-online.target
- Wants=network-online.target
-
- [Service]
- Type=simple
- User=USER
- ExecStart=/usr/bin/java -Dfile.encoding=UTF-8 -server -Xms256m -Xmx256m -jar JAR_PATH --spring.config.additional-location=optional:file:/home/halo/.halo2/
- ExecStop=/bin/kill -s QUIT $MAINPID
- Restart=always
- StandardOutput=syslog
- StandardError=inherit
-
- [Install]
- WantedBy=multi-user.target
- ```
-
- - **JAR_PATH**:Halo 运行包的绝对路径,例如 `/home/halo/app/halo.jar`,注意:此路径不支持 `~` 符号。
- - **USER**:运行 Halo 的系统用户,如果有按照上方教程创建新的用户来运行 Halo,修改为你创建的用户名称即可。反之请删除 `User=USER`。
-
- :::tip
- 请确保 `/usr/bin/java` 是正确无误的。建议将 `ExecStart` 中的命令复制出来运行一下,保证命令有效。如果指定了其他工作目录,请像上面一样改动。
- :::
-
- 配置完成之后,保存即可。
-
-3. 重新加载 systemd
-
- ```bash
- systemctl daemon-reload
- ```
-
-4. 运行服务
-
- ```bash
- systemctl start halo
- ```
-
-5. 在系统启动时启动服务
-
- ```bash
- systemctl enable halo
- ```
-
-最后,你可以通过下面的命令查看服务日志:
-
-```bash
-journalctl -n 20 -u halo
-```
-
-## 版本升级
-
-1. 备份数据,可以参考 [备份与恢复](../../user-guide/backup.md) 进行完整备份(可选,但推荐备份)。
-2. 停止 Halo 服务
-
- ```bash
- service halo stop
- ```
-
-3. 下载新版本的 Halo 运行包,覆盖原有的运行包
-
- ```bash
- wget https://dl.halo.run/release/halo-pro-2.26.0.jar -O /home/halo/app/halo.jar
- ```
-
- :::info
- 以下是官方维护的下载地址:
- 1. [https://download.halo.run](https://download.halo.run)
- 2. [GitHub Releases(社区版)](https://github.com/halo-dev/halo/releases)
- :::
-
-4. 启动 Halo 服务
-
- ```bash
- service halo start
- ```
-
-## 反向代理
-
-你可以在下面的反向代理软件中任选一项,我们假设你已经安装好了其中一项,并对其的基本操作有一定了解。如果你对它们没有任何了解,可以参考我们更为详细的反向代理文档:
-
-1. 使用 [Nginx Proxy Manager](../install/other/nginxproxymanager.md)
-
-### Nginx
-
-```nginx {2,7,10}
-upstream halo {
- server 127.0.0.1:8090;
-}
-server {
- listen 80;
- listen [::]:80;
- server_name www.yourdomain.com;
- client_max_body_size 1024m;
- location / {
- proxy_pass http://halo;
- proxy_set_header HOST $host;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- }
-}
-```
-
-### Caddy 2
-
-```txt {1,5}
-www.yourdomain.com
-
-encode gzip
-
-reverse_proxy 127.0.0.1:8090
-```
diff --git a/docs/getting-started/install/other/nginxproxymanager.md b/docs/getting-started/install/other/nginxproxymanager.md
deleted file mode 100644
index 046dceff..00000000
--- a/docs/getting-started/install/other/nginxproxymanager.md
+++ /dev/null
@@ -1,244 +0,0 @@
----
-title: Nginx Proxy Manager 反向代理
-description: 使用 Nginx Proxy Manager 为 Halo 配置域名转发与 SSL 证书说明。
----
-
-## Halo 部署
-
-参见 [使用 Docker Compose 部署](../docker-compose)
-
-:::info
-`「反向代理」` 部分不进行操作,保证 Halo 服务运行无误即可。
-:::
-
-## 简介
-
-Nginx Proxy Manager 是一个可视化的 Nginx 反向代理管理器,支持在 Web UI 上管理反向代理的网站,支持申请免费的 SSL 证书并自动续签。
-
-接下来会介绍如何使用 Nginx Proxy Manager 来反向代理 Halo,以下的 Nginx 安装方式均来自于 [Nginx Proxy Manager 官方文档](https://nginxproxymanager.com/guide/)。在开始之前,建议先阅读一遍官方文档,需要对其有一定的了解。
-
-## 说明
-
-- 此文档需要对 Docker 和 Docker Compose 有一定的熟悉程度,并且已经提前在服务器上安装
-- 在安装 Nginx Proxy Manager 之前,需要确保服务器没有其他占用了 80 和 443 端口的服务
-- 需要对 Vim 有一定的熟悉程度
-- 下文使用 NPM 简称 Nginx Proxy Manager
-
-## 安装 Nginx Proxy Manager
-
-首先,我们创建一个文件夹来存放 NPM 的 `docker-compose.yml` 文件:
-
-```bash
-mkdir npm && cd npm
-vim docker-compose.yml
-```
-
-将下面的内容复制到 `docker-compose.yml` 文件:
-
-```yaml
-services:
- npm:
- image: 'jc21/nginx-proxy-manager:latest'
- networks:
- - npm
- restart: unless-stopped
- ports:
- - '80:80' # Nginx 的 80 端口
- - '443:443' # Nginx 的 443 端口
- - '81:81' # Nginx Proxy Manager 的管理端口
- volumes:
- - ./data:/data
- - ./letsencrypt:/etc/letsencrypt
-
-# 定义网络以便 NPM 与其他容器通信
-networks:
- npm:
- name: npm
- attachable: true
-```
-
-:::info
-配置中提到的 80、443、81 端口需要提前在服务器提供商开放端口。
-:::
-
-启动 NPM:
-
-```bash
-docker compose up -d
-```
-
-在服务正常启动的情况下,现在已经可以通过 `http://{服务器公网 IP}:81` 访问 NPM 的网页端了。
-
-:::info
-如果无法通过端口访问到 NPM,可以检查是否在服务器提供商开放了 `81` 端口。
-:::
-
-
-
-首次进入页面会提示创建管理员账户,需要注意的是:**邮箱一定要是合法邮箱,后续涉及到 SSL 证书签发**。
-
-至此,我们已经完成了 Nginx Proxy Manager 的搭建,之后就可以用它给我们的 Halo 或者其他 Web 应用做反向代理了。
-
-## 配置 Halo 的反向代理
-
-1. 配置 Halo 的 Docker 编排,需要将 `npm` 的网络加入到 Halo 的容器,之后就可以使用 Halo 的服务名作为 `hostname` 在 NPM 的内部进行反向代理了。
-
- ```yaml {3-5,16-17}
- # 省略
- networks:
- # 加入 npm 网络
- npm:
- external: true
- halo:
-
- services:
- halo:
- image: registry.fit2cloud.com/halo/halo-pro:2.26
- container_name: halo
- restart: on-failure:3
- volumes:
- - ./halo2:/root/.halo2
- networks:
- # 加入 npm 网络
- - npm
- - halo
- # 省略
- ```
-
- 配置完成之后,需要使用 `docker compose up -d` 命令重建 Halo 容器。
-2. 进入 NPM 仪表盘,点击代理服务进入代理服务配置页面。
-
- 
-3. 添加代理配置
-
- 
-
- 1. **域名**:配置想要代理到 Halo 的域名,需要提前在域名服务商解析到当前服务器
- 2. **协议**:选择 http
- 3. **转发主机名 / IP**:填写 Halo 容器的服务名,比如上方示例中的 `halo`
- 4. **转发端口**:8090
-
- 以上配置为必须修改,界面中的其他配置可以按需选择,但其中的**缓存资源**不建议打开,可能不会完全遵守 Halo 的缓存策略。
-
- 配置完成之后,就可以尝试访问域名。
-4. 配置 SSL,点击 SSL 选项卡,勾选 **申请新证书** 之后保存即可,同时建议勾选 **强制 SSL**,这样在访问 http 协议的地址时会自动跳转到 https 协议的地址。
-
- 
-
-至此,我们已经完成了在 Nginx Proxy Manager 配置 Halo 反向代理并添加 SSL 证书的全过程。
-
-## 进阶配置:性能与安全(可选)
-
-前文已完成基础反向代理与 SSL,对大多数博客已经够用。本节介绍在 NPM 中追加性能优化与安全响应头配置,两个目标:
-
-- **性能**:让 JavaScript、字体、JSON 等静态资源也参与 gzip 压缩;调大 proxy buffer 避免响应落盘
-- **安全**:补齐 [securityheaders.com](https://securityheaders.com) 认可的安全响应头,默认可拿到 A 评级
-
-:::info
-本节所有配置均为反代层通用优化,与具体主题无关,适用于任何 Halo 实例。
-:::
-
-### 在 NPM 中找到自定义配置入口
-
-1. 进入 NPM 仪表盘,在 Hosts → Proxy Hosts 点开 Halo 的代理记录进行编辑
-2. 切换到 **Advanced** 标签页
-3. 把下面的内容粘贴到 **Custom Nginx Configuration** 文本框
-4. 保存后 NPM 会自动 reload nginx,无需重建容器
-
-### 推荐的自定义配置
-
-```nginx
-# ---- gzip 压缩:补齐 NPM 默认未覆盖的 JS、字体、JSON 等 MIME 类型 ----
-gzip on;
-gzip_vary on;
-gzip_proxied any;
-gzip_comp_level 6;
-gzip_min_length 1024;
-gzip_types
- text/css
- text/javascript
- application/javascript
- application/x-javascript
- application/json
- application/xml
- application/rss+xml
- application/atom+xml
- image/svg+xml
- font/ttf
- font/otf
- font/woff
- font/woff2;
-# 若目录下存在 .gz 预压缩文件则优先使用
-gzip_static on;
-
-# ---- proxy buffer:避免较大响应被临时写入磁盘 ----
-proxy_buffers 16 32k;
-proxy_buffer_size 64k;
-proxy_busy_buffers_size 128k;
-
-# ---- 安全响应头:加 always 确保错误页也会返回 ----
-add_header X-Content-Type-Options "nosniff" always;
-add_header X-Frame-Options "SAMEORIGIN" always;
-add_header X-XSS-Protection "1; mode=block" always;
-add_header Referrer-Policy "strict-origin-when-cross-origin" always;
-add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
-# HSTS 请在确认 HTTPS 稳定运行后再启用,见下文说明
-# add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
-
-# ---- RSS 路径别名:Halo 默认 RSS 为 /rss.xml ----
-rewrite ^/rss$ /rss.xml permanent;
-rewrite ^/feed$ /rss.xml permanent;
-```
-
-:::tip
-`gzip_types` 不要再列 `text/html`,nginx 默认已经对其启用 gzip,重复声明会产生 `duplicate MIME type` 警告。
-:::
-
-### 关于 HSTS
-
-`Strict-Transport-Security` 会告诉浏览器未来只能通过 HTTPS 访问当前域名。一旦启用且 `max-age` 较长,浏览器会缓存该策略直到过期,期间无法回退到 HTTP。因此建议:
-
-- 在 HTTPS 证书可正常续签、基础设施稳定运行 1–2 周后再启用
-- 先从 `max-age=300`(5 分钟)起步验证,确认无误再逐步调大到 `63072000`(2 年)
-- `preload` 表示提交到浏览器内置 HSTS 列表,**提交后撤销非常困难**,确有必要再加
-
-### 验证配置是否生效
-
-```bash
-# 查看安全响应头
-curl -I https://your-halo-domain.example.com/ \
- | grep -iE "x-content-type|x-frame|x-xss|referrer-policy|permissions-policy"
-
-# 检查 JavaScript 是否启用了 gzip
-curl -IH "Accept-Encoding: gzip" \
- https://your-halo-domain.example.com/themes//source/main.js \
- | grep -i content-encoding
-```
-
-浏览器侧也可以在 DevTools → Network → Response Headers 中确认。
-
-### 常见问题
-
-#### 能拿到 securityheaders.com A+ 吗?
-
-上面的配置能稳定拿到 **A 评级**。追求 **A+** 的硬指标是配置 `Content-Security-Policy`(CSP),在博客场景下收益较低:
-
-- 多数 Halo 主题依赖若干第三方 CDN(字体、评论系统、统计、表情等),每个都需要加入 CSP 白名单
-- 主题模板中常见内联脚本,需使用 `'unsafe-inline'`(会明显削弱 CSP 的价值)或改造为 nonce 模式
-- 管理后台「代码注入」功能注入的脚本同样受 CSP 约束,白名单收敛难度较高
-
-如确有 A+ 需求,建议按以下路径落地:
-
-1. 先使用 `Content-Security-Policy-Report-Only`,不阻断页面,仅在浏览器控制台打印违规
-2. 观察 1–2 周,根据 violation 报告收敛白名单
-3. 白名单稳定后再转为生产 `Content-Security-Policy`
-
-作为参考,GitHub 本身的 securityheaders.com 评级也是 A,对博客类站点而言 A 已足够。
-
-#### NPM 界面中的「缓存资源」开关要开启吗?
-
-建议保持关闭。Halo 自身已通过 `ETag`、`Last-Modified` 等机制对静态资源提供合理的缓存策略,NPM 层再叠一层缓存可能导致主题升级或资源替换后不能立即生效。性能提升主要来自本节的 gzip 与 proxy buffer 优化。
-
-#### 为什么要调大 proxy buffer?
-
-NPM 默认的 proxy buffer 较小,当 Halo 返回的响应体超过 buffer 总量时,nginx 会把剩余数据临时写入磁盘后再转发。调大到 `16 32k`(共 512 KB)能覆盖绝大多数 HTML/JSON 响应,避免磁盘 I/O 成为瓶颈。
diff --git a/docs/getting-started/install/other/traefik.md b/docs/getting-started/install/other/traefik.md
deleted file mode 100644
index 912b74b4..00000000
--- a/docs/getting-started/install/other/traefik.md
+++ /dev/null
@@ -1,117 +0,0 @@
----
-title: Traefik 反向代理
-description: Traefik 为 Halo 提供反向代理与 HTTPS 的路由与证书配置说明。
----
-
-## Halo 部署
-
-参见 [使用 Docker Compose 部署](../docker-compose.md)
-
-:::info
-`「反向代理」` 部分不进行操作,保证 Halo 服务运行无误即可。
-:::
-
-## 简介
-
-[Traefik](https://traefik.io/traefik/) 是一款开源的反向代理与负载均衡工具,它监听后端的变化并自动更新服务配置。
-
-它与传统反向代理最大的区别,是支持声明式的动态路由规则,大大简化网关规则的配置。而且还有诸多实用特性,例如:健康检查、多实例负载均衡、能够实现 Let's Encrypt 证书的自动签发、验证与续期等等。
-
-## 创建 Traefik
-
-下面的配置中,创建了 Traefik 实例。并且做了基础的几项配置:
-
-1. 监听了宿主机的 80、443 端口,并自动将 80 端口的请求重定向到 443 端口。[文档](https://doc.traefik.io/traefik/routing/entrypoints/)
-2. 开启 Docker 服务发现,监听检测 Docker 容器声明的服务关系。[文档](https://doc.traefik.io/traefik/providers/docker/#provider-configuration)
-3. 开启 Traefik Dashboard,建议使用二级域名的形式(示例:`traefik.yourdomain.com`)。[文档](https://doc.traefik.io/traefik/operations/dashboard/#dashboard-router-rule)
-4. 开启证书自动生成,通过 ACME 自动管理 TLS 证书的申请、校验与续期。[文档](https://doc.traefik.io/traefik/https/acme/)
-
-:::warning
-ACME 证书 (`/acme.json`) 一定要 [持久化](https://doc.traefik.io/traefik/https/acme/#storage),否则每次重启 Traefik 服务,都会去申请签发证书。可能会触发 Let's
-Encrypt 的 [速率限制](https://letsencrypt.org/zh-cn/docs/rate-limits/),导致签名的域名一段时间内无法签发新的证书。
-:::
-
-```yaml {19,31,35,41} showLineNumbers
-version: "3.8"
-
-networks:
- traefik:
- name: traefik
- attachable: true
-
-services:
- traefik:
- image: traefik:v2.9
- container_name: traefik
- networks:
- - traefik
- ports:
- - "80:80"
- - "443:443"
- volumes:
- - /var/run/docker.sock:/var/run/docker.sock
- - ./acme.json:/acme.json
- command: >
- --api.dashboard=true
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --entrypoints.web.http.redirections.entrypoint.to=websecure
- --entrypoints.web.http.redirections.entrypoint.scheme=https
- --providers.docker=true
- --providers.docker.endpoint=unix:///var/run/docker.sock
- --providers.docker.watch=true
- --providers.docker.exposedByDefault=false
- --certificatesResolvers.myresolver.acme.httpChallenge.entryPoint=web
- --certificatesresolvers.myresolver.acme.email=your-mail@mail.com
- labels:
- traefik.enable: "true"
- traefik.docker.network: traefik
- traefik.http.routers.dashboard.rule: Host(`traefik.yourdomain.com`)
- traefik.http.routers.dashboard.tls: "true"
- traefik.http.routers.dashboard.tls.certresolver: myresolver
- traefik.http.routers.dashboard.service: "api@internal"
- traefik.http.routers.dashboard.middlewares: auth
- # 账号密码 admin/P@88w0rd 生成 echo $(htpasswd -nb user password) | sed -e s/\\$/\\$\\$/g
- traefik.http.middlewares.auth.basicauth.users: "admin:$$apr1$$q8q0qpzT$$lvzMP7VYd9EUcG/wkIsAN."
-```
-
-## 配置 Halo 的反向代理
-
-这里以最简配置(h2 数据库)Halo 服务的 Docker 配置举例。只需做以下调整:
-
-1. 顶层 `networks` 中添加了外部网络 `traefik`
-2. `services.halo.networks` 中添加了 `traefik` 网络
-3. `services.halo.labels` 中声明了 Traefik 配置
- 1. 路由规则为 `yourdomain.com`
- 2. 开启 TLS
- 3. 指定了服务端口为 8090
-
-```yaml {4-5,16,20,25-31} showLineNumbers
-version: "3.8"
-
-networks:
- traefik:
- external: true
- halo:
-
-services:
- halo:
- image: registry.fit2cloud.com/halo/halo-pro:2.26
- container_name: halo
- restart: on-failure:3
- volumes:
- - ./halo2:/root/.halo2
- networks:
- - traefik
- - halo
- command:
- # 外部访问地址,请根据实际需要修改
- - --halo.external-url=https://yourdomain.com
- labels:
- traefik.enable: "true"
- traefik.docker.network: traefik
- traefik.http.routers.halo.rule: Host(`yourdomain.com`)
- traefik.http.routers.halo.tls: "true"
- traefik.http.routers.halo.tls.certresolver: myresolver
- traefik.http.services.halo.loadbalancer.server.port: 8090
-```
diff --git a/docs/getting-started/prepare.md b/docs/getting-started/prepare.md
deleted file mode 100644
index c6415ae9..00000000
--- a/docs/getting-started/prepare.md
+++ /dev/null
@@ -1,136 +0,0 @@
----
-title: 写在前面
-description: Halo 部署前必读:社区版与付费版、软硬件环境、域名与 HTTPS 等准备事项。
----
-
-## 发行版本
-
-Halo 的发行版本主要区分为两个大类别,即 **Halo 社区版** 和 **Halo 付费版**。
-
-Halo 付费版包括专业版和商城版,是[凌霞软件](https://www.lxware.cn?code=mcYhwMkn)旗下的商业产品,为企业/团体/或进阶个人使用者提供了诸多定制化和特定场景的功能支持。
-
-版本区别可查阅 [方案对比](https://www.lxware.cn/halo?code=mcYhwMkn)
-
-在后续的文档中,使用付费版统称 Halo 专业版 和 Halo 商城版,除非特别说明。
-
-## 环境要求
-
-这里将讲述运行 Halo 所要求的一些软硬件的配置,我们建议你在运行或者部署之前先浏览一遍此页面。
-
-### 硬件配置
-
-:::tip
-如果你要使用服务器进行部署 Halo,需要注意的是,Halo 目前不支持市面上的云虚拟主机,请使用云服务器或者 VPS。
-:::
-
-#### CPU
-
-无特别要求。目前我们的 [Docker 镜像](https://hub.docker.com/r/halohub/halo) 也已经支持多平台。
-
-#### 内存
-
-为了获得更好的体验,我们建议至少配置 1G 的 RAM。
-
-#### 磁盘
-
-无特别要求,理论上如果不大量在服务器上传附件,Halo 对磁盘的容量要求并不是很高。但我们推荐最好使用 SSD 硬盘的服务器,能更快的运行 Halo。
-
-#### 网络
-
-无特别要求,Halo 目前可以在无公网环境下使用,但部分主题由于使用了第三方资源,可能需要公网环境。
-
-### 软件环境
-
-Halo 理论上可以运行在任何支持 Docker 及 Java 的平台。
-
-#### Docker(可选)
-
-我们主要推荐使用 Docker 运行 Halo,这可以避免一些环境配置相关的问题,文档可参考:
-
-- [使用 Docker Compose 部署](./install/docker-compose.md)
-- [使用 Docker 部署](./install/docker.md)
-
-#### JRE(可选)
-
-如果使用 Docker 镜像部署,那么无需在服务器上安装 JRE。但目前我们也提供了 jar 文件部署的方式,文档可参考:
-
-- [使用 JAR 文件部署](./install/jar-file.md)
-
-:::info
-版本要求:
-
-- 2.21 以上版本:**JRE 21**
-- 2.20 及以下版本:**JRE 17**
-
-:::
-
-#### 数据库
-
-Halo 目前支持以下数据库:
-
-- PostgreSQL
-- MySQL
-- MariaDB
-- H2
-
-其中,H2 不需要单独运行,其他数据库需要单独安装并配置。一般情况下,推荐按照 [使用 Docker Compose 部署](./install/docker-compose.md) 文档将 Halo 和数据库容器编排在一起。
-
-:::warning
-不推荐在生产环境使用默认的 H2 数据库,这可能因为操作不当导致数据文件损坏。如果因为某些原因(如内存不足以运行独立数据库)必须要使用,建议按时[备份数据](../user-guide/backup.md)。
-:::
-
-#### Web 服务器(可选)
-
-如果你部署在生产环境,那么你很可能需要进行域名绑定,这时候我们推荐使用诸如 [Nginx](http://nginx.org/)、[Caddy](https://caddyserver.com/) 之类的 Web 服务器进行反向代理。但需要注意的是,目前 Halo 不支持代理到子目录(如:halo.run/blog)。
-
-#### Wget(可选)
-
-后续的文档中,我们会使用 wget 为例,用于下载所需要的文件,所以请确保服务器已经安装好了这个软件包。当然,下载文件不限制工具,如果你对其他工具熟悉,可以忽略。
-
-#### Vim(可选)
-
-后续的文档中,我们会使用 Vim 为例,用于修改一些必要的配置文件,所以同样请确保服务器已经安装了这个软件包。当然,修改文档也不限制工具,如果你对其他编辑软件熟悉,也可以忽略。
-
-## 浏览器支持
-
-1. 用户前台:视主题所支持的情况而定。
-2. 管理后台(Console 和个人中心):支持目前常见的现代浏览器,具体视 [Vue](https://vuejs.org/about/faq#what-browsers-does-vue-support) 框架的支持情况而定。
-
-## 名词解释
-
-这里将列出后续文档中一些和 Halo 相关的名词含义。
-
-### ~(符号)
-
-代表当前系统下的 [用户目录](https://zh.wikipedia.org/wiki/%E5%AE%B6%E7%9B%AE%E5%BD%95)。
-
-### 镜像
-
-指 Halo 构建所产生的 [Docker 镜像](https://docs.docker.com/engine/reference/commandline/images/)。用户通过该镜像启动 Halo 应用。
-
-### 工作目录
-
-指 Halo 所依赖的工作目录,在 Halo 运行的时候会在系统当前用户目录下产生一个 `.halo2` 的文件夹,绝对路径为 `~/.halo2`。里面通常包含下列目录或文件:
-
-1. `db`:存放 H2 Database 的物理文件,如果你使用其他数据库,那么不会存在这个目录。
-2. `themes`:里面包含用户所安装的主题。
-2. `plugins`:里面包含用户所安装的插件。
-5. `attachments`:附件目录。
-4. `logs`:运行日志目录。
-6. `application.yaml`:配置文件(可选),具体配置方式可查阅 [配置说明](./install/config.md)。
-7. `backups`:备份文件目录。
-8. `static`:虚拟的根文件目录,需要手动创建。
-
-> 如果你使用的 Docker 部署,请不要忽略 `~/.halo2` 的目录映射。
-
-### 主题
-
-包含了各种站点页面模板的资源包。用户访问 Halo 站点浏览到的内容及样式,由 Halo 管理端所配置使用的主题所决定。
-
-相关使用文档:[主题管理相关功能说明](../user-guide/themes.md)
-
-### 插件
-
-用于扩展 Halo 功能的软件包。插件独立于 Halo 核心应用,可以单独安装、升级、卸载。
-
-相关使用文档:[插件管理相关功能说明](../user-guide/plugins.md)
diff --git a/docs/guide/_meta.json b/docs/guide/_meta.json
new file mode 100644
index 00000000..f414a15d
--- /dev/null
+++ b/docs/guide/_meta.json
@@ -0,0 +1,42 @@
+[
+ "index",
+ {
+ "type": "section-header",
+ "label": "入门"
+ },
+ "prepare",
+ {
+ "type": "dir-section-header",
+ "name": "install",
+ "label": "安装",
+ "collapsed": true
+ },
+ {
+ "type": "section-header",
+ "label": "开始使用"
+ },
+ "setup",
+ "first-post",
+ {
+ "type": "dir-section-header",
+ "name": "use",
+ "label": "功能文档",
+ "collapsed": true
+ },
+ {
+ "type": "dir-section-header",
+ "name": "contribution",
+ "label": "参与贡献",
+ "collapsed": true
+ },
+ {
+ "type": "section-header",
+ "label": "其他"
+ },
+ "migrate-from-1.x",
+ {
+ "type": "custom-link",
+ "label": "更新日志",
+ "link": "https://releases.halo.run/"
+ }
+]
diff --git a/docs/guide/contribution/index.md b/docs/guide/contribution/index.md
new file mode 100644
index 00000000..7935baa1
--- /dev/null
+++ b/docs/guide/contribution/index.md
@@ -0,0 +1,4 @@
+---
+title: 参与贡献
+overview: true
+---
\ No newline at end of file
diff --git a/docs/contribution/issue.md b/docs/guide/contribution/issue.md
similarity index 97%
rename from docs/contribution/issue.md
rename to docs/guide/contribution/issue.md
index 26d52fb1..c08a399a 100644
--- a/docs/contribution/issue.md
+++ b/docs/guide/contribution/issue.md
@@ -3,7 +3,7 @@ title: 问题反馈
description: 问题反馈渠道及指南
---
-:::info
+:::info 提交问题前请阅读
如果您在使用过程中遇到了什么问题,您可以通过下面的方式反馈,但请尽量按照要求提出反馈。
:::
diff --git a/docs/contribution/pr.md b/docs/guide/contribution/pr.md
similarity index 100%
rename from docs/contribution/pr.md
rename to docs/guide/contribution/pr.md
diff --git a/versioned_docs/version-2.23/getting-started/first-post.md b/docs/guide/first-post.mdx
similarity index 92%
rename from versioned_docs/version-2.23/getting-started/first-post.md
rename to docs/guide/first-post.mdx
index 3c370d91..e29baa01 100644
--- a/versioned_docs/version-2.23/getting-started/first-post.md
+++ b/docs/guide/first-post.mdx
@@ -3,7 +3,6 @@ title: 第一篇文章
description: Halo 安装后写第一篇文章:进入控制台、编辑发布、分类标签与前台访问。
---
-
## 登录管理端
@@ -19,8 +18,8 @@ Halo 安装完成后,默认初始化了一篇 `Hello Halo` 文章,接下来
3. 当内容编辑完成后,点击右上角的 `发布` 按钮,给文章设置一个合适的标题和别名,同时可以设置文章所属分类、标签及其他一些高级设置。
4. 确认无误后,点击弹框下方的 `发布` 按钮,我们的第一篇文章就成功发布了。
-:::info
-关于文章相关其他功能及文章各种设置项的说明,请参考《[用户指南 - 文章](../user-guide/posts.md)》章节
+:::info 查看文章使用指南
+关于文章相关其他功能及文章各种设置项的说明,请参考《[用户指南 - 文章](./use/posts.md)》章节
:::
## 查看文章
diff --git a/docs/guide/index.md b/docs/guide/index.md
new file mode 100644
index 00000000..8f180bf4
--- /dev/null
+++ b/docs/guide/index.md
@@ -0,0 +1,4 @@
+---
+title: 概览
+overview: true
+---
\ No newline at end of file
diff --git a/docs/getting-started/install/1panel.md b/docs/guide/install/1panel.mdx
similarity index 95%
rename from docs/getting-started/install/1panel.md
rename to docs/guide/install/1panel.mdx
index 38febad7..a8d3b150 100644
--- a/docs/getting-started/install/1panel.md
+++ b/docs/guide/install/1panel.mdx
@@ -5,7 +5,7 @@ description: 通过 1Panel 安装 Halo:应用商店或容器方式部署与访
import DockerArgs from "./slots/_docker-args.md"
-:::info
+:::info 先阅读《写在前面》
在继续操作之前,我们推荐您先阅读[《写在前面》](../prepare),这可以快速帮助你了解 Halo。
:::
@@ -74,11 +74,11 @@ import DockerArgs from "./slots/_docker-args.md"
## 升级 Halo
-:::info[提示]
+:::info 新版本上架有延迟
当 Halo 发布新版本之后,并不会在 1Panel 的应用商店中实时查看到新版本,通常需要等待一段时间才会显示,这取决于 1Panel 的应用商店更新频率。
:::
-:::warning[注意]
+:::warning 升级前查看更新日志
目前 1Panel 不支持在升级应用的时候查看应用的更新日志,所以建议在升级前前往 [Halo 版本发布](https://releases.halo.run/) 查看对应版本的更新日志,了解新版本的变化。
:::
@@ -92,4 +92,4 @@ import DockerArgs from "./slots/_docker-args.md"
## 激活许可证
-可以参考 [许可证激活](../../user-guide/activate.md) 进行激活,社区版无需此步骤。
+可以参考 [许可证激活](../use/activate.md) 进行激活,社区版无需此步骤。
diff --git a/docs/guide/install/_meta.json b/docs/guide/install/_meta.json
new file mode 100644
index 00000000..ae3c7682
--- /dev/null
+++ b/docs/guide/install/_meta.json
@@ -0,0 +1,24 @@
+[
+ "index",
+ "docker-compose",
+ "docker",
+ "1panel",
+ "bt-panel",
+ "helm",
+ "podman",
+ "jar-file",
+ "offline",
+ "config",
+ {
+ "type": "dir",
+ "name": "cloud",
+ "label": "云平台",
+ "collapsed": true
+ },
+ {
+ "type": "dir",
+ "name": "other",
+ "label": "其他指南",
+ "collapsed": true
+ }
+]
diff --git a/versioned_docs/version-2.23/getting-started/install/bt-panel.md b/docs/guide/install/bt-panel.md
similarity index 94%
rename from versioned_docs/version-2.23/getting-started/install/bt-panel.md
rename to docs/guide/install/bt-panel.md
index 38f960b3..7793e0e6 100644
--- a/versioned_docs/version-2.23/getting-started/install/bt-panel.md
+++ b/docs/guide/install/bt-panel.md
@@ -3,9 +3,9 @@ title: 使用宝塔面板部署
description: 通过宝塔面板部署 Halo:环境要求、站点与反向代理配置说明。
---
-::::info
+:::info 先阅读《写在前面》
在继续操作之前,我们推荐您先阅读[《写在前面》](../prepare),这可以快速帮助你了解 Halo。
-::::
+:::
## 宝塔面板简介
@@ -47,7 +47,7 @@ description: 通过宝塔面板部署 Halo:环境要求、站点与反向代
如果需要查看或调整底层的 Docker Compose 配置,可以切换到 **自定义** 模板模式:
-:::info
+:::info 选择合适的镜像版本
宝塔的 Docker 应用商店的 Halo 版本可能会滞后于官方最新版本,通常建议自定义镜像版本,查看最新版本请前往 [Halo 版本发布](https://releases.halo.run/)。
此外,宝塔的默认编排是 Halo 社区版本,如果你想安装 Halo 专业版或者商城版,将镜像修改为 `registry.fit2cloud.com/halo/halo-pro` 即可。
@@ -71,15 +71,15 @@ description: 通过宝塔面板部署 Halo:环境要求、站点与反向代
证书申请成功后,即可通过你配置的域名使用 `https` 访问 Halo。首次访问时,根据页面提示完成 Halo 的[初始化](../setup.md)即可。
-::::info
+:::info 证书申请失败时的检查项
如果证书申请失败,建议优先检查域名解析是否生效,以及服务器的 `80`、`443` 端口是否已经正确放行。
-::::
+:::
## 升级 Halo
当需要升级 Halo 时,可以进入 **Docker** 的 **容器编排**,找到当前的 Halo 项目,修改镜像版本为最新版本,然后点击 **确定** 按钮即可完成升级。
-:::info
+:::info 查看 Halo 最新版本
查看最新版本请前往 [Halo 版本发布](https://releases.halo.run/)。
:::
@@ -89,4 +89,4 @@ description: 通过宝塔面板部署 Halo:环境要求、站点与反向代
## 激活许可证
-可以参考 [许可证激活](../../user-guide/activate.md) 进行激活,社区版无需此步骤。
+可以参考 [许可证激活](../use/activate.md) 进行激活,社区版无需此步骤。
diff --git a/docs/getting-started/install/cloud/alibaba-cloud-computenest.md b/docs/guide/install/cloud/alibaba-cloud-computenest.md
similarity index 100%
rename from docs/getting-started/install/cloud/alibaba-cloud-computenest.md
rename to docs/guide/install/cloud/alibaba-cloud-computenest.md
diff --git a/versioned_docs/version-2.24/getting-started/install/cloud/alibaba-cloud-market.md b/docs/guide/install/cloud/alibaba-cloud-market.md
similarity index 98%
rename from versioned_docs/version-2.24/getting-started/install/cloud/alibaba-cloud-market.md
rename to docs/guide/install/cloud/alibaba-cloud-market.md
index 1bb61fea..5ba62048 100644
--- a/versioned_docs/version-2.24/getting-started/install/cloud/alibaba-cloud-market.md
+++ b/docs/guide/install/cloud/alibaba-cloud-market.md
@@ -39,7 +39,7 @@ Halo 目前已上架至阿里云云市场,助力用户打造高效便捷的建
首次访问会进入 Halo 初始化页面,填写初始化信息即可完成 Halo 的安装。
-:::info[提示]
+:::info 完成 Halo 初始化
Halo 初始化文档可查阅:[初始化](../../setup.md)
:::
diff --git a/docs/guide/install/cloud/index.md b/docs/guide/install/cloud/index.md
new file mode 100644
index 00000000..709f5d01
--- /dev/null
+++ b/docs/guide/install/cloud/index.md
@@ -0,0 +1,4 @@
+---
+title: 云平台
+overview: true
+---
\ No newline at end of file
diff --git a/versioned_docs/version-2.23/getting-started/install/cloud/tencent-cloud-lighthouse.md b/docs/guide/install/cloud/tencent-cloud-lighthouse.md
similarity index 99%
rename from versioned_docs/version-2.23/getting-started/install/cloud/tencent-cloud-lighthouse.md
rename to docs/guide/install/cloud/tencent-cloud-lighthouse.md
index 6da784eb..080cfd6a 100644
--- a/versioned_docs/version-2.23/getting-started/install/cloud/tencent-cloud-lighthouse.md
+++ b/docs/guide/install/cloud/tencent-cloud-lighthouse.md
@@ -54,7 +54,7 @@ description: 腾讯云轻量应用服务器应用模板一键部署 Halo 的步
## 绑定域名
-:::info
+:::info 准备可用域名
该操作要求用户有一个可用的域名,并在 DNS 服务商处添加对应的解析记录。
:::
diff --git a/docs/getting-started/install/config.md b/docs/guide/install/config.md
similarity index 99%
rename from docs/getting-started/install/config.md
rename to docs/guide/install/config.md
index 69202564..e5fdf270 100644
--- a/docs/getting-started/install/config.md
+++ b/docs/guide/install/config.md
@@ -48,20 +48,16 @@ spring:
platform: h2
```
-:::info
+:::info 查看 JAR 文件部署步骤
完整的 JAR 文件部署文档可查阅:[使用 JAR 文件部署](./jar-file.md)
:::
当然,使用 Docker Compose 部署同样支持通过这种方式配置,只需要将 `application.yaml` 放在工作目录的挂载目录即可,示例:
-```bash
-❯ tree
-.
+```tree
├── docker-compose.yaml
└── halo2
└── application.yaml
-
-2 directories, 2 files
```
其中,`docker-compose.yaml` 的 Halo 服务的 `volumes` 应该包含 `./halo2:/root/.halo2`。
@@ -132,7 +128,7 @@ Web 服务相关:
## Redis 集成
-:::note
+:::note 仅限 Halo 付费版
限 [Halo 付费版](../prepare.md#发行版本) 可用。
:::
@@ -151,7 +147,7 @@ Halo 付费版在 2.16 中新增了集成 Redis 的功能,目前提供将用
- --halo.redis.enabled=true # 启用 Redis 服务
```
-:::info
+:::info 确认 Redis 主机地址
请特别注意 `spring.data.redis.host` 的指向,在 Docker 容器中,可能并不是 localhost,需要确保 Halo 容器中能够正常访问到你的 Redis 服务。
:::
diff --git a/docs/guide/install/docker-compose.mdx b/docs/guide/install/docker-compose.mdx
new file mode 100644
index 00000000..e6c3a0f2
--- /dev/null
+++ b/docs/guide/install/docker-compose.mdx
@@ -0,0 +1,359 @@
+---
+title: 使用 Docker Compose 部署
+description: 使用 Docker Compose 部署 Halo:推荐方式、compose 配置与持久化卷说明。
+---
+
+import { Steps } from '@rspress/core/theme';
+import { Tab, Tabs } from '@rspress/core/theme';
+import DockerArgs from "./slots/_docker-args.md"
+import DockerRegistryList from "./slots/_docker-registry-list.md"
+
+:::info 先阅读《写在前面》
+在继续操作之前,我们推荐您先阅读[《写在前面》](../prepare.md),这可以快速帮助你了解 Halo。
+:::
+
+## 环境搭建
+
+- Docker 安装文档:[https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/)
+- Docker Compose 安装文档:[https://docs.docker.com/compose/install/](https://docs.docker.com/compose/install/)
+
+## 部署 Halo
+
+### 镜像说明
+
+
+
+### 开始搭建
+
+
+
+### 创建目录
+
+在系统任意位置创建一个文件夹,此文档以 `~/halo` 为例。
+
+```bash
+mkdir ~/halo && cd ~/halo
+```
+
+:::info 妥善保存数据目录
+注意:后续操作中,Halo 产生的所有数据都会保存在这个目录,请妥善保存。
+:::
+
+### 创建 `docker-compose.yaml`
+
+此文档提供几种场景的 Docker Compose 配置文件,请根据你的需要**选择一种**。
+
+
+
+```yaml {24-30,44} title="~/halo/docker-compose.yaml"
+services:
+ halo:
+ image: registry.fit2cloud.com/halo/halo-pro:2.26
+ restart: on-failure:3
+ depends_on:
+ halodb:
+ condition: service_healthy
+ networks:
+ halo_network:
+ volumes:
+ - ./halo2:/root/.halo2
+ ports:
+ - "8090:8090"
+ healthcheck:
+ test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
+ interval: 30s
+ timeout: 5s
+ retries: 5
+ start_period: 30s
+ environment:
+ # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
+ - JVM_OPTS=-Xmx256m -Xms256m
+ command:
+ - --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
+ - --spring.r2dbc.username=halo
+ # PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
+ - --spring.r2dbc.password=openpostgresql
+ - --spring.sql.init.platform=postgresql
+ # 外部访问地址,请根据实际需要修改
+ - --halo.external-url=http://localhost:8090/
+ halodb:
+ image: postgres:15.4
+ restart: on-failure:3
+ networks:
+ halo_network:
+ volumes:
+ - ./db:/var/lib/postgresql/data
+ healthcheck:
+ test: [ "CMD", "pg_isready" ]
+ interval: 10s
+ timeout: 5s
+ retries: 5
+ environment:
+ - POSTGRES_PASSWORD=openpostgresql
+ - POSTGRES_USER=halo
+ - POSTGRES_DB=halo
+ - PGUSER=halo
+
+networks:
+ halo_network:
+```
+:::info PostgreSQL 容器端口
+此示例的 PostgreSQL 数据库容器默认没有设置端口映射,如果需要在容器外部访问数据库,可以自行在 `halodb` 服务中添加端口映射,PostgreSQL 的端口为 `5432`。
+:::
+
+
+ ```yaml {24-30,52} title="~/halo/docker-compose.yaml"
+ services:
+ halo:
+ image: registry.fit2cloud.com/halo/halo-pro:2.26
+ restart: on-failure:3
+ depends_on:
+ halodb:
+ condition: service_healthy
+ networks:
+ halo_network:
+ volumes:
+ - ./halo2:/root/.halo2
+ ports:
+ - "8090:8090"
+ healthcheck:
+ test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
+ interval: 30s
+ timeout: 5s
+ retries: 5
+ start_period: 30s
+ environment:
+ # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
+ - JVM_OPTS=-Xmx256m -Xms256m
+ command:
+ - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
+ - --spring.r2dbc.username=root
+ # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
+ - --spring.r2dbc.password=o#DwN&JSa56
+ - --spring.sql.init.platform=mysql
+ # 外部访问地址,请根据实际需要修改
+ - --halo.external-url=http://localhost:8090/
+
+ halodb:
+ image: mysql:8.1.0
+ restart: on-failure:3
+ networks:
+ halo_network:
+ command:
+ - --default-authentication-plugin=caching_sha2_password
+ - --character-set-server=utf8mb4
+ - --collation-server=utf8mb4_general_ci
+ - --explicit_defaults_for_timestamp=true
+ volumes:
+ - ./mysql:/var/lib/mysql
+ - ./mysqlBackup:/data/mysqlBackup
+ healthcheck:
+ test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
+ interval: 3s
+ retries: 5
+ start_period: 30s
+ environment:
+ # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
+ - MYSQL_ROOT_PASSWORD=o#DwN&JSa56
+ - MYSQL_DATABASE=halo
+
+ networks:
+ halo_network:
+ ```
+
+:::info MySQL 容器端口
+此示例的 MySQL 数据库容器默认没有设置端口映射,如果需要在容器外部访问数据库,可以自行在 `halodb` 服务中添加端口映射,MySQL 的端口为 `3306`。
+:::
+
+
+:::warning 不建议在生产环境使用 H2
+不推荐在生产环境使用默认的 H2 数据库,这可能因为操作不当导致数据文件损坏。如果因为某些原因(如内存不足以运行独立数据库)必须要使用,建议按时[备份数据](../../guide/use/backup.md)。
+:::
+
+```yaml {20} title="~/halo/docker-compose.yaml"
+services:
+ halo:
+ image: registry.fit2cloud.com/halo/halo-pro:2.26
+ restart: on-failure:3
+ volumes:
+ - ./halo2:/root/.halo2
+ ports:
+ - "8090:8090"
+ healthcheck:
+ test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
+ interval: 30s
+ timeout: 5s
+ retries: 5
+ start_period: 30s
+ environment:
+ # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
+ - JVM_OPTS=-Xmx256m -Xms256m
+ command:
+ # 外部访问地址,请根据实际需要修改
+ - --halo.external-url=http://localhost:8090/
+```
+
+
+```yaml {5,13-20} title="~/halo/docker-compose.yaml"
+services:
+ halo:
+ image: registry.fit2cloud.com/halo/halo-pro:2.26
+ restart: on-failure:3
+ network_mode: "host"
+ volumes:
+ - ./halo2:/root/.halo2
+ environment:
+ # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
+ - JVM_OPTS=-Xmx256m -Xms256m
+ command:
+ # 修改为自己已有的 MySQL 配置
+ - --spring.r2dbc.url=r2dbc:pool:mysql://localhost:3306/halo
+ - --spring.r2dbc.username=root
+ - --spring.r2dbc.password=
+ - --spring.sql.init.platform=mysql
+ # 外部访问地址,请根据实际需要修改
+ - --halo.external-url=http://localhost:8090/
+ # 端口号 默认8090
+ - --server.port=8090
+```
+
+:::info 外部数据库需预先创建
+使用外部数据库时,需要提前手动创建好数据库,以 MySQL 为例:
+
+```sql
+create database halo character set utf8mb4 collate utf8mb4_bin;
+```
+:::
+
+
+
+运行参数详解:
+
+
+
+:::info 查看完整配置
+为了保持部署流程的简洁,此文档仅提供了必要的配置示例,完整的配置选项列表可查阅:[配置说明](./config.md)
+:::
+
+### 启动 Halo 服务
+
+```bash
+docker compose up -d
+```
+
+实时查看日志:
+
+```bash
+docker-compose logs -f
+```
+
+### 测试访问
+
+用浏览器访问 /console 即可进入 Halo 管理页面,首次启动会进入初始化页面。
+
+:::tip 配置域名访问
+如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 `http://ip:端口号` 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。
+:::
+
+### 激活许可证
+
+可以参考 [许可证激活](../use/activate.md) 进行激活,社区版无需此步骤。
+
+
+
+## 升级 Halo
+
+
+
+### 备份数据
+
+可以参考 [备份与恢复](../use/backup.md) 进行完整备份(可选,但推荐备份)。
+
+### 更新 Halo 服务
+
+修改 `docker-compose.yaml` 中配置的镜像版本。
+
+```yaml {3}
+services:
+ halo:
+ image: registry.fit2cloud.com/halo/halo-pro:2.26
+```
+
+```bash
+docker compose up -d
+```
+
+
+## 反向代理
+
+你可以在下面的反向代理软件中任选一项,我们假设你已经安装好了其中一项,并对其的基本操作有一定了解。如果你对它们没有任何了解,可以参考我们更为详细的反向代理文档:
+
+1. 使用 [Nginx Proxy Manager](../install/other/nginxproxymanager.md)
+2. 使用 [Traefik](../install/other/traefik.md)
+
+### Nginx
+
+```nginx {2,7,10}
+upstream halo {
+ server 127.0.0.1:8090;
+}
+server {
+ listen 80;
+ listen [::]:80;
+ server_name www.yourdomain.com;
+ client_max_body_size 1024m;
+ location / {
+ proxy_pass http://halo;
+ proxy_set_header HOST $host;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ }
+}
+```
+
+### Caddy 2
+
+```txt {1,5}
+www.yourdomain.com
+
+encode gzip
+
+reverse_proxy 127.0.0.1:8090
+```
+
+### Traefik
+
+更新 halo 容器组的配置
+
+1. `networks` 中引入已存在的网络 `traefik`(此网络需要 [提前创建](../install/other/traefik.md#创建-traefik))
+2. `services.halo.networks` 中添加网络 `traefik`
+3. 修改外部地址为你的域名
+4. 声明路由规则、开启 TLS
+
+```yaml {2-3,14,18,23-29}
+networks:
+ traefik:
+ external: true
+ halo:
+
+services:
+ halo:
+ image: registry.fit2cloud.com/halo/halo-pro:2.26
+ restart: on-failure:3
+ volumes:
+ - ./halo2:/root/.halo2
+ networks:
+ - traefik
+ - halo
+ command:
+ # 外部访问地址,请根据实际需要修改
+ - --halo.external-url=https://yourdomain.com
+ labels:
+ traefik.enable: "true"
+ traefik.docker.network: traefik
+ traefik.http.routers.halo.rule: Host(`yourdomain.com`)
+ traefik.http.routers.halo.tls: "true"
+ traefik.http.routers.halo.tls.certresolver: myresolver
+ traefik.http.services.halo.loadbalancer.server.port: 8090
+```
diff --git a/versioned_docs/version-2.26/getting-started/install/docker.md b/docs/guide/install/docker.mdx
similarity index 86%
rename from versioned_docs/version-2.26/getting-started/install/docker.md
rename to docs/guide/install/docker.mdx
index 51b12915..74a5924b 100644
--- a/versioned_docs/version-2.26/getting-started/install/docker.md
+++ b/docs/guide/install/docker.mdx
@@ -6,14 +6,14 @@ description: 使用 Docker 单容器运行 Halo:镜像、端口映射与数据
import DockerArgs from "./slots/_docker-args.md"
import DockerRegistryList from "./slots/_docker-registry-list.md"
-:::info
-在继续操作之前,我们推荐您先阅读[《写在前面》](../prepare),这可以快速帮助你了解 Halo。
+:::info 先阅读《写在前面》
+在继续操作之前,我们推荐您先阅读[《写在前面》](../prepare.md),这可以快速帮助你了解 Halo。
:::
-:::warning
-此文档仅提供使用默认 H2 数据库的 Docker 运行方式,主要用于体验和测试,在生产环境我们不推荐使用 H2 数据库,这可能因为操作不当导致数据文件损坏。如果因为某些原因(如内存不足以运行独立数据库)必须要使用,建议按时[备份数据](../../user-guide/backup.md)。
+:::warning 仅适合体验和测试
+此文档仅提供使用默认 H2 数据库的 Docker 运行方式,主要用于体验和测试,在生产环境我们不推荐使用 H2 数据库,这可能因为操作不当导致数据文件损坏。如果因为某些原因(如内存不足以运行独立数据库)必须要使用,建议按时[备份数据](../../guide/use/backup.md)。
-如果需要使用其他数据库部署,我们推荐使用 Docker Compose 部署:[使用 Docker Compose 部署](./docker-compose)
+如果需要使用其他数据库部署,我们推荐使用 Docker Compose 部署:[使用 Docker Compose 部署](./docker-compose.mdx)
:::
## 环境搭建
@@ -35,7 +35,7 @@ import DockerRegistryList from "./slots/_docker-registry-list.md"
```
:::info
- 注意:此命令默认使用自带的 H2 Database 数据库。如需使用 PostgreSQL,请参考:[使用 Docker Compose 部署](./docker-compose)
+ 注意:此命令默认使用自带的 H2 Database 数据库。如需使用 PostgreSQL,请参考:[使用 Docker Compose 部署](./docker-compose.mdx)
:::
- **-it**:开启输入功能并连接伪终端
@@ -58,11 +58,11 @@ import DockerRegistryList from "./slots/_docker-registry-list.md"
如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 `http://ip:端口号` 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。
:::
-3. 激活许可证,可以参考 [许可证激活](../../user-guide/activate.md) 进行激活,社区版无需此步骤。
+3. 激活许可证,可以参考 [许可证激活](../use/activate.md) 进行激活,社区版无需此步骤。
## 升级 Halo
-1. 备份数据,可以参考 [备份与恢复](../../user-guide/backup.md) 进行完整备份(可选,但推荐备份)。
+1. 备份数据,可以参考 [备份与恢复](../use/backup.md) 进行完整备份(可选,但推荐备份)。
2. 拉取新版本镜像
```bash
diff --git a/versioned_docs/version-2.25/getting-started/install/helm.md b/docs/guide/install/helm.mdx
similarity index 96%
rename from versioned_docs/version-2.25/getting-started/install/helm.md
rename to docs/guide/install/helm.mdx
index d412b061..dbaaf598 100644
--- a/versioned_docs/version-2.25/getting-started/install/helm.md
+++ b/docs/guide/install/helm.mdx
@@ -5,7 +5,7 @@ description: 使用 Helm Chart 在 Kubernetes 集群中安装与升级 Halo 的
import DockerArgs from "./slots/_docker-args.md"
-:::info
+:::info 先阅读《写在前面》
在继续操作之前,我们推荐您先阅读[《写在前面》](../prepare.md),这可以快速帮助你了解 Halo。
:::
@@ -66,17 +66,17 @@ To access your Halo site from outside the cluster follow the steps below:
echo Password: $(kubectl get secret --namespace halo halo -o jsonpath="{.data.halo-password}" | base64 -d)
```
-:::info[参数说明]
-
+:::info 默认 PostgreSQL 参数
- 使用 Halo Helm Chart 仓库中 [values.yaml](https://github.com/halo-sigs/charts/blob/main/charts/halo/values.yaml) 文件中的默认参数进行安装;
- 关于 PostgreSQL 数据库的更多参数说明,请参考 [Bitnami PostgreSQL Chart](https://github.com/bitnami/charts/tree/main/bitnami/postgresql#parameters),在原有参数格式上增加 `postgresql.` 前缀即可。
+
:::
## 卸载
使用命令 `helm uninstall halo` 可卸载已安装的 Halo 应用,其中 `halo` 为安装时指定的 Halo 应用名称。
-:::warning
+:::warning 卸载前备份数据
卸载应用前请确认数据库及 Halo 工作空间中的文件已进行备份或不再需要。
:::
@@ -88,11 +88,11 @@ To access your Halo site from outside the cluster follow the steps below:
helm install halo halo/halo --set mysql.enabled=true --set postgresql.enabled=false
```
-:::info[参数说明]
-
+:::info 自动安装 MySQL 参数
- `mysql.enabled=true`:自动安装 MySQL 数据库;
- `postgresql.enabled=false`:不自动安装 PostgreSQL 数据库;
- 关于 mysql 的更多参数说明,请参考 [Bitnami MySQL Chart](https://github.com/bitnami/charts/tree/main/bitnami/mysql#parameters),在原有参数格式上增加 `mysql.` 前缀即可。
+
:::
## 使用已有的数据库
@@ -111,8 +111,7 @@ helm install halo halo/halo \
--set externalDatabase.database=halo
```
-:::info[参数说明]
-
+:::info 外部数据库参数
- `mysql.enabled=true`:不自动安装 MySQL 数据库;
- `postgresql.enabled=false`:不自动安装 PostgreSQL 数据库;
- `externalDatabase.platform=mysql`:外部数据库类型,例如 `postgresql`、`mysql`;
@@ -121,6 +120,7 @@ helm install halo halo/halo \
- `externalDatabase.user=halo`:外部数据库用户名;
- `externalDatabase.password=0P0gJrCyzz`:外部数据库密码;
- `externalDatabase.database=halo`:外部数据库库名;
+
:::
## 创建 Ingress
diff --git a/docs/guide/install/index.md b/docs/guide/install/index.md
new file mode 100644
index 00000000..8f180bf4
--- /dev/null
+++ b/docs/guide/install/index.md
@@ -0,0 +1,4 @@
+---
+title: 概览
+overview: true
+---
\ No newline at end of file
diff --git a/versioned_docs/version-2.26/getting-started/install/jar-file.md b/docs/guide/install/jar-file.md
similarity index 96%
rename from versioned_docs/version-2.26/getting-started/install/jar-file.md
rename to docs/guide/install/jar-file.md
index be633501..c5194b69 100644
--- a/versioned_docs/version-2.26/getting-started/install/jar-file.md
+++ b/docs/guide/install/jar-file.md
@@ -3,7 +3,7 @@ title: 使用 JAR 文件部署
description: 使用 JAR 与 Java 运行 Halo:数据库要求、启动参数与生产环境建议。
---
-:::info
+:::info 先阅读《写在前面》
在继续操作之前,我们推荐您先阅读[《写在前面》](../prepare.md),这可以快速帮助你了解 Halo。
:::
@@ -139,7 +139,7 @@ description: 使用 JAR 与 Java 运行 Halo:数据库要求、启动参数与
:::
:::warning
- 不推荐在生产环境使用默认的 H2 数据库,这可能因为操作不当导致数据文件损坏。如果因为某些原因(如内存不足以运行独立数据库)必须要使用,建议按时[备份数据](../../user-guide/backup.md)。
+ 不推荐在生产环境使用默认的 H2 数据库,这可能因为操作不当导致数据文件损坏。如果因为某些原因(如内存不足以运行独立数据库)必须要使用,建议按时[备份数据](../../guide/use/backup.md)。
:::
:::info
@@ -170,7 +170,7 @@ description: 使用 JAR 与 Java 运行 Halo:数据库要求、启动参数与
如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 `http://ip:端口号` 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。
:::
-8. 激活许可证,可以参考 [许可证激活](../../user-guide/activate.md) 进行激活,社区版无需此步骤。
+8. 激活许可证,可以参考 [许可证激活](../../guide/use/activate.md) 进行激活,社区版无需此步骤。
## 作为服务运行
@@ -249,7 +249,7 @@ journalctl -n 20 -u halo
## 版本升级
-1. 备份数据,可以参考 [备份与恢复](../../user-guide/backup.md) 进行完整备份(可选,但推荐备份)。
+1. 备份数据,可以参考 [备份与恢复](../../guide/use/backup.md) 进行完整备份(可选,但推荐备份)。
2. 停止 Halo 服务
```bash
diff --git a/docs/getting-started/install/offline.md b/docs/guide/install/offline.mdx
similarity index 96%
rename from docs/getting-started/install/offline.md
rename to docs/guide/install/offline.mdx
index 8780c1ab..6983ebc8 100644
--- a/docs/getting-started/install/offline.md
+++ b/docs/guide/install/offline.mdx
@@ -6,7 +6,7 @@ description: 在无公网或受限网络环境使用离线包部署 Halo 的步
import DockerArgs from "./slots/_docker-args.md"
import DockerRegistryList from "./slots/_docker-registry-list.md"
-:::info
+:::info 先阅读《写在前面》
在继续操作之前,我们推荐您先阅读[《写在前面》](../prepare.md),这可以快速帮助你了解 Halo。
:::
@@ -28,12 +28,10 @@ cd /tmp
tar zxvf halo-offline-installer-v2.17.0-amd64.tar.gz
```
-:::info
+:::info 离线安装包目录结构
安装包目录说明
-```bash
-[root@localhost halo-offline-installer-v2.17.0-amd64]# tree
-.
+```tree
├── docker # 离线安装 Docker 使用到的文件
│ ├── bin
│ │ ├── containerd
@@ -72,12 +70,10 @@ cd halo-offline-installer-v2.17.0-amd64
根据脚本给出的提示,输入安装目录、服务端口、数据库信息等相关配置信息,等待脚本执行完成。
-:::info
+:::info 默认安装目录结构
假设采用默认安装位置 /opt/halo 完成安装,安装目录的文件结构如下:
-```bash
-[root@meter-prototype halo]# tree
-.
+```tree
├── data # 数据存储目录
│ ├── db # 数据库数据存储目录,挂载至数据库容器
│ └── halo # Halo 数据存储目录,挂载至 Halo 容器
diff --git a/docs/guide/install/other/index.md b/docs/guide/install/other/index.md
new file mode 100644
index 00000000..324a00ff
--- /dev/null
+++ b/docs/guide/install/other/index.md
@@ -0,0 +1,4 @@
+---
+title: 其他指南
+overview: true
+---
\ No newline at end of file
diff --git a/versioned_docs/version-2.26/getting-started/install/other/nginxproxymanager.md b/docs/guide/install/other/nginxproxymanager.md
similarity index 97%
rename from versioned_docs/version-2.26/getting-started/install/other/nginxproxymanager.md
rename to docs/guide/install/other/nginxproxymanager.md
index 046dceff..a080f15a 100644
--- a/versioned_docs/version-2.26/getting-started/install/other/nginxproxymanager.md
+++ b/docs/guide/install/other/nginxproxymanager.md
@@ -5,9 +5,9 @@ description: 使用 Nginx Proxy Manager 为 Halo 配置域名转发与 SSL 证
## Halo 部署
-参见 [使用 Docker Compose 部署](../docker-compose)
+参见 [使用 Docker Compose 部署](../docker-compose.mdx)
-:::info
+:::info 跳过 Halo 反向代理配置
`「反向代理」` 部分不进行操作,保证 Halo 服务运行无误即可。
:::
@@ -57,7 +57,7 @@ networks:
attachable: true
```
-:::info
+:::info 提前开放所需端口
配置中提到的 80、443、81 端口需要提前在服务器提供商开放端口。
:::
@@ -69,7 +69,7 @@ docker compose up -d
在服务正常启动的情况下,现在已经可以通过 `http://{服务器公网 IP}:81` 访问 NPM 的网页端了。
-:::info
+:::info 无法访问时检查 81 端口
如果无法通过端口访问到 NPM,可以检查是否在服务器提供商开放了 `81` 端口。
:::
@@ -134,7 +134,7 @@ docker compose up -d
- **性能**:让 JavaScript、字体、JSON 等静态资源也参与 gzip 压缩;调大 proxy buffer 避免响应落盘
- **安全**:补齐 [securityheaders.com](https://securityheaders.com) 认可的安全响应头,默认可拿到 A 评级
-:::info
+:::info 通用反向代理优化
本节所有配置均为反代层通用优化,与具体主题无关,适用于任何 Halo 实例。
:::
@@ -190,7 +190,7 @@ rewrite ^/rss$ /rss.xml permanent;
rewrite ^/feed$ /rss.xml permanent;
```
-:::tip
+:::tip 避免重复声明 text/html
`gzip_types` 不要再列 `text/html`,nginx 默认已经对其启用 gzip,重复声明会产生 `duplicate MIME type` 警告。
:::
diff --git a/versioned_docs/version-2.26/getting-started/install/other/traefik.md b/docs/guide/install/other/traefik.md
similarity index 97%
rename from versioned_docs/version-2.26/getting-started/install/other/traefik.md
rename to docs/guide/install/other/traefik.md
index 912b74b4..d014992d 100644
--- a/versioned_docs/version-2.26/getting-started/install/other/traefik.md
+++ b/docs/guide/install/other/traefik.md
@@ -5,9 +5,9 @@ description: Traefik 为 Halo 提供反向代理与 HTTPS 的路由与证书配
## Halo 部署
-参见 [使用 Docker Compose 部署](../docker-compose.md)
+参见 [使用 Docker Compose 部署](../docker-compose.mdx)
-:::info
+:::info 跳过 Halo 反向代理配置
`「反向代理」` 部分不进行操作,保证 Halo 服务运行无误即可。
:::
@@ -26,7 +26,7 @@ description: Traefik 为 Halo 提供反向代理与 HTTPS 的路由与证书配
3. 开启 Traefik Dashboard,建议使用二级域名的形式(示例:`traefik.yourdomain.com`)。[文档](https://doc.traefik.io/traefik/operations/dashboard/#dashboard-router-rule)
4. 开启证书自动生成,通过 ACME 自动管理 TLS 证书的申请、校验与续期。[文档](https://doc.traefik.io/traefik/https/acme/)
-:::warning
+:::warning 持久化 ACME 证书
ACME 证书 (`/acme.json`) 一定要 [持久化](https://doc.traefik.io/traefik/https/acme/#storage),否则每次重启 Traefik 服务,都会去申请签发证书。可能会触发 Let's
Encrypt 的 [速率限制](https://letsencrypt.org/zh-cn/docs/rate-limits/),导致签名的域名一段时间内无法签发新的证书。
:::
diff --git a/docs/getting-started/install/podman.md b/docs/guide/install/podman.mdx
similarity index 94%
rename from docs/getting-started/install/podman.md
rename to docs/guide/install/podman.mdx
index 975e3f1f..443319bb 100644
--- a/docs/getting-started/install/podman.md
+++ b/docs/guide/install/podman.mdx
@@ -8,11 +8,11 @@ import DockerRegistryList from "./slots/_docker-registry-list.md"
## 前言
-:::info
+:::info 先阅读《写在前面》
在继续操作之前,我们推荐您先阅读[《写在前面》](../prepare),这可以快速帮助你了解 Halo。
:::
-:::info
+:::info Podman 简介与适用场景
什么是 Podman ?
Podman(全称 POD 管理器)是一款用于在 Linux® 系统上开发、管理和运行容器的开源工具。Podman 最初由红帽® 工程师联合开源社区一同开发,它可利用 lipod 库来管理整个容器生态系统。
@@ -31,7 +31,7 @@ Podman 采用无守护进程的包容性架构,因此可以更安全、更简
[Podman 官网](https://podman.io/)
:::
-:::tip
+:::tip 不建议在生产环境使用 H2
此文档提供使用默认 H2 数据库和 Postgresql 数据库的 Podman 运行示例,在生产环境我们不推荐使用 H2 数据库。
:::
@@ -39,13 +39,13 @@ Podman 采用无守护进程的包容性架构,因此可以更安全、更简
- Podman 安装文档:[https://podman.io/docs/installation](https://podman.io/docs/installation)
-:::tip
+:::tip 先阅读 Podman 官方文档
我们推荐您先阅读 Podman 官方文档对 Podman 有了相关了解后,再考虑通过 Linux 包管理系统安装 Podman 或者使用文档中指定的方式安装。
:::
## 部署 Halo
-:::tip
+:::tip Podman 可直接使用 Docker 镜像
为什么是 Docker 镜像?
通过[前言](#前言)我们已经了解了 Podman,其中提到 ***Podman 与 Docker 高度兼容*** ,正是因为 Podman 完全是为了替代 Docker 而诞生,所以原本的 Docker 生态中的镜像我们可以无需更改直接使用。
@@ -65,7 +65,7 @@ Podman 采用无守护进程的包容性架构,因此可以更安全、更简
```
:::info
- 注意:此命令默认使用自带的 H2 Database 数据库。如需使用 PostgreSQL,请参考:[使用 Docker Compose 部署](./docker-compose)
+ 注意:此命令默认使用自带的 H2 Database 数据库。如需使用 PostgreSQL,请参考:[使用 Docker Compose 部署](./docker-compose.mdx)
:::
- **-it**:开启输入功能并连接伪终端
@@ -88,11 +88,11 @@ Podman 采用无守护进程的包容性架构,因此可以更安全、更简
如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 `http://ip:端口号` 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。
:::
-3. 激活许可证,可以参考 [许可证激活](../../user-guide/activate.md) 进行激活,社区版无需此步骤。
+3. 激活许可证,可以参考 [许可证激活](../use/activate.md) 进行激活,社区版无需此步骤。
## 升级 Halo
-1. 备份数据,可以参考 [备份与恢复](../../user-guide/backup.md) 进行完整备份(可选,但推荐备份)。
+1. 备份数据,可以参考 [备份与恢复](../use/backup.md) 进行完整备份(可选,但推荐备份)。
2. 拉取新版本镜像
```bash
@@ -116,7 +116,7 @@ Podman 采用无守护进程的包容性架构,因此可以更安全、更简
## 使用 [Podman Quadlet](https://docs.podman.io/en/latest/markdown/podman-systemd.unit.5.html)
-:::tip
+:::tip 使用 Quadlet 实现开机启动
Podman 没有和 Docker 类似的管理进程,在低配置的主机上更友好。
但是使用 Podman 想要开机后自动启动,官方推荐一种和 systemd 服务类似的语法文件,即 Podman Quadlet。
:::
diff --git a/docs/getting-started/install/slots/_docker-args.md b/docs/guide/install/slots/_docker-args.md
similarity index 100%
rename from docs/getting-started/install/slots/_docker-args.md
rename to docs/guide/install/slots/_docker-args.md
diff --git a/docs/getting-started/install/slots/_docker-registry-list.md b/docs/guide/install/slots/_docker-registry-list.md
similarity index 100%
rename from docs/getting-started/install/slots/_docker-registry-list.md
rename to docs/guide/install/slots/_docker-registry-list.md
diff --git a/docs/getting-started/migrate-from-1.x.md b/docs/guide/migrate-from-1.x.md
similarity index 97%
rename from docs/getting-started/migrate-from-1.x.md
rename to docs/guide/migrate-from-1.x.md
index ea85b932..567e4ff1 100644
--- a/docs/getting-started/migrate-from-1.x.md
+++ b/docs/guide/migrate-from-1.x.md
@@ -34,11 +34,11 @@ description: Halo 1.5/1.6 迁移至 2.x:官方迁移插件、主题兼容与
可以参考以下文档进行部署:
-- [使用 Docker 部署](./install/docker.md)
-- [使用 Docker Compose 部署](./install/docker-compose.md)
+- [使用 Docker 部署](./install/docker.mdx)
+- [使用 Docker Compose 部署](./install/docker-compose.mdx)
- [使用 JAR 文件部署](./install/jar-file.md)
-:::tip
+:::tip 保留旧版本时更换端口
可以考虑暂时保留旧版本的 Halo,等到迁移完成之后再移除。如果需要保留旧版本的 Halo,请注意在部署 Halo 2.0 的时候使用其他端口,然后在反向代理(Nginx)中修改为 Halo 2.0 的运行端口即可。
:::
diff --git a/versioned_docs/version-2.25/getting-started/prepare.md b/docs/guide/prepare.md
similarity index 92%
rename from versioned_docs/version-2.25/getting-started/prepare.md
rename to docs/guide/prepare.md
index c6415ae9..190bb51d 100644
--- a/versioned_docs/version-2.25/getting-started/prepare.md
+++ b/docs/guide/prepare.md
@@ -19,7 +19,7 @@ Halo 付费版包括专业版和商城版,是[凌霞软件](https://www.lxware
### 硬件配置
-:::tip
+:::tip 云服务器要求
如果你要使用服务器进行部署 Halo,需要注意的是,Halo 目前不支持市面上的云虚拟主机,请使用云服务器或者 VPS。
:::
@@ -47,8 +47,8 @@ Halo 理论上可以运行在任何支持 Docker 及 Java 的平台。
我们主要推荐使用 Docker 运行 Halo,这可以避免一些环境配置相关的问题,文档可参考:
-- [使用 Docker Compose 部署](./install/docker-compose.md)
-- [使用 Docker 部署](./install/docker.md)
+- [使用 Docker Compose 部署](./install/docker-compose.mdx)
+- [使用 Docker 部署](./install/docker.mdx)
#### JRE(可选)
@@ -56,7 +56,7 @@ Halo 理论上可以运行在任何支持 Docker 及 Java 的平台。
- [使用 JAR 文件部署](./install/jar-file.md)
-:::info
+:::info Java 版本要求
版本要求:
- 2.21 以上版本:**JRE 21**
@@ -75,8 +75,8 @@ Halo 目前支持以下数据库:
其中,H2 不需要单独运行,其他数据库需要单独安装并配置。一般情况下,推荐按照 [使用 Docker Compose 部署](./install/docker-compose.md) 文档将 Halo 和数据库容器编排在一起。
-:::warning
-不推荐在生产环境使用默认的 H2 数据库,这可能因为操作不当导致数据文件损坏。如果因为某些原因(如内存不足以运行独立数据库)必须要使用,建议按时[备份数据](../user-guide/backup.md)。
+:::warning 不建议在生产环境使用 H2
+不推荐在生产环境使用默认的 H2 数据库,这可能因为操作不当导致数据文件损坏。如果因为某些原因(如内存不足以运行独立数据库)必须要使用,建议按时[备份数据](../guide/use/backup.md)。
:::
#### Web 服务器(可选)
@@ -127,10 +127,10 @@ Halo 目前支持以下数据库:
包含了各种站点页面模板的资源包。用户访问 Halo 站点浏览到的内容及样式,由 Halo 管理端所配置使用的主题所决定。
-相关使用文档:[主题管理相关功能说明](../user-guide/themes.md)
+相关使用文档:[主题管理相关功能说明](../guide/use/themes.md)
### 插件
用于扩展 Halo 功能的软件包。插件独立于 Halo 核心应用,可以单独安装、升级、卸载。
-相关使用文档:[插件管理相关功能说明](../user-guide/plugins.md)
+相关使用文档:[插件管理相关功能说明](../guide/use/plugins.md)
diff --git a/docs/getting-started/setup.md b/docs/guide/setup.md
similarity index 100%
rename from docs/getting-started/setup.md
rename to docs/guide/setup.md
diff --git a/docs/guide/use/_meta.json b/docs/guide/use/_meta.json
new file mode 100644
index 00000000..d12df396
--- /dev/null
+++ b/docs/guide/use/_meta.json
@@ -0,0 +1,23 @@
+[
+ "index",
+ "common",
+ "activate",
+ "user-center",
+ "posts",
+ "pages",
+ "attachments",
+ "menus",
+ "themes",
+ "plugins",
+ "app-store",
+ "users",
+ "settings",
+ "backup",
+ {
+ "type": "dir",
+ "name": "shop",
+ "label": "商城",
+ "collapsed": true
+ },
+ "faq"
+]
diff --git a/versioned_docs/version-2.25/user-guide/activate.md b/docs/guide/use/activate.md
similarity index 90%
rename from versioned_docs/version-2.25/user-guide/activate.md
rename to docs/guide/use/activate.md
index bbefa883..565d3591 100644
--- a/versioned_docs/version-2.25/user-guide/activate.md
+++ b/docs/guide/use/activate.md
@@ -3,8 +3,8 @@ title: 许可证激活
description: Halo 付费版许可证购买、部署与激活流程,含专业版与商城版说明。
---
-:::note
-此文档仅适用于 **[Halo 付费版](../getting-started/prepare.md#发行版本)**(专业版 / 商城版),在开始之前需要确保已经成功部署了 Halo 付费版。
+:::note 仅适用于 Halo 付费版
+此文档仅适用于 **[Halo 付费版](../prepare.md#发行版本)**(专业版 / 商城版),在开始之前需要确保已经成功部署了 Halo 付费版。
社区版无需进行许可证激活。
:::
@@ -21,9 +21,9 @@ description: Halo 付费版许可证购买、部署与激活流程,含专业
可以查阅:
-- [使用 Docker Compose 部署](../getting-started/install/docker-compose.md)
-- [使用 1Panel 部署](../getting-started/install/1panel.md)
-- [使用 JAR 文件部署](../getting-started/install/jar-file.md)
+- [使用 Docker Compose 部署](../install/docker-compose.mdx)
+- [使用 1Panel 部署](../install/1panel.mdx)
+- [使用 JAR 文件部署](../install/jar-file.md)
## 查看产品版本信息
@@ -82,7 +82,7 @@ description: Halo 付费版许可证购买、部署与激活流程,含专业

-:::info[提示]
+:::info 激活后重启插件
如果你在激活前就启动了插件,那么在激活后可能需要重启插件才会生效。
:::
diff --git a/versioned_docs/version-2.23/user-guide/app-store.md b/docs/guide/use/app-store.md
similarity index 93%
rename from versioned_docs/version-2.23/user-guide/app-store.md
rename to docs/guide/use/app-store.md
index 1f8c489b..ae41386a 100644
--- a/versioned_docs/version-2.23/user-guide/app-store.md
+++ b/docs/guide/use/app-store.md
@@ -7,7 +7,7 @@ description: 在 Console 内置应用市场安装 Halo 主题与插件,含账
如果你使用了旧版本的 Halo,并且当前未安装应用市场插件,可以访问 [https://www.halo.run/store/apps/app-VYJbF](https://www.halo.run/store/apps/app-VYJbF) 手动下载并在 Console 的插件管理中安装。
-:::info[提示]
+:::info 可安全停用应用市场插件
这是目前唯一由 Halo 官方提供的服务,如果你当前的 Halo 网站处于无法访问公网的环境或者不需要此功能,你可以卸载或者停用此插件,不会影响网站的正常使用。
:::
@@ -50,13 +50,13 @@ description: 在 Console 内置应用市场安装 Halo 主题与插件,含账
### 在线激活
-:::info
+:::info 在线激活方式
目前在线激活支持两种方式:
1. 通过 [Halo 官网账户](https://www.halo.run/):如果你是在 Halo 官网购买的付费应用,需要通过这种方式,并提前[绑定 Halo 官网账号](#绑定-halo-官网账号)
-2. 通过 [Halo 专业版/商城版许可证](../getting-started/prepare.md#发行版本):如果你购买了 [Halo 付费版](../getting-started/prepare.md#发行版本),可以选择这个选项来激活应用
+2. 通过 [Halo 专业版/商城版许可证](../prepare.md#发行版本):如果你购买了 [Halo 付费版](../prepare.md#发行版本),可以选择这个选项来激活应用
-关于 Halo 专业版/商城版许可证的更多信息可查阅:[许可证激活 / 查看和下载付费应用](../user-guide/activate.md#查看和下载付费应用)
+关于 Halo 专业版/商城版许可证的更多信息可查阅:[许可证激活 / 查看和下载付费应用](../use/activate.md#查看和下载付费应用)
:::
在安装好需要许可证的付费插件或主题后,列表会显示一个许可证状态的图标,点击即可打开许可证激活的对话框,选择 **Halo 官网账户** 或 **Halo 专业版/商城版许可证** 并点击激活即可。
diff --git a/versioned_docs/version-2.23/user-guide/attachments.md b/docs/guide/use/attachments.md
similarity index 96%
rename from versioned_docs/version-2.23/user-guide/attachments.md
rename to docs/guide/use/attachments.md
index 51aaf8ef..bbc28d32 100644
--- a/versioned_docs/version-2.23/user-guide/attachments.md
+++ b/docs/guide/use/attachments.md
@@ -9,7 +9,7 @@ description: Halo 附件与存储策略:本地上传、策略管理及对象
Halo 默认提供了本地的存储策略类型,你还可以通过安装插件的方式扩展其他的存储策略类型。一个存储策略包含了存储提供者,具体存储位置等使用该类型存储所必要的各种信息。
-:::info
+:::info 扩展存储方式
目前除了 Halo 内置的本地存储,在应用市场中也有三方的存储插件:[https://www.halo.run/store/apps?tag=storage](https://www.halo.run/store/apps?tag=storage)
此外,如果你期望对接类似于阿里云、腾讯云的对象存储,可以考虑使用 [对象存储(Amazon S3 协议)](https://www.halo.run/store/apps/app-Qxhpp) 插件,此插件兼容市面上所有支持 S3 协议的对象存储厂商。
@@ -28,7 +28,7 @@ Halo 默认提供了本地的存储策略类型,你还可以通过安装插件

添加一个本地存储时,你需要输入名称及存储位置信息。其中的存储位置决定了使用该存储策略的附件,在服务器上的实际存储路径,路径规则为 `{Halo 工作目录}/attachments/{存储位置}`,其中的 Halo 工作目录由安装时指定的参数决定,默认为 `~/.halo2`。
-:::info
+:::info Docker 附件存储位置
默认的 Docker 部署方式,实际存储位置由挂载到 Halo 容器工作目录的服务器目录所决定。
:::
@@ -38,7 +38,7 @@ Halo 默认提供了本地的存储策略类型,你还可以通过安装插件

-:::info
+:::info 删除存储策略前先清空附件
为了保护附件安全避免用户误操作,当存储策略下存在附件时,该存储策略不允许删除。如果确定要删除某个存储策略及该存储策略中的所有附件,可以先按照存储策略对附件进行筛选,先批量删除存储策略下的所有附件,再删除存储策略。
:::
@@ -92,7 +92,7 @@ Halo 目前提供了两种分组删除策略:

-:::warning
+:::warning 删除附件不可恢复
附件删除后不可恢复、无法找回,请谨慎进行该操作。
:::
@@ -102,6 +102,6 @@ Halo 目前提供了两种分组删除策略:
与批量删除操作类似,你可以选中多个附件后在上方的批量操作按钮中选择 `移动` 操作,将所选附件移动到指定的分组中。
-:::info
+:::info 仅支持移动附件分组
需要注意的是,目前移动附件只支持移动分组,不支持存储策略的移动。
:::
diff --git a/versioned_docs/version-2.23/user-guide/backup.md b/docs/guide/use/backup.md
similarity index 89%
rename from versioned_docs/version-2.23/user-guide/backup.md
rename to docs/guide/use/backup.md
index ff50ee4f..683ec308 100644
--- a/versioned_docs/version-2.23/user-guide/backup.md
+++ b/docs/guide/use/backup.md
@@ -7,7 +7,7 @@ description: Halo 控制台一键备份与恢复全站数据,含异步任务
## 备份
-:::warning[商城版注意事项]
+:::warning 商城数据不包含在备份中
因为商城相关的功能数据存储结构不同,所以备份和恢复功能暂不支持商城相关的数据,建议直接备份数据库。
所以如果你使用了 Halo 商城版的商城功能,备份文件不会包含商城相关的数据。
@@ -31,20 +31,20 @@ description: Halo 控制台一键备份与恢复全站数据,含异步任务
为了保障数据的安全,Halo 提供了自动备份和同步的[备份增强插件](https://www.halo.run/store/apps/app-dHakX),可以定期将数据备份到本地并同步到云端。
-:::note
-此插件目前为 [Halo 付费版](../getting-started/prepare.md#发行版本) 专享插件。
+:::note 仅限 Halo 付费版
+此插件目前为 [Halo 付费版](../prepare.md#发行版本) 专享插件。
:::

## 恢复
-:::info[在恢复前,需要了解以下几点:]
-
+:::info 恢复备份前须知
1. 恢复不限制部署方式,也不限制数据库,也就是说新站点的部署方式和数据库类型可以和备份的站点不同。
2. 恢复过程可能会持续较长时间,期间请勿刷新页面。
3. 在恢复的过程中,虽然已有的数据不会被清理掉,但如果有冲突的数据将被覆盖。
4. 恢复完成之后会提示停止运行 Halo,停止之后可能需要手动运行。
+
:::
在 Console 中,点击左侧菜单的 `备份`,进入备份页面,然后点击 `恢复` 选项卡即可进入恢复界面,阅读完注意事项之后点击 `开始恢复` 按钮即可显示备份文件上传界面。
@@ -57,9 +57,9 @@ Halo 支持三种恢复方式:
1. 上传备份文件:上传已有的备份文件进行恢复。
2. 远程恢复:从远程 URL 下载备份文件进行恢复。
-3. 从备份文件恢复:支持从 [工作目录](../getting-started/prepare.md#工作目录) 的 backups 目录扫描备份文件,并选择文件进行恢复。
+3. 从备份文件恢复:支持从 [工作目录](../prepare.md#工作目录) 的 backups 目录扫描备份文件,并选择文件进行恢复。
-:::info[提示]
+:::info 大文件建议从服务器恢复
如果你的备份文件较大,推荐提前将备份文件上传到服务器,然后选择 `从备份文件恢复` 方式进行恢复,避免因为网络原因导致上传失败。
:::
diff --git a/versioned_docs/version-2.25/user-guide/common.md b/docs/guide/use/common.md
similarity index 99%
rename from versioned_docs/version-2.25/user-guide/common.md
rename to docs/guide/use/common.md
index 089d66b7..44a2b2b9 100644
--- a/versioned_docs/version-2.25/user-guide/common.md
+++ b/docs/guide/use/common.md
@@ -65,7 +65,7 @@ Console 控制台是一个 Halo 站点的后台管理系统,只有具有权限
用于扩展 Halo 功能的软件包。插件独立于 Halo 核心应用,可以单独安装、升级、卸载。
-:::info
+:::info 主题和插件获取渠道
目前有两个官方渠道可以获取主题和插件:
- 应用市场:[https://www.halo.run/store/apps](https://www.halo.run/store/apps)
diff --git a/docs/user-guide/faq.md b/docs/guide/use/faq.md
similarity index 96%
rename from docs/user-guide/faq.md
rename to docs/guide/use/faq.md
index b4c431db..09d7c7a0 100644
--- a/docs/user-guide/faq.md
+++ b/docs/guide/use/faq.md
@@ -18,7 +18,7 @@ description: Halo 使用常见问题:产品定位、数据库结构、找回
2. 如果不满足上述条件,或者密码重置邮件不能发送成功,请直接联系具有用户管理权限的管理员进行密码重置操作,管理员可参考文档[修改用户密码](./users#修改用户密码)部分修改指定用户的密码;
3. 如果系统没有任何一个能够正常登录控制台且具有用户管理权限的管理员账号,则用户需要通过更新数据库记录的方式重置指定用户的密码。
- :::info[参考 SQL 语句]
+ :::info 参考 SQL 语句
通过以下 SQL 语句,可以将 `admin` 用户的密码重置为 `password`,密码重置后请尽快修改为更加安全的密码。
@@ -109,7 +109,7 @@ server {
registry.fit2cloud.com/halo/halo-pro:2.26 \
```
-更多 Docker 相关的教程请参考:[使用 Docker 部署 Halo](../getting-started/install/docker.md)
+更多 Docker 相关的教程请参考:[使用 Docker 部署 Halo](../install/docker.mdx)
### 如何查看运行日志?
@@ -127,7 +127,7 @@ server {
前台样式不正常或者丢失有很多种问题的可能,最快捷定位问题的方式就是打开浏览器控制台查看具体请求的错误,以下列出了部分导致出现该问题的常见原因:
-1. `外部访问地址` 与实际访问地址不一致。也可能是开启了 https 之后,无法正常加载 http 资源,将 [外部访问地址](../getting-started/install/config.md#halo-独有配置) 改为 https 协议即可。
+1. `外部访问地址` 与实际访问地址不一致。也可能是开启了 https 之后,无法正常加载 http 资源,将 [外部访问地址](../install/config.md#halo-独有配置) 改为 https 协议即可。
2. Nginx 配置了静态资源缓存,但没有设置 `proxy_pass`,参考如下:
```nginx
diff --git a/docs/guide/use/index.md b/docs/guide/use/index.md
new file mode 100644
index 00000000..8f180bf4
--- /dev/null
+++ b/docs/guide/use/index.md
@@ -0,0 +1,4 @@
+---
+title: 概览
+overview: true
+---
\ No newline at end of file
diff --git a/docs/user-guide/menus.md b/docs/guide/use/menus.md
similarity index 100%
rename from docs/user-guide/menus.md
rename to docs/guide/use/menus.md
diff --git a/versioned_docs/version-2.25/user-guide/pages.md b/docs/guide/use/pages.md
similarity index 97%
rename from versioned_docs/version-2.25/user-guide/pages.md
rename to docs/guide/use/pages.md
index ebca3dbe..f6b389f2 100644
--- a/versioned_docs/version-2.25/user-guide/pages.md
+++ b/docs/guide/use/pages.md
@@ -11,7 +11,7 @@ description: Halo 自定义页面:关于页、联系页等独立页面与别

-:::info
+:::info 自定义页面模板
自定义页面默认使用主题端的 `page.html` 模板进行渲染,如果主题中提供了针对自定义页面的其他模板,用户可以通过修改自定义页面高级设置中的自定义模板设置进行使用。
:::
diff --git a/docs/user-guide/plugins.md b/docs/guide/use/plugins.md
similarity index 93%
rename from docs/user-guide/plugins.md
rename to docs/guide/use/plugins.md
index 31c8c2b9..e4208765 100644
--- a/docs/user-guide/plugins.md
+++ b/docs/guide/use/plugins.md
@@ -7,7 +7,7 @@ description: Halo 插件安装、启用与卸载,及应用市场等获取渠
本文档仅对插件的基本管理功能进行说明,关于插件的详细使用说明请参考对应插件的文档。
-:::info
+:::info 插件获取渠道
目前有两个官方渠道可以获取插件:
- 应用市场:[https://www.halo.run/store/apps](https://www.halo.run/store/apps)
@@ -25,7 +25,7 @@ description: Halo 插件安装、启用与卸载,及应用市场等获取渠

-:::info
+:::info 查看内置应用市场指南
更多关于内置应用市场的使用说明可查阅:[应用市场](./app-store.md)
:::
@@ -35,7 +35,7 @@ description: Halo 插件安装、启用与卸载,及应用市场等获取渠
插件安装成功后,便会出现在插件管理的列表中。
-:::info[注意]
+:::info 注意第三方插件安全
从非 Halo 官网应用市场安装插件时,请务必注意其安全性。
:::
@@ -43,7 +43,7 @@ description: Halo 插件安装、启用与卸载,及应用市场等获取渠
同样,在安装插件的对话框中,切换到远程下载选项卡,输入插件的下载地址,点击 `下载` 按钮即可开始下载插件。
-:::info[注意]
+:::info 注意第三方插件安全
从非 Halo 官网应用市场安装插件时,请务必注意其安全性。
:::
@@ -55,7 +55,7 @@ description: Halo 插件安装、启用与卸载,及应用市场等获取渠
此处以 `Umami` 插件为例。
-:::info
+:::info 重置插件设置
你可以点击插件列表指定插件所在行后方的 `···` 更多操作按钮,选择其中的 `重置` 选项将插件提供的设置项恢复为默认值。
:::
@@ -81,7 +81,7 @@ description: Halo 插件安装、启用与卸载,及应用市场等获取渠

-:::info
+:::info 卸载方式的区别
目前提供了 `卸载` 及 `卸载并删除配置` 两种卸载方式。
仅卸载插件时插件的配置信息会进行保留,当重新安装插件后还可以使用之前已保存的配置。
:::
@@ -100,4 +100,4 @@ description: Halo 插件安装、启用与卸载,及应用市场等获取渠
这里以搜索引擎为例,安装了 `Meilisearch` 插件之后就可以在这里选择启用这个插件的搜索引擎。
-更多关于扩展点的说明可以查阅:[插件开发 / 扩展点和定制化 / 扩展点](../developer-guide/plugin/extension-points/server/index.md)
+更多关于扩展点的说明可以查阅:[插件开发 / 扩展点和定制化 / 扩展点](../../developer-guide/plugin/extension-points/server/index.md)
diff --git a/versioned_docs/version-2.23/user-guide/posts.md b/docs/guide/use/posts.md
similarity index 98%
rename from versioned_docs/version-2.23/user-guide/posts.md
rename to docs/guide/use/posts.md
index f8110d41..4b670680 100644
--- a/versioned_docs/version-2.23/user-guide/posts.md
+++ b/docs/guide/use/posts.md
@@ -18,7 +18,7 @@ description: Halo 文章编辑发布:编辑器、分类标签、定时发布
3. **保存**:仅保存文章内容,但是不发布。
4. **发布**:保存并发布文章内容。
-:::info
+:::info 获取其他文章编辑器
Halo 支持通过插件来拓展文章编辑器,目前除了 Halo 内置的编辑器,应用市场中还有其他的编辑器可用:[https://www.halo.run/store/apps?tag=editor](https://www.halo.run/store/apps?tag=editor)
:::
@@ -68,7 +68,7 @@ Halo 支持通过插件来拓展文章编辑器,目前除了 Halo 内置的编
文章删除后会进入回收站中,点击右上角的回收站按钮进入回收站。在回收站中,你可以永久删除或恢复指定的文章。
-:::warning
+:::warning 永久删除不可恢复
文章永久删除后将从数据库删除该记录,后续无法再恢复找回。
:::
@@ -109,7 +109,7 @@ Halo 支持通过插件来拓展文章编辑器,目前除了 Halo 内置的编
点击指定分类所在行后方的 `···` 更多操作按钮,可以对文章分类进行修改或删除。
-:::warning
+:::warning 删除分类的影响
文章分类删除后,对应文章的关联将被解除,且该操作不可恢复,请谨慎进行该操作。
:::
@@ -135,6 +135,6 @@ Halo 支持通过插件来拓展文章编辑器,目前除了 Halo 内置的编
在列表模式下,点击指定标签所在行后方的 `···` 更多操作按钮,可以对文章标签进行修改或删除。
-:::warning
+:::warning 删除标签的影响
文章标签删除后,对应文章的关联将被解除,且该操作不可恢复,请谨慎进行该操作。
:::
diff --git a/versioned_docs/version-2.26/user-guide/settings.md b/docs/guide/use/settings.md
similarity index 97%
rename from versioned_docs/version-2.26/user-guide/settings.md
rename to docs/guide/use/settings.md
index 5ee9c46e..d7b38a84 100644
--- a/versioned_docs/version-2.26/user-guide/settings.md
+++ b/docs/guide/use/settings.md
@@ -47,7 +47,7 @@ Halo 提供了以下站点基本信息设置:
```
- :::info
+ :::info 提示
需要注意的是,并不是所有搜索引擎都会遵守这个规则。
:::
@@ -57,7 +57,7 @@ Halo 提供了以下站点基本信息设置:
```
- :::warning[注意]
+ :::warning 注意
目前主流的搜索引擎(如 Google、Bing、百度搜索等)已经不再使用该标签作为关键词的参考,因此该设置项的作用已经不大,未来我们也可能会移除该设置项。
:::
@@ -85,7 +85,7 @@ Halo 提供了以下站点基本信息设置:
从 Halo 2.25.0 开始,新安装站点会在初始化时自动创建 **用户协议** 和 **隐私政策** 两个自定义页面,并默认将它们配置为注册时所需协议。
-:::warning[注意]
+:::warning 开放注册前替换协议内容
自动创建的协议页面只包含占位内容。正式开放注册前,请进入 [页面](./pages.md) 管理并替换为你站点实际使用的用户协议、隐私政策或其他合规说明。
:::
@@ -126,12 +126,13 @@ Halo 提供了以下站点基本信息设置:
- `/{year}/{month}/{slug}`
- `/{year}/{month}/{day}/{slug}`
- :::info[变量说明]
+ :::info 变量说明
- `slug`:文章别名
- `name`:文章 `metadata.name` 字段值
- `year`:四位数格式的文章发布年份
- `month`:两位数格式的文章发布月份
- `day`:两位数格式的文章发布日
+
:::
## 代码注入
@@ -144,8 +145,8 @@ Halo 提供了以下站点基本信息设置:
## 品牌信息
-:::note
-限 [Halo 付费版](../getting-started/prepare.md#发行版本) 可用。
+:::note 仅限 Halo 付费版
+限 [Halo 付费版](../prepare.md#发行版本) 可用。
:::
@@ -183,8 +184,8 @@ Halo 提供了以下站点基本信息设置:
### 短信通知
-:::note
-限 [Halo 付费版](../getting-started/prepare.md#发行版本) 可用。
+:::note 仅限 Halo 付费版
+限 [Halo 付费版](../prepare.md#发行版本) 可用。
:::
目前短信通知在 Halo 中基本只作为用户登录时发送验证码使用,以下是配置说明:
@@ -237,4 +238,4 @@ Halo 提供了以下站点基本信息设置:
4. 模版 ID:在 UCloud 短信服务 [短信模板](https://console.ucloud.cn/usms/domestic) 中创建的签名的 `模板ID`
5. 签名内容:在 UCloud 短信服务 [短信签名](https://console.ucloud.cn/usms/domestic) 中创建的签名的 `签名内容`
-配置完成之后,可以在 [身份认证](../user-guide/users.md#身份认证) 中开启手机号登录。
+配置完成之后,可以在 [身份认证](../use/users.md#身份认证) 中开启手机号登录。
diff --git a/docs/guide/use/shop/_meta.json b/docs/guide/use/shop/_meta.json
new file mode 100644
index 00000000..746bb2c0
--- /dev/null
+++ b/docs/guide/use/shop/_meta.json
@@ -0,0 +1,11 @@
+[
+ "prepare",
+ "console-home",
+ "payments",
+ "sales-channels",
+ "products",
+ "orders",
+ "virtual-delivery",
+ "theme-dev",
+ "mp"
+]
diff --git a/docs/user-guide/shop/console-home.mdx b/docs/guide/use/shop/console-home.mdx
similarity index 100%
rename from docs/user-guide/shop/console-home.mdx
rename to docs/guide/use/shop/console-home.mdx
diff --git a/versioned_docs/version-2.25/user-guide/shop/index.mdx b/docs/guide/use/shop/index.mdx
similarity index 62%
rename from versioned_docs/version-2.25/user-guide/shop/index.mdx
rename to docs/guide/use/shop/index.mdx
index e0b10abf..6869d73d 100644
--- a/versioned_docs/version-2.25/user-guide/shop/index.mdx
+++ b/docs/guide/use/shop/index.mdx
@@ -1,28 +1,23 @@
---
title: 商城
description: Halo 商城版功能概览:开店、商品、支付发货与前台路由等用户指南索引。
+overview: true
---
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
+import { Tab, Tabs } from '@rspress/core/theme';
-:::note
-限 [Halo 商城版](../../getting-started/prepare.md#发行版本) 可用。
+
+:::note 仅限 Halo 商城版
+限 [Halo 商城版](../../prepare.md#发行版本) 可用。
:::
商城模块是 Halo 商城版的一项功能,支持用户基于 Halo 站点创建店铺,上架多种类型的货品,配置商品支付和发货方式。为实体商品、虚拟商品、链接商品等销售场景提供完备的电商解决方案。
-
+

-
-
+
+

-
+
-
-```mdx-code-block
-import DocCardList from '@theme/DocCardList';
-
-
-```
diff --git a/versioned_docs/version-2.24/user-guide/shop/mp.mdx b/docs/guide/use/shop/mp.mdx
similarity index 97%
rename from versioned_docs/version-2.24/user-guide/shop/mp.mdx
rename to docs/guide/use/shop/mp.mdx
index 67def2a1..cf6cd388 100644
--- a/versioned_docs/version-2.24/user-guide/shop/mp.mdx
+++ b/docs/guide/use/shop/mp.mdx
@@ -16,7 +16,7 @@ Halo 官方目前以源码形式提供小程序模板,你需要自行编译,
## 使用流程
-:::info
+:::info Fork 后再修改
为了便于后续同步官方更新,建议先将仓库 Fork 到自己的 GitHub 账户,再克隆到本地进行配置、编译和发布。
:::
diff --git a/versioned_docs/version-2.23/user-guide/shop/orders.mdx b/docs/guide/use/shop/orders.mdx
similarity index 96%
rename from versioned_docs/version-2.23/user-guide/shop/orders.mdx
rename to docs/guide/use/shop/orders.mdx
index 0436ba57..ac8ad3d2 100644
--- a/versioned_docs/version-2.23/user-guide/shop/orders.mdx
+++ b/docs/guide/use/shop/orders.mdx
@@ -21,7 +21,8 @@ description: Halo 商城订单:查看详情、填写物流发货与订单处
在这个界面我们需要勾选需要发货的产品以及物流信息,然后点击 **确认发货** 按钮,即可完成发货。
-:::info[提示]
+:::info 物流与虚拟产品发货
1. 目前仅支持填写物流单号等信息,目前没有对接物流查询平台,所以需要用户手动根据物流单号查询物流信息。
2. 虚拟产品发货可参考:[虚拟交付](./virtual-delivery.mdx)
-:::
\ No newline at end of file
+
+:::
diff --git a/docs/user-guide/shop/payments.mdx b/docs/guide/use/shop/payments.mdx
similarity index 97%
rename from docs/user-guide/shop/payments.mdx
rename to docs/guide/use/shop/payments.mdx
index 2c67bca2..117dee15 100644
--- a/docs/user-guide/shop/payments.mdx
+++ b/docs/guide/use/shop/payments.mdx
@@ -3,8 +3,8 @@ title: 支付方式
description: Halo 商城支付:支付宝、微信、Stripe、易支付及手动收款等方式配置。
---
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
+import { Tab, Tabs } from '@rspress/core/theme';
+
在正式运营商城之前,我们需要配置至少一个可用的支付方式,目前商城支持的支付方式包括:
@@ -18,15 +18,15 @@ import TabItem from '@theme/TabItem';
首先登录到 Halo 控制台,进入 **商店 -> 设置 -> 支付方式** 页面,点击右上角的新建按钮。
-
+

-
-
+
+

-
+
-:::note
+:::note 先创建测试产品
在配置支付方式之前,建议先创建一个测试产品,方便在配置完成后进行测试。
:::
@@ -289,4 +289,4 @@ import TabItem from '@theme/TabItem';
支付预览:
-
\ No newline at end of file
+
diff --git a/versioned_docs/version-2.25/user-guide/shop/prepare.mdx b/docs/guide/use/shop/prepare.mdx
similarity index 85%
rename from versioned_docs/version-2.25/user-guide/shop/prepare.mdx
rename to docs/guide/use/shop/prepare.mdx
index 4f8c984d..9403677c 100644
--- a/versioned_docs/version-2.25/user-guide/shop/prepare.mdx
+++ b/docs/guide/use/shop/prepare.mdx
@@ -7,8 +7,8 @@ description: 启用 Halo 商城前:商城版安装激活、合规资质与支
在开始使用商城功能之前,需要先确定以下条件是否已满足:
-- 正常安装 [Halo 商城版](../../getting-started/install/docker-compose.md)
-- 激活 [Halo 商城版许可证](../../user-guide/activate.md)
+- 正常安装 [Halo 商城版](../../install/index.md)
+- 激活 [Halo 商城版许可证](../activate.md)
- 根据当地法律法规,满足开设网络商店的资质与要求
- 开通支付平台账户,目前支持:
- [支付宝官方接口](https://open.alipay.com/)
@@ -25,8 +25,8 @@ description: 启用 Halo 商城前:商城版安装激活、合规资质与支
- `/shop/checkout/:id`:结算页面
- `/shop/order/:code/payments`:支付页面
-:::note
+:::note 系统内置页面模板
这些页面无需主题提供对应的模板文件即可访问,使用的是系统内置的模板文件。如果当前激活的主题提供了对应的模板文件,则会优先使用主题提供的模板文件。
:::
-你可以根据需求,将这些页面路径添加到[网站菜单](../menus.md)中。
\ No newline at end of file
+你可以根据需求,将这些页面路径添加到[网站菜单](../menus.md)中。
diff --git a/versioned_docs/version-2.24/user-guide/shop/products.mdx b/docs/guide/use/shop/products.mdx
similarity index 96%
rename from versioned_docs/version-2.24/user-guide/shop/products.mdx
rename to docs/guide/use/shop/products.mdx
index 501fbb77..fbb58d13 100644
--- a/versioned_docs/version-2.24/user-guide/shop/products.mdx
+++ b/docs/guide/use/shop/products.mdx
@@ -3,9 +3,6 @@ title: 产品管理
description: Halo 商城产品:创建实体/虚拟商品、定价库存、图片与描述等配置说明。
---
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-

## 创建产品
@@ -31,7 +28,7 @@ import TabItem from '@theme/TabItem';
2. 虚拟:不需要实体配送,使用线上发货的产品类型
3. 链接:直接跳转到第三方链接的产品类型
-:::info[提示]
+:::info 虚拟产品交付方式
虚拟产品支持文件资源下载、卡密发货,可参考 [虚拟交付](./virtual-delivery.mdx) 进行发货配置。
:::
@@ -49,7 +46,7 @@ import TabItem from '@theme/TabItem';
规格即产品的具体规格,比如颜色为红色、尺寸为小,型号为1234567890,可以根据属性值生成不同的规格,并单独设置价格、库存等信息,最终用户购买时,可以选择属性值来确定购买的产品规格。
-:::note
+:::note 规格也称 SKU
这里的规格也可以称之为 **变体** 或者 **SKU**。
:::
@@ -78,7 +75,7 @@ import TabItem from '@theme/TabItem';
- 宽度:规格的宽度
- 高度:规格的高度
-:::note
+:::note 尺寸信息仅用于实物产品
重量、长度、宽度、高度用于后续发货相关的业务,如果产品类型为虚拟,则不需要配置。
:::
@@ -96,4 +93,4 @@ import TabItem from '@theme/TabItem';
配置完产品信息之后,就可以将产品状态改为 **发布**,并保存产品,最终就可以在商城前台中展示。
-
\ No newline at end of file
+
diff --git a/docs/user-guide/shop/sales-channels.mdx b/docs/guide/use/shop/sales-channels.mdx
similarity index 80%
rename from docs/user-guide/shop/sales-channels.mdx
rename to docs/guide/use/shop/sales-channels.mdx
index 8312ec31..1394d3ef 100644
--- a/docs/user-guide/shop/sales-channels.mdx
+++ b/docs/guide/use/shop/sales-channels.mdx
@@ -3,12 +3,11 @@ title: 销售渠道
description: Halo 商城销售渠道:区分终端与支付绑定,创建与管理渠道说明。
---
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
+import { Tab, Tabs } from '@rspress/core/theme';
为了区分不同平台(PC 端、小程序等)的支付方式以及后续追踪订单来源,系统提供了销售渠道功能。
-:::info
+:::info 仅需 PC 端销售渠道
由于目前商城仅支持 PC 端,暂未支持小程序等平台,所以仅需要创建一个 PC 端销售渠道并绑定所需的支付方式。
:::
@@ -17,12 +16,12 @@ import TabItem from '@theme/TabItem';
首先登录到 Halo 控制台,进入 **商店 -> 设置 -> 销售渠道** 页面,点击右上角的新建按钮。
-
+

-
-
+
+

-
+
- 是否启用:勾选
@@ -30,4 +29,4 @@ import TabItem from '@theme/TabItem';
- 编码:目前商城仅支持 PC 端,所以编码选择 **PC 端商城(MALL_PC)**
- 支付方式:选择已创建的支付方式,创建方式可参考:[支付方式](./payments.mdx)
-到这里,已经完成了支付方式和销售渠道的配置,现在可以正常使用商城功能了。
\ No newline at end of file
+到这里,已经完成了支付方式和销售渠道的配置,现在可以正常使用商城功能了。
diff --git a/docs/user-guide/shop/theme-dev.mdx b/docs/guide/use/shop/theme-dev.mdx
similarity index 100%
rename from docs/user-guide/shop/theme-dev.mdx
rename to docs/guide/use/shop/theme-dev.mdx
diff --git a/versioned_docs/version-2.23/user-guide/shop/virtual-delivery.mdx b/docs/guide/use/shop/virtual-delivery.mdx
similarity index 98%
rename from versioned_docs/version-2.23/user-guide/shop/virtual-delivery.mdx
rename to docs/guide/use/shop/virtual-delivery.mdx
index e839f090..e1c6fb69 100644
--- a/versioned_docs/version-2.23/user-guide/shop/virtual-delivery.mdx
+++ b/docs/guide/use/shop/virtual-delivery.mdx
@@ -151,7 +151,7 @@ Authorization: Bearer // 配置了 token 时附带
| `expireAt` | string | 否 | 过期时间(UTC,ISO-8601) |
| `capacity` | int | 否 | 可用次数,默认为 `1` |
-:::warning[注意]
+:::warning 发放响应必须非空且幂等
响应不可为空列表,否则触发卡密发放失败。建议以 `orderItem.id` 作为幂等键,避免重复请求导致重复发放。
:::
@@ -229,7 +229,7 @@ Authorization: Bearer // 配置了 token 时附带
| `expireAt` | string | 否 | 过期时间(UTC,ISO-8601) |
| `capacity` | int | 否 | 可用次数,默认为 `1` |
-:::warning[注意]
+:::warning 补货响应不可为空
响应不可为空列表,否则视为补货失败。补货失败不影响当前订单的卡密发放。
:::
@@ -257,4 +257,4 @@ Authorization: Bearer // 配置了 token 时附带
| `422` | `CDK_OUT_OF_STOCK` | 库存不足 | 视业务而定 |
| `429` | `RATE_LIMITED` | 触发限流 | 是 |
| `500` | `INTERNAL_ERROR` | 远程服务内部错误 | 是 |
-| `503` | `SERVICE_UNAVAILABLE` | 服务不可用 | 是 |
\ No newline at end of file
+| `503` | `SERVICE_UNAVAILABLE` | 服务不可用 | 是 |
diff --git a/versioned_docs/version-2.23/user-guide/themes.md b/docs/guide/use/themes.md
similarity index 96%
rename from versioned_docs/version-2.23/user-guide/themes.md
rename to docs/guide/use/themes.md
index 73352dca..65aeb59e 100644
--- a/versioned_docs/version-2.23/user-guide/themes.md
+++ b/docs/guide/use/themes.md
@@ -5,7 +5,7 @@ description: Halo 主题安装与切换、应用市场获取及模板与站点
主题包含了各种站点页面模板的资源包。用户访问 Halo 站点浏览到的内容及样式,由 Halo 管理端所配置使用的主题所决定。
-:::info
+:::info 主题获取渠道
目前有两个官方渠道可以获取主题:
- 应用市场:[https://www.halo.run/store/apps](https://www.halo.run/store/apps)
@@ -23,7 +23,7 @@ description: Halo 主题安装与切换、应用市场获取及模板与站点

-:::info
+:::info 查看内置应用市场指南
更多关于内置应用市场的使用说明可查阅:[应用市场](./app-store.md)
:::
@@ -43,7 +43,7 @@ description: Halo 主题安装与切换、应用市场获取及模板与站点
在弹框中点击选中要切换的目标主题,此时页面返回到主题详情页,点击右上角的 `启用` 按钮即可将当前主题切换为实际使用的主题。
-:::info
+:::info 选中主题不会自动启用
仅选中主题不点击右上角的 `启用` 按钮时,不会影响当前实际使用的主题。
:::
@@ -57,7 +57,7 @@ description: Halo 主题安装与切换、应用市场获取及模板与站点
以 Halo 的默认主题 Earth 为例,该主题提供了布局、样式、侧边栏、页脚及备案设置共五组配置项。
-:::info
+:::info 重置主题设置
你可以点击主题列表指定主题所在行后方的 `···` 更多操作按钮,选择其中的 `重置` 选项将主题提供的设置项恢复为默认值。
:::
@@ -92,7 +92,7 @@ description: Halo 主题安装与切换、应用市场获取及模板与站点

-:::info
+:::info 卸载方式的区别
目前提供了 `卸载` 及 `卸载并删除配置` 两种卸载方式。
仅卸载主题时主题的配置信息会进行保留,当重新安装主题后还可以使用之前已保存的配置。
:::
diff --git a/versioned_docs/version-2.23/user-guide/user-center.md b/docs/guide/use/user-center.md
similarity index 96%
rename from versioned_docs/version-2.23/user-guide/user-center.md
rename to docs/guide/use/user-center.md
index 510d542a..13e1fd61 100644
--- a/versioned_docs/version-2.23/user-guide/user-center.md
+++ b/docs/guide/use/user-center.md
@@ -9,7 +9,7 @@ description: Halo 个人中心(/uc):资料、认证方式与会话及与 C
你可以通过点击 Console 左下角的个人中心图标进入个人中心,也可以直接访问 `/uc` 进入个人中心。
-:::info[提示]
+:::info Console 入口显示条件
此外,如果用户拥有进入 Console 的权限,也会在个人中心的左侧导航栏中看到 Console 的入口。
详情可见:[创建角色](./users.md#创建角色)
@@ -31,7 +31,7 @@ description: Halo 个人中心(/uc):资料、认证方式与会话及与 C
## 个人令牌
-个人令牌是一种用于访问 Halo API 的凭证,可以通过个人令牌访问 Halo 的 RESTful API,而无需通过用户名和密码授权,使用方式可查阅:[RESTful API 介绍](../developer-guide/restful-api/introduction.md)
+个人令牌是一种用于访问 Halo API 的凭证,可以通过个人令牌访问 Halo 的 RESTful API,而无需通过用户名和密码授权,使用方式可查阅:[RESTful API 介绍](../../developer-guide/restful-api/introduction.md)

diff --git a/docs/user-guide/users.md b/docs/guide/use/users.md
similarity index 91%
rename from docs/user-guide/users.md
rename to docs/guide/use/users.md
index 914c14f4..b61aaa4a 100644
--- a/docs/user-guide/users.md
+++ b/docs/guide/use/users.md
@@ -44,7 +44,7 @@ Halo 2.0 版本采用了基于角色的权限控制(RBAC)体系。不同于
对于已有的用户,你可以在 `···` 更多操作中为该用户分配角色,分配角色后该用户具有角色所对应的权限。
-:::info
+:::info 修改角色会影响权限
修改用户分配的角色会影响用户所拥有的权限,可能影响用户使用。
:::
@@ -52,7 +52,7 @@ Halo 2.0 版本采用了基于角色的权限控制(RBAC)体系。不同于
对于已有的用户,你可以在 `···` 更多操作中删除该用户。
-:::warning
+:::warning 删除用户的影响
删除用户后,该用户之前创建的文章、页面等内容的作者信息将会丢失,可能影响站点内容浏览。此操作不可恢复。
:::
@@ -90,7 +90,7 @@ Halo 提供了全新创建和基于已有角色创建两种角色创建方式。
对于已有的角色,你可以在 `···` 更多操作中删除指定角色。
-:::warning
+:::warning 删除角色的影响
删除角色后,分配了该角色的用户会丧失对应的权限,影响用户使用。此操作不可恢复。
:::
@@ -98,7 +98,7 @@ Halo 提供了全新创建和基于已有角色创建两种角色创建方式。
目前 Halo 默认仅支持本地身份认证,但可以通过插件的方式拓展其他三方的身份认证方式。
-:::info
+:::info 官方身份认证插件
目前 Halo 官方提供的身份认证插件:
- [OAuth2 认证](https://www.halo.run/store/apps/app-ESVDK)
@@ -117,8 +117,8 @@ Halo 提供了全新创建和基于已有角色创建两种角色创建方式。
### 手机验证码登录
-:::note
-限 [Halo 付费版](../getting-started/prepare.md#发行版本) 可用。
+:::note 仅限 Halo 付费版
+限 [Halo 付费版](../prepare.md#发行版本) 可用。
:::
-在 [短信通知](../user-guide/settings.md#短信通知) 中配置好短信通知后,就可以在身份认证管理页面中开启手机验证码登录,也可以通过拖拽的方式调整默认登录方式。
+在 [短信通知](../use/settings.md#短信通知) 中配置好短信通知后,就可以在身份认证管理页面中开启手机验证码登录,也可以通过拖拽的方式调整默认登录方式。
diff --git a/docs/index.mdx b/docs/index.mdx
new file mode 100644
index 00000000..6c5e2519
--- /dev/null
+++ b/docs/index.mdx
@@ -0,0 +1,102 @@
+---
+pageType: custom
+title: Halo 文档
+description: Halo 安装、使用与开发文档入口。
+---
+
+import { IconSearch, SvgWrapper } from '@rspress/core/theme';
+
+
+
+ Halo 文档
+ 查找安装、使用和开发 Halo 所需的文档。
+
+
+
+
+
+ 快速开始
+ 查看使用指南
+
+
+
+
+
+
+
+ 按主题浏览
+
+
+
+
+
+
+
diff --git a/docs/intro.md b/docs/intro.md
deleted file mode 100644
index 36491008..00000000
--- a/docs/intro.md
+++ /dev/null
@@ -1,105 +0,0 @@
----
-id: intro
-sidebar_label: 简介
-title: ''
-sidebar_position: 1
-hide_title: true
-slug: /
----
-
-
-
-
-
-
-
-Halo [ˈheɪloʊ],强大易用的开源建站工具。
-
-
-
-
-官网
-文档
-社区
-Gitee
-Telegram 频道
-
-
-[](https://www.bilibili.com/video/BV15x4y1U7RU/?share_source=copy_web&vd_source=0ab6cf86ca512a363f04f18b86f55b86)
-
-------------------------------
-
-## Halo 是什么?
-
-Halo 是一款强大易用的开源建站工具,从个人博客、知识库,到企业官网、在线商城,Halo 都能助您轻松实现,一站式满足您的多样化建站需求。
-
-## 快速开始
-
-如果你的设备有 Docker 环境,可以使用以下命令快速启动一个 Halo 的体验环境:
-
-```bash
-docker run -d --name halo -p 8090:8090 -v ~/.halo2:/root/.halo2 halohub/halo:2.26
-```
-
-**以上方式仅作为体验使用,推荐使用开源 Linux 服务器运维管理面板 [1Panel](https://github.com/1Panel-dev/1Panel) 进行部署([查看文档](https://docs.halo.run/getting-started/install/1panel)),轻松搞定反向代理、SSL 证书及升级备份任务。更多部署方式,请[查看文档](https://docs.halo.run/category/%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97)。**
-
-## 在线体验
-
-- 环境地址:[https://demo.halocms.site](https://demo.halocms.site)
-- 后台地址:[https://demo.halocms.site/console](https://demo.halocms.site/console)
-- 用户名:`demo`
-- 密码:`P@ssw0rd123..`
-
-## 版本对比
-
-**Halo 社区版**:开源免费, 遵循 GPLv3 协议
-
-- [x] 适合个人开发者、技术爱好者、开源项目
-- [x] 零成本搭建博客、作品集、技术文档站
-- [x] 超过 100 款免费主题和插件
-
-**Halo 专业版**:在社区版基础上,集成 10+ 高价值功能
-
-- [x] 移动端 APP:随时随地管理内容
-- [x] AI 智能建站:快速生成专业站点
-- [x] 手机号验证登录:提升安全与用户体验
-- [x] 全站私有化部署:保障数据主权
-- [x] 付费主题/插件市场:专享精品主题和 SEO 优化、付费阅读、AI 助手等 10 款付费插件
-
-**Halo 商城版**:在专业版基础上,集成在线商城重磅功能
-
-- [x] 一体化在线商城:商品管理、订单处理、支付对接全流程
-- [x] 为中国商家定制:无缝集成微信支付、支付宝等本土生态
-- [x] 品牌官网 + CMS + 线上店铺一站式落地,助力生意高效增长
-
-关于三个版本的详细对比,请参考[版本对比](https://www.lxware.cn/halo)。
-
-## 应用生态
-
-- **应用市场**:提供丰富的站点主题与功能插件,[立即访问](https://www.halo.run/store/apps)
-- **成为开发者**:支持自主发布并管理应用,[了解详情](https://www.halo.run/archives/halo-app-store-developer-onboarding-app-creation)
-- [halo-sigs/awesome-halo](https://github.com/halo-sigs/awesome-halo)
-
-## 许可证
-
-[](https://github.com/halo-dev/halo/blob/master/LICENSE)
-
-Halo 使用 GPL-v3.0 协议开源,请遵守开源协议。
-
-## 贡献
-
-参考 [CONTRIBUTING](https://github.com/halo-dev/halo/blob/main/CONTRIBUTING.md)。
-
-
-
-## 状态
-
-
diff --git a/static/img/adaptive2.png b/docs/public/img/adaptive2.png
similarity index 100%
rename from static/img/adaptive2.png
rename to docs/public/img/adaptive2.png
diff --git a/static/img/annotation-setting/annotation-setting-preview.png b/docs/public/img/annotation-setting/annotation-setting-preview.png
similarity index 100%
rename from static/img/annotation-setting/annotation-setting-preview.png
rename to docs/public/img/annotation-setting/annotation-setting-preview.png
diff --git a/static/img/create-repository-for-hello-world-plugin.png b/docs/public/img/create-repository-for-hello-world-plugin.png
similarity index 100%
rename from static/img/create-repository-for-hello-world-plugin.png
rename to docs/public/img/create-repository-for-hello-world-plugin.png
diff --git a/static/img/developer-guide/plugin/basic/server/post-content-version-generation.png b/docs/public/img/developer-guide/plugin/basic/server/post-content-version-generation.png
similarity index 100%
rename from static/img/developer-guide/plugin/basic/server/post-content-version-generation.png
rename to docs/public/img/developer-guide/plugin/basic/server/post-content-version-generation.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/attachment-list-item-operation-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/attachment-list-item-operation-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/attachment-list-item-operation-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/attachment-list-item-operation-create.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/attachment-selector-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/attachment-selector-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/attachment-selector-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/attachment-selector-create.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/backup-list-item-operation-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/backup-list-item-operation-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/backup-list-item-operation-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/backup-list-item-operation-create.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/backup-tabs-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/backup-tabs-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/backup-tabs-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/backup-tabs-create.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/comment-list-item-operation-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/comment-list-item-operation-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/comment-list-item-operation-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/comment-list-item-operation-create.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/comment-subject-ref-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/comment-subject-ref-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/comment-subject-ref-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/comment-subject-ref-create.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/dashboard-widgets.png b/docs/public/img/developer-guide/plugin/extension-points/ui/dashboard-widgets.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/dashboard-widgets.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/dashboard-widgets.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/default-editor-extension-bubble-menu.png b/docs/public/img/developer-guide/plugin/extension-points/ui/default-editor-extension-bubble-menu.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/default-editor-extension-bubble-menu.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/default-editor-extension-bubble-menu.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/default-editor-extension-drag-menu.png b/docs/public/img/developer-guide/plugin/extension-points/ui/default-editor-extension-drag-menu.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/default-editor-extension-drag-menu.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/default-editor-extension-drag-menu.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/default-editor-extension-drag.png b/docs/public/img/developer-guide/plugin/extension-points/ui/default-editor-extension-drag.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/default-editor-extension-drag.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/default-editor-extension-drag.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/default-editor-extension-slash-command.png b/docs/public/img/developer-guide/plugin/extension-points/ui/default-editor-extension-slash-command.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/default-editor-extension-slash-command.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/default-editor-extension-slash-command.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/default-editor-extension-toolbar.png b/docs/public/img/developer-guide/plugin/extension-points/ui/default-editor-extension-toolbar.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/default-editor-extension-toolbar.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/default-editor-extension-toolbar.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/default-editor-extension-toolbox.png b/docs/public/img/developer-guide/plugin/extension-points/ui/default-editor-extension-toolbox.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/default-editor-extension-toolbox.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/default-editor-extension-toolbox.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/editor-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/editor-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/editor-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/editor-create.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/plugin-installation-tabs-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/plugin-installation-tabs-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/plugin-installation-tabs-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/plugin-installation-tabs-create.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/plugin-list-item-field-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/plugin-list-item-field-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/plugin-list-item-field-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/plugin-list-item-field-create.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/plugin-list-item-operation-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/plugin-list-item-operation-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/plugin-list-item-operation-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/plugin-list-item-operation-create.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/plugin-self-tabs-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/plugin-self-tabs-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/plugin-self-tabs-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/plugin-self-tabs-create.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/post-list-item-field-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/post-list-item-field-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/post-list-item-field-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/post-list-item-field-create.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/post-list-item-operation-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/post-list-item-operation-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/post-list-item-operation-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/post-list-item-operation-create.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/reply-list-item-operation-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/reply-list-item-operation-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/reply-list-item-operation-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/reply-list-item-operation-create.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/single-page-list-item-field-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/single-page-list-item-field-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/single-page-list-item-field-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/single-page-list-item-field-create.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/single-page-list-item-operation-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/single-page-list-item-operation-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/single-page-list-item-operation-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/single-page-list-item-operation-create.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/theme-list-item-operation-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/theme-list-item-operation-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/theme-list-item-operation-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/theme-list-item-operation-create.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/theme-list-tabs-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/theme-list-tabs-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/theme-list-tabs-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/theme-list-tabs-create.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/uc-user-profile-tabs-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/uc-user-profile-tabs-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/uc-user-profile-tabs-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/uc-user-profile-tabs-create.png
diff --git a/static/img/developer-guide/plugin/extension-points/ui/user-detail-tabs-create.png b/docs/public/img/developer-guide/plugin/extension-points/ui/user-detail-tabs-create.png
similarity index 100%
rename from static/img/developer-guide/plugin/extension-points/ui/user-detail-tabs-create.png
rename to docs/public/img/developer-guide/plugin/extension-points/ui/user-detail-tabs-create.png
diff --git a/static/img/developer-guide/plugin/use-devtools.png b/docs/public/img/developer-guide/plugin/use-devtools.png
similarity index 100%
rename from static/img/developer-guide/plugin/use-devtools.png
rename to docs/public/img/developer-guide/plugin/use-devtools.png
diff --git a/static/img/developer-guide/rest-api/swagger-ui-overview.png b/docs/public/img/developer-guide/rest-api/swagger-ui-overview.png
similarity index 100%
rename from static/img/developer-guide/rest-api/swagger-ui-overview.png
rename to docs/public/img/developer-guide/rest-api/swagger-ui-overview.png
diff --git a/static/img/developer-guide/theme/custom-login-layout.png b/docs/public/img/developer-guide/theme/custom-login-layout.png
similarity index 100%
rename from static/img/developer-guide/theme/custom-login-layout.png
rename to docs/public/img/developer-guide/theme/custom-login-layout.png
diff --git a/static/img/developer-guide/theme/custom-signup-layout.png b/docs/public/img/developer-guide/theme/custom-signup-layout.png
similarity index 100%
rename from static/img/developer-guide/theme/custom-signup-layout.png
rename to docs/public/img/developer-guide/theme/custom-signup-layout.png
diff --git a/static/img/developer-run/IntelliJ-IDEA-Profiles-Win.png b/docs/public/img/developer-run/IntelliJ-IDEA-Profiles-Win.png
similarity index 100%
rename from static/img/developer-run/IntelliJ-IDEA-Profiles-Win.png
rename to docs/public/img/developer-run/IntelliJ-IDEA-Profiles-Win.png
diff --git a/static/img/developer-run/IntelliJ-IDEA-Profiles-macOS.png b/docs/public/img/developer-run/IntelliJ-IDEA-Profiles-macOS.png
similarity index 100%
rename from static/img/developer-run/IntelliJ-IDEA-Profiles-macOS.png
rename to docs/public/img/developer-run/IntelliJ-IDEA-Profiles-macOS.png
diff --git a/static/img/favicon-96x96.png b/docs/public/img/favicon-96x96.png
similarity index 100%
rename from static/img/favicon-96x96.png
rename to docs/public/img/favicon-96x96.png
diff --git a/static/img/formkit/formkit-iconify.png b/docs/public/img/formkit/formkit-iconify.png
similarity index 100%
rename from static/img/formkit/formkit-iconify.png
rename to docs/public/img/formkit/formkit-iconify.png
diff --git a/static/img/formkit/formkit-repeater.png b/docs/public/img/formkit/formkit-repeater.png
similarity index 100%
rename from static/img/formkit/formkit-repeater.png
rename to docs/public/img/formkit/formkit-repeater.png
diff --git a/static/img/formkit/formkit-toggle.png b/docs/public/img/formkit/formkit-toggle.png
similarity index 100%
rename from static/img/formkit/formkit-toggle.png
rename to docs/public/img/formkit/formkit-toggle.png
diff --git a/static/img/formkit/formkit-verify-form.png b/docs/public/img/formkit/formkit-verify-form.png
similarity index 100%
rename from static/img/formkit/formkit-verify-form.png
rename to docs/public/img/formkit/formkit-verify-form.png
diff --git a/static/img/halo-data-export.png b/docs/public/img/halo-data-export.png
similarity index 100%
rename from static/img/halo-data-export.png
rename to docs/public/img/halo-data-export.png
diff --git a/static/img/halo-plugin-hello-world-todo-swagger-api.png b/docs/public/img/halo-plugin-hello-world-todo-swagger-api.png
similarity index 100%
rename from static/img/halo-plugin-hello-world-todo-swagger-api.png
rename to docs/public/img/halo-plugin-hello-world-todo-swagger-api.png
diff --git a/static/img/install/1panel/1panel.png b/docs/public/img/install/1panel/1panel.png
similarity index 100%
rename from static/img/install/1panel/1panel.png
rename to docs/public/img/install/1panel/1panel.png
diff --git a/static/img/install/1panel/app-store-halo.png b/docs/public/img/install/1panel/app-store-halo.png
similarity index 100%
rename from static/img/install/1panel/app-store-halo.png
rename to docs/public/img/install/1panel/app-store-halo.png
diff --git a/static/img/install/1panel/halo-console.png b/docs/public/img/install/1panel/halo-console.png
similarity index 100%
rename from static/img/install/1panel/halo-console.png
rename to docs/public/img/install/1panel/halo-console.png
diff --git a/static/img/install/1panel/halo-status.png b/docs/public/img/install/1panel/halo-status.png
similarity index 100%
rename from static/img/install/1panel/halo-status.png
rename to docs/public/img/install/1panel/halo-status.png
diff --git a/static/img/install/1panel/install-halo.png b/docs/public/img/install/1panel/install-halo.png
similarity index 100%
rename from static/img/install/1panel/install-halo.png
rename to docs/public/img/install/1panel/install-halo.png
diff --git a/static/img/install/1panel/new-site.png b/docs/public/img/install/1panel/new-site.png
similarity index 100%
rename from static/img/install/1panel/new-site.png
rename to docs/public/img/install/1panel/new-site.png
diff --git a/static/img/install/1panel/openresty-mysql.png b/docs/public/img/install/1panel/openresty-mysql.png
similarity index 100%
rename from static/img/install/1panel/openresty-mysql.png
rename to docs/public/img/install/1panel/openresty-mysql.png
diff --git a/static/img/install/1panel/site.png b/docs/public/img/install/1panel/site.png
similarity index 100%
rename from static/img/install/1panel/site.png
rename to docs/public/img/install/1panel/site.png
diff --git a/static/img/install/1panel/upgrade-2.png b/docs/public/img/install/1panel/upgrade-2.png
similarity index 100%
rename from static/img/install/1panel/upgrade-2.png
rename to docs/public/img/install/1panel/upgrade-2.png
diff --git a/static/img/install/1panel/upgrade.png b/docs/public/img/install/1panel/upgrade.png
similarity index 100%
rename from static/img/install/1panel/upgrade.png
rename to docs/public/img/install/1panel/upgrade.png
diff --git a/static/img/install/alibab-cloud-computenest/deploy_1.jpg b/docs/public/img/install/alibab-cloud-computenest/deploy_1.jpg
similarity index 100%
rename from static/img/install/alibab-cloud-computenest/deploy_1.jpg
rename to docs/public/img/install/alibab-cloud-computenest/deploy_1.jpg
diff --git a/static/img/install/alibab-cloud-computenest/deploy_2.jpg b/docs/public/img/install/alibab-cloud-computenest/deploy_2.jpg
similarity index 100%
rename from static/img/install/alibab-cloud-computenest/deploy_2.jpg
rename to docs/public/img/install/alibab-cloud-computenest/deploy_2.jpg
diff --git a/static/img/install/alibab-cloud-computenest/halo-setup.jpg b/docs/public/img/install/alibab-cloud-computenest/halo-setup.jpg
similarity index 100%
rename from static/img/install/alibab-cloud-computenest/halo-setup.jpg
rename to docs/public/img/install/alibab-cloud-computenest/halo-setup.jpg
diff --git a/static/img/install/alibaba-cloud-market/1panel-add-domain.png b/docs/public/img/install/alibaba-cloud-market/1panel-add-domain.png
similarity index 100%
rename from static/img/install/alibaba-cloud-market/1panel-add-domain.png
rename to docs/public/img/install/alibaba-cloud-market/1panel-add-domain.png
diff --git a/static/img/install/alibaba-cloud-market/1panel-installed-apps.png b/docs/public/img/install/alibaba-cloud-market/1panel-installed-apps.png
similarity index 100%
rename from static/img/install/alibaba-cloud-market/1panel-installed-apps.png
rename to docs/public/img/install/alibaba-cloud-market/1panel-installed-apps.png
diff --git a/static/img/install/alibaba-cloud-market/1panel-update-halo-external-url.png b/docs/public/img/install/alibaba-cloud-market/1panel-update-halo-external-url.png
similarity index 100%
rename from static/img/install/alibaba-cloud-market/1panel-update-halo-external-url.png
rename to docs/public/img/install/alibaba-cloud-market/1panel-update-halo-external-url.png
diff --git a/static/img/install/alibaba-cloud-market/1panel-upgrade-halo.png b/docs/public/img/install/alibaba-cloud-market/1panel-upgrade-halo.png
similarity index 100%
rename from static/img/install/alibaba-cloud-market/1panel-upgrade-halo.png
rename to docs/public/img/install/alibaba-cloud-market/1panel-upgrade-halo.png
diff --git a/static/img/install/alibaba-cloud-market/1panel-website.png b/docs/public/img/install/alibaba-cloud-market/1panel-website.png
similarity index 100%
rename from static/img/install/alibaba-cloud-market/1panel-website.png
rename to docs/public/img/install/alibaba-cloud-market/1panel-website.png
diff --git a/static/img/install/alibaba-cloud-market/1panel.png b/docs/public/img/install/alibaba-cloud-market/1panel.png
similarity index 100%
rename from static/img/install/alibaba-cloud-market/1panel.png
rename to docs/public/img/install/alibaba-cloud-market/1panel.png
diff --git a/static/img/install/alibaba-cloud-market/buy-1.png b/docs/public/img/install/alibaba-cloud-market/buy-1.png
similarity index 100%
rename from static/img/install/alibaba-cloud-market/buy-1.png
rename to docs/public/img/install/alibaba-cloud-market/buy-1.png
diff --git a/static/img/install/alibaba-cloud-market/buy-2.png b/docs/public/img/install/alibaba-cloud-market/buy-2.png
similarity index 100%
rename from static/img/install/alibaba-cloud-market/buy-2.png
rename to docs/public/img/install/alibaba-cloud-market/buy-2.png
diff --git a/static/img/install/alibaba-cloud-market/buy-3.jpeg b/docs/public/img/install/alibaba-cloud-market/buy-3.jpeg
similarity index 100%
rename from static/img/install/alibaba-cloud-market/buy-3.jpeg
rename to docs/public/img/install/alibaba-cloud-market/buy-3.jpeg
diff --git a/static/img/install/alibaba-cloud-market/buy-4.jpeg b/docs/public/img/install/alibaba-cloud-market/buy-4.jpeg
similarity index 100%
rename from static/img/install/alibaba-cloud-market/buy-4.jpeg
rename to docs/public/img/install/alibaba-cloud-market/buy-4.jpeg
diff --git a/static/img/install/alibaba-cloud-market/get-1panel-info.png b/docs/public/img/install/alibaba-cloud-market/get-1panel-info.png
similarity index 100%
rename from static/img/install/alibaba-cloud-market/get-1panel-info.png
rename to docs/public/img/install/alibaba-cloud-market/get-1panel-info.png
diff --git a/static/img/install/alibaba-cloud-market/instance.png b/docs/public/img/install/alibaba-cloud-market/instance.png
similarity index 100%
rename from static/img/install/alibaba-cloud-market/instance.png
rename to docs/public/img/install/alibaba-cloud-market/instance.png
diff --git a/static/img/install/alibaba-cloud-market/iptables-1panel.jpeg b/docs/public/img/install/alibaba-cloud-market/iptables-1panel.jpeg
similarity index 100%
rename from static/img/install/alibaba-cloud-market/iptables-1panel.jpeg
rename to docs/public/img/install/alibaba-cloud-market/iptables-1panel.jpeg
diff --git a/static/img/install/alibaba-cloud-market/iptables-http.jpeg b/docs/public/img/install/alibaba-cloud-market/iptables-http.jpeg
similarity index 100%
rename from static/img/install/alibaba-cloud-market/iptables-http.jpeg
rename to docs/public/img/install/alibaba-cloud-market/iptables-http.jpeg
diff --git a/static/img/install/bt-panel/custom-compose.png b/docs/public/img/install/bt-panel/custom-compose.png
similarity index 100%
rename from static/img/install/bt-panel/custom-compose.png
rename to docs/public/img/install/bt-panel/custom-compose.png
diff --git a/static/img/install/bt-panel/docker.png b/docs/public/img/install/bt-panel/docker.png
similarity index 100%
rename from static/img/install/bt-panel/docker.png
rename to docs/public/img/install/bt-panel/docker.png
diff --git a/static/img/install/bt-panel/halo-app.png b/docs/public/img/install/bt-panel/halo-app.png
similarity index 100%
rename from static/img/install/bt-panel/halo-app.png
rename to docs/public/img/install/bt-panel/halo-app.png
diff --git a/static/img/install/bt-panel/install-halo.png b/docs/public/img/install/bt-panel/install-halo.png
similarity index 100%
rename from static/img/install/bt-panel/install-halo.png
rename to docs/public/img/install/bt-panel/install-halo.png
diff --git a/static/img/install/bt-panel/installed.png b/docs/public/img/install/bt-panel/installed.png
similarity index 100%
rename from static/img/install/bt-panel/installed.png
rename to docs/public/img/install/bt-panel/installed.png
diff --git a/static/img/install/bt-panel/request-ssl.png b/docs/public/img/install/bt-panel/request-ssl.png
similarity index 100%
rename from static/img/install/bt-panel/request-ssl.png
rename to docs/public/img/install/bt-panel/request-ssl.png
diff --git a/static/img/install/bt-panel/ssl-status.png b/docs/public/img/install/bt-panel/ssl-status.png
similarity index 100%
rename from static/img/install/bt-panel/ssl-status.png
rename to docs/public/img/install/bt-panel/ssl-status.png
diff --git a/static/img/install/bt-panel/update.png b/docs/public/img/install/bt-panel/update.png
similarity index 100%
rename from static/img/install/bt-panel/update.png
rename to docs/public/img/install/bt-panel/update.png
diff --git a/static/img/install/tencent-cloud-lighthouse/1panel-info.png b/docs/public/img/install/tencent-cloud-lighthouse/1panel-info.png
similarity index 100%
rename from static/img/install/tencent-cloud-lighthouse/1panel-info.png
rename to docs/public/img/install/tencent-cloud-lighthouse/1panel-info.png
diff --git a/static/img/install/tencent-cloud-lighthouse/1panel-login.png b/docs/public/img/install/tencent-cloud-lighthouse/1panel-login.png
similarity index 100%
rename from static/img/install/tencent-cloud-lighthouse/1panel-login.png
rename to docs/public/img/install/tencent-cloud-lighthouse/1panel-login.png
diff --git a/static/img/install/tencent-cloud-lighthouse/1panel-overview.png b/docs/public/img/install/tencent-cloud-lighthouse/1panel-overview.png
similarity index 100%
rename from static/img/install/tencent-cloud-lighthouse/1panel-overview.png
rename to docs/public/img/install/tencent-cloud-lighthouse/1panel-overview.png
diff --git a/static/img/install/tencent-cloud-lighthouse/application.png b/docs/public/img/install/tencent-cloud-lighthouse/application.png
similarity index 100%
rename from static/img/install/tencent-cloud-lighthouse/application.png
rename to docs/public/img/install/tencent-cloud-lighthouse/application.png
diff --git a/static/img/install/tencent-cloud-lighthouse/buy.png b/docs/public/img/install/tencent-cloud-lighthouse/buy.png
similarity index 100%
rename from static/img/install/tencent-cloud-lighthouse/buy.png
rename to docs/public/img/install/tencent-cloud-lighthouse/buy.png
diff --git a/static/img/install/tencent-cloud-lighthouse/domain.png b/docs/public/img/install/tencent-cloud-lighthouse/domain.png
similarity index 100%
rename from static/img/install/tencent-cloud-lighthouse/domain.png
rename to docs/public/img/install/tencent-cloud-lighthouse/domain.png
diff --git a/static/img/install/tencent-cloud-lighthouse/external-url.png b/docs/public/img/install/tencent-cloud-lighthouse/external-url.png
similarity index 100%
rename from static/img/install/tencent-cloud-lighthouse/external-url.png
rename to docs/public/img/install/tencent-cloud-lighthouse/external-url.png
diff --git a/static/img/install/tencent-cloud-lighthouse/firewall.png b/docs/public/img/install/tencent-cloud-lighthouse/firewall.png
similarity index 100%
rename from static/img/install/tencent-cloud-lighthouse/firewall.png
rename to docs/public/img/install/tencent-cloud-lighthouse/firewall.png
diff --git a/static/img/install/tencent-cloud-lighthouse/halo-setup.png b/docs/public/img/install/tencent-cloud-lighthouse/halo-setup.png
similarity index 100%
rename from static/img/install/tencent-cloud-lighthouse/halo-setup.png
rename to docs/public/img/install/tencent-cloud-lighthouse/halo-setup.png
diff --git a/static/img/install/tencent-cloud-lighthouse/installed-apps.png b/docs/public/img/install/tencent-cloud-lighthouse/installed-apps.png
similarity index 100%
rename from static/img/install/tencent-cloud-lighthouse/installed-apps.png
rename to docs/public/img/install/tencent-cloud-lighthouse/installed-apps.png
diff --git a/static/img/install/tencent-cloud-lighthouse/upgrade.png b/docs/public/img/install/tencent-cloud-lighthouse/upgrade.png
similarity index 100%
rename from static/img/install/tencent-cloud-lighthouse/upgrade.png
rename to docs/public/img/install/tencent-cloud-lighthouse/upgrade.png
diff --git a/static/img/install/tencent-cloud-lighthouse/websites.png b/docs/public/img/install/tencent-cloud-lighthouse/websites.png
similarity index 100%
rename from static/img/install/tencent-cloud-lighthouse/websites.png
rename to docs/public/img/install/tencent-cloud-lighthouse/websites.png
diff --git a/static/img/migrate/halo1.6-export.png b/docs/public/img/migrate/halo1.6-export.png
similarity index 100%
rename from static/img/migrate/halo1.6-export.png
rename to docs/public/img/migrate/halo1.6-export.png
diff --git a/static/img/migrate/halo2.0-migrate-plugin-1.png b/docs/public/img/migrate/halo2.0-migrate-plugin-1.png
similarity index 100%
rename from static/img/migrate/halo2.0-migrate-plugin-1.png
rename to docs/public/img/migrate/halo2.0-migrate-plugin-1.png
diff --git a/static/img/migrate/halo2.0-migrate-plugin-2.png b/docs/public/img/migrate/halo2.0-migrate-plugin-2.png
similarity index 100%
rename from static/img/migrate/halo2.0-migrate-plugin-2.png
rename to docs/public/img/migrate/halo2.0-migrate-plugin-2.png
diff --git a/static/img/migrate/halo2.0-migrate-plugin-3.png b/docs/public/img/migrate/halo2.0-migrate-plugin-3.png
similarity index 100%
rename from static/img/migrate/halo2.0-migrate-plugin-3.png
rename to docs/public/img/migrate/halo2.0-migrate-plugin-3.png
diff --git a/static/img/migrate/halo2.0-migrate-plugin.png b/docs/public/img/migrate/halo2.0-migrate-plugin.png
similarity index 100%
rename from static/img/migrate/halo2.0-migrate-plugin.png
rename to docs/public/img/migrate/halo2.0-migrate-plugin.png
diff --git a/static/img/nginx-proxy-manager/Nginx-Proxy-Manager-1.png b/docs/public/img/nginx-proxy-manager/Nginx-Proxy-Manager-1.png
similarity index 100%
rename from static/img/nginx-proxy-manager/Nginx-Proxy-Manager-1.png
rename to docs/public/img/nginx-proxy-manager/Nginx-Proxy-Manager-1.png
diff --git a/static/img/nginx-proxy-manager/Nginx-Proxy-Manager-2.png b/docs/public/img/nginx-proxy-manager/Nginx-Proxy-Manager-2.png
similarity index 100%
rename from static/img/nginx-proxy-manager/Nginx-Proxy-Manager-2.png
rename to docs/public/img/nginx-proxy-manager/Nginx-Proxy-Manager-2.png
diff --git a/static/img/nginx-proxy-manager/Nginx-Proxy-Manager-3.png b/docs/public/img/nginx-proxy-manager/Nginx-Proxy-Manager-3.png
similarity index 100%
rename from static/img/nginx-proxy-manager/Nginx-Proxy-Manager-3.png
rename to docs/public/img/nginx-proxy-manager/Nginx-Proxy-Manager-3.png
diff --git a/static/img/nginx-proxy-manager/Nginx-Proxy-Manager-4.png b/docs/public/img/nginx-proxy-manager/Nginx-Proxy-Manager-4.png
similarity index 100%
rename from static/img/nginx-proxy-manager/Nginx-Proxy-Manager-4.png
rename to docs/public/img/nginx-proxy-manager/Nginx-Proxy-Manager-4.png
diff --git a/static/img/nginx-proxy-manager/Nginx-Proxy-Manager-5.png b/docs/public/img/nginx-proxy-manager/Nginx-Proxy-Manager-5.png
similarity index 100%
rename from static/img/nginx-proxy-manager/Nginx-Proxy-Manager-5.png
rename to docs/public/img/nginx-proxy-manager/Nginx-Proxy-Manager-5.png
diff --git a/static/img/nginx-proxy-manager/Nginx-Proxy-Manager-6.png b/docs/public/img/nginx-proxy-manager/Nginx-Proxy-Manager-6.png
similarity index 100%
rename from static/img/nginx-proxy-manager/Nginx-Proxy-Manager-6.png
rename to docs/public/img/nginx-proxy-manager/Nginx-Proxy-Manager-6.png
diff --git a/static/img/nginx-proxy-manager/Nginx-Proxy-Manager-7.png b/docs/public/img/nginx-proxy-manager/Nginx-Proxy-Manager-7.png
similarity index 100%
rename from static/img/nginx-proxy-manager/Nginx-Proxy-Manager-7.png
rename to docs/public/img/nginx-proxy-manager/Nginx-Proxy-Manager-7.png
diff --git a/static/img/nginx-proxy-manager/Nginx-Proxy-Manager-8.png b/docs/public/img/nginx-proxy-manager/Nginx-Proxy-Manager-8.png
similarity index 100%
rename from static/img/nginx-proxy-manager/Nginx-Proxy-Manager-8.png
rename to docs/public/img/nginx-proxy-manager/Nginx-Proxy-Manager-8.png
diff --git a/static/img/nginx-proxy-manager/npm-add-proxy.png b/docs/public/img/nginx-proxy-manager/npm-add-proxy.png
similarity index 100%
rename from static/img/nginx-proxy-manager/npm-add-proxy.png
rename to docs/public/img/nginx-proxy-manager/npm-add-proxy.png
diff --git a/static/img/nginx-proxy-manager/npm-dashboard.png b/docs/public/img/nginx-proxy-manager/npm-dashboard.png
similarity index 100%
rename from static/img/nginx-proxy-manager/npm-dashboard.png
rename to docs/public/img/nginx-proxy-manager/npm-dashboard.png
diff --git a/static/img/nginx-proxy-manager/npm-ssl.png b/docs/public/img/nginx-proxy-manager/npm-ssl.png
similarity index 100%
rename from static/img/nginx-proxy-manager/npm-ssl.png
rename to docs/public/img/nginx-proxy-manager/npm-ssl.png
diff --git a/static/img/nginx-proxy-manager/npm-welcome.png b/docs/public/img/nginx-proxy-manager/npm-welcome.png
similarity index 100%
rename from static/img/nginx-proxy-manager/npm-welcome.png
rename to docs/public/img/nginx-proxy-manager/npm-welcome.png
diff --git a/static/img/plugin-hello-world.png b/docs/public/img/plugin-hello-world.png
similarity index 100%
rename from static/img/plugin-hello-world.png
rename to docs/public/img/plugin-hello-world.png
diff --git a/static/img/setup/setup-2.20.png b/docs/public/img/setup/setup-2.20.png
similarity index 100%
rename from static/img/setup/setup-2.20.png
rename to docs/public/img/setup/setup-2.20.png
diff --git a/static/img/setup/setup.png b/docs/public/img/setup/setup.png
similarity index 100%
rename from static/img/setup/setup.png
rename to docs/public/img/setup/setup.png
diff --git a/static/img/theme/reload-theme-config.png b/docs/public/img/theme/reload-theme-config.png
similarity index 100%
rename from static/img/theme/reload-theme-config.png
rename to docs/public/img/theme/reload-theme-config.png
diff --git a/static/img/todo-ui.png b/docs/public/img/todo-ui.png
similarity index 100%
rename from static/img/todo-ui.png
rename to docs/public/img/todo-ui.png
diff --git a/static/img/todolist-in-list.png b/docs/public/img/todolist-in-list.png
similarity index 100%
rename from static/img/todolist-in-list.png
rename to docs/public/img/todolist-in-list.png
diff --git a/static/img/uc/totp-config.png b/docs/public/img/uc/totp-config.png
similarity index 100%
rename from static/img/uc/totp-config.png
rename to docs/public/img/uc/totp-config.png
diff --git a/static/img/uc/totp.png b/docs/public/img/uc/totp.png
similarity index 100%
rename from static/img/uc/totp.png
rename to docs/public/img/uc/totp.png
diff --git a/static/img/uc/uc-entry.png b/docs/public/img/uc/uc-entry.png
similarity index 100%
rename from static/img/uc/uc-entry.png
rename to docs/public/img/uc/uc-entry.png
diff --git a/static/img/uc/uc-notification-preferences.png b/docs/public/img/uc/uc-notification-preferences.png
similarity index 100%
rename from static/img/uc/uc-notification-preferences.png
rename to docs/public/img/uc/uc-notification-preferences.png
diff --git a/static/img/uc/uc-notifications.png b/docs/public/img/uc/uc-notifications.png
similarity index 100%
rename from static/img/uc/uc-notifications.png
rename to docs/public/img/uc/uc-notifications.png
diff --git a/static/img/uc/uc-pat-creation.png b/docs/public/img/uc/uc-pat-creation.png
similarity index 100%
rename from static/img/uc/uc-pat-creation.png
rename to docs/public/img/uc/uc-pat-creation.png
diff --git a/static/img/uc/uc-pat-token.png b/docs/public/img/uc/uc-pat-token.png
similarity index 100%
rename from static/img/uc/uc-pat-token.png
rename to docs/public/img/uc/uc-pat-token.png
diff --git a/static/img/uc/uc-pat.png b/docs/public/img/uc/uc-pat.png
similarity index 100%
rename from static/img/uc/uc-pat.png
rename to docs/public/img/uc/uc-pat.png
diff --git a/static/img/uc/uc-posts.png b/docs/public/img/uc/uc-posts.png
similarity index 100%
rename from static/img/uc/uc-posts.png
rename to docs/public/img/uc/uc-posts.png
diff --git a/static/img/uc/uc-profile.png b/docs/public/img/uc/uc-profile.png
similarity index 100%
rename from static/img/uc/uc-profile.png
rename to docs/public/img/uc/uc-profile.png
diff --git a/static/img/uc/user-devices.png b/docs/public/img/uc/user-devices.png
similarity index 100%
rename from static/img/uc/user-devices.png
rename to docs/public/img/uc/user-devices.png
diff --git a/static/img/user-guide/activate/app-activate.png b/docs/public/img/user-guide/activate/app-activate.png
similarity index 100%
rename from static/img/user-guide/activate/app-activate.png
rename to docs/public/img/user-guide/activate/app-activate.png
diff --git a/static/img/user-guide/activate/app-store.png b/docs/public/img/user-guide/activate/app-store.png
similarity index 100%
rename from static/img/user-guide/activate/app-store.png
rename to docs/public/img/user-guide/activate/app-store.png
diff --git a/static/img/user-guide/activate/lxware-license-detail-apps.png b/docs/public/img/user-guide/activate/lxware-license-detail-apps.png
similarity index 100%
rename from static/img/user-guide/activate/lxware-license-detail-apps.png
rename to docs/public/img/user-guide/activate/lxware-license-detail-apps.png
diff --git a/static/img/user-guide/activate/lxware-license-detail.png b/docs/public/img/user-guide/activate/lxware-license-detail.png
similarity index 100%
rename from static/img/user-guide/activate/lxware-license-detail.png
rename to docs/public/img/user-guide/activate/lxware-license-detail.png
diff --git a/static/img/user-guide/activate/lxware-licenses-operation-detail.png b/docs/public/img/user-guide/activate/lxware-licenses-operation-detail.png
similarity index 100%
rename from static/img/user-guide/activate/lxware-licenses-operation-detail.png
rename to docs/public/img/user-guide/activate/lxware-licenses-operation-detail.png
diff --git a/static/img/user-guide/activate/lxware-licenses.png b/docs/public/img/user-guide/activate/lxware-licenses.png
similarity index 100%
rename from static/img/user-guide/activate/lxware-licenses.png
rename to docs/public/img/user-guide/activate/lxware-licenses.png
diff --git a/static/img/user-guide/activate/overview-activate.png b/docs/public/img/user-guide/activate/overview-activate.png
similarity index 100%
rename from static/img/user-guide/activate/overview-activate.png
rename to docs/public/img/user-guide/activate/overview-activate.png
diff --git a/static/img/user-guide/activate/overview-activated.png b/docs/public/img/user-guide/activate/overview-activated.png
similarity index 100%
rename from static/img/user-guide/activate/overview-activated.png
rename to docs/public/img/user-guide/activate/overview-activated.png
diff --git a/static/img/user-guide/activate/overview-deactivate.png b/docs/public/img/user-guide/activate/overview-deactivate.png
similarity index 100%
rename from static/img/user-guide/activate/overview-deactivate.png
rename to docs/public/img/user-guide/activate/overview-deactivate.png
diff --git a/static/img/user-guide/activate/overview-import-license.png b/docs/public/img/user-guide/activate/overview-import-license.png
similarity index 100%
rename from static/img/user-guide/activate/overview-import-license.png
rename to docs/public/img/user-guide/activate/overview-import-license.png
diff --git a/static/img/user-guide/app-store/app-store-license-generate-license-1.png b/docs/public/img/user-guide/app-store/app-store-license-generate-license-1.png
similarity index 100%
rename from static/img/user-guide/app-store/app-store-license-generate-license-1.png
rename to docs/public/img/user-guide/app-store/app-store-license-generate-license-1.png
diff --git a/static/img/user-guide/app-store/app-store-license-generate-license-2.png b/docs/public/img/user-guide/app-store/app-store-license-generate-license-2.png
similarity index 100%
rename from static/img/user-guide/app-store/app-store-license-generate-license-2.png
rename to docs/public/img/user-guide/app-store/app-store-license-generate-license-2.png
diff --git a/static/img/user-guide/app-store/app-store-license-generate-license-3.png b/docs/public/img/user-guide/app-store/app-store-license-generate-license-3.png
similarity index 100%
rename from static/img/user-guide/app-store/app-store-license-generate-license-3.png
rename to docs/public/img/user-guide/app-store/app-store-license-generate-license-3.png
diff --git a/static/img/user-guide/app-store/app-store-license-manage-2.22.png b/docs/public/img/user-guide/app-store/app-store-license-manage-2.22.png
similarity index 100%
rename from static/img/user-guide/app-store/app-store-license-manage-2.22.png
rename to docs/public/img/user-guide/app-store/app-store-license-manage-2.22.png
diff --git a/static/img/user-guide/app-store/app-store-license-manage.png b/docs/public/img/user-guide/app-store/app-store-license-manage.png
similarity index 100%
rename from static/img/user-guide/app-store/app-store-license-manage.png
rename to docs/public/img/user-guide/app-store/app-store-license-manage.png
diff --git a/static/img/user-guide/app-store/app-store-license-offline-option.png b/docs/public/img/user-guide/app-store/app-store-license-offline-option.png
similarity index 100%
rename from static/img/user-guide/app-store/app-store-license-offline-option.png
rename to docs/public/img/user-guide/app-store/app-store-license-offline-option.png
diff --git a/static/img/user-guide/app-store/app-store-license-offline.png b/docs/public/img/user-guide/app-store/app-store-license-offline.png
similarity index 100%
rename from static/img/user-guide/app-store/app-store-license-offline.png
rename to docs/public/img/user-guide/app-store/app-store-license-offline.png
diff --git a/static/img/user-guide/app-store/app-store-license-status-2.22.png b/docs/public/img/user-guide/app-store/app-store-license-status-2.22.png
similarity index 100%
rename from static/img/user-guide/app-store/app-store-license-status-2.22.png
rename to docs/public/img/user-guide/app-store/app-store-license-status-2.22.png
diff --git a/static/img/user-guide/app-store/app-store-license-status.png b/docs/public/img/user-guide/app-store/app-store-license-status.png
similarity index 100%
rename from static/img/user-guide/app-store/app-store-license-status.png
rename to docs/public/img/user-guide/app-store/app-store-license-status.png
diff --git a/static/img/user-guide/app-store/app-store-page.png b/docs/public/img/user-guide/app-store/app-store-page.png
similarity index 100%
rename from static/img/user-guide/app-store/app-store-page.png
rename to docs/public/img/user-guide/app-store/app-store-page.png
diff --git a/static/img/user-guide/app-store/app-store-pat.png b/docs/public/img/user-guide/app-store/app-store-pat.png
similarity index 100%
rename from static/img/user-guide/app-store/app-store-pat.png
rename to docs/public/img/user-guide/app-store/app-store-pat.png
diff --git a/static/img/user-guide/app-store/app-store-plugin-license-2.22.png b/docs/public/img/user-guide/app-store/app-store-plugin-license-2.22.png
similarity index 100%
rename from static/img/user-guide/app-store/app-store-plugin-license-2.22.png
rename to docs/public/img/user-guide/app-store/app-store-plugin-license-2.22.png
diff --git a/static/img/user-guide/app-store/app-store-plugin-license.png b/docs/public/img/user-guide/app-store/app-store-plugin-license.png
similarity index 100%
rename from static/img/user-guide/app-store/app-store-plugin-license.png
rename to docs/public/img/user-guide/app-store/app-store-plugin-license.png
diff --git a/static/img/user-guide/app-store/app-store-plugins.png b/docs/public/img/user-guide/app-store/app-store-plugins.png
similarity index 100%
rename from static/img/user-guide/app-store/app-store-plugins.png
rename to docs/public/img/user-guide/app-store/app-store-plugins.png
diff --git a/static/img/user-guide/app-store/app-store-themes.png b/docs/public/img/user-guide/app-store/app-store-themes.png
similarity index 100%
rename from static/img/user-guide/app-store/app-store-themes.png
rename to docs/public/img/user-guide/app-store/app-store-themes.png
diff --git a/static/img/user-guide/app-store/app-store-upgrade-plugin.png b/docs/public/img/user-guide/app-store/app-store-upgrade-plugin.png
similarity index 100%
rename from static/img/user-guide/app-store/app-store-upgrade-plugin.png
rename to docs/public/img/user-guide/app-store/app-store-upgrade-plugin.png
diff --git a/static/img/user-guide/app-store/app-store-upgrade-theme.png b/docs/public/img/user-guide/app-store/app-store-upgrade-theme.png
similarity index 100%
rename from static/img/user-guide/app-store/app-store-upgrade-theme.png
rename to docs/public/img/user-guide/app-store/app-store-upgrade-theme.png
diff --git a/static/img/user-guide/attachments/attachment-batch-operate.png b/docs/public/img/user-guide/attachments/attachment-batch-operate.png
similarity index 100%
rename from static/img/user-guide/attachments/attachment-batch-operate.png
rename to docs/public/img/user-guide/attachments/attachment-batch-operate.png
diff --git a/static/img/user-guide/attachments/attachment-detail.png b/docs/public/img/user-guide/attachments/attachment-detail.png
similarity index 100%
rename from static/img/user-guide/attachments/attachment-detail.png
rename to docs/public/img/user-guide/attachments/attachment-detail.png
diff --git a/static/img/user-guide/attachments/attachment-group-add.png b/docs/public/img/user-guide/attachments/attachment-group-add.png
similarity index 100%
rename from static/img/user-guide/attachments/attachment-group-add.png
rename to docs/public/img/user-guide/attachments/attachment-group-add.png
diff --git a/static/img/user-guide/attachments/attachment-group-delete.png b/docs/public/img/user-guide/attachments/attachment-group-delete.png
similarity index 100%
rename from static/img/user-guide/attachments/attachment-group-delete.png
rename to docs/public/img/user-guide/attachments/attachment-group-delete.png
diff --git a/static/img/user-guide/attachments/attachment-move.png b/docs/public/img/user-guide/attachments/attachment-move.png
similarity index 100%
rename from static/img/user-guide/attachments/attachment-move.png
rename to docs/public/img/user-guide/attachments/attachment-move.png
diff --git a/static/img/user-guide/attachments/attachment-policy-add-local.png b/docs/public/img/user-guide/attachments/attachment-policy-add-local.png
similarity index 100%
rename from static/img/user-guide/attachments/attachment-policy-add-local.png
rename to docs/public/img/user-guide/attachments/attachment-policy-add-local.png
diff --git a/static/img/user-guide/attachments/attachment-policy-add.png b/docs/public/img/user-guide/attachments/attachment-policy-add.png
similarity index 100%
rename from static/img/user-guide/attachments/attachment-policy-add.png
rename to docs/public/img/user-guide/attachments/attachment-policy-add.png
diff --git a/static/img/user-guide/attachments/attachment-policy-operate.png b/docs/public/img/user-guide/attachments/attachment-policy-operate.png
similarity index 100%
rename from static/img/user-guide/attachments/attachment-policy-operate.png
rename to docs/public/img/user-guide/attachments/attachment-policy-operate.png
diff --git a/static/img/user-guide/attachments/attachment-policy.png b/docs/public/img/user-guide/attachments/attachment-policy.png
similarity index 100%
rename from static/img/user-guide/attachments/attachment-policy.png
rename to docs/public/img/user-guide/attachments/attachment-policy.png
diff --git a/static/img/user-guide/attachments/attachment-upload-multiple.png b/docs/public/img/user-guide/attachments/attachment-upload-multiple.png
similarity index 100%
rename from static/img/user-guide/attachments/attachment-upload-multiple.png
rename to docs/public/img/user-guide/attachments/attachment-upload-multiple.png
diff --git a/static/img/user-guide/attachments/attachment-upload.png b/docs/public/img/user-guide/attachments/attachment-upload.png
similarity index 100%
rename from static/img/user-guide/attachments/attachment-upload.png
rename to docs/public/img/user-guide/attachments/attachment-upload.png
diff --git a/static/img/user-guide/backup/auto-backup.png b/docs/public/img/user-guide/backup/auto-backup.png
similarity index 100%
rename from static/img/user-guide/backup/auto-backup.png
rename to docs/public/img/user-guide/backup/auto-backup.png
diff --git a/static/img/user-guide/backup/backup-complete.png b/docs/public/img/user-guide/backup/backup-complete.png
similarity index 100%
rename from static/img/user-guide/backup/backup-complete.png
rename to docs/public/img/user-guide/backup/backup-complete.png
diff --git a/static/img/user-guide/backup/backup-running.png b/docs/public/img/user-guide/backup/backup-running.png
similarity index 100%
rename from static/img/user-guide/backup/backup-running.png
rename to docs/public/img/user-guide/backup/backup-running.png
diff --git a/static/img/user-guide/backup/before-restore.png b/docs/public/img/user-guide/backup/before-restore.png
similarity index 100%
rename from static/img/user-guide/backup/before-restore.png
rename to docs/public/img/user-guide/backup/before-restore.png
diff --git a/static/img/user-guide/backup/create-backup.png b/docs/public/img/user-guide/backup/create-backup.png
similarity index 100%
rename from static/img/user-guide/backup/create-backup.png
rename to docs/public/img/user-guide/backup/create-backup.png
diff --git a/static/img/user-guide/backup/restore-complete.png b/docs/public/img/user-guide/backup/restore-complete.png
similarity index 100%
rename from static/img/user-guide/backup/restore-complete.png
rename to docs/public/img/user-guide/backup/restore-complete.png
diff --git a/static/img/user-guide/backup/restore-upload.png b/docs/public/img/user-guide/backup/restore-upload.png
similarity index 100%
rename from static/img/user-guide/backup/restore-upload.png
rename to docs/public/img/user-guide/backup/restore-upload.png
diff --git a/static/img/user-guide/backup/restore.png b/docs/public/img/user-guide/backup/restore.png
similarity index 100%
rename from static/img/user-guide/backup/restore.png
rename to docs/public/img/user-guide/backup/restore.png
diff --git a/static/img/user-guide/backup/waiting-restart.png b/docs/public/img/user-guide/backup/waiting-restart.png
similarity index 100%
rename from static/img/user-guide/backup/waiting-restart.png
rename to docs/public/img/user-guide/backup/waiting-restart.png
diff --git a/static/img/user-guide/common/login.png b/docs/public/img/user-guide/common/login.png
similarity index 100%
rename from static/img/user-guide/common/login.png
rename to docs/public/img/user-guide/common/login.png
diff --git a/static/img/user-guide/common/signup.png b/docs/public/img/user-guide/common/signup.png
similarity index 100%
rename from static/img/user-guide/common/signup.png
rename to docs/public/img/user-guide/common/signup.png
diff --git "a/static/img/user-guide/common/\346\216\247\345\210\266\345\217\260\347\225\214\351\235\242\350\257\264\346\230\216.png" "b/docs/public/img/user-guide/common/\346\216\247\345\210\266\345\217\260\347\225\214\351\235\242\350\257\264\346\230\216.png"
similarity index 100%
rename from "static/img/user-guide/common/\346\216\247\345\210\266\345\217\260\347\225\214\351\235\242\350\257\264\346\230\216.png"
rename to "docs/public/img/user-guide/common/\346\216\247\345\210\266\345\217\260\347\225\214\351\235\242\350\257\264\346\230\216.png"
diff --git a/static/img/user-guide/menus/create-menu-item-2.png b/docs/public/img/user-guide/menus/create-menu-item-2.png
similarity index 100%
rename from static/img/user-guide/menus/create-menu-item-2.png
rename to docs/public/img/user-guide/menus/create-menu-item-2.png
diff --git a/static/img/user-guide/menus/create-menu-item.png b/docs/public/img/user-guide/menus/create-menu-item.png
similarity index 100%
rename from static/img/user-guide/menus/create-menu-item.png
rename to docs/public/img/user-guide/menus/create-menu-item.png
diff --git a/static/img/user-guide/menus/create-menu.png b/docs/public/img/user-guide/menus/create-menu.png
similarity index 100%
rename from static/img/user-guide/menus/create-menu.png
rename to docs/public/img/user-guide/menus/create-menu.png
diff --git a/static/img/user-guide/menus/menu-item-operation.png b/docs/public/img/user-guide/menus/menu-item-operation.png
similarity index 100%
rename from static/img/user-guide/menus/menu-item-operation.png
rename to docs/public/img/user-guide/menus/menu-item-operation.png
diff --git a/static/img/user-guide/menus/menu-operation.png b/docs/public/img/user-guide/menus/menu-operation.png
similarity index 100%
rename from static/img/user-guide/menus/menu-operation.png
rename to docs/public/img/user-guide/menus/menu-operation.png
diff --git a/static/img/user-guide/menus/menus.png b/docs/public/img/user-guide/menus/menus.png
similarity index 100%
rename from static/img/user-guide/menus/menus.png
rename to docs/public/img/user-guide/menus/menus.png
diff --git a/static/img/user-guide/menus/sort.gif b/docs/public/img/user-guide/menus/sort.gif
similarity index 100%
rename from static/img/user-guide/menus/sort.gif
rename to docs/public/img/user-guide/menus/sort.gif
diff --git a/static/img/user-guide/pages/page-about.png b/docs/public/img/user-guide/pages/page-about.png
similarity index 100%
rename from static/img/user-guide/pages/page-about.png
rename to docs/public/img/user-guide/pages/page-about.png
diff --git a/static/img/user-guide/plugins/extension-point-settings-entry.png b/docs/public/img/user-guide/plugins/extension-point-settings-entry.png
similarity index 100%
rename from static/img/user-guide/plugins/extension-point-settings-entry.png
rename to docs/public/img/user-guide/plugins/extension-point-settings-entry.png
diff --git a/static/img/user-guide/plugins/extension-point-settings.png b/docs/public/img/user-guide/plugins/extension-point-settings.png
similarity index 100%
rename from static/img/user-guide/plugins/extension-point-settings.png
rename to docs/public/img/user-guide/plugins/extension-point-settings.png
diff --git a/static/img/user-guide/plugins/plugin-install.png b/docs/public/img/user-guide/plugins/plugin-install.png
similarity index 100%
rename from static/img/user-guide/plugins/plugin-install.png
rename to docs/public/img/user-guide/plugins/plugin-install.png
diff --git a/static/img/user-guide/plugins/plugin-setting.png b/docs/public/img/user-guide/plugins/plugin-setting.png
similarity index 100%
rename from static/img/user-guide/plugins/plugin-setting.png
rename to docs/public/img/user-guide/plugins/plugin-setting.png
diff --git a/static/img/user-guide/plugins/plugin-switch.png b/docs/public/img/user-guide/plugins/plugin-switch.png
similarity index 100%
rename from static/img/user-guide/plugins/plugin-switch.png
rename to docs/public/img/user-guide/plugins/plugin-switch.png
diff --git a/static/img/user-guide/plugins/plugin-uninstall.png b/docs/public/img/user-guide/plugins/plugin-uninstall.png
similarity index 100%
rename from static/img/user-guide/plugins/plugin-uninstall.png
rename to docs/public/img/user-guide/plugins/plugin-uninstall.png
diff --git a/static/img/user-guide/posts/category-create-2.png b/docs/public/img/user-guide/posts/category-create-2.png
similarity index 100%
rename from static/img/user-guide/posts/category-create-2.png
rename to docs/public/img/user-guide/posts/category-create-2.png
diff --git a/static/img/user-guide/posts/category-create.png b/docs/public/img/user-guide/posts/category-create.png
similarity index 100%
rename from static/img/user-guide/posts/category-create.png
rename to docs/public/img/user-guide/posts/category-create.png
diff --git a/static/img/user-guide/posts/category-move.gif b/docs/public/img/user-guide/posts/category-move.gif
similarity index 100%
rename from static/img/user-guide/posts/category-move.gif
rename to docs/public/img/user-guide/posts/category-move.gif
diff --git a/static/img/user-guide/posts/post-edit.png b/docs/public/img/user-guide/posts/post-edit.png
similarity index 100%
rename from static/img/user-guide/posts/post-edit.png
rename to docs/public/img/user-guide/posts/post-edit.png
diff --git a/static/img/user-guide/posts/post-setting.png b/docs/public/img/user-guide/posts/post-setting.png
similarity index 100%
rename from static/img/user-guide/posts/post-setting.png
rename to docs/public/img/user-guide/posts/post-setting.png
diff --git a/static/img/user-guide/posts/tag-create.png b/docs/public/img/user-guide/posts/tag-create.png
similarity index 100%
rename from static/img/user-guide/posts/tag-create.png
rename to docs/public/img/user-guide/posts/tag-create.png
diff --git a/static/img/user-guide/posts/tag-list.png b/docs/public/img/user-guide/posts/tag-list.png
similarity index 100%
rename from static/img/user-guide/posts/tag-list.png
rename to docs/public/img/user-guide/posts/tag-list.png
diff --git a/static/img/user-guide/settings/brand.png b/docs/public/img/user-guide/settings/brand.png
similarity index 100%
rename from static/img/user-guide/settings/brand.png
rename to docs/public/img/user-guide/settings/brand.png
diff --git a/static/img/user-guide/settings/setting-basic.png b/docs/public/img/user-guide/settings/setting-basic.png
similarity index 100%
rename from static/img/user-guide/settings/setting-basic.png
rename to docs/public/img/user-guide/settings/setting-basic.png
diff --git a/static/img/user-guide/shop/mp-preview.png b/docs/public/img/user-guide/shop/mp-preview.png
similarity index 100%
rename from static/img/user-guide/shop/mp-preview.png
rename to docs/public/img/user-guide/shop/mp-preview.png
diff --git a/static/img/user-guide/shop/preview-console-home-1.png b/docs/public/img/user-guide/shop/preview-console-home-1.png
similarity index 100%
rename from static/img/user-guide/shop/preview-console-home-1.png
rename to docs/public/img/user-guide/shop/preview-console-home-1.png
diff --git a/static/img/user-guide/shop/preview-console-home-2.png b/docs/public/img/user-guide/shop/preview-console-home-2.png
similarity index 100%
rename from static/img/user-guide/shop/preview-console-home-2.png
rename to docs/public/img/user-guide/shop/preview-console-home-2.png
diff --git a/static/img/user-guide/shop/preview-console-home-3.png b/docs/public/img/user-guide/shop/preview-console-home-3.png
similarity index 100%
rename from static/img/user-guide/shop/preview-console-home-3.png
rename to docs/public/img/user-guide/shop/preview-console-home-3.png
diff --git a/static/img/user-guide/shop/preview-console-order-detail.png b/docs/public/img/user-guide/shop/preview-console-order-detail.png
similarity index 100%
rename from static/img/user-guide/shop/preview-console-order-detail.png
rename to docs/public/img/user-guide/shop/preview-console-order-detail.png
diff --git a/static/img/user-guide/shop/preview-console-order-modal.png b/docs/public/img/user-guide/shop/preview-console-order-modal.png
similarity index 100%
rename from static/img/user-guide/shop/preview-console-order-modal.png
rename to docs/public/img/user-guide/shop/preview-console-order-modal.png
diff --git a/static/img/user-guide/shop/preview-console-order-request-fulfillment.png b/docs/public/img/user-guide/shop/preview-console-order-request-fulfillment.png
similarity index 100%
rename from static/img/user-guide/shop/preview-console-order-request-fulfillment.png
rename to docs/public/img/user-guide/shop/preview-console-order-request-fulfillment.png
diff --git a/static/img/user-guide/shop/preview-console-orders.png b/docs/public/img/user-guide/shop/preview-console-orders.png
similarity index 100%
rename from static/img/user-guide/shop/preview-console-orders.png
rename to docs/public/img/user-guide/shop/preview-console-orders.png
diff --git a/static/img/user-guide/shop/preview-console-products.png b/docs/public/img/user-guide/shop/preview-console-products.png
similarity index 100%
rename from static/img/user-guide/shop/preview-console-products.png
rename to docs/public/img/user-guide/shop/preview-console-products.png
diff --git a/static/img/user-guide/shop/preview-payments-alipay.png b/docs/public/img/user-guide/shop/preview-payments-alipay.png
similarity index 100%
rename from static/img/user-guide/shop/preview-payments-alipay.png
rename to docs/public/img/user-guide/shop/preview-payments-alipay.png
diff --git a/static/img/user-guide/shop/preview-payments-bank-transfer.png b/docs/public/img/user-guide/shop/preview-payments-bank-transfer.png
similarity index 100%
rename from static/img/user-guide/shop/preview-payments-bank-transfer.png
rename to docs/public/img/user-guide/shop/preview-payments-bank-transfer.png
diff --git a/static/img/user-guide/shop/preview-payments-qrcode.png b/docs/public/img/user-guide/shop/preview-payments-qrcode.png
similarity index 100%
rename from static/img/user-guide/shop/preview-payments-qrcode.png
rename to docs/public/img/user-guide/shop/preview-payments-qrcode.png
diff --git a/static/img/user-guide/shop/preview-payments-stripe-2.png b/docs/public/img/user-guide/shop/preview-payments-stripe-2.png
similarity index 100%
rename from static/img/user-guide/shop/preview-payments-stripe-2.png
rename to docs/public/img/user-guide/shop/preview-payments-stripe-2.png
diff --git a/static/img/user-guide/shop/preview-payments-stripe.png b/docs/public/img/user-guide/shop/preview-payments-stripe.png
similarity index 100%
rename from static/img/user-guide/shop/preview-payments-stripe.png
rename to docs/public/img/user-guide/shop/preview-payments-stripe.png
diff --git a/static/img/user-guide/shop/preview-payments-wechat.png b/docs/public/img/user-guide/shop/preview-payments-wechat.png
similarity index 100%
rename from static/img/user-guide/shop/preview-payments-wechat.png
rename to docs/public/img/user-guide/shop/preview-payments-wechat.png
diff --git a/static/img/user-guide/shop/preview-payments-zpayz.png b/docs/public/img/user-guide/shop/preview-payments-zpayz.png
similarity index 100%
rename from static/img/user-guide/shop/preview-payments-zpayz.png
rename to docs/public/img/user-guide/shop/preview-payments-zpayz.png
diff --git a/static/img/user-guide/shop/preview-product.png b/docs/public/img/user-guide/shop/preview-product.png
similarity index 100%
rename from static/img/user-guide/shop/preview-product.png
rename to docs/public/img/user-guide/shop/preview-product.png
diff --git a/static/img/user-guide/shop/products-category-create.png b/docs/public/img/user-guide/shop/products-category-create.png
similarity index 100%
rename from static/img/user-guide/shop/products-category-create.png
rename to docs/public/img/user-guide/shop/products-category-create.png
diff --git a/static/img/user-guide/shop/products-category-selector.png b/docs/public/img/user-guide/shop/products-category-selector.png
similarity index 100%
rename from static/img/user-guide/shop/products-category-selector.png
rename to docs/public/img/user-guide/shop/products-category-selector.png
diff --git a/static/img/user-guide/shop/products-create-virtual.png b/docs/public/img/user-guide/shop/products-create-virtual.png
similarity index 100%
rename from static/img/user-guide/shop/products-create-virtual.png
rename to docs/public/img/user-guide/shop/products-create-virtual.png
diff --git a/static/img/user-guide/shop/products-create.png b/docs/public/img/user-guide/shop/products-create.png
similarity index 100%
rename from static/img/user-guide/shop/products-create.png
rename to docs/public/img/user-guide/shop/products-create.png
diff --git a/static/img/user-guide/shop/products-spec-form.png b/docs/public/img/user-guide/shop/products-spec-form.png
similarity index 100%
rename from static/img/user-guide/shop/products-spec-form.png
rename to docs/public/img/user-guide/shop/products-spec-form.png
diff --git a/static/img/user-guide/shop/products-variants-0.png b/docs/public/img/user-guide/shop/products-variants-0.png
similarity index 100%
rename from static/img/user-guide/shop/products-variants-0.png
rename to docs/public/img/user-guide/shop/products-variants-0.png
diff --git a/static/img/user-guide/shop/products-variants-batch.png b/docs/public/img/user-guide/shop/products-variants-batch.png
similarity index 100%
rename from static/img/user-guide/shop/products-variants-batch.png
rename to docs/public/img/user-guide/shop/products-variants-batch.png
diff --git a/static/img/user-guide/shop/products-variants-form.png b/docs/public/img/user-guide/shop/products-variants-form.png
similarity index 100%
rename from static/img/user-guide/shop/products-variants-form.png
rename to docs/public/img/user-guide/shop/products-variants-form.png
diff --git a/static/img/user-guide/shop/products-variants.png b/docs/public/img/user-guide/shop/products-variants.png
similarity index 100%
rename from static/img/user-guide/shop/products-variants.png
rename to docs/public/img/user-guide/shop/products-variants.png
diff --git a/static/img/user-guide/shop/settings-payments-alipay-app-detail.png b/docs/public/img/user-guide/shop/settings-payments-alipay-app-detail.png
similarity index 100%
rename from static/img/user-guide/shop/settings-payments-alipay-app-detail.png
rename to docs/public/img/user-guide/shop/settings-payments-alipay-app-detail.png
diff --git a/static/img/user-guide/shop/settings-payments-alipay-create-app.png b/docs/public/img/user-guide/shop/settings-payments-alipay-create-app.png
similarity index 100%
rename from static/img/user-guide/shop/settings-payments-alipay-create-app.png
rename to docs/public/img/user-guide/shop/settings-payments-alipay-create-app.png
diff --git a/static/img/user-guide/shop/settings-payments-create-2.23.png b/docs/public/img/user-guide/shop/settings-payments-create-2.23.png
similarity index 100%
rename from static/img/user-guide/shop/settings-payments-create-2.23.png
rename to docs/public/img/user-guide/shop/settings-payments-create-2.23.png
diff --git a/static/img/user-guide/shop/settings-payments-create.png b/docs/public/img/user-guide/shop/settings-payments-create.png
similarity index 100%
rename from static/img/user-guide/shop/settings-payments-create.png
rename to docs/public/img/user-guide/shop/settings-payments-create.png
diff --git a/static/img/user-guide/shop/settings-payments-stripe-1.png b/docs/public/img/user-guide/shop/settings-payments-stripe-1.png
similarity index 100%
rename from static/img/user-guide/shop/settings-payments-stripe-1.png
rename to docs/public/img/user-guide/shop/settings-payments-stripe-1.png
diff --git a/static/img/user-guide/shop/settings-payments-stripe-2.png b/docs/public/img/user-guide/shop/settings-payments-stripe-2.png
similarity index 100%
rename from static/img/user-guide/shop/settings-payments-stripe-2.png
rename to docs/public/img/user-guide/shop/settings-payments-stripe-2.png
diff --git a/static/img/user-guide/shop/settings-payments-stripe-3.png b/docs/public/img/user-guide/shop/settings-payments-stripe-3.png
similarity index 100%
rename from static/img/user-guide/shop/settings-payments-stripe-3.png
rename to docs/public/img/user-guide/shop/settings-payments-stripe-3.png
diff --git a/static/img/user-guide/shop/settings-payments-stripe-4.png b/docs/public/img/user-guide/shop/settings-payments-stripe-4.png
similarity index 100%
rename from static/img/user-guide/shop/settings-payments-stripe-4.png
rename to docs/public/img/user-guide/shop/settings-payments-stripe-4.png
diff --git a/static/img/user-guide/shop/settings-payments-stripe-5.png b/docs/public/img/user-guide/shop/settings-payments-stripe-5.png
similarity index 100%
rename from static/img/user-guide/shop/settings-payments-stripe-5.png
rename to docs/public/img/user-guide/shop/settings-payments-stripe-5.png
diff --git a/static/img/user-guide/shop/settings-payments-stripe-6.png b/docs/public/img/user-guide/shop/settings-payments-stripe-6.png
similarity index 100%
rename from static/img/user-guide/shop/settings-payments-stripe-6.png
rename to docs/public/img/user-guide/shop/settings-payments-stripe-6.png
diff --git a/static/img/user-guide/shop/settings-payments-zpayz-api.png b/docs/public/img/user-guide/shop/settings-payments-zpayz-api.png
similarity index 100%
rename from static/img/user-guide/shop/settings-payments-zpayz-api.png
rename to docs/public/img/user-guide/shop/settings-payments-zpayz-api.png
diff --git a/static/img/user-guide/shop/settings-payments-zpayz-channels.png b/docs/public/img/user-guide/shop/settings-payments-zpayz-channels.png
similarity index 100%
rename from static/img/user-guide/shop/settings-payments-zpayz-channels.png
rename to docs/public/img/user-guide/shop/settings-payments-zpayz-channels.png
diff --git a/static/img/user-guide/shop/settings-payments.png b/docs/public/img/user-guide/shop/settings-payments.png
similarity index 100%
rename from static/img/user-guide/shop/settings-payments.png
rename to docs/public/img/user-guide/shop/settings-payments.png
diff --git a/static/img/user-guide/shop/settings-sales-channels-create.png b/docs/public/img/user-guide/shop/settings-sales-channels-create.png
similarity index 100%
rename from static/img/user-guide/shop/settings-sales-channels-create.png
rename to docs/public/img/user-guide/shop/settings-sales-channels-create.png
diff --git a/static/img/user-guide/shop/settings-sales-channels.png b/docs/public/img/user-guide/shop/settings-sales-channels.png
similarity index 100%
rename from static/img/user-guide/shop/settings-sales-channels.png
rename to docs/public/img/user-guide/shop/settings-sales-channels.png
diff --git a/static/img/user-guide/shop/virtual-delivery-cdk-add.png b/docs/public/img/user-guide/shop/virtual-delivery-cdk-add.png
similarity index 100%
rename from static/img/user-guide/shop/virtual-delivery-cdk-add.png
rename to docs/public/img/user-guide/shop/virtual-delivery-cdk-add.png
diff --git a/static/img/user-guide/shop/virtual-delivery-cdk-config.png b/docs/public/img/user-guide/shop/virtual-delivery-cdk-config.png
similarity index 100%
rename from static/img/user-guide/shop/virtual-delivery-cdk-config.png
rename to docs/public/img/user-guide/shop/virtual-delivery-cdk-config.png
diff --git a/static/img/user-guide/shop/virtual-delivery-cdks.png b/docs/public/img/user-guide/shop/virtual-delivery-cdks.png
similarity index 100%
rename from static/img/user-guide/shop/virtual-delivery-cdks.png
rename to docs/public/img/user-guide/shop/virtual-delivery-cdks.png
diff --git a/static/img/user-guide/shop/virtual-delivery-console-order.png b/docs/public/img/user-guide/shop/virtual-delivery-console-order.png
similarity index 100%
rename from static/img/user-guide/shop/virtual-delivery-console-order.png
rename to docs/public/img/user-guide/shop/virtual-delivery-console-order.png
diff --git a/static/img/user-guide/shop/virtual-delivery-products.png b/docs/public/img/user-guide/shop/virtual-delivery-products.png
similarity index 100%
rename from static/img/user-guide/shop/virtual-delivery-products.png
rename to docs/public/img/user-guide/shop/virtual-delivery-products.png
diff --git a/static/img/user-guide/shop/virtual-delivery-resource-add.png b/docs/public/img/user-guide/shop/virtual-delivery-resource-add.png
similarity index 100%
rename from static/img/user-guide/shop/virtual-delivery-resource-add.png
rename to docs/public/img/user-guide/shop/virtual-delivery-resource-add.png
diff --git a/static/img/user-guide/shop/virtual-delivery-resource-config.png b/docs/public/img/user-guide/shop/virtual-delivery-resource-config.png
similarity index 100%
rename from static/img/user-guide/shop/virtual-delivery-resource-config.png
rename to docs/public/img/user-guide/shop/virtual-delivery-resource-config.png
diff --git a/static/img/user-guide/shop/virtual-delivery-resources.png b/docs/public/img/user-guide/shop/virtual-delivery-resources.png
similarity index 100%
rename from static/img/user-guide/shop/virtual-delivery-resources.png
rename to docs/public/img/user-guide/shop/virtual-delivery-resources.png
diff --git a/static/img/user-guide/shop/virtual-delivery-uc-order-1.png b/docs/public/img/user-guide/shop/virtual-delivery-uc-order-1.png
similarity index 100%
rename from static/img/user-guide/shop/virtual-delivery-uc-order-1.png
rename to docs/public/img/user-guide/shop/virtual-delivery-uc-order-1.png
diff --git a/static/img/user-guide/shop/virtual-delivery-uc-order-2.png b/docs/public/img/user-guide/shop/virtual-delivery-uc-order-2.png
similarity index 100%
rename from static/img/user-guide/shop/virtual-delivery-uc-order-2.png
rename to docs/public/img/user-guide/shop/virtual-delivery-uc-order-2.png
diff --git a/static/img/user-guide/themes/theme-install-alt.png b/docs/public/img/user-guide/themes/theme-install-alt.png
similarity index 100%
rename from static/img/user-guide/themes/theme-install-alt.png
rename to docs/public/img/user-guide/themes/theme-install-alt.png
diff --git a/static/img/user-guide/themes/theme-install.png b/docs/public/img/user-guide/themes/theme-install.png
similarity index 100%
rename from static/img/user-guide/themes/theme-install.png
rename to docs/public/img/user-guide/themes/theme-install.png
diff --git a/static/img/user-guide/themes/theme-preview.png b/docs/public/img/user-guide/themes/theme-preview.png
similarity index 100%
rename from static/img/user-guide/themes/theme-preview.png
rename to docs/public/img/user-guide/themes/theme-preview.png
diff --git a/static/img/user-guide/themes/theme-setting.png b/docs/public/img/user-guide/themes/theme-setting.png
similarity index 100%
rename from static/img/user-guide/themes/theme-setting.png
rename to docs/public/img/user-guide/themes/theme-setting.png
diff --git a/static/img/user-guide/themes/theme-uninstall.png b/docs/public/img/user-guide/themes/theme-uninstall.png
similarity index 100%
rename from static/img/user-guide/themes/theme-uninstall.png
rename to docs/public/img/user-guide/themes/theme-uninstall.png
diff --git a/static/img/user-guide/user-permission.png b/docs/public/img/user-guide/user-permission.png
similarity index 100%
rename from static/img/user-guide/user-permission.png
rename to docs/public/img/user-guide/user-permission.png
diff --git a/static/img/user-guide/users/auth-providers-2.20+.png b/docs/public/img/user-guide/users/auth-providers-2.20+.png
similarity index 100%
rename from static/img/user-guide/users/auth-providers-2.20+.png
rename to docs/public/img/user-guide/users/auth-providers-2.20+.png
diff --git a/static/img/user-guide/users/auth-providers-2.22+.png b/docs/public/img/user-guide/users/auth-providers-2.22+.png
similarity index 100%
rename from static/img/user-guide/users/auth-providers-2.22+.png
rename to docs/public/img/user-guide/users/auth-providers-2.22+.png
diff --git a/static/img/user-guide/users/auth-providers-entry.png b/docs/public/img/user-guide/users/auth-providers-entry.png
similarity index 100%
rename from static/img/user-guide/users/auth-providers-entry.png
rename to docs/public/img/user-guide/users/auth-providers-entry.png
diff --git a/static/img/user-guide/users/auth-providers.png b/docs/public/img/user-guide/users/auth-providers.png
similarity index 100%
rename from static/img/user-guide/users/auth-providers.png
rename to docs/public/img/user-guide/users/auth-providers.png
diff --git a/static/img/user-guide/users/role-creation.png b/docs/public/img/user-guide/users/role-creation.png
similarity index 100%
rename from static/img/user-guide/users/role-creation.png
rename to docs/public/img/user-guide/users/role-creation.png
diff --git a/static/img/user-guide/users/role-fork.png b/docs/public/img/user-guide/users/role-fork.png
similarity index 100%
rename from static/img/user-guide/users/role-fork.png
rename to docs/public/img/user-guide/users/role-fork.png
diff --git a/static/img/user-guide/users/role-management.png b/docs/public/img/user-guide/users/role-management.png
similarity index 100%
rename from static/img/user-guide/users/role-management.png
rename to docs/public/img/user-guide/users/role-management.png
diff --git a/static/img/user-guide/users/user-operate.png b/docs/public/img/user-guide/users/user-operate.png
similarity index 100%
rename from static/img/user-guide/users/user-operate.png
rename to docs/public/img/user-guide/users/user-operate.png
diff --git a/static/img/user-guide/users/user-setting-2.20+.png b/docs/public/img/user-guide/users/user-setting-2.20+.png
similarity index 100%
rename from static/img/user-guide/users/user-setting-2.20+.png
rename to docs/public/img/user-guide/users/user-setting-2.20+.png
diff --git a/static/img/user-guide/users/user-setting.png b/docs/public/img/user-guide/users/user-setting.png
similarity index 100%
rename from static/img/user-guide/users/user-setting.png
rename to docs/public/img/user-guide/users/user-setting.png
diff --git a/docs/public/robots.txt b/docs/public/robots.txt
new file mode 100644
index 00000000..ef570dfd
--- /dev/null
+++ b/docs/public/robots.txt
@@ -0,0 +1,4 @@
+User-agent: *
+Allow: /
+
+Sitemap: https://docs.halo.run/sitemap.xml
\ No newline at end of file
diff --git a/docs/user-guide/activate.md b/docs/user-guide/activate.md
deleted file mode 100644
index bbefa883..00000000
--- a/docs/user-guide/activate.md
+++ /dev/null
@@ -1,95 +0,0 @@
----
-title: 许可证激活
-description: Halo 付费版许可证购买、部署与激活流程,含专业版与商城版说明。
----
-
-:::note
-此文档仅适用于 **[Halo 付费版](../getting-started/prepare.md#发行版本)**(专业版 / 商城版),在开始之前需要确保已经成功部署了 Halo 付费版。
-
-社区版无需进行许可证激活。
-:::
-
-## 购买许可证
-
-你可以在[凌霞软件](https://www.lxware.cn/halo?code=mcYhwMkn)官网购买 Halo 付费版的许可证,目前分为 Halo 专业版和 Halo 商城版,支持按月/按年订阅或者版本买断。
-
-在凌霞官网购买产品后,可以在 `个人中心` > `我的许可证` ,统一管理当前账户下的全部已购产品的许可证。
-
-
-
-## 部署 Halo 付费版
-
-可以查阅:
-
-- [使用 Docker Compose 部署](../getting-started/install/docker-compose.md)
-- [使用 1Panel 部署](../getting-started/install/1panel.md)
-- [使用 JAR 文件部署](../getting-started/install/jar-file.md)
-
-## 查看产品版本信息
-
-部署成功后,访问 `控制台` > `概览`,可以查看 Halo 版本信息,目前还处于未激活状态,需要按照后续步骤进行激活。
-
-
-
-## 查看已购产品许可证
-
-登录到凌霞官网的 [订单列表](https://lxware.cn/uc/cloud/order),点击已完成订单条目右侧的更多按钮,点击「许可证列表」,即可跳转至 `我的许可证` 列表,可以查看该订单所购产品的许可证。
-
-
-
-## 下载许可证
-
-在 `我的许可证`列表,点击许可证条目右侧的更多按钮,点击「详情」;
-
-
-
-在详情页下载许可证文件,同时支持兑换包含在产品许可证内的免赠权益。
-
-
-
-## 激活许可证
-
-进入 `控制台` > `概览`,导入下载的许可证文件。
-
-
-
-导入完成后,可以查看到更新的版本信息。许可证显示为「有效」即为激活成功,到此即可正常使用 Halo 付费版。
-
-
-
-## 取消激活许可证
-
-你可以随时在当前应用中取消激活许可证,取消后付费版功能将会受限。在许可证有效期内,许可证可被重新激活至其他设备中。
-
-
-
-## 使用增值权益
-
-> 随着 Halo 付费版订阅制的上线(2024-11-12),我们更新了获取增值权益即官方付费应用的方式。目前,用户可以直接通过 Halo 付费版许可证激活付费的插件和主题。
-> 此外,从 2024-11-28 开始,通过付费版激活应用将开放给全部 Halo 付费版用户,你可以重新在凌霞官网下载许可证并激活,然后就可以通过付费版许可证激活所有官方付费应用。需要保证 Halo 付费版版本为 2.20.4 以上,应用市场插件的版本为 1.9.0 以上。相关阅读:[Halo 付费版永久授权增值权益的升级说明](https://www.lxware.cn/archives/benefits-upgrade)
-
-在进行下面的步骤之前,请确保已经正常激活 Halo 付费版。
-
-### 查看和下载付费应用
-
-使用 Halo 付费版许可证激活后,就可以在内置的应用市场中查看所有可下载的付费应用。
-
-
-
-### 激活付费应用
-
-下载付费应用之后,即可在许可证管理中使用 Halo 付费版许可证进行激活。
-
-
-
-:::info[提示]
-如果你在激活前就启动了插件,那么在激活后可能需要重启插件才会生效。
-:::
-
-### Halo 付费版增值权益内容
-
-所有付费版可以在许可证有效期内使用所有 Halo 官方发行的付费应用,包括在许可证有效期内新增的付费应用,[点击查看最新官方付费应用列表](https://www.halo.run/store/apps?price-mode=ONE_TIME&sort=creationTimestamp%2Cdesc&tag=official)。
-
-查看当前许可证包含的付费应用可以在 `个人中心` > `我的许可证` 中进入具体 Halo 许可证的详情页面中查看,如下图:
-
-
diff --git a/docs/user-guide/app-store.md b/docs/user-guide/app-store.md
deleted file mode 100644
index 1f8c489b..00000000
--- a/docs/user-guide/app-store.md
+++ /dev/null
@@ -1,102 +0,0 @@
----
-title: 应用市场
-description: 在 Console 内置应用市场安装 Halo 主题与插件,含账号绑定与更新说明。
----
-
-为了方便使用者安装应用市场的主题和插件,我们提供了一个内置到 Console 的应用市场插件,可以更加方便在 Console 直接安装主题和插件。并且此插件从 Halo 2.10 开始已经预设到 Halo 中,无需手动安装。
-
-如果你使用了旧版本的 Halo,并且当前未安装应用市场插件,可以访问 [https://www.halo.run/store/apps/app-VYJbF](https://www.halo.run/store/apps/app-VYJbF) 手动下载并在 Console 的插件管理中安装。
-
-:::info[提示]
-这是目前唯一由 Halo 官方提供的服务,如果你当前的 Halo 网站处于无法访问公网的环境或者不需要此功能,你可以卸载或者停用此插件,不会影响网站的正常使用。
-:::
-
-## 应用市场页面
-
-这是一个为 Console 提供的独立的应用市场页面,此页面基本和 [https://www.halo.run/store/apps](https://www.halo.run/store/apps) 保持一致,但有所不同的是,你可以直接在这里查看所有的主题和插件并安装到你的 Halo 站点中。
-
-
-
-## 绑定 Halo 官网账号
-
-
-
-绑定方式:
-
-1. 进入应用市场插件的设置页面,切换到 **账号绑定** 选项卡。
-2. 根据提示访问 Halo 官网并注册账号,然后在 Halo 官网的[个人中心](https://www.halo.run/uc/profile?tab=pat)生成一个个人令牌并填写到下方的 **个人令牌** 输入框即可。
-
-## 安装/更新插件
-
-此插件还扩展了插件安装的界面,可以在安装插件时直接从应用市场获取。
-
-
-
-此外,如果插件是从应用市场安装的,后续插件更新之后也可以及时收到更新信息,并一键更新。
-
-
-
-## 安装/更新主题
-
-与插件一样,在主题管理中也可以直接从应用市场中获取,以及接收主题更新提示。
-
-
-
-
-
-## 付费应用激活
-
-部分付费主题和插件需要许可证激活才能够正常使用,在购买付费应用之后就会自动为你的 Halo 官网账号中生成对应的应用许可证,目前支持在线激活和离线激活两种方式。
-
-### 在线激活
-
-:::info
-目前在线激活支持两种方式:
-
-1. 通过 [Halo 官网账户](https://www.halo.run/):如果你是在 Halo 官网购买的付费应用,需要通过这种方式,并提前[绑定 Halo 官网账号](#绑定-halo-官网账号)
-2. 通过 [Halo 专业版/商城版许可证](../getting-started/prepare.md#发行版本):如果你购买了 [Halo 付费版](../getting-started/prepare.md#发行版本),可以选择这个选项来激活应用
-
-关于 Halo 专业版/商城版许可证的更多信息可查阅:[许可证激活 / 查看和下载付费应用](../user-guide/activate.md#查看和下载付费应用)
-:::
-
-在安装好需要许可证的付费插件或主题后,列表会显示一个许可证状态的图标,点击即可打开许可证激活的对话框,选择 **Halo 官网账户** 或 **Halo 专业版/商城版许可证** 并点击激活即可。
-
-
-
-
-
-除此之外,你也可以在 **许可证管理** 页面查看所有应用的许可证,并管理它们的状态。
-
-
-
-### 离线激活
-
-如果你的 Halo 网站无法访问公网,你可以选择离线激活的方式。
-
-1. 同样点击许可证状态的图标,打开许可证激活的对话框。
-
- 
-
-2. 激活方式选择许可证。
-
- 
-
-3. 点击 **复制离线许可证凭证** 按钮,然后点击 **去生成** 按钮,然后会跳转到 Halo 官网去生成离线激活码。
-4. 找到对应的许可证,选择 **生成离线许可证**。
-
- 
-
-5. 在 **生成离线许可证** 的对话框中,粘贴刚刚复制的离线许可证凭证,然后点击 **生成并复制** 按钮,然后会打开 **查看离线许可证** 对话框,你可以选择下载文件或者复制许可证。
-
- 
-
- 
-
-6. 回到 Halo 网站,粘贴刚刚复制的离线许可证,然后点击 **激活** 按钮即可。
-
- 
-
-其他注意事项:
-
-1. 目前同一个账号的许可证在同一时间只能在一个站点中使用,使用 Halo 配置中的 **外部访问地址(halo.external-url)** 和设备 id 做判定。
-2. 取消激活会删除许可证使用记录。
diff --git a/docs/user-guide/attachments.md b/docs/user-guide/attachments.md
deleted file mode 100644
index 51aaf8ef..00000000
--- a/docs/user-guide/attachments.md
+++ /dev/null
@@ -1,107 +0,0 @@
----
-title: 附件
-description: Halo 附件与存储策略:本地上传、策略管理及对象存储等扩展方式。
----
-
-## 存储策略
-
-为了能够更加灵活地管理附件的存储位置,Halo 提供了存储策略的概念。
-
-Halo 默认提供了本地的存储策略类型,你还可以通过安装插件的方式扩展其他的存储策略类型。一个存储策略包含了存储提供者,具体存储位置等使用该类型存储所必要的各种信息。
-
-:::info
-目前除了 Halo 内置的本地存储,在应用市场中也有三方的存储插件:[https://www.halo.run/store/apps?tag=storage](https://www.halo.run/store/apps?tag=storage)
-
-此外,如果你期望对接类似于阿里云、腾讯云的对象存储,可以考虑使用 [对象存储(Amazon S3 协议)](https://www.halo.run/store/apps/app-Qxhpp) 插件,此插件兼容市面上所有支持 S3 协议的对象存储厂商。
-:::
-
-你可以点击附件页面右上角的 `存储策略` 按钮对存储策略进行管理。
-
-### 新建存储策略
-
-点击存储策略列表右上方的 `+` 添加按钮即可新建一个存储策略。
-
-
-
-添加时首先需要选择一种存储策略类型,系统内置的存储策略为本地存储,图中的 `S3 对象存储` 由[对象存储(Amazon S3 协议)](https://www.halo.run/store/apps/app-Qxhpp)提供,此文档以本地存储为例。
-
-
-
-添加一个本地存储时,你需要输入名称及存储位置信息。其中的存储位置决定了使用该存储策略的附件,在服务器上的实际存储路径,路径规则为 `{Halo 工作目录}/attachments/{存储位置}`,其中的 Halo 工作目录由安装时指定的参数决定,默认为 `~/.halo2`。
-:::info
-默认的 Docker 部署方式,实际存储位置由挂载到 Halo 容器工作目录的服务器目录所决定。
-:::
-
-### 管理存储策略
-
-点击存储策略列表指定存储所在行后方的 `···` 更多操作按钮即可对该存储策略进行编辑或删除。
-
-
-
-:::info
-为了保护附件安全避免用户误操作,当存储策略下存在附件时,该存储策略不允许删除。如果确定要删除某个存储策略及该存储策略中的所有附件,可以先按照存储策略对附件进行筛选,先批量删除存储策略下的所有附件,再删除存储策略。
-:::
-
-## 附件分组
-
-通过附件分组功能可以方便地将同一类型、同一用途的附件划分到一个分组中,方便后续附件的管理和插件。
-
-附件所使用的存储策略决定了附件的实际存储位置和 URL 规则,而附件分组功能仅是逻辑上的归类划分,不会影响附件的存储位置及 URL。
-
-### 新建分组
-
-点击附件列表上方的 `添加分组` 按钮即可新建一个分组。
-
-
-
-### 删除分组
-
-点击附件列表上方指定分组上的 `···` 更多按钮,可以对分组进行重命名或删除操作。
-
-Halo 目前提供了两种分组删除策略:
-
-1. **删除并将附件移动至未分组**:分组被删将被删除,分组下的附件移动到未分组中。
-2. **删除并同时删除附件**:先删除下的所有附件后,再删除该分组。
-
- :::warning
- 当使用 `删除并同时删除附件` 方式时,分组下的所有附件会被同时删除且不可恢复、无法找回,请谨慎进行该操作。
- :::
-
-## 上传附件
-
-点击附件列表右上方的 `上传` 按钮即可上传新的附件到 Halo。
-
-
-
-1. **存储策略选择**:你可以选择需要使用的存储策略,为了方便,选择之后会在浏览器记住这个选项。
-2. **分组选择**:你可以选择需要上传到的分组,为了方便,选择之后会在浏览器记住这个选项。
-3. **上传区域**:同时支持拖拽文件、点击上传区域选择文件、粘贴文件。
-
-## 查看附件
-
-点击附件列表中的某一个附件即可查看该附件的详细信息。
-
-
-
-1. **预览区域**:目前支持图片、视频、音频的预览。
-2. **链接**:目前可以显示并复制链接、HTML 格式代码、Markdown 格式代码。
-
-## 删除附件
-
-目前有两种删除附件的方式,你可以选中一些附件进行批量删除或者点击指定附件所在行后方的 `···` 更多按钮,对单个附件进行删除操作。
-
-
-
-:::warning
-附件删除后不可恢复、无法找回,请谨慎进行该操作。
-:::
-
-## 移动附件
-
-
-
-与批量删除操作类似,你可以选中多个附件后在上方的批量操作按钮中选择 `移动` 操作,将所选附件移动到指定的分组中。
-
-:::info
-需要注意的是,目前移动附件只支持移动分组,不支持存储策略的移动。
-:::
diff --git a/docs/user-guide/backup.md b/docs/user-guide/backup.md
deleted file mode 100644
index ff50ee4f..00000000
--- a/docs/user-guide/backup.md
+++ /dev/null
@@ -1,78 +0,0 @@
----
-title: 备份与恢复
-description: Halo 控制台一键备份与恢复全站数据,含异步任务与商城版注意事项。
----
-
-从 Halo 2.8 开始,Halo 内置了备份和恢复的功能,可以在 Console 中一键备份和恢复完整的数据。
-
-## 备份
-
-:::warning[商城版注意事项]
-因为商城相关的功能数据存储结构不同,所以备份和恢复功能暂不支持商城相关的数据,建议直接备份数据库。
-
-所以如果你使用了 Halo 商城版的商城功能,备份文件不会包含商城相关的数据。
-:::
-
-在 Console 中,点击左侧菜单的 `备份`,进入备份页面。
-
-点击右上角的 `创建备份` 按钮,即可创建一个新的备份请求,需要注意的是,创建备份请求并不会立即开始备份,而是会在后台异步执行,因此需要等待一段时间才能看到备份的结果。
-
-
-
-备份中:
-
-
-
-备份完成:
-
-
-
-## 自动备份与同步
-
-为了保障数据的安全,Halo 提供了自动备份和同步的[备份增强插件](https://www.halo.run/store/apps/app-dHakX),可以定期将数据备份到本地并同步到云端。
-
-:::note
-此插件目前为 [Halo 付费版](../getting-started/prepare.md#发行版本) 专享插件。
-:::
-
-
-
-## 恢复
-
-:::info[在恢复前,需要了解以下几点:]
-
-1. 恢复不限制部署方式,也不限制数据库,也就是说新站点的部署方式和数据库类型可以和备份的站点不同。
-2. 恢复过程可能会持续较长时间,期间请勿刷新页面。
-3. 在恢复的过程中,虽然已有的数据不会被清理掉,但如果有冲突的数据将被覆盖。
-4. 恢复完成之后会提示停止运行 Halo,停止之后可能需要手动运行。
-:::
-
-在 Console 中,点击左侧菜单的 `备份`,进入备份页面,然后点击 `恢复` 选项卡即可进入恢复界面,阅读完注意事项之后点击 `开始恢复` 按钮即可显示备份文件上传界面。
-
-
-
-
-
-Halo 支持三种恢复方式:
-
-1. 上传备份文件:上传已有的备份文件进行恢复。
-2. 远程恢复:从远程 URL 下载备份文件进行恢复。
-3. 从备份文件恢复:支持从 [工作目录](../getting-started/prepare.md#工作目录) 的 backups 目录扫描备份文件,并选择文件进行恢复。
-
-:::info[提示]
-如果你的备份文件较大,推荐提前将备份文件上传到服务器,然后选择 `从备份文件恢复` 方式进行恢复,避免因为网络原因导致上传失败。
-:::
-
-使用 `上传备份文件` 方式进行恢复的操作示例:
-
-选择备份文件后,点击 `上传` 按钮即可开始上传备份文件,上传完成后会自动开始恢复。
-
-
-
-恢复完成,会提示重启 Halo,点击 `确定` 按钮即可重启 Halo。
-
-
-
-
-
-最后,建议去服务器检查 Halo 的运行状态,如果没有设置自动重启,需要手动重启。
diff --git a/docs/user-guide/common.md b/docs/user-guide/common.md
deleted file mode 100644
index 089d66b7..00000000
--- a/docs/user-guide/common.md
+++ /dev/null
@@ -1,73 +0,0 @@
----
-title: 基础说明
-description: Halo 建站入门:登录注册、控制台、角色分类与站点基础概念说明。
----
-Halo 作为一款好用又强大的开源建站工具,配合上不同的模板与插件,可以很好地帮助你构建你心中的理想站点。它可以是你公司的官方网站,可以是你的个人博客,也可以是团队共享的知识库,甚至可以是一个论坛、一个商城。
-
-为了更好地发挥出 Halo 的价值,这里有一些基本概念需要你进行了解。
-
-## 登录
-
-Halo 的统一登录入口为 `/login`。
-
-
-
-## 注册
-
-Halo 的注册地址为 `/signup`,需要注意的是,Halo 默认不会开启注册功能,需要在设置页面的 [用户设置](./settings.md#用户设置) 中手动开启。
-
-
-
-## 控制台
-
-Console 控制台是一个 Halo 站点的后台管理系统,只有具有权限的登录用户才可以正常使用控制台功能。你可以在控制台中管理站点中的文章、页面、附件等各种内容,调整站点使用的主题或各种设置,访问地址为 `/console`。
-
-
-
-1. **全局搜索框**:点击或通过快捷键 `Ctrl+K` 可以呼出全局搜索框,输入关键字可以在所有文章、页面、附件、用户及设置项等所有内容中进行全局搜索。
-2. **侧边导航栏**:对控制台提供的功能进行导航,点击导航栏条目会在页面右侧显示对应功能页面。安装某些插件可能会扩展导航栏条目。
-3. **用户信息展示及操作**:展示当前登录用户的头像、名称及角色等信息,`···` 中提供更多用户相关操作。
-4. **功能页面标题**:当前所在的功能页面标题。
-5. **功能页面操作区域**:当前所在功能页面提供的功能操作按钮。
-6. **功能页面主体**:当前所在功能页面的主体显示区域,显示内容及形式视具体页面功能而定。
-
-## 个人中心
-
-从 Halo 2.11 开始,除了 Console 管理控制台,我们新增加了个人中心,用于管理和用户相关的所有功能。有了个人中心之后,也可以让网站有更多的使用和开发场景,个人中心独立访问入口为 `/uc`。
-
-## 文章
-
-文章是 Halo 中的核心概念之一。一篇文章主要由纯文本的文章标题和富文本的文章内容构成,除此之外你还可以为文章设置所属分类、添加标签、设置封面图等。
-
-在不同的站点类型不同的应用场景中,文章的实际含义也会有所区别,它可以代表一则公司新闻、一篇博客或者产品文档中的某一章节。
-
-## 页面
-
-页面与文章类似,同样包含页面标题和富文本形式的页面内容。与文章不同的是页面无法设置所属分类和标签信息,一般用于站点中单一展示功能的页面,例如常见的站点关于页面、联系我们页面等。
-
-## 分类
-
-通过分类可以更好地组织管理文章。分类之间存在层级关系,一个父分类下可包含多个子分类。一篇文章可以同时属于多个分类。
-
-## 标签
-
-标签可以用于为文章添加特定标记,与分类不同的是标签之间没有层级关系。一篇文章也可以同时添加多个标签。
-
-## 附件
-
-由用户上传的,供文章、主题设置等各个地方引用的文件。多用于文章配图、主题配图、用户头像等场景。
-
-## 主题
-
-包含了各种站点页面模板的资源包。用户访问 Halo 站点浏览到的内容及样式,由 Halo 管理端所配置使用的主题所决定。
-
-## 插件
-
-用于扩展 Halo 功能的软件包。插件独立于 Halo 核心应用,可以单独安装、升级、卸载。
-
-:::info
-目前有两个官方渠道可以获取主题和插件:
-
-- 应用市场:[https://www.halo.run/store/apps](https://www.halo.run/store/apps)
-- Awesome Halo:[https://github.com/halo-sigs/awesome-halo](https://github.com/halo-sigs/awesome-halo)
-:::
diff --git a/docs/user-guide/pages.md b/docs/user-guide/pages.md
deleted file mode 100644
index ebca3dbe..00000000
--- a/docs/user-guide/pages.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: 页面
-description: Halo 自定义页面:关于页、联系页等独立页面与别名 URL 访问说明。
----
-
-页面与文章类似,同样包含页面标题和富文本形式的页面内容。与文章不同的是页面无法设置所属分类和标签信息,一般用于站点中单一展示功能的页面,例如常见的站点关于页面、联系我们页面等。
-
-自定义页面的访问链接为 `/{slug}` 其中 `slug` 为自定义页面的别名。
-
-对于如下的关于页面,便可以通过 `/about` 地址进行访问。
-
-
-
-:::info
-自定义页面默认使用主题端的 `page.html` 模板进行渲染,如果主题中提供了针对自定义页面的其他模板,用户可以通过修改自定义页面高级设置中的自定义模板设置进行使用。
-:::
-
-#### 页面操作
-
-对于页面的新建、设置、发布及删除等操作,与文章操作基本一致,具体操作请参考[《用户指南 - 文章》](./posts.md)章节,此处不再赘述。
diff --git a/docs/user-guide/posts.md b/docs/user-guide/posts.md
deleted file mode 100644
index f8110d41..00000000
--- a/docs/user-guide/posts.md
+++ /dev/null
@@ -1,140 +0,0 @@
----
-title: 文章
-description: Halo 文章编辑发布:编辑器、分类标签、定时发布与回收站等操作。
----
-## 新建文章
-
-目前你可以通过以下两种方式新建一篇文章:
-
-1. 点击仪表盘快捷访问组件中的创建文章
-2. 通过左侧导航栏进入文章页面,点击右上角的新建按钮
-
-进入到如下页面后,你就可以开始编辑自己的文章内容了:
-
-
-
-1. **编辑器切换**:如果安装了其他的编辑器插件,那么就可以在这个位置选择所需的编辑器。
-2. **预览**:点击预览按钮可以在未发布的时候预览文章的渲染效果。
-3. **保存**:仅保存文章内容,但是不发布。
-4. **发布**:保存并发布文章内容。
-
-:::info
-Halo 支持通过插件来拓展文章编辑器,目前除了 Halo 内置的编辑器,应用市场中还有其他的编辑器可用:[https://www.halo.run/store/apps?tag=editor](https://www.halo.run/store/apps?tag=editor)
-:::
-
-## 文章设置
-
-当你想修改一篇文章的标题、所属分类等信息时,你可以通过以下方式进行操作:
-
-1. 点击文章列表指定文章所在行的 `···` 更多操作按钮,选择设置。
-2. 在文章列表点击指定文章的标题进入文章编辑页面,点击页面右上角的设置按钮。
-
-
-
-### 设置说明
-
-- **标题**:用于在主题端显示的文章标题。
-- **别名**:通常用于生成文章访问地址,如:`/archives/{slug}`。
-- **分类目录**:文章所属分类,方便用户区分文章类型进行针对性浏览,一篇文章可以属于多个分类。
-- **标签**:文章添加的标签,方便用户更进一步标识文章信息,一篇文章可以添加多个标签。
-- **自动生成摘要**:文章摘要是对文章内容的概括性描述。
- - **是**:系统根据文章内容,自动生成一段摘要。
- - **否**:用户自行输入文章摘要文本。
-- **自定义摘要**:用户自行输入的文章摘要文本,仅当 `自动生成摘要` 为否时生效。
-- **允许评论**:是否允许用户在主题端浏览文章时对该文章发起评论。
-- **是否置顶**:文章是否排序在文章列表的最顶部。
-- **可见性**:访问站点主题端时,哪些人可以看到这篇文章。
- - **公开**:所有用户均可看到这篇文章,包括未登录用户。
- - **私有**:仅文章作者可以看到这篇文章。
-- **发表时间**:手动指定文章的发表时间,未指定时以实际发布时间为准。
-- **自定义模板**:自定义文章的渲染模板,由主题提供支持。
-- **封面图**:文章封面图设置,需要主题支持该功能。
-- **元数据**:供主题、插件使用的额外数据信息。比如主题在文章页面提供了一个下载按钮,那么就可以通过元数据来指定下载地址。
-
-## 发布及取消发布
-
-对于已发布的文章,默认可以通过站点地址进行公开访问,用户可以在文章高级设置中修改可见性。
-
-你可以在上文介绍的文章设置对话框中,修改文章的发布状态。
-
-在文章设置对话框中,若文章当前处于已发布状态,下方会显示取消发布按钮。若文章处于未发布状态,下方则不会显示发布按钮。
-
-## 删除文章
-
-当你不再需要一篇文章时,你可以通过以下方式删除该文章:
-
-1. 点击文章列表指定文章所在行的 `···` 更多操作按钮,选择删除。
-2. 勾选文章列表中的全选/多选框,选中一篇或多篇文章进行批量删除。
-
-文章删除后会进入回收站中,点击右上角的回收站按钮进入回收站。在回收站中,你可以永久删除或恢复指定的文章。
-
-:::warning
-文章永久删除后将从数据库删除该记录,后续无法再恢复找回。
-:::
-
-## 文章分类管理
-
-通过分类可以更好地组织管理文章。分类之间存在层级关系,一个父分类下可包含多个子分类。一篇文章可以同时属于多个分类。
-
-在文章管理页面,点击页面右上角的 `分类` 按钮即可进入分类管理页面。
-
-### 新建文章分类
-
-点击分类管理页面右上角的 `新建` 按钮即可新建一个分类。
-
-
-
-
-#### 设置说明
-
-- **名称**:用于在主题端显示的分类名称。
-- **别名**:通常用于生成分类归档页面的访问地址。默认路径规则为 `/categories/{slug}`,其中 `slug` 为分类别名,访问该地址即可浏览该分类下的所有文章。分类页路由前缀可[在设置中修改](./settings#主题路由设置)。
-- **自定义模板**:自定义分类归档页面的渲染模板,由主题提供支持。
-- **自定义文章模板**:自定义当前分类下所有文章的渲染模板,由主题提供支持。
-- **封面图**:分类封面图设置,需要主题支持该功能。
-- **在列表中隐藏**:开启此选项后,此分类和其下子分类,以及其下文章将不会显示在前台的列表中,需要主动访问分类归档页面,此功能仅对第一级目录生效。
-- **阻止文章级联查询**:阻止父级分类在级联文章查询中包含此分类及其子分类。
-- **描述**:关于该文章分类的更多描述信息。
-- **元数据**:供主题、插件使用的额外数据信息。例如部分主题期望使用不同的颜色对分类进行区分,便可以使用该功能为分类增加颜色相关的元数据。
-
-### 调整分类层级
-
-分类之间存在层级关系,一个父分类下可包含多个子分类。
-
-你可以按住分类前的图标,通过拖拽来调整分类间的层级关系和顺序。
-
-
-
-### 修改/删除分类
-
-点击指定分类所在行后方的 `···` 更多操作按钮,可以对文章分类进行修改或删除。
-
-:::warning
-文章分类删除后,对应文章的关联将被解除,且该操作不可恢复,请谨慎进行该操作。
-:::
-
-## 文章标签管理
-
-标签可以用于为文章添加特定标记,与分类不同的是标签之间没有层级关系。一篇文章也可以同时添加多个标签。
-
-### 新建文章标签
-
-点击文章标签页面右上角的 `新建` 按钮即可新建一个标签。
-
-
-
-#### 设置说明
-
-- **名称**:用于在主题端显示的标签名称。
-- **别名**:通常用于生成标签归档页面的访问地址。默认路径规则为 `/tags/{slug}`,其中 `slug` 为标签别名,访问该地址即可浏览具有该标签的所有文章。标签页路由前缀可[在设置中修改](./settings#主题路由设置)。
-- **颜色**:用于在控制台及主题端显示的标签颜色,主题端显示颜色需要主题支持该功能。
-- **封面图**:标签封面图设置,需要主题支持该功能。
-- **元数据**:供主题、插件使用的额外数据信息。
-
-### 修改/删除标签
-
-在列表模式下,点击指定标签所在行后方的 `···` 更多操作按钮,可以对文章标签进行修改或删除。
-
-:::warning
-文章标签删除后,对应文章的关联将被解除,且该操作不可恢复,请谨慎进行该操作。
-:::
diff --git a/docs/user-guide/settings.md b/docs/user-guide/settings.md
deleted file mode 100644
index 5ee9c46e..00000000
--- a/docs/user-guide/settings.md
+++ /dev/null
@@ -1,240 +0,0 @@
----
-title: 站点设置
-description: Halo 站点设置:基本信息、文章展示、评论、用户与 SEO 等控制台项。
----
-
-## 基本设置
-
-Halo 提供了以下站点基本信息设置:
-
-- **站点标题**
-- **站点副标题**
-- **Logo**
-- **Favicon**
-- **首选语言**
-
-在控制台设置完成后,主题端可以通过特定的表达式获取到这些信息并且在对应的位置进行展示。具体是否读取使用这些配置、在哪些位置显示这些信息由使用的不同主题而决定。
-
-以 Halo 2.0 的[默认主题 Earth](https://github.com/halo-dev/theme-earth) 为例,这些设置信息将在如下位置进行展示。
-
-
-
-## 文章设置
-
-针对主题端的文章展示,Halo 提供了以下设置项:
-
-- **文章列表显示条数**:首页的文章显示条数。
-- **归档页文章显示条数**:归档页面(\/archives)的文章显示条数。
-- **分类页文章显示条数**:分类归档页面(\/categories\/\{slug\})的文章显示条数。
-- **标签页文章显示条数**:标签归档页面(\/tags\/\{slug\})的文章显示条数。
-- **别名生成策略**:
- - 根据标题:自动根据文章标题生成,比如文章标题为 `Hello Halo`,那么别名将生成为 `hello-halo`
- - 时间戳:使用当前时间的时间戳作为标题
- - Short UUID:生成类似于 `BT5kIgrb` 的别名
- - UUID:生成类似于 `4f662408-ed90-470b-9ed1-7fdc0283631b` 的别名
-- **附件存储策略**:在编辑器中上传图片时的附件存储策略
- - 已经在 Halo 2.22 中标记为过时,后续请使用 [附件设置](#附件设置) 代替
-- **附件存储组**:在编辑器中上传图片时的附件分组
- - 已经在 Halo 2.22 中标记为过时,后续请使用 [附件设置](#附件设置) 代替
-
-## SEO 设置
-
-针对站点的 SEO(搜索引擎优化)需求,Halo 提供了以下设置项:
-
-- **屏蔽搜索引擎**:配置后会在所有页面 HTML 源码的 head 部分添加:
-
- ```html
-
- ```
-
- :::info
- 需要注意的是,并不是所有搜索引擎都会遵守这个规则。
- :::
-
-- **站点关键词**:格式为以 `,` 分隔的关键词列表,配置后会在所有页面 HTML 源码的 head 部分添加:
-
- ```html
-
- ```
-
- :::warning[注意]
- 目前主流的搜索引擎(如 Google、Bing、百度搜索等)已经不再使用该标签作为关键词的参考,因此该设置项的作用已经不大,未来我们也可能会移除该设置项。
- :::
-
-- **站点描述**:配置后会在所有页面 HTML 源码的 head 部分添加:
-
- ```html
-
- ```
-
-## 用户设置
-
-- **开放注册**:是否允许访客注册,勾选之后在登录页面会显示注册入口。
-- **注册需验证邮箱**:开启之后,用户注册时必须要经过邮箱验证,需要配置好 [邮件通知](#通知设置)。
-- **保留用户名**:设置之后这些用户名将无法被其他用户注册。
-- **默认角色**:新注册用户的默认角色。
-- **注册时所需协议**:选择注册时需要用户阅读并同意的自定义页面,例如用户协议、隐私政策等。
-- **头像存储位置**:用户上传头像的存储策略。
- - 已经在 Halo 2.22 中标记为过时,后续请使用 [附件设置](#附件设置) 代替
-- **个人中心附件存储位置**:用户在个人中心端上传附件时的默认存储策略,需要用户包含上传附件的权限。
- - 已经在 Halo 2.22 中标记为过时,后续请使用 [附件设置](#附件设置) 代替
-
-### 注册协议页面
-
-开启 **开放注册** 后,可以通过 **注册时所需协议** 选择一个或多个自定义页面作为注册协议。保存后,注册页面会显示 `我已阅读并同意` 勾选项,并将已选择的页面显示为可点击链接。用户必须勾选同意后才能提交注册。
-
-从 Halo 2.25.0 开始,新安装站点会在初始化时自动创建 **用户协议** 和 **隐私政策** 两个自定义页面,并默认将它们配置为注册时所需协议。
-
-:::warning[注意]
-自动创建的协议页面只包含占位内容。正式开放注册前,请进入 [页面](./pages.md) 管理并替换为你站点实际使用的用户协议、隐私政策或其他合规说明。
-:::
-
-如果不需要在注册时要求用户同意协议,可以清空 **注册时所需协议** 并保存设置。
-
-## 附件设置
-
-- **管理端附件配置**:为管理端设置附件上传默认的存储策略和分组,通常用于直接上传附件的场景,比如在文章编辑器中粘贴上传。
-- **个人中心附件配置**:为个人中心设置附件上传默认的存储策略和分组,如果你的网站允许部分用户在个人中心创建文章,**那么建议单独创建一个专门的存储策略,并限制文件格式和大小**。
-- **头像附件配置**:用户上传头像的存储策略配置,**建议单独创建存储策略并限制仅允许上传图片**。
-
-## 评论设置
-
-针对站点的评论功能,Halo 提供了以下设置项:
-
-- **启用评论**:全局评论功能开关配置,修改后影响所有文章、页面的评论功能。
-- **新评论审核**:新增的评论是否需要在控制台进行审核,审核通过后其他访问者才能看到该条评论。
-- **仅允许注册用户评论**:开启后只有登录用户才能添加评论,关闭后匿名(未登录)的访客也可以通过自行填写昵称、邮箱、网址等信息进行评论。
-
-## 主题路由设置
-
-针对访问站点各种类型页面的 URL 生成规则,Halo 提供了以下主题路由设置项:
-
-- **分类页路由前缀**:定位到分类列表页面以及分类归档页面。
- - 默认的分类列表页面 URL 规则前缀为 `/categories`
- - 默认的分类归档页面 URL 规则前缀为 `/categories/{slug}`
-- **标签页路由前缀**:定位到标签列表页面以及标签归档页面。
- - 默认的标签列表页面 URL 规则前缀为 `/tags`
- - 默认的标签归档页面 URL 规则前缀为 `/tags/{slug}`
-- **归档页路由前缀**:定位到文章归档页面的 URL 规则前缀,默认为 `/archives`。
-- **文章详情页访问规则**:定位到具体文章详情页面的 URL 规则前缀,默认为 `/archives/{slug}` ,用户可从以下路径规则进行选择:
- - `/archives/{slug}`
- - `/archives/{name}`
- - `/?p={name}`
- - `/?p={slug}`
- - `/?p={slug}`
- - `/{year}/{slug}`
- - `/{year}/{month}/{slug}`
- - `/{year}/{month}/{day}/{slug}`
-
- :::info[变量说明]
- - `slug`:文章别名
- - `name`:文章 `metadata.name` 字段值
- - `year`:四位数格式的文章发布年份
- - `month`:两位数格式的文章发布月份
- - `day`:两位数格式的文章发布日
- :::
-
-## 代码注入
-
-你可以使用代码注入功能,在特定类型的页面中注入额外的代码。你可以通过该功能覆盖或补充部分主题 CSS 样式,或者引入额外的 JavaScript 脚本扩展主题端功能。
-
-- **全局 head 标签**:该代码将会被注入到所有页面的 head 标签中。
-- **内容页 head 标签**:该代码将会被注入到文章、页面详情页的 head 标签中。
-- **页脚**:该代码将会被注入到所有页面的页脚中。
-
-## 品牌信息
-
-:::note
-限 [Halo 付费版](../getting-started/prepare.md#发行版本) 可用。
-:::
-
-
-
-
-
-- **登录页 Logo**:登录、注册等页面的 Logo 设置,如果不填写将默认使用 Halo 的标志。
-- **登录页 Logo 大小**:用于调整登录页面的 Logo 大小。
-- **控制台 Logo**:Console 控制台、UC 个人中心的 Logo 设置,如果不填写将默认使用 Halo 的标志。
-- **控制台 Logo 大小**:用于调整控制台的 Logo 大小。
-- **显示控制台页脚信息**:是否显示 Console 控制台和 UC 个人中心底部的版权信息。
-- **自定义页脚信息**:如果勾选了 **显示控制台页脚信息**,可以自定义底部的版权信息,支持 HTML,如果不填写将使用默认的 Halo 版权信息。
-
-## 通知设置
-
-从 2.10.0 版本开始,Halo 提供了 **通知** 功能,当有新的评论、留言、回复等事件发生时,Halo 会通过配置的方式通知站长或者相关用户。同时,个人中心配置的电子邮箱也会作为通知的接收邮箱。
-
-### 邮件通知
-
-- **启用邮件通知器**:开启后,当有新的评论、留言、回复等事件发生时,Halo 会通过 **邮件** 的方式通知站长或者相关用户。
-- **用户名**:你需要在此处填写你的 **邮箱账号**。
-- **密码**:你需要在此处填写你的 **邮箱密码** 或相关的 **授权码**,具体请参考你所使用邮箱的相关说明。
-- **显示名称**:你需要在此处填写你的 **邮箱显示名称**,该名称将会作为邮件发送者的名称显示。
-- **SMTP 服务器地址**:你需要在此处填写你的 **SMTP 服务器地址**,具体请参考你所使用邮箱的相关说明。
-- **端口号**:你需要在此处填写你的 **SMTP 服务器端口号**,具体请参考你所使用邮箱的相关说明。
-- **加密方式**:你需要在此处选择你的 **SMTP 服务器加密方式**,具体请参考你所使用邮箱的相关说明。
-
-> 常见邮箱服务商的文档如下:
->
-> - [QQ 邮箱](https://service.mail.qq.com/detail/0/310)
-> - [163 邮箱](https://help.mail.163.com/faqDetail.do?code=d7a5dc8471cd0c0e8b4b8f4f8e49998b374173cfe9171305fa1ce630d7f67ac2a5feb28b66796d3b)
-> - [Gmail](https://support.google.com/mail/answer/7104828?hl=zh-Hans)
-> - [阿里云企业邮箱](https://help.aliyun.com/document_detail/36687.html)
-> - [腾讯企业邮箱](https://open.work.weixin.qq.com/help2/pc/19870)
-
-### 短信通知
-
-:::note
-限 [Halo 付费版](../getting-started/prepare.md#发行版本) 可用。
-:::
-
-目前短信通知在 Halo 中基本只作为用户登录时发送验证码使用,以下是配置说明:
-
-- 提供商 (腾讯云/阿里云/UCloud):目前仅支持腾讯云、阿里云、UCloud 短信服务中的国内短信服务,即仅能向中国大陆手机号码发送短信
-- 超时时间:短信在系统中记录的超时时间,超过当前时间后系统会判断已到期
-- 验证码长度:发送验证码到手机商的长度,一般为 6 位
-- 提供商具体配置:不同的提供商需要提供的参数不一致,具体提供商的具体参数说明请参考后续文档
-- 测试短信:提供检测机制测试当前的配置是否有效。点击测试短信会发送短信给当前操作用户,所以当前的用户在个人信息中配置正确的手机号码
-
-#### 腾讯云短信服务配置说明
-
-在 Halo 中进行以下设置之前,需要先在腾讯云开通短信服务,并创建可用的签名、模板及应用等内容。
-
-- [腾讯云短信服务控制台地址](https://console.cloud.tencent.com/smsv2)
-- [腾讯云短信服务文档地址](https://cloud.tencent.com/document/product/382/37745)
-
-1. SecretId:用于调用腾讯云接口的 API 密钥的 SecretId,可以在腾讯云控制台 [API密钥管理页面](https://console.cloud.tencent.com/cam/capi) 创建
-2. SecretKey:用于调用腾讯云接口的 API 密钥的 SecretKey,可以在腾讯云控制台 [API密钥管理页面](https://console.cloud.tencent.com/cam/capi) 创建
-3. 地域:腾讯云接口要求的必传参数,可选的地域列表可以查看 [腾讯云文档](https://cloud.tencent.com/document/api/382/52071#.E5.9C.B0.E5.9F.9F.E5.88.97.E8.A1.A8)
-4. 应用 ID:在腾讯云短信服务 [应用管理菜单](https://console.cloud.tencent.com/smsv2/app-manage) 中创建的应用的 `SDK AppID`
-5. 签名内容:在腾讯云短信服务 [签名管理菜单](https://console.cloud.tencent.com/smsv2/csms-sign) 中创建的签名的 `签名内容`
-6. 模板 ID:在腾讯云短信服务 [正文模板管理菜单](https://console.cloud.tencent.com/smsv2/csms-template) 中创建的正文模板的 `ID`
-
-#### 阿里云短信服务配置说明
-
-在 Halo 中进行以下设置之前,需要先在阿里云开通短信服务,并创建可用的签名、模板等内容。
-
-- [阿里云短信服务控制台地址](https://dysms.console.aliyun.com/overview)
-- [阿里云短信服务文档地址](https://help.aliyun.com/zh/sms/)
-
-1. AccessKey ID:用于调用阿里云接口的 API 密钥的 AccessKey ID,可以在阿里云控制台 [AccessKey管理页面](https://ram.console.aliyun.com/manage/ak) 创建
-2. AccessKey Secret:用于调用阿里云接口的 API 密钥的 AccessKey Secret,可以在阿里云控制台 [AccessKey管理页面](https://ram.console.aliyun.com/manage/ak) 创建
-3. 地域:阿里云接口要求的必传参数,可选的地域列表可以查看 [阿里云文档](https://help.aliyun.com/zh/sms/developer-reference/api-dysmsapi-2017-05-25-endpoint?spm=a2c4g.11174283.0.0.13d64994r9G5rN)
-4. 短信签名:在阿里云短信服务 [签名管理菜单](https://dysms.console.aliyun.com/domestic/text/sign) 中创建的签名的 `签名名称`
-5. 短信模板:在阿里云短信服务 [模板管理菜单](https://dysms.console.aliyun.com/domestic/text/template) 中创建的模板的 `模板CODE`
-
-#### UCloud 短信服务配置说明
-
-在 Halo 中进行以下设置之前,需要先在 UCloud 开通短信服务,并创建可用的签名、模板等内容。
-
-- [UCloud 短信服务控制台地址](https://console.ucloud.cn/usms)
-- [UCloud 短信服务文档地址](https://docs.ucloud.cn/usms/README)
-
-> 目前仅支持国内短信且短信模版仅支持一个变量的验证码类型短信模版如:**你的验证码为{1},该验证码5分钟内有效,如非本人操作,请忽略本短信!**
-
-1. 公钥:用于调用 UCloud 接口的 API 密钥的 公钥,可以在 UCloud 控制台 [API密钥](https://console.ucloud.cn/uaccount/api_manage) 创建
-2. 私钥:用于调用 UCloud 接口的 API 密钥的 私钥,可以在 UCloud 控制台 [API密钥](https://console.ucloud.cn/uaccount/api_manage) 创建
-3. 项目 ID:UCloud 接口要求的必传参数,可选的项目列表可以查看 [项目管理](https://console.ucloud.cn/uaccount/iam/project_manage) 中的`项目ID`
-4. 模版 ID:在 UCloud 短信服务 [短信模板](https://console.ucloud.cn/usms/domestic) 中创建的签名的 `模板ID`
-5. 签名内容:在 UCloud 短信服务 [短信签名](https://console.ucloud.cn/usms/domestic) 中创建的签名的 `签名内容`
-
-配置完成之后,可以在 [身份认证](../user-guide/users.md#身份认证) 中开启手机号登录。
diff --git a/docs/user-guide/shop/index.mdx b/docs/user-guide/shop/index.mdx
deleted file mode 100644
index e0b10abf..00000000
--- a/docs/user-guide/shop/index.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: 商城
-description: Halo 商城版功能概览:开店、商品、支付发货与前台路由等用户指南索引。
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-:::note
-限 [Halo 商城版](../../getting-started/prepare.md#发行版本) 可用。
-:::
-
-商城模块是 Halo 商城版的一项功能,支持用户基于 Halo 站点创建店铺,上架多种类型的货品,配置商品支付和发货方式。为实体商品、虚拟商品、链接商品等销售场景提供完备的电商解决方案。
-
-
-
- 
-
-
- 
-
-
-
-```mdx-code-block
-import DocCardList from '@theme/DocCardList';
-
-
-```
diff --git a/docs/user-guide/shop/mp.mdx b/docs/user-guide/shop/mp.mdx
deleted file mode 100644
index 67def2a1..00000000
--- a/docs/user-guide/shop/mp.mdx
+++ /dev/null
@@ -1,27 +0,0 @@
----
-title: 小程序
-description: Halo 商城小程序的获取、配置与发布说明。
----
-
-自 Halo 2.24 起,Halo 商城支持以微信小程序作为销售终端。相较于 Web 端,小程序在国内拥有更高的用户渗透率,更适合承载移动端购物场景。
-
-
-
-## 获取方式
-
-Halo 官方目前以源码形式提供小程序模板,你需要自行编译,并通过微信开发者工具完成发布。
-
-- 源码仓库:[lxware-dev/halo-shop-miniprogram](https://github.com/lxware-dev/halo-shop-miniprogram)
-- 在线文档:[小程序配置与发布文档](https://github.com/lxware-dev/halo-shop-miniprogram/tree/main/docs)
-
-## 使用流程
-
-:::info
-为了便于后续同步官方更新,建议先将仓库 Fork 到自己的 GitHub 账户,再克隆到本地进行配置、编译和发布。
-:::
-
-```bash
-git clone https://github.com/{your-github-username}/halo-shop-miniprogram.git
-```
-
-克隆完成后,请阅读源码仓库中的 `docs` 目录,其中包含完整的小程序配置、编译与发布说明,可按文档完成后续操作。
diff --git a/docs/user-guide/shop/orders.mdx b/docs/user-guide/shop/orders.mdx
deleted file mode 100644
index 0436ba57..00000000
--- a/docs/user-guide/shop/orders.mdx
+++ /dev/null
@@ -1,27 +0,0 @@
----
-title: 订单管理
-description: Halo 商城订单:查看详情、填写物流发货与订单处理操作说明。
----
-
-
-
-## 查看订单详情
-
-我们可以点击订单标题进入订单详情页面,或者点击订单标题右侧的图标按钮预览订单详情。
-
-
-
-
-
-## 发货
-
-收到用户订单之后,可以在订单详情页面的 **发货信息** 区域点击 **发货** 按钮,打开发货界面:
-
-
-
-在这个界面我们需要勾选需要发货的产品以及物流信息,然后点击 **确认发货** 按钮,即可完成发货。
-
-:::info[提示]
-1. 目前仅支持填写物流单号等信息,目前没有对接物流查询平台,所以需要用户手动根据物流单号查询物流信息。
-2. 虚拟产品发货可参考:[虚拟交付](./virtual-delivery.mdx)
-:::
\ No newline at end of file
diff --git a/docs/user-guide/shop/prepare.mdx b/docs/user-guide/shop/prepare.mdx
deleted file mode 100644
index 4f8c984d..00000000
--- a/docs/user-guide/shop/prepare.mdx
+++ /dev/null
@@ -1,32 +0,0 @@
----
-title: 写在前面
-description: 启用 Halo 商城前:商城版安装激活、合规资质与支付宝/微信支付准备。
----
-
-## 前提条件
-
-在开始使用商城功能之前,需要先确定以下条件是否已满足:
-
-- 正常安装 [Halo 商城版](../../getting-started/install/docker-compose.md)
-- 激活 [Halo 商城版许可证](../../user-guide/activate.md)
-- 根据当地法律法规,满足开设网络商店的资质与要求
-- 开通支付平台账户,目前支持:
- - [支付宝官方接口](https://open.alipay.com/)
- - [微信支付官方接口](https://pay.weixin.qq.com/)
-
-## 前台路由
-
-目前商城包含以下前台路由:
-
-- `/shop`:商城首页,目前会重定向到商品列表页面
-- `/shop/products`:商品列表页面
-- `/shop/products/:id`:商品详情页面
-- `/shop/cart`:购物车页面
-- `/shop/checkout/:id`:结算页面
-- `/shop/order/:code/payments`:支付页面
-
-:::note
-这些页面无需主题提供对应的模板文件即可访问,使用的是系统内置的模板文件。如果当前激活的主题提供了对应的模板文件,则会优先使用主题提供的模板文件。
-:::
-
-你可以根据需求,将这些页面路径添加到[网站菜单](../menus.md)中。
\ No newline at end of file
diff --git a/docs/user-guide/shop/products.mdx b/docs/user-guide/shop/products.mdx
deleted file mode 100644
index 501fbb77..00000000
--- a/docs/user-guide/shop/products.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: 产品管理
-description: Halo 商城产品:创建实体/虚拟商品、定价库存、图片与描述等配置说明。
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
-
-## 创建产品
-
-首先登录到 Halo 控制台,进入 **商店 -> 产品** 页面,点击右上角的新建按钮。
-
-
-
-### 基本信息
-
-- 名称:产品名称
-- 简短描述:产品的简短描述
-- 描述:产品的详细描述,使用富文本编辑器
-- 图片:产品图片,可以直接上传或者从附件库中选择,第一张图片会作为封面图
-
-### 产品数据
-
-这里主要配置产品的类型、属性、规格、价格等数据。
-
-产品类型目前支持三种:
-
-1. 实体:需要配送的产品类型
-2. 虚拟:不需要实体配送,使用线上发货的产品类型
-3. 链接:直接跳转到第三方链接的产品类型
-
-:::info[提示]
-虚拟产品支持文件资源下载、卡密发货,可参考 [虚拟交付](./virtual-delivery.mdx) 进行发货配置。
-:::
-
-#### 属性配置
-
-属性的作用是为产品添加一些额外的信息,比如颜色、尺寸、型号等,同时也可以用于生成产品规格。
-
-
-
-- 名称:属性名称,比如颜色、尺寸
-- 属性值:支持多个属性值,比如颜色可以有红色、蓝色、绿色等,尺寸可以有小、中、大等,同时也可以为不同的属性值设置图片,用于展示给用户
-- 用于生成产品规格:勾选后,支持在配置产品规格时根据多个属性生成不同的产品规格
-
-#### 规格配置
-
-规格即产品的具体规格,比如颜色为红色、尺寸为小,型号为1234567890,可以根据属性值生成不同的规格,并单独设置价格、库存等信息,最终用户购买时,可以选择属性值来确定购买的产品规格。
-
-:::note
-这里的规格也可以称之为 **变体** 或者 **SKU**。
-:::
-
-
-
-当我们设置好 [属性](#属性配置) 之后,可以点击 **生成规格** 按钮来批量生成所有可能产生的规格。
-
-
-
-然后可以点击具体的规格项,展开规格配置表单:
-
-
-
-- 图片:为规格设置图片,用于在购物车,订单等页面展示,如果不设置,会使用属性值中配置的图片或者产品封面
-- 状态:支持 **草稿**、**已发布**、**已归档** 三种状态
-- SKU 编号:规格的唯一标识
-- 条形码:产品规格的条形码,也可用于表示 GTIN、UPC、EAN 或 ISBN 等
-- 价格:规格的真实价格
-- 划线价:规格的划线价,用于表示原价
-- 管理库存
- - 否:不管理库存,用户可以无限购买
- - 是:管理库存,用户购买时,库存会减少
-- 库存:规格的库存数量,当库存为0时,用户无法购买
-- 重量:规格的重量
-- 长度:规格的长度
-- 宽度:规格的宽度
-- 高度:规格的高度
-
-:::note
-重量、长度、宽度、高度用于后续发货相关的业务,如果产品类型为虚拟,则不需要配置。
-:::
-
-除了为单个规格设置上述配置之外,也可以点击上方的批量设置按钮,用于为所有规格设置相同的配置。
-
-
-
-### 分类配置
-
-分类配置用于将产品分类,比如手机、电脑、服装、数码等,支持多级分类。
-
-
-
-### 发布
-
-配置完产品信息之后,就可以将产品状态改为 **发布**,并保存产品,最终就可以在商城前台中展示。
-
-
\ No newline at end of file
diff --git a/docs/user-guide/shop/virtual-delivery.mdx b/docs/user-guide/shop/virtual-delivery.mdx
deleted file mode 100644
index e839f090..00000000
--- a/docs/user-guide/shop/virtual-delivery.mdx
+++ /dev/null
@@ -1,260 +0,0 @@
----
-title: 虚拟交付
-description: Halo 商城虚拟商品:文件下载与卡密交付的配置及发货流程说明。
----
-
-在 Halo 2.23 中,我们完善了虚拟产品的发货功能,目前支持文件资源下载、卡密发货。
-
-## 创建产品
-
-完整的创建产品流程可参考 [产品管理](./products.mdx) 文档,需要注意的是,如果产品要支持虚拟交付,需要在产品类型中选择 **虚拟** 产品类型。
-
-
-
-## 设置文件资源下载
-
-创建完产品之后,我们需要进入 **产品 -> 虚拟交付** 页面,然后选择刚刚创建的产品。
-
-
-
-进入设置页面之后,就可以看到 **资源下载** 的设置页面,我们可以点击右上方的 **添加** 按钮来添加文件。
-
-
-
-- 资源类型:支持附件和静态 URL
-- 资源名称:为客户显示的文件名称
-- 资源描述:可以填写文件的描述信息
-- 附件(当类型为附件时):可以点击 `+` 按钮选择已上传的附件或者上传新的附件
-- 资源地址(当类型为静态 URL 时):可以填写文件的 URL 地址
-
-填写完成之后,点击 **保存** 按钮即可。
-
-当文件添加完成之后,我们还需要手动启用自动发货,点击右上角的 **发货配置** 按钮,勾选启用即可。
-
-
-
-## 设置卡密发货
-
-进入虚拟交付设置页面之后,选择 **卡密资产** 选项卡,就可以看到 **卡密资产** 的设置页面。
-
-
-
-我们可以点击右上方的 **添加** 按钮来添加卡密。
-
-
-
-- 卡密:卡密内容,支持批量添加,一行一个
-- 过期时间:卡密过期时间
-- 备注:可以填写卡密的备注信息
-
-填写完成之后点击 **添加** 按钮即可。
-
-当卡密添加完成之后,我们还需要手动启用自动发货,点击右上角的 **发货配置** 按钮,勾选启用即可。
-
-
-
-此外,在卡密发货配置界面中,还支持配置 **远程调用配置**,支持通过三方 API 来补货或者动态生成卡密并发货。
-
-定义:
-
-- 预获取:优先从卡密列表中选择并发货,在库存不足时才调用 API 进行补货
-- 动态获取:每次发货时都调用 API 获取卡密并发货
-
-配置说明:
-
-- 类型:支持 **预获取** 和 **动态获取**
- - 补货配置(当类型为预获取时)
- - API 地址:补货 API 地址
- - 认证 Token:补货 API 认证 Token,用于对 API 请求进行认证
- - 阈值:可用卡密数量低于此值时触发补货
- - 每次获取的卡密数量:每次调用 API 获取的卡密数量
- - 服务器配置(当类型为动态获取时)
- - API 地址:远程生成 API 地址
- - 认证 Token:API 认证 Token,用于对 API 请求进行认证
-
-需要注意的是,API 需要自行实现并适配 Halo 的接口标准,可以参考下方的 [API 规范](#api-规范)。
-
-## 订单相关
-
-为产品配置好虚拟交付之后,当客户下单并支付时,系统会自动为订单进行发货流程,可以在控制台的订单详情中看到发货状态。
-
-
-
-客户也可以在订单页面看到已发货的虚拟物品。
-
-
-
-
-
-## API 规范
-
-### 卡密远程生成 API 规范
-
-用户下单后,Halo 会向配置的远程地址发起请求,由你的服务实时生成或分配卡密。
-
-#### 请求
-
-```
-POST <你配置的远程生成地址>
-Content-Type: application/json
-Authorization: Bearer // 配置了 token 时附带
-```
-
-**请求体**
-
-```json
-{
- "orderItem": {
- "id": 10001,
- "orderId": 90001,
- "productId": 80001,
- "quantity": 2,
- "itemTitle": "年度会员兑换码",
- "productVariantSnapshot": {
- "id": 123,
- "name": "默认规格"
- }
- },
- "dryRun": false
-}
-```
-
-| 字段 | 类型 | 必填 | 说明 |
-| ---------------------------------- | ------- | ---- | ------------------------- |
-| `orderItem.id` | long | 是 | 订单项 ID(可用作幂等键) |
-| `orderItem.orderId` | long | 是 | 订单 ID |
-| `orderItem.productId` | long | 是 | 商品 ID |
-| `orderItem.quantity` | int | 是 | 需要发放的卡密数量 |
-| `orderItem.itemTitle` | string | 否 | 订单项标题 |
-| `orderItem.productVariantSnapshot` | object | 否 | 规格快照 |
-| `dryRun` | boolean | 是 | 当前固定为 `false` |
-
-#### 响应
-
-返回卡密列表,所有卡密的 `capacity` 之和须不小于 `orderItem.quantity`。
-
-```json
-[
- {
- "code": "ABCD-EFGH-IJKL",
- "secret": "S3cr3t-1",
- "expireAt": "2026-12-31T23:59:59Z",
- "capacity": 1
- }
-]
-```
-
-| 字段 | 类型 | 必填 | 说明 |
-| ---------- | ------ | ---- | ------------------------- |
-| `code` | string | 是 | 卡密(同一响应内唯一) |
-| `secret` | string | 否 | 附加验证信息 |
-| `expireAt` | string | 否 | 过期时间(UTC,ISO-8601) |
-| `capacity` | int | 否 | 可用次数,默认为 `1` |
-
-:::warning[注意]
-响应不可为空列表,否则触发卡密发放失败。建议以 `orderItem.id` 作为幂等键,避免重复请求导致重复发放。
-:::
-
-#### 错误码
-
-建议使用非 `2xx` 状态码表达失败,并返回结构化错误:
-
-```json
-{
- "code": "CDK_OUT_OF_STOCK",
- "message": "No enough CDKs available",
- "requestId": "f38db1c2-2f7a-4dc3-b5a8-2d0012345678"
-}
-```
-
-推荐错误码:
-
-| HTTP 状态码 | 错误码 | 含义 | 是否可重试 |
-| ----------- | --------------------- | ---------------------- | ---------- |
-| `400` | `INVALID_REQUEST` | 请求字段不合法 | 否 |
-| `401` | `UNAUTHORIZED` | 鉴权失败 | 否 |
-| `403` | `FORBIDDEN` | 调用被拒绝 | 否 |
-| `404` | `NOT_FOUND` | 路由不存在 | 否 |
-| `409` | `IDEMPOTENT_CONFLICT` | 幂等键冲突且参数不一致 | 否 |
-| `422` | `CDK_OUT_OF_STOCK` | 库存不足 | 视业务而定 |
-| `429` | `RATE_LIMITED` | 触发限流 | 是 |
-| `500` | `INTERNAL_ERROR` | 远程服务内部错误 | 是 |
-| `503` | `SERVICE_UNAVAILABLE` | 服务不可用 | 是 |
-
-### 卡密自动补货 API 规范
-
-当密钥库存低于阈值时,Halo 会自动向配置的补货地址发起补货请求。
-
-#### 请求
-
-```
-POST <你配置的补货地址>
-Content-Type: application/json
-Authorization: Bearer // 配置了 token 时附带
-```
-
-**请求体**
-
-```json
-{
- "productVariantId": 123,
- "quantity": 50
-}
-```
-
-| 字段 | 类型 | 必填 | 说明 |
-| ------------------ | ---- | ---- | --------------------- |
-| `productVariantId` | long | 是 | 需要补货的商品规格 ID |
-| `quantity` | int | 是 | 请求补充的卡密数量 |
-
-#### 响应
-
-返回卡密列表,实际返回数量可与请求数量不一致。
-
-```json
-[
- {
- "code": "ABCD-EFGH-IJKL",
- "secret": "S3cr3t-1",
- "expireAt": "2026-12-31T23:59:59Z",
- "capacity": 1
- }
-]
-```
-
-| 字段 | 类型 | 必填 | 说明 |
-| ---------- | ------ | ---- | ------------------------- |
-| `code` | string | 是 | 卡密(同一响应内唯一) |
-| `secret` | string | 否 | 附加验证信息 |
-| `expireAt` | string | 否 | 过期时间(UTC,ISO-8601) |
-| `capacity` | int | 否 | 可用次数,默认为 `1` |
-
-:::warning[注意]
-响应不可为空列表,否则视为补货失败。补货失败不影响当前订单的卡密发放。
-:::
-
-#### 错误码
-
-建议使用非 `2xx` 状态码表达失败,并返回结构化错误:
-
-```json
-{
- "code": "CDK_OUT_OF_STOCK",
- "message": "No enough CDKs available",
- "requestId": "f38db1c2-2f7a-4dc3-b5a8-2d0012345678"
-}
-```
-
-推荐错误码:
-
-| HTTP 状态码 | 错误码 | 含义 | 是否可重试 |
-| ----------- | --------------------- | ---------------------- | ---------- |
-| `400` | `INVALID_REQUEST` | 请求字段不合法 | 否 |
-| `401` | `UNAUTHORIZED` | 鉴权失败 | 否 |
-| `403` | `FORBIDDEN` | 调用被拒绝 | 否 |
-| `404` | `NOT_FOUND` | 路由不存在 | 否 |
-| `409` | `IDEMPOTENT_CONFLICT` | 幂等键冲突且参数不一致 | 否 |
-| `422` | `CDK_OUT_OF_STOCK` | 库存不足 | 视业务而定 |
-| `429` | `RATE_LIMITED` | 触发限流 | 是 |
-| `500` | `INTERNAL_ERROR` | 远程服务内部错误 | 是 |
-| `503` | `SERVICE_UNAVAILABLE` | 服务不可用 | 是 |
\ No newline at end of file
diff --git a/docs/user-guide/themes.md b/docs/user-guide/themes.md
deleted file mode 100644
index 73352dca..00000000
--- a/docs/user-guide/themes.md
+++ /dev/null
@@ -1,98 +0,0 @@
----
-title: 主题
-description: Halo 主题安装与切换、应用市场获取及模板与站点变量配置说明。
----
-
-主题包含了各种站点页面模板的资源包。用户访问 Halo 站点浏览到的内容及样式,由 Halo 管理端所配置使用的主题所决定。
-
-:::info
-目前有两个官方渠道可以获取主题:
-
-- 应用市场:[https://www.halo.run/store/apps](https://www.halo.run/store/apps)
-- Awesome Halo:[https://github.com/halo-sigs/awesome-halo](https://github.com/halo-sigs/awesome-halo)
-
-:::
-
-## 安装主题
-
-点击主题页面右上方的 `主题管理` 按钮即可弹出主题管理对话框。
-
-### 从内置应用市场安装(推荐)
-
-从 Halo 2.10 开始,内置了应用市场插件,可以更加方便在 Console 直接安装应用市场的主题。
-
-
-
-:::info
-更多关于内置应用市场的使用说明可查阅:[应用市场](./app-store.md)
-:::
-
-### 本地上传安装
-
-你可以点击主题管理对话框下方的 `安装主题` 按钮,在弹出的安装主题对话框中上传主题压缩包。
-
-
-
-### 远程下载安装
-
-同样,在安装主题的对话框中,切换到远程下载选项卡,输入主题的下载地址,点击 `下载` 按钮即可开始下载主题。
-
-## 切换主题
-
-同样点击主题页面右上方的 `主题管理` 按钮弹出主题管理对话框。
-
-在弹框中点击选中要切换的目标主题,此时页面返回到主题详情页,点击右上角的 `启用` 按钮即可将当前主题切换为实际使用的主题。
-
-:::info
-仅选中主题不点击右上角的 `启用` 按钮时,不会影响当前实际使用的主题。
-:::
-
-你也可以在已安装主题列表中,通过后方 `···` 的更多操作中的启用选项直接启用指定的主题。
-
-## 修改主题设置
-
-主题页面默认显示出了当前主题的详细信息,在详细信息标签页后方的标签页,即为主题提供的相关设置。不同的主题提供的设置项各不相同,设置项的详细说明请参考对应主题的文档。
-
-
-
-以 Halo 的默认主题 Earth 为例,该主题提供了布局、样式、侧边栏、页脚及备案设置共五组配置项。
-
-:::info
-你可以点击主题列表指定主题所在行后方的 `···` 更多操作按钮,选择其中的 `重置` 选项将主题提供的设置项恢复为默认值。
-:::
-
-## 预览主题
-
-通过预览功能,你可以在不更改当前启用主题的情况下查看不同主题的效果。点击主题详情页面右上角的 `预览` 按钮预览当前主题,或者进入已安装主题列表,通过后方 `···` 的更多操作中的预览选项预览指定的主题。
-
-在主题预览页面你可以切换不同分辨率的设备,模拟主题在不同终端下的显示效果。也可以通过右上角的功能菜单切换预览的主题,或者调整当前主题的设置,查看不同设置下主题所展现的区别。
-
-演示视频:
-
-
-
-
-## 升级主题
-
-如果当前使用了内置的应用市场插件,在主题更新后会在主题列表中显示更新提示,点击 **立即更新** 按钮即可。
-
-手动升级可以点击主题详情页右上角的 `···` 更多操作按钮,选择其中的 `升级` 选项即可打开升级主题的对话框。
-
-## 重载主题配置
-
-如果当前主题提供的设置项发生变化,可以通过 `···` 更多操作中的 `重载主题配置` 选项对主题配置项进行更新。
-
-## 重置
-
-如果你需要清空所有主题配置并重新配置主题,你可以通过 `···` 更多操作中的 `重置` 选项将主题提供的设置项恢复为默认值。
-
-## 卸载主题
-
-进入已安装主题列表,点击指定主题所在行后方的 `···` 更多操作按钮,选择其中的 `卸载` 选项即可对当前主题进行卸载。
-
-
-
-:::info
-目前提供了 `卸载` 及 `卸载并删除配置` 两种卸载方式。
-仅卸载主题时主题的配置信息会进行保留,当重新安装主题后还可以使用之前已保存的配置。
-:::
diff --git a/docs/user-guide/user-center.md b/docs/user-guide/user-center.md
deleted file mode 100644
index 510d542a..00000000
--- a/docs/user-guide/user-center.md
+++ /dev/null
@@ -1,75 +0,0 @@
----
-title: 个人中心
-description: Halo 个人中心(/uc):资料、认证方式与会话及与 Console 的入口说明。
----
-
-从 Halo 2.11 开始,除了 Console 管理控制台,我们新增加了个人中心,用于管理和用户相关的所有功能。有了个人中心之后,也可以让网站有更多的使用和开发场景。
-
-## 进入个人中心
-
-你可以通过点击 Console 左下角的个人中心图标进入个人中心,也可以直接访问 `/uc` 进入个人中心。
-
-:::info[提示]
-此外,如果用户拥有进入 Console 的权限,也会在个人中心的左侧导航栏中看到 Console 的入口。
-
-详情可见:[创建角色](./users.md#创建角色)
-:::
-
-
-
-## 个人资料
-
-这个页面会显示和用户相关的一些信息。
-
-
-
-## 通知配置
-
-这个页面可以配置用户的通知偏好,可以选择接收哪些类型的通知。
-
-
-
-## 个人令牌
-
-个人令牌是一种用于访问 Halo API 的凭证,可以通过个人令牌访问 Halo 的 RESTful API,而无需通过用户名和密码授权,使用方式可查阅:[RESTful API 介绍](../developer-guide/restful-api/introduction.md)
-
-
-
-创建新的个人令牌:
-
-
-
-- **名称**:个人令牌的名称。
-- **过期时间**:个人令牌的过期时间,不选择则表示永不过期。
-- **描述**:个人令牌的描述信息,用于描述个人令牌的用途。
-- **权限**:个人令牌的权限,可以选择多个权限。
-
-创建好的个人令牌:
-
-
-
-## 两步验证
-
-在这个选项卡中,我们可以配置登录之后两步验证方式,目前支持 TOTP 验证器。
-
-
-
-
-
-## 登录设备
-
-在这里可以看到当前账号的所有登录设备,你也可以在更多按钮中撤销任意设备。
-
-
-
-## 消息
-
-此页面用于显示用户收到的站内消息。
-
-
-
-## 我的文章
-
-Halo 默认为个人中心提供了管理个人文章的功能,每个用户都可以在个人中心创建、编辑自己的文章。当然,也可以通过配置角色权限,自行决定是否开放此功能,可查阅[创建角色](./users.md#创建角色)。
-
-
diff --git a/docusaurus.config.js b/docusaurus.config.js
deleted file mode 100644
index 7c0505f0..00000000
--- a/docusaurus.config.js
+++ /dev/null
@@ -1,265 +0,0 @@
-const { bundledLanguages } = require("shiki");
-const VersionsArchived = require("./versionsArchived.json");
-const { default: rehypeShiki } = require("@shikijs/rehype");
-const { transformerMetaHighlight } = require("@shikijs/transformers");
-const { transformerNotationDiff } = require("@shikijs/transformers");
-const { transformerNotationFocus } = require("@shikijs/transformers");
-const { transformerNotationErrorLevel } = require("@shikijs/transformers");
-const { transformerAddMeta } = require("./src/shiki/meta-transformer");
-
-/** @type {import('@docusaurus/types').Config} */
-const config = {
- title: "Halo 文档",
- tagline: "Halo 的文档站点",
- url: "https://docs.halo.run",
- baseUrl: "/",
- favicon: "img/favicon-96x96.png",
- i18n: {
- defaultLocale: "zh-Hans",
- locales: ["zh-Hans"],
- },
- organizationName: "halo-dev", // Usually your GitHub org/user name.
- projectName: "halo", // Usually your repo name.
- markdown: {
- mermaid: true,
- },
- themes: ["@docusaurus/theme-mermaid"],
- future: {
- faster: true,
- v4: true,
- },
- markdown: {
- mdx1Compat: {
- headingIds: true,
- comments: true,
- },
- },
- presets: [
- [
- "classic",
- /** @type {import('@docusaurus/preset-classic').Options} */
- ({
- docs: {
- sidebarPath: require.resolve("./sidebars.js"),
- // Please change this to your repo.
- editUrl: "https://github.com/halo-dev/docs/edit/main/",
- routeBasePath: "/",
- showLastUpdateTime: true,
- showLastUpdateAuthor: true,
- lastVersion: "2.26",
- versions: {
- current: {
- label: "next",
- path: "next",
- },
- },
- beforeDefaultRehypePlugins: [
- [
- rehypeShiki,
- {
- theme: "catppuccin-mocha",
- langs: Object.keys(bundledLanguages),
- transformers: [
- transformerMetaHighlight(),
- transformerNotationDiff(),
- transformerNotationFocus(),
- transformerNotationErrorLevel(),
- transformerAddMeta(),
- ],
- },
- ],
- ],
- },
- blog: false,
- theme: {
- customCss: [
- require.resolve("./src/css/custom.css"),
- require.resolve("./src/css/shiki.scss"),
- ],
- },
- sitemap: {
- changefreq: "weekly",
- priority: null,
- changefreq: null,
- ignorePatterns: [
- "/next/**",
- "/2.22/**",
- "/2.23/**",
- "/2.24/**",
- "/2.25/**",
- ],
- },
- googleAnalytics: {
- trackingID: "UA-110780416-7",
- },
- gtag: {
- trackingID: "UA-110780416-7",
- },
- }),
- ],
- ],
-
- themeConfig:
- /** @type {import('@docusaurus/preset-classic').ThemeConfig} */
- ({
- docs: {
- sidebar: {
- autoCollapseCategories: true,
- },
- },
- navbar: {
- title: "Halo 文档",
- logo: {
- alt: "Halo Logo",
- src: "https://www.halo.run/upload/2021/03/Adaptive256-463ca9b92e2d40268431018c07735842.png",
- },
- items: [
- {
- type: "docSidebar",
- position: "left",
- sidebarId: "tutorial",
- label: "使用指南",
- },
- {
- type: "docSidebar",
- position: "left",
- sidebarId: "developer",
- label: "开发者指南",
- },
- {
- type: "docsVersionDropdown",
- position: "right",
- dropdownActiveClassDisabled: true,
- dropdownItemsAfter: [
- {
- type: "html",
- value: '
',
- },
- {
- type: "html",
- className: "dropdown-archived-versions",
- value: "Archived versions",
- },
- ...Object.entries(VersionsArchived).map(
- ([versionName, versionUrl]) => ({
- label: versionName,
- href: versionUrl,
- }),
- ),
- {
- to: "/versions",
- label: "All versions",
- },
- ],
- },
- {
- href: "https://www.halo.run",
- label: "官网",
- position: "right",
- },
- {
- href: "https://bbs.halo.run",
- label: "论坛",
- position: "right",
- },
- {
- href: "https://www.lxware.cn/halo?code=mcYhwMkn",
- label: "版本对比",
- position: "right",
- },
- {
- href: "https://github.com/halo-dev/halo",
- label: "GitHub",
- position: "right",
- },
- ],
- },
- footer: {
- style: "dark",
- copyright: `Copyright © 2026 凌霞软件. Built with Docusaurus.`,
- links: [
- {
- title: "关于",
- items: [
- {
- label: "官网",
- href: "https://www.halo.run",
- },
- {
- label: "应用市场",
- href: "https://www.halo.run/store/apps",
- },
- {
- label: "GitHub 组织",
- href: "https://github.com/halo-dev",
- },
- {
- label: "Gitee 组织",
- href: "https://gitee.com/halo-dev",
- },
- {
- label: "版本发布",
- href: "https://releases.halo.run",
- },
- {
- label: "Server Status",
- href: "https://status.halo.run",
- },
- ],
- },
- {
- title: "社区",
- items: [
- {
- label: "官方论坛",
- href: "https://bbs.halo.run",
- },
- {
- label: "微信公众号",
- href: "https://www.halo.run/upload/2021/03/B3C27F16-4890-4633-81CC-20BA4B28F94F-2415126255c749b290312ca22d9bdeb0.jpeg",
- },
- {
- label: "GitHub Issues",
- href: "https://github.com/halo-dev/halo/issues",
- },
- {
- label: "Telegram Channel",
- href: "https://t.me/halo_dev",
- },
- {
- label: "Telegram Group",
- href: "https://t.me/HaloBlog",
- },
- ],
- },
- ],
- },
- zoom: {
- selector: ".markdown :not(a) > img",
- },
- }),
- plugins: [
- require.resolve("docusaurus-plugin-image-zoom"),
- require.resolve("docusaurus-plugin-sass"),
- [
- require.resolve("@docusaurus/plugin-client-redirects"),
- {
- redirects: [
- {
- from: "/developer-guide/appendix/publish-app",
- to: "/developer-guide/app-store/publish-app",
- },
- ],
- },
- ],
- ],
- scripts: [
- {
- src: "https://track.halo.run/api/script.js",
- defer: true,
- "data-site-id": "3",
- },
- ],
-};
-
-module.exports = config;
diff --git a/edgeone.json b/edgeone.json
new file mode 100644
index 00000000..953fa1d9
--- /dev/null
+++ b/edgeone.json
@@ -0,0 +1,163 @@
+{
+ "installCommand": "pnpm install",
+ "buildCommand": "rspress build",
+ "outputDirectory": "./build",
+ "nodeVersion": "24.18.0",
+ "redirects": [
+ {
+ "source": "/next/getting-started/install/*",
+ "destination": "/guide/install/:splat",
+ "statusCode": 301
+ },
+ {
+ "source": "/next/getting-started/*",
+ "destination": "/guide/:splat",
+ "statusCode": 301
+ },
+ {
+ "source": "/next/user-guide/*",
+ "destination": "/guide/use/:splat",
+ "statusCode": 301
+ },
+ {
+ "source": "/next/contribution/*",
+ "destination": "/guide/contribution/:splat",
+ "statusCode": 301
+ },
+ {
+ "source": "/next",
+ "destination": "/",
+ "statusCode": 301
+ },
+ {
+ "source": "/next/*",
+ "destination": "/:splat",
+ "statusCode": 301
+ },
+ {
+ "source": "/getting-started/install/*",
+ "destination": "/guide/install/:splat",
+ "statusCode": 301
+ },
+ {
+ "source": "/getting-started/*",
+ "destination": "/guide/:splat",
+ "statusCode": 301
+ },
+ {
+ "source": "/user-guide/*",
+ "destination": "/guide/use/:splat",
+ "statusCode": 301
+ },
+ {
+ "source": "/contribution/*",
+ "destination": "/guide/contribution/:splat",
+ "statusCode": 301
+ },
+ {
+ "source": "/developer-guide/appendix/publish-app",
+ "destination": "/developer-guide/app-store/publish-app",
+ "statusCode": 301
+ },
+ {
+ "source": "/about",
+ "destination": "/guide/contribution/pr",
+ "statusCode": 301
+ },
+ {
+ "source": "/versions",
+ "destination": "https://v2.archive-docs.halo.run/versions/",
+ "statusCode": 301
+ },
+ {
+ "source": "/category/入门",
+ "destination": "/guide/",
+ "statusCode": 301
+ },
+ {
+ "source": "/category/安装指南",
+ "destination": "/guide/install/",
+ "statusCode": 301
+ },
+ {
+ "source": "/category/云平台",
+ "destination": "/guide/install/cloud/",
+ "statusCode": 301
+ },
+ {
+ "source": "/category/其他指南",
+ "destination": "/guide/install/other/",
+ "statusCode": 301
+ },
+ {
+ "source": "/category/用户指南",
+ "destination": "/guide/use/",
+ "statusCode": 301
+ },
+ {
+ "source": "/category/参与贡献",
+ "destination": "/guide/contribution/issue",
+ "statusCode": 301
+ },
+ {
+ "source": "/category/系统开发",
+ "destination": "/developer-guide/core/",
+ "statusCode": 301
+ },
+ {
+ "source": "/category/插件开发",
+ "destination": "/developer-guide/plugin/",
+ "statusCode": 301
+ },
+ {
+ "source": "/category/基础",
+ "destination": "/developer-guide/plugin/basics/",
+ "statusCode": 301
+ },
+ {
+ "source": "/category/服务端",
+ "destination": "/developer-guide/plugin/basics/server/",
+ "statusCode": 301
+ },
+ {
+ "source": "/category/ui",
+ "destination": "/developer-guide/plugin/basics/ui/",
+ "statusCode": 301
+ },
+ {
+ "source": "/category/api-参考",
+ "destination": "/developer-guide/plugin/api-reference/",
+ "statusCode": 301
+ },
+ {
+ "source": "/category/服务端-1",
+ "destination": "/developer-guide/plugin/api-reference/server/",
+ "statusCode": 301
+ },
+ {
+ "source": "/category/ui-1",
+ "destination": "/developer-guide/plugin/api-reference/ui/",
+ "statusCode": 301
+ },
+ {
+ "source": "/category/案例和最佳实践",
+ "destination": "/developer-guide/plugin/examples/",
+ "statusCode": 301
+ },
+ {
+ "source": "/category/restful-api",
+ "destination": "/developer-guide/restful-api/",
+ "statusCode": 301
+ },
+ {
+ "source": "/category/主题开发",
+ "destination": "/developer-guide/theme/",
+ "statusCode": 301
+ },
+ {
+ "source": "/category/应用市场",
+ "destination": "/developer-guide/app-store/",
+ "statusCode": 301
+ }
+ ]
+}
diff --git a/i18n/zh-Hans/code.json b/i18n/zh-Hans/code.json
deleted file mode 100644
index ff7039d6..00000000
--- a/i18n/zh-Hans/code.json
+++ /dev/null
@@ -1,335 +0,0 @@
-{
- "versionsPage.versionEntry.link": {
- "message": "Documentation"
- },
- "versionsPage.versionEntry.releaseNotes": {
- "message": "Release Notes"
- },
- "theme.ErrorPageContent.title": {
- "message": "页面已崩溃。",
- "description": "The title of the fallback page when the page crashed"
- },
- "theme.BackToTopButton.buttonAriaLabel": {
- "message": "回到顶部",
- "description": "The ARIA label for the back to top button"
- },
- "theme.blog.archive.title": {
- "message": "历史博文",
- "description": "The page & hero title of the blog archive page"
- },
- "theme.blog.archive.description": {
- "message": "历史博文",
- "description": "The page & hero description of the blog archive page"
- },
- "theme.blog.paginator.navAriaLabel": {
- "message": "博文列表分页导航",
- "description": "The ARIA label for the blog pagination"
- },
- "theme.blog.paginator.newerEntries": {
- "message": "较新的博文",
- "description": "The label used to navigate to the newer blog posts page (previous page)"
- },
- "theme.blog.paginator.olderEntries": {
- "message": "较旧的博文",
- "description": "The label used to navigate to the older blog posts page (next page)"
- },
- "theme.blog.post.paginator.navAriaLabel": {
- "message": "博文分页导航",
- "description": "The ARIA label for the blog posts pagination"
- },
- "theme.blog.post.paginator.newerPost": {
- "message": "较新一篇",
- "description": "The blog post button label to navigate to the newer/previous post"
- },
- "theme.blog.post.paginator.olderPost": {
- "message": "较旧一篇",
- "description": "The blog post button label to navigate to the older/next post"
- },
- "theme.tags.tagsPageLink": {
- "message": "查看所有标签",
- "description": "The label of the link targeting the tag list page"
- },
- "theme.colorToggle.ariaLabel.mode.system": {
- "message": "system mode",
- "description": "The name for the system color mode"
- },
- "theme.colorToggle.ariaLabel.mode.light": {
- "message": "浅色模式",
- "description": "The name for the light color mode"
- },
- "theme.colorToggle.ariaLabel.mode.dark": {
- "message": "暗黑模式",
- "description": "The name for the dark color mode"
- },
- "theme.colorToggle.ariaLabel": {
- "message": "切换浅色/暗黑模式(当前为{mode})",
- "description": "The ARIA label for the color mode toggle"
- },
- "theme.docs.breadcrumbs.navAriaLabel": {
- "message": "页面路径",
- "description": "The ARIA label for the breadcrumbs"
- },
- "theme.docs.paginator.navAriaLabel": {
- "message": "文件选项卡",
- "description": "The ARIA label for the docs pagination"
- },
- "theme.docs.paginator.previous": {
- "message": "上一页",
- "description": "The label used to navigate to the previous doc"
- },
- "theme.docs.paginator.next": {
- "message": "下一页",
- "description": "The label used to navigate to the next doc"
- },
- "theme.docs.tagDocListPageTitle.nDocsTagged": {
- "message": "{count} 篇文档带有标签",
- "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
- },
- "theme.docs.tagDocListPageTitle": {
- "message": "{nDocsTagged}「{tagName}」",
- "description": "The title of the page for a docs tag"
- },
- "theme.docs.versionBadge.label": {
- "message": "版本:{versionLabel}"
- },
- "theme.docs.versions.unreleasedVersionLabel": {
- "message": "此为 {siteTitle} {versionLabel} 版尚未发行的文档。",
- "description": "The label used to tell the user that he's browsing an unreleased doc version"
- },
- "theme.docs.versions.unmaintainedVersionLabel": {
- "message": "此为 {siteTitle} {versionLabel} 版的文档,现已不再积极维护。",
- "description": "The label used to tell the user that he's browsing an unmaintained doc version"
- },
- "theme.docs.versions.latestVersionSuggestionLabel": {
- "message": "最新的文档请参阅 {latestVersionLink} ({versionLabel})。",
- "description": "The label used to tell the user to check the latest version"
- },
- "theme.docs.versions.latestVersionLinkLabel": {
- "message": "最新版本",
- "description": "The label used for the latest version suggestion link label"
- },
- "theme.common.editThisPage": {
- "message": "编辑此页",
- "description": "The link label to edit the current page"
- },
- "theme.common.headingLinkTitle": {
- "message": "{heading}的直接链接",
- "description": "Title for link to heading"
- },
- "theme.lastUpdated.atDate": {
- "message": "于 {date} ",
- "description": "The words used to describe on which date a page has been last updated"
- },
- "theme.lastUpdated.byUser": {
- "message": "由 {user} ",
- "description": "The words used to describe by who the page has been last updated"
- },
- "theme.lastUpdated.lastUpdatedAtBy": {
- "message": "最后{byUser}{atDate}更新",
- "description": "The sentence used to display when a page has been last updated, and by who"
- },
- "theme.NotFound.title": {
- "message": "找不到页面",
- "description": "The title of the 404 page"
- },
- "theme.navbar.mobileVersionsDropdown.label": {
- "message": "选择版本",
- "description": "The label for the navbar versions dropdown on mobile view"
- },
- "theme.tags.tagsListLabel": {
- "message": "标签:",
- "description": "The label alongside a tag list"
- },
- "theme.AnnouncementBar.closeButtonAriaLabel": {
- "message": "关闭",
- "description": "The ARIA label for close button of announcement bar"
- },
- "theme.admonition.caution": {
- "message": "警告",
- "description": "The default label used for the Caution admonition (:::caution)"
- },
- "theme.admonition.danger": {
- "message": "危险",
- "description": "The default label used for the Danger admonition (:::danger)"
- },
- "theme.admonition.info": {
- "message": "信息",
- "description": "The default label used for the Info admonition (:::info)"
- },
- "theme.admonition.note": {
- "message": "备注",
- "description": "The default label used for the Note admonition (:::note)"
- },
- "theme.admonition.tip": {
- "message": "提示",
- "description": "The default label used for the Tip admonition (:::tip)"
- },
- "theme.admonition.warning": {
- "message": "注意",
- "description": "The default label used for the Warning admonition (:::warning)"
- },
- "theme.blog.sidebar.navAriaLabel": {
- "message": "最近博文导航",
- "description": "The ARIA label for recent posts in the blog sidebar"
- },
- "theme.DocSidebarItem.expandCategoryAriaLabel": {
- "message": "展开侧边栏分类 '{label}'",
- "description": "The ARIA label to expand the sidebar category"
- },
- "theme.DocSidebarItem.collapseCategoryAriaLabel": {
- "message": "折叠侧边栏分类 '{label}'",
- "description": "The ARIA label to collapse the sidebar category"
- },
- "theme.IconExternalLink.ariaLabel": {
- "message": "(opens in new tab)",
- "description": "The ARIA label for the external link icon"
- },
- "theme.NavBar.navAriaLabel": {
- "message": "主导航",
- "description": "The ARIA label for the main navigation"
- },
- "theme.NotFound.p1": {
- "message": "我们找不到您要找的页面。",
- "description": "The first paragraph of the 404 page"
- },
- "theme.NotFound.p2": {
- "message": "请联系原始链接来源网站的所有者,并告知他们链接已损坏。",
- "description": "The 2nd paragraph of the 404 page"
- },
- "theme.navbar.mobileLanguageDropdown.label": {
- "message": "选择语言",
- "description": "The label for the mobile language switcher dropdown"
- },
- "theme.TOCCollapsible.toggleButtonLabel": {
- "message": "本页总览",
- "description": "The label used by the button on the collapsible TOC component"
- },
- "theme.blog.post.readMore": {
- "message": "阅读更多",
- "description": "The label used in blog post item excerpts to link to full blog posts"
- },
- "theme.blog.post.readMoreLabel": {
- "message": "阅读 {title} 的全文",
- "description": "The ARIA label for the link to full blog posts from excerpts"
- },
- "theme.blog.post.readingTime.plurals": {
- "message": "阅读需 {readingTime} 分钟",
- "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
- },
- "theme.CodeBlock.copy": {
- "message": "复制",
- "description": "The copy button label on code blocks"
- },
- "theme.CodeBlock.copied": {
- "message": "复制成功",
- "description": "The copied button label on code blocks"
- },
- "theme.CodeBlock.copyButtonAriaLabel": {
- "message": "复制代码到剪贴板",
- "description": "The ARIA label for copy code blocks button"
- },
- "theme.docs.breadcrumbs.home": {
- "message": "主页面",
- "description": "The ARIA label for the home page in the breadcrumbs"
- },
- "theme.CodeBlock.wordWrapToggle": {
- "message": "切换自动换行",
- "description": "The title attribute for toggle word wrapping button of code block lines"
- },
- "theme.docs.sidebar.collapseButtonTitle": {
- "message": "收起侧边栏",
- "description": "The title attribute for collapse button of doc sidebar"
- },
- "theme.docs.sidebar.collapseButtonAriaLabel": {
- "message": "收起侧边栏",
- "description": "The title attribute for collapse button of doc sidebar"
- },
- "theme.docs.sidebar.navAriaLabel": {
- "message": "文档侧边栏",
- "description": "The ARIA label for the sidebar navigation"
- },
- "theme.docs.sidebar.closeSidebarButtonAriaLabel": {
- "message": "关闭导航栏",
- "description": "The ARIA label for close button of mobile sidebar"
- },
- "theme.docs.sidebar.toggleSidebarButtonAriaLabel": {
- "message": "切换导航栏",
- "description": "The ARIA label for hamburger menu button of mobile navigation"
- },
- "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": {
- "message": "← 回到主菜单",
- "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"
- },
- "theme.docs.sidebar.expandButtonTitle": {
- "message": "展开侧边栏",
- "description": "The ARIA label and title attribute for expand button of doc sidebar"
- },
- "theme.docs.sidebar.expandButtonAriaLabel": {
- "message": "展开侧边栏",
- "description": "The ARIA label and title attribute for expand button of doc sidebar"
- },
- "theme.navbar.mobileDropdown.collapseButton.expandAriaLabel": {
- "message": "Expand the dropdown",
- "description": "The ARIA label of the button to expand the mobile dropdown navbar item"
- },
- "theme.navbar.mobileDropdown.collapseButton.collapseAriaLabel": {
- "message": "Collapse the dropdown",
- "description": "The ARIA label of the button to collapse the mobile dropdown navbar item"
- },
- "theme.blog.post.plurals": {
- "message": "{count} 篇博文",
- "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
- },
- "theme.blog.tagTitle": {
- "message": "{nPosts} 含有标签「{tagName}」",
- "description": "The title of the page for a blog tag"
- },
- "theme.blog.author.pageTitle": {
- "message": "{authorName} - {nPosts}",
- "description": "The title of the page for a blog author"
- },
- "theme.blog.authorsList.pageTitle": {
- "message": "作者",
- "description": "The title of the authors page"
- },
- "theme.blog.authorsList.viewAll": {
- "message": "查看所有作者",
- "description": "The label of the link targeting the blog authors page"
- },
- "theme.blog.author.noPosts": {
- "message": "该作者尚未撰写任何文章。",
- "description": "The text for authors with 0 blog post"
- },
- "theme.contentVisibility.unlistedBanner.title": {
- "message": "未列出页",
- "description": "The unlisted content banner title"
- },
- "theme.contentVisibility.unlistedBanner.message": {
- "message": "此页面未列出。搜索引擎不会对其索引,只有拥有直接链接的用户才能访问。",
- "description": "The unlisted content banner message"
- },
- "theme.contentVisibility.draftBanner.title": {
- "message": "草稿页",
- "description": "The draft content banner title"
- },
- "theme.contentVisibility.draftBanner.message": {
- "message": "此页面是草稿,仅在开发环境中可见,不会包含在正式版本中。",
- "description": "The draft content banner message"
- },
- "theme.docs.DocCard.categoryDescription.plurals": {
- "message": "{count} 个项目",
- "description": "The default description for a category card in the generated index about how many items this category includes"
- },
- "theme.ErrorPageContent.tryAgain": {
- "message": "重试",
- "description": "The label of the button to try again rendering when the React error boundary captures an error"
- },
- "theme.common.skipToMainContent": {
- "message": "跳到主要内容",
- "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"
- },
- "theme.tags.tagsPageTitle": {
- "message": "标签",
- "description": "The title of the tag list page"
- }
-}
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current.json b/i18n/zh-Hans/docusaurus-plugin-content-docs/current.json
deleted file mode 100644
index f8152b8d..00000000
--- a/i18n/zh-Hans/docusaurus-plugin-content-docs/current.json
+++ /dev/null
@@ -1,130 +0,0 @@
-{
- "version.label": {
- "message": "next",
- "description": "The label for version current"
- },
- "sidebar.tutorial.category.入门": {
- "message": "入门",
- "description": "The label for category '入门' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.安装指南": {
- "message": "安装指南",
- "description": "The label for category '安装指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.云平台": {
- "message": "云平台",
- "description": "The label for category '云平台' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.其他指南": {
- "message": "其他指南",
- "description": "The label for category '其他指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.用户指南": {
- "message": "用户指南",
- "description": "The label for category '用户指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.商城": {
- "message": "商城",
- "description": "The label for category '商城' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.参与贡献": {
- "message": "参与贡献",
- "description": "The label for category '参与贡献' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.link.Zeabur 一键部署": {
- "message": "Zeabur 一键部署",
- "description": "The label for link 'Zeabur 一键部署' in sidebar 'tutorial', linking to 'https://zeabur.com/docs/zh-CN/marketplace/halo'"
- },
- "sidebar.tutorial.link.Rainbond 一键部署": {
- "message": "Rainbond 一键部署",
- "description": "The label for link 'Rainbond 一键部署' in sidebar 'tutorial', linking to 'https://hub.grapps.cn/marketplace/apps/1255'"
- },
- "sidebar.tutorial.link.更新日志": {
- "message": "更新日志",
- "description": "The label for link '更新日志' in sidebar 'tutorial', linking to 'https://releases.halo.run/changelog'"
- },
- "sidebar.developer.category.系统开发": {
- "message": "系统开发",
- "description": "The label for category '系统开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.插件开发": {
- "message": "插件开发",
- "description": "The label for category '插件开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.基础": {
- "message": "基础",
- "description": "The label for category '基础' in sidebar 'developer'"
- },
- "sidebar.developer.category.basics-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.basics-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.API 参考": {
- "message": "API 参考",
- "description": "The label for category 'API 参考' in sidebar 'developer'"
- },
- "sidebar.developer.category.api-reference-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.api-reference-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.组件": {
- "message": "组件",
- "description": "The label for category '组件' in sidebar 'developer'"
- },
- "sidebar.developer.category.扩展点和定制化": {
- "message": "扩展点和定制化",
- "description": "The label for category '扩展点和定制化' in sidebar 'developer'"
- },
- "sidebar.developer.category.extension-points-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.extension-points-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.与其他插件交互": {
- "message": "与其他插件交互",
- "description": "The label for category '与其他插件交互' in sidebar 'developer'"
- },
- "sidebar.developer.category.安全和权限管理": {
- "message": "安全和权限管理",
- "description": "The label for category '安全和权限管理' in sidebar 'developer'"
- },
- "sidebar.developer.category.案例和最佳实践": {
- "message": "案例和最佳实践",
- "description": "The label for category '案例和最佳实践' in sidebar 'developer'"
- },
- "sidebar.developer.category.主题开发": {
- "message": "主题开发",
- "description": "The label for category '主题开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.模板编写": {
- "message": "模板编写",
- "description": "The label for category '模板编写' in sidebar 'developer'"
- },
- "sidebar.developer.category.Finder API": {
- "message": "Finder API",
- "description": "The label for category 'Finder API' in sidebar 'developer'"
- },
- "sidebar.developer.category.RESTful API": {
- "message": "RESTful API",
- "description": "The label for category 'RESTful API' in sidebar 'developer'"
- },
- "sidebar.developer.category.应用市场": {
- "message": "应用市场",
- "description": "The label for category '应用市场' in sidebar 'developer'"
- },
- "sidebar.developer.category.附录": {
- "message": "附录",
- "description": "The label for category '附录' in sidebar 'developer'"
- }
-}
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.20.json b/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.20.json
deleted file mode 100644
index 85fca1b9..00000000
--- a/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.20.json
+++ /dev/null
@@ -1,114 +0,0 @@
-{
- "version.label": {
- "message": "2.20",
- "description": "The label for version 2.20"
- },
- "sidebar.tutorial.category.入门": {
- "message": "入门",
- "description": "The label for category '入门' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.安装指南": {
- "message": "安装指南",
- "description": "The label for category '安装指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.云平台": {
- "message": "云平台",
- "description": "The label for category '云平台' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.其他指南": {
- "message": "其他指南",
- "description": "The label for category '其他指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.用户指南": {
- "message": "用户指南",
- "description": "The label for category '用户指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.参与贡献": {
- "message": "参与贡献",
- "description": "The label for category '参与贡献' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.link.Zeabur 一键部署": {
- "message": "Zeabur 一键部署",
- "description": "The label for link 'Zeabur 一键部署' in sidebar 'tutorial', linking to 'https://zeabur.com/docs/zh-CN/marketplace/halo'"
- },
- "sidebar.tutorial.link.Rainbond 一键部署": {
- "message": "Rainbond 一键部署",
- "description": "The label for link 'Rainbond 一键部署' in sidebar 'tutorial', linking to 'https://hub.grapps.cn/marketplace/apps/1255'"
- },
- "sidebar.developer.category.系统开发": {
- "message": "系统开发",
- "description": "The label for category '系统开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.插件开发": {
- "message": "插件开发",
- "description": "The label for category '插件开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.基础": {
- "message": "基础",
- "description": "The label for category '基础' in sidebar 'developer'"
- },
- "sidebar.developer.category.basics-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.basics-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.API 参考": {
- "message": "API 参考",
- "description": "The label for category 'API 参考' in sidebar 'developer'"
- },
- "sidebar.developer.category.api-reference-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.api-reference-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.组件": {
- "message": "组件",
- "description": "The label for category '组件' in sidebar 'developer'"
- },
- "sidebar.developer.category.扩展点和定制化": {
- "message": "扩展点和定制化",
- "description": "The label for category '扩展点和定制化' in sidebar 'developer'"
- },
- "sidebar.developer.category.extension-points-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.extension-points-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.与其他插件交互": {
- "message": "与其他插件交互",
- "description": "The label for category '与其他插件交互' in sidebar 'developer'"
- },
- "sidebar.developer.category.安全和权限管理": {
- "message": "安全和权限管理",
- "description": "The label for category '安全和权限管理' in sidebar 'developer'"
- },
- "sidebar.developer.category.案例和最佳实践": {
- "message": "案例和最佳实践",
- "description": "The label for category '案例和最佳实践' in sidebar 'developer'"
- },
- "sidebar.developer.category.主题开发": {
- "message": "主题开发",
- "description": "The label for category '主题开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.模板编写": {
- "message": "模板编写",
- "description": "The label for category '模板编写' in sidebar 'developer'"
- },
- "sidebar.developer.category.Finder API": {
- "message": "Finder API",
- "description": "The label for category 'Finder API' in sidebar 'developer'"
- },
- "sidebar.developer.category.RESTful API": {
- "message": "RESTful API",
- "description": "The label for category 'RESTful API' in sidebar 'developer'"
- }
-}
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.21.json b/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.21.json
deleted file mode 100644
index fe9c0c4b..00000000
--- a/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.21.json
+++ /dev/null
@@ -1,118 +0,0 @@
-{
- "version.label": {
- "message": "2.21",
- "description": "The label for version 2.21"
- },
- "sidebar.tutorial.category.入门": {
- "message": "入门",
- "description": "The label for category '入门' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.安装指南": {
- "message": "安装指南",
- "description": "The label for category '安装指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.云平台": {
- "message": "云平台",
- "description": "The label for category '云平台' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.其他指南": {
- "message": "其他指南",
- "description": "The label for category '其他指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.用户指南": {
- "message": "用户指南",
- "description": "The label for category '用户指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.参与贡献": {
- "message": "参与贡献",
- "description": "The label for category '参与贡献' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.link.Zeabur 一键部署": {
- "message": "Zeabur 一键部署",
- "description": "The label for link 'Zeabur 一键部署' in sidebar 'tutorial', linking to 'https://zeabur.com/docs/zh-CN/marketplace/halo'"
- },
- "sidebar.tutorial.link.Rainbond 一键部署": {
- "message": "Rainbond 一键部署",
- "description": "The label for link 'Rainbond 一键部署' in sidebar 'tutorial', linking to 'https://hub.grapps.cn/marketplace/apps/1255'"
- },
- "sidebar.developer.category.系统开发": {
- "message": "系统开发",
- "description": "The label for category '系统开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.插件开发": {
- "message": "插件开发",
- "description": "The label for category '插件开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.基础": {
- "message": "基础",
- "description": "The label for category '基础' in sidebar 'developer'"
- },
- "sidebar.developer.category.basics-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.basics-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.API 参考": {
- "message": "API 参考",
- "description": "The label for category 'API 参考' in sidebar 'developer'"
- },
- "sidebar.developer.category.api-reference-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.api-reference-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.组件": {
- "message": "组件",
- "description": "The label for category '组件' in sidebar 'developer'"
- },
- "sidebar.developer.category.扩展点和定制化": {
- "message": "扩展点和定制化",
- "description": "The label for category '扩展点和定制化' in sidebar 'developer'"
- },
- "sidebar.developer.category.extension-points-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.extension-points-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.与其他插件交互": {
- "message": "与其他插件交互",
- "description": "The label for category '与其他插件交互' in sidebar 'developer'"
- },
- "sidebar.developer.category.安全和权限管理": {
- "message": "安全和权限管理",
- "description": "The label for category '安全和权限管理' in sidebar 'developer'"
- },
- "sidebar.developer.category.案例和最佳实践": {
- "message": "案例和最佳实践",
- "description": "The label for category '案例和最佳实践' in sidebar 'developer'"
- },
- "sidebar.developer.category.主题开发": {
- "message": "主题开发",
- "description": "The label for category '主题开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.模板编写": {
- "message": "模板编写",
- "description": "The label for category '模板编写' in sidebar 'developer'"
- },
- "sidebar.developer.category.Finder API": {
- "message": "Finder API",
- "description": "The label for category 'Finder API' in sidebar 'developer'"
- },
- "sidebar.developer.category.RESTful API": {
- "message": "RESTful API",
- "description": "The label for category 'RESTful API' in sidebar 'developer'"
- },
- "sidebar.developer.category.附录": {
- "message": "附录",
- "description": "The label for category '附录' in sidebar 'developer'"
- }
-}
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.22.json b/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.22.json
deleted file mode 100644
index 7319b2a9..00000000
--- a/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.22.json
+++ /dev/null
@@ -1,122 +0,0 @@
-{
- "version.label": {
- "message": "2.22",
- "description": "The label for version 2.22"
- },
- "sidebar.tutorial.category.入门": {
- "message": "入门",
- "description": "The label for category '入门' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.安装指南": {
- "message": "安装指南",
- "description": "The label for category '安装指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.云平台": {
- "message": "云平台",
- "description": "The label for category '云平台' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.其他指南": {
- "message": "其他指南",
- "description": "The label for category '其他指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.用户指南": {
- "message": "用户指南",
- "description": "The label for category '用户指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.商城": {
- "message": "商城",
- "description": "The label for category '商城' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.参与贡献": {
- "message": "参与贡献",
- "description": "The label for category '参与贡献' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.link.Zeabur 一键部署": {
- "message": "Zeabur 一键部署",
- "description": "The label for link 'Zeabur 一键部署' in sidebar 'tutorial', linking to 'https://zeabur.com/docs/zh-CN/marketplace/halo'"
- },
- "sidebar.tutorial.link.Rainbond 一键部署": {
- "message": "Rainbond 一键部署",
- "description": "The label for link 'Rainbond 一键部署' in sidebar 'tutorial', linking to 'https://hub.grapps.cn/marketplace/apps/1255'"
- },
- "sidebar.developer.category.系统开发": {
- "message": "系统开发",
- "description": "The label for category '系统开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.插件开发": {
- "message": "插件开发",
- "description": "The label for category '插件开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.基础": {
- "message": "基础",
- "description": "The label for category '基础' in sidebar 'developer'"
- },
- "sidebar.developer.category.basics-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.basics-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.API 参考": {
- "message": "API 参考",
- "description": "The label for category 'API 参考' in sidebar 'developer'"
- },
- "sidebar.developer.category.api-reference-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.api-reference-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.组件": {
- "message": "组件",
- "description": "The label for category '组件' in sidebar 'developer'"
- },
- "sidebar.developer.category.扩展点和定制化": {
- "message": "扩展点和定制化",
- "description": "The label for category '扩展点和定制化' in sidebar 'developer'"
- },
- "sidebar.developer.category.extension-points-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.extension-points-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.与其他插件交互": {
- "message": "与其他插件交互",
- "description": "The label for category '与其他插件交互' in sidebar 'developer'"
- },
- "sidebar.developer.category.安全和权限管理": {
- "message": "安全和权限管理",
- "description": "The label for category '安全和权限管理' in sidebar 'developer'"
- },
- "sidebar.developer.category.案例和最佳实践": {
- "message": "案例和最佳实践",
- "description": "The label for category '案例和最佳实践' in sidebar 'developer'"
- },
- "sidebar.developer.category.主题开发": {
- "message": "主题开发",
- "description": "The label for category '主题开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.模板编写": {
- "message": "模板编写",
- "description": "The label for category '模板编写' in sidebar 'developer'"
- },
- "sidebar.developer.category.Finder API": {
- "message": "Finder API",
- "description": "The label for category 'Finder API' in sidebar 'developer'"
- },
- "sidebar.developer.category.RESTful API": {
- "message": "RESTful API",
- "description": "The label for category 'RESTful API' in sidebar 'developer'"
- },
- "sidebar.developer.category.附录": {
- "message": "附录",
- "description": "The label for category '附录' in sidebar 'developer'"
- }
-}
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.23.json b/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.23.json
deleted file mode 100644
index 5c844584..00000000
--- a/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.23.json
+++ /dev/null
@@ -1,126 +0,0 @@
-{
- "version.label": {
- "message": "2.23",
- "description": "The label for version 2.23"
- },
- "sidebar.tutorial.category.入门": {
- "message": "入门",
- "description": "The label for category '入门' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.安装指南": {
- "message": "安装指南",
- "description": "The label for category '安装指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.云平台": {
- "message": "云平台",
- "description": "The label for category '云平台' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.其他指南": {
- "message": "其他指南",
- "description": "The label for category '其他指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.用户指南": {
- "message": "用户指南",
- "description": "The label for category '用户指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.商城": {
- "message": "商城",
- "description": "The label for category '商城' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.参与贡献": {
- "message": "参与贡献",
- "description": "The label for category '参与贡献' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.link.Zeabur 一键部署": {
- "message": "Zeabur 一键部署",
- "description": "The label for link 'Zeabur 一键部署' in sidebar 'tutorial', linking to 'https://zeabur.com/docs/zh-CN/marketplace/halo'"
- },
- "sidebar.tutorial.link.Rainbond 一键部署": {
- "message": "Rainbond 一键部署",
- "description": "The label for link 'Rainbond 一键部署' in sidebar 'tutorial', linking to 'https://hub.grapps.cn/marketplace/apps/1255'"
- },
- "sidebar.tutorial.link.更新日志": {
- "message": "更新日志",
- "description": "The label for link '更新日志' in sidebar 'tutorial', linking to 'https://releases.halo.run/changelog'"
- },
- "sidebar.developer.category.系统开发": {
- "message": "系统开发",
- "description": "The label for category '系统开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.插件开发": {
- "message": "插件开发",
- "description": "The label for category '插件开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.基础": {
- "message": "基础",
- "description": "The label for category '基础' in sidebar 'developer'"
- },
- "sidebar.developer.category.basics-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.basics-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.API 参考": {
- "message": "API 参考",
- "description": "The label for category 'API 参考' in sidebar 'developer'"
- },
- "sidebar.developer.category.api-reference-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.api-reference-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.组件": {
- "message": "组件",
- "description": "The label for category '组件' in sidebar 'developer'"
- },
- "sidebar.developer.category.扩展点和定制化": {
- "message": "扩展点和定制化",
- "description": "The label for category '扩展点和定制化' in sidebar 'developer'"
- },
- "sidebar.developer.category.extension-points-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.extension-points-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.与其他插件交互": {
- "message": "与其他插件交互",
- "description": "The label for category '与其他插件交互' in sidebar 'developer'"
- },
- "sidebar.developer.category.安全和权限管理": {
- "message": "安全和权限管理",
- "description": "The label for category '安全和权限管理' in sidebar 'developer'"
- },
- "sidebar.developer.category.案例和最佳实践": {
- "message": "案例和最佳实践",
- "description": "The label for category '案例和最佳实践' in sidebar 'developer'"
- },
- "sidebar.developer.category.主题开发": {
- "message": "主题开发",
- "description": "The label for category '主题开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.模板编写": {
- "message": "模板编写",
- "description": "The label for category '模板编写' in sidebar 'developer'"
- },
- "sidebar.developer.category.Finder API": {
- "message": "Finder API",
- "description": "The label for category 'Finder API' in sidebar 'developer'"
- },
- "sidebar.developer.category.RESTful API": {
- "message": "RESTful API",
- "description": "The label for category 'RESTful API' in sidebar 'developer'"
- },
- "sidebar.developer.category.附录": {
- "message": "附录",
- "description": "The label for category '附录' in sidebar 'developer'"
- }
-}
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.24.json b/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.24.json
deleted file mode 100644
index 19907142..00000000
--- a/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.24.json
+++ /dev/null
@@ -1,130 +0,0 @@
-{
- "version.label": {
- "message": "2.24",
- "description": "The label for version 2.24"
- },
- "sidebar.tutorial.category.入门": {
- "message": "入门",
- "description": "The label for category '入门' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.安装指南": {
- "message": "安装指南",
- "description": "The label for category '安装指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.云平台": {
- "message": "云平台",
- "description": "The label for category '云平台' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.其他指南": {
- "message": "其他指南",
- "description": "The label for category '其他指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.用户指南": {
- "message": "用户指南",
- "description": "The label for category '用户指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.商城": {
- "message": "商城",
- "description": "The label for category '商城' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.参与贡献": {
- "message": "参与贡献",
- "description": "The label for category '参与贡献' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.link.Zeabur 一键部署": {
- "message": "Zeabur 一键部署",
- "description": "The label for link 'Zeabur 一键部署' in sidebar 'tutorial', linking to 'https://zeabur.com/docs/zh-CN/marketplace/halo'"
- },
- "sidebar.tutorial.link.Rainbond 一键部署": {
- "message": "Rainbond 一键部署",
- "description": "The label for link 'Rainbond 一键部署' in sidebar 'tutorial', linking to 'https://hub.grapps.cn/marketplace/apps/1255'"
- },
- "sidebar.tutorial.link.更新日志": {
- "message": "更新日志",
- "description": "The label for link '更新日志' in sidebar 'tutorial', linking to 'https://releases.halo.run/changelog'"
- },
- "sidebar.developer.category.系统开发": {
- "message": "系统开发",
- "description": "The label for category '系统开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.插件开发": {
- "message": "插件开发",
- "description": "The label for category '插件开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.基础": {
- "message": "基础",
- "description": "The label for category '基础' in sidebar 'developer'"
- },
- "sidebar.developer.category.basics-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.basics-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.API 参考": {
- "message": "API 参考",
- "description": "The label for category 'API 参考' in sidebar 'developer'"
- },
- "sidebar.developer.category.api-reference-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.api-reference-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.组件": {
- "message": "组件",
- "description": "The label for category '组件' in sidebar 'developer'"
- },
- "sidebar.developer.category.扩展点和定制化": {
- "message": "扩展点和定制化",
- "description": "The label for category '扩展点和定制化' in sidebar 'developer'"
- },
- "sidebar.developer.category.extension-points-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.extension-points-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.与其他插件交互": {
- "message": "与其他插件交互",
- "description": "The label for category '与其他插件交互' in sidebar 'developer'"
- },
- "sidebar.developer.category.安全和权限管理": {
- "message": "安全和权限管理",
- "description": "The label for category '安全和权限管理' in sidebar 'developer'"
- },
- "sidebar.developer.category.案例和最佳实践": {
- "message": "案例和最佳实践",
- "description": "The label for category '案例和最佳实践' in sidebar 'developer'"
- },
- "sidebar.developer.category.主题开发": {
- "message": "主题开发",
- "description": "The label for category '主题开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.模板编写": {
- "message": "模板编写",
- "description": "The label for category '模板编写' in sidebar 'developer'"
- },
- "sidebar.developer.category.Finder API": {
- "message": "Finder API",
- "description": "The label for category 'Finder API' in sidebar 'developer'"
- },
- "sidebar.developer.category.RESTful API": {
- "message": "RESTful API",
- "description": "The label for category 'RESTful API' in sidebar 'developer'"
- },
- "sidebar.developer.category.应用市场": {
- "message": "应用市场",
- "description": "The label for category '应用市场' in sidebar 'developer'"
- },
- "sidebar.developer.category.附录": {
- "message": "附录",
- "description": "The label for category '附录' in sidebar 'developer'"
- }
-}
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.25.json b/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.25.json
deleted file mode 100644
index 6b876033..00000000
--- a/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.25.json
+++ /dev/null
@@ -1,130 +0,0 @@
-{
- "version.label": {
- "message": "2.25",
- "description": "The label for version 2.25"
- },
- "sidebar.tutorial.category.入门": {
- "message": "入门",
- "description": "The label for category '入门' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.安装指南": {
- "message": "安装指南",
- "description": "The label for category '安装指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.云平台": {
- "message": "云平台",
- "description": "The label for category '云平台' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.其他指南": {
- "message": "其他指南",
- "description": "The label for category '其他指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.用户指南": {
- "message": "用户指南",
- "description": "The label for category '用户指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.商城": {
- "message": "商城",
- "description": "The label for category '商城' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.参与贡献": {
- "message": "参与贡献",
- "description": "The label for category '参与贡献' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.link.Zeabur 一键部署": {
- "message": "Zeabur 一键部署",
- "description": "The label for link 'Zeabur 一键部署' in sidebar 'tutorial', linking to 'https://zeabur.com/docs/zh-CN/marketplace/halo'"
- },
- "sidebar.tutorial.link.Rainbond 一键部署": {
- "message": "Rainbond 一键部署",
- "description": "The label for link 'Rainbond 一键部署' in sidebar 'tutorial', linking to 'https://hub.grapps.cn/marketplace/apps/1255'"
- },
- "sidebar.tutorial.link.更新日志": {
- "message": "更新日志",
- "description": "The label for link '更新日志' in sidebar 'tutorial', linking to 'https://releases.halo.run/changelog'"
- },
- "sidebar.developer.category.系统开发": {
- "message": "系统开发",
- "description": "The label for category '系统开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.插件开发": {
- "message": "插件开发",
- "description": "The label for category '插件开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.基础": {
- "message": "基础",
- "description": "The label for category '基础' in sidebar 'developer'"
- },
- "sidebar.developer.category.basics-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.basics-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.API 参考": {
- "message": "API 参考",
- "description": "The label for category 'API 参考' in sidebar 'developer'"
- },
- "sidebar.developer.category.api-reference-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.api-reference-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.组件": {
- "message": "组件",
- "description": "The label for category '组件' in sidebar 'developer'"
- },
- "sidebar.developer.category.扩展点和定制化": {
- "message": "扩展点和定制化",
- "description": "The label for category '扩展点和定制化' in sidebar 'developer'"
- },
- "sidebar.developer.category.extension-points-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.extension-points-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.与其他插件交互": {
- "message": "与其他插件交互",
- "description": "The label for category '与其他插件交互' in sidebar 'developer'"
- },
- "sidebar.developer.category.安全和权限管理": {
- "message": "安全和权限管理",
- "description": "The label for category '安全和权限管理' in sidebar 'developer'"
- },
- "sidebar.developer.category.案例和最佳实践": {
- "message": "案例和最佳实践",
- "description": "The label for category '案例和最佳实践' in sidebar 'developer'"
- },
- "sidebar.developer.category.主题开发": {
- "message": "主题开发",
- "description": "The label for category '主题开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.模板编写": {
- "message": "模板编写",
- "description": "The label for category '模板编写' in sidebar 'developer'"
- },
- "sidebar.developer.category.Finder API": {
- "message": "Finder API",
- "description": "The label for category 'Finder API' in sidebar 'developer'"
- },
- "sidebar.developer.category.RESTful API": {
- "message": "RESTful API",
- "description": "The label for category 'RESTful API' in sidebar 'developer'"
- },
- "sidebar.developer.category.应用市场": {
- "message": "应用市场",
- "description": "The label for category '应用市场' in sidebar 'developer'"
- },
- "sidebar.developer.category.附录": {
- "message": "附录",
- "description": "The label for category '附录' in sidebar 'developer'"
- }
-}
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.26.json b/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.26.json
deleted file mode 100644
index 6402cd69..00000000
--- a/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.26.json
+++ /dev/null
@@ -1,126 +0,0 @@
-{
- "version.label": {
- "message": "2.26",
- "description": "The label for version 2.26"
- },
- "sidebar.tutorial.category.入门": {
- "message": "入门",
- "description": "The label for category '入门' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.安装指南": {
- "message": "安装指南",
- "description": "The label for category '安装指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.云平台": {
- "message": "云平台",
- "description": "The label for category '云平台' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.其他指南": {
- "message": "其他指南",
- "description": "The label for category '其他指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.用户指南": {
- "message": "用户指南",
- "description": "The label for category '用户指南' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.商城": {
- "message": "商城",
- "description": "The label for category '商城' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.category.参与贡献": {
- "message": "参与贡献",
- "description": "The label for category '参与贡献' in sidebar 'tutorial'"
- },
- "sidebar.tutorial.link.Zeabur 一键部署": {
- "message": "Zeabur 一键部署",
- "description": "The label for link 'Zeabur 一键部署' in sidebar 'tutorial', linking to 'https://zeabur.com/docs/zh-CN/marketplace/halo'"
- },
- "sidebar.tutorial.link.Rainbond 一键部署": {
- "message": "Rainbond 一键部署",
- "description": "The label for link 'Rainbond 一键部署' in sidebar 'tutorial', linking to 'https://hub.grapps.cn/marketplace/apps/1255'"
- },
- "sidebar.tutorial.link.更新日志": {
- "message": "更新日志",
- "description": "The label for link '更新日志' in sidebar 'tutorial', linking to 'https://releases.halo.run/changelog'"
- },
- "sidebar.developer.category.系统开发": {
- "message": "系统开发",
- "description": "The label for category '系统开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.插件开发": {
- "message": "插件开发",
- "description": "The label for category '插件开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.基础": {
- "message": "基础",
- "description": "The label for category '基础' in sidebar 'developer'"
- },
- "sidebar.developer.category.basics-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.basics-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.API 参考": {
- "message": "API 参考",
- "description": "The label for category 'API 参考' in sidebar 'developer'"
- },
- "sidebar.developer.category.api-reference-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.api-reference-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.组件": {
- "message": "组件",
- "description": "The label for category '组件' in sidebar 'developer'"
- },
- "sidebar.developer.category.扩展点和定制化": {
- "message": "扩展点和定制化",
- "description": "The label for category '扩展点和定制化' in sidebar 'developer'"
- },
- "sidebar.developer.category.extension-points-server": {
- "message": "服务端",
- "description": "The label for category '服务端' in sidebar 'developer'"
- },
- "sidebar.developer.category.extension-points-ui": {
- "message": "UI",
- "description": "The label for category 'UI' in sidebar 'developer'"
- },
- "sidebar.developer.category.与其他插件交互": {
- "message": "与其他插件交互",
- "description": "The label for category '与其他插件交互' in sidebar 'developer'"
- },
- "sidebar.developer.category.安全和权限管理": {
- "message": "安全和权限管理",
- "description": "The label for category '安全和权限管理' in sidebar 'developer'"
- },
- "sidebar.developer.category.案例和最佳实践": {
- "message": "案例和最佳实践",
- "description": "The label for category '案例和最佳实践' in sidebar 'developer'"
- },
- "sidebar.developer.category.主题开发": {
- "message": "主题开发",
- "description": "The label for category '主题开发' in sidebar 'developer'"
- },
- "sidebar.developer.category.模板编写": {
- "message": "模板编写",
- "description": "The label for category '模板编写' in sidebar 'developer'"
- },
- "sidebar.developer.category.Finder API": {
- "message": "Finder API",
- "description": "The label for category 'Finder API' in sidebar 'developer'"
- },
- "sidebar.developer.category.RESTful API": {
- "message": "RESTful API",
- "description": "The label for category 'RESTful API' in sidebar 'developer'"
- },
- "sidebar.developer.category.应用市场": {
- "message": "应用市场",
- "description": "The label for category '应用市场' in sidebar 'developer'"
- }
-}
diff --git a/i18n/zh-Hans/docusaurus-theme-classic/footer.json b/i18n/zh-Hans/docusaurus-theme-classic/footer.json
deleted file mode 100644
index 14c896d9..00000000
--- a/i18n/zh-Hans/docusaurus-theme-classic/footer.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "link.title.关于": {
- "message": "关于",
- "description": "The title of the footer links column with title=关于 in the footer"
- },
- "link.title.社区": {
- "message": "社区",
- "description": "The title of the footer links column with title=社区 in the footer"
- },
- "link.item.label.官网": {
- "message": "官网",
- "description": "The label of footer link with label=官网 linking to https://www.halo.run"
- },
- "link.item.label.应用市场": {
- "message": "应用市场",
- "description": "The label of footer link with label=应用市场 linking to https://www.halo.run/store/apps"
- },
- "link.item.label.GitHub 组织": {
- "message": "GitHub 组织",
- "description": "The label of footer link with label=GitHub 组织 linking to https://github.com/halo-dev"
- },
- "link.item.label.Gitee 组织": {
- "message": "Gitee 组织",
- "description": "The label of footer link with label=Gitee 组织 linking to https://gitee.com/halo-dev"
- },
- "link.item.label.版本发布": {
- "message": "版本发布",
- "description": "The label of footer link with label=版本发布 linking to https://releases.halo.run"
- },
- "link.item.label.Server Status": {
- "message": "Server Status",
- "description": "The label of footer link with label=Server Status linking to https://status.halo.run"
- },
- "link.item.label.官方论坛": {
- "message": "官方论坛",
- "description": "The label of footer link with label=官方论坛 linking to https://bbs.halo.run"
- },
- "link.item.label.微信公众号": {
- "message": "微信公众号",
- "description": "The label of footer link with label=微信公众号 linking to https://www.halo.run/upload/2021/03/B3C27F16-4890-4633-81CC-20BA4B28F94F-2415126255c749b290312ca22d9bdeb0.jpeg"
- },
- "link.item.label.GitHub Issues": {
- "message": "GitHub Issues",
- "description": "The label of footer link with label=GitHub Issues linking to https://github.com/halo-dev/halo/issues"
- },
- "link.item.label.Telegram Channel": {
- "message": "Telegram Channel",
- "description": "The label of footer link with label=Telegram Channel linking to https://t.me/halo_dev"
- },
- "link.item.label.Telegram Group": {
- "message": "Telegram Group",
- "description": "The label of footer link with label=Telegram Group linking to https://t.me/HaloBlog"
- },
- "copyright": {
- "message": "Copyright © 2026 凌霞软件. Built with Docusaurus.",
- "description": "The footer copyright"
- }
-}
diff --git a/i18n/zh-Hans/docusaurus-theme-classic/navbar.json b/i18n/zh-Hans/docusaurus-theme-classic/navbar.json
deleted file mode 100644
index ab26e3bf..00000000
--- a/i18n/zh-Hans/docusaurus-theme-classic/navbar.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "title": {
- "message": "Halo 文档",
- "description": "The title in the navbar"
- },
- "logo.alt": {
- "message": "Halo Logo",
- "description": "The alt text of navbar logo"
- },
- "item.label.使用指南": {
- "message": "使用指南",
- "description": "Navbar item with label 使用指南"
- },
- "item.label.开发者指南": {
- "message": "开发者指南",
- "description": "Navbar item with label 开发者指南"
- },
- "item.label.官网": {
- "message": "官网",
- "description": "Navbar item with label 官网"
- },
- "item.label.论坛": {
- "message": "论坛",
- "description": "Navbar item with label 论坛"
- },
- "item.label.版本对比": {
- "message": "版本对比",
- "description": "Navbar item with label 版本对比"
- },
- "item.label.GitHub": {
- "message": "GitHub",
- "description": "Navbar item with label GitHub"
- }
-}
diff --git a/netlify.toml b/netlify.toml
deleted file mode 100644
index 2ff3ab0f..00000000
--- a/netlify.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[build.environment]
- NODE_VERSION = "16"
- NPM_FLAGS = "--version"
-
-[build]
- publish = "build"
- command = "npx pnpm install --store=node_modules/.pnpm-store && npx pnpm build"
\ No newline at end of file
diff --git a/package.json b/package.json
index 679e2476..94e00e2c 100644
--- a/package.json
+++ b/package.json
@@ -1,65 +1,36 @@
{
- "name": "@halo-dev/docs",
- "version": "0.0.0",
"private": true,
+ "type": "module",
"scripts": {
- "build": "docusaurus build",
- "clear": "docusaurus clear",
- "deploy": "docusaurus deploy",
- "docusaurus": "docusaurus",
- "lint": "markdownlint-cli2 \"./docs/**/*.md\" \"./versioned_docs/**/*.md\"",
- "prepare": "husky install",
- "serve": "docusaurus serve",
- "start": "docusaurus start",
- "swizzle": "docusaurus swizzle",
- "write-heading-ids": "docusaurus write-heading-ids",
- "write-translations": "docusaurus write-translations"
- },
- "browserslist": {
- "production": [
- ">0.5%",
- "not dead",
- "not op_mini all"
- ],
- "development": [
- "last 1 chrome version",
- "last 1 firefox version",
- "last 1 safari version"
- ]
+ "build": "rspress build",
+ "check": "biome check --write",
+ "check:ci": "biome ci",
+ "dev": "rspress dev",
+ "format": "biome format --write",
+ "preview": "rspress preview"
},
"dependencies": {
- "@docusaurus/core": "3.10.2",
- "@docusaurus/faster": "3.10.2",
- "@docusaurus/plugin-client-redirects": "3.10.2",
- "@docusaurus/preset-classic": "3.10.2",
- "@docusaurus/theme-classic": "3.10.2",
- "@docusaurus/theme-common": "3.10.2",
- "@docusaurus/theme-mermaid": "3.10.2",
- "@mdx-js/react": "^3.1.1",
- "@shikijs/rehype": "^4.4.3",
- "@shikijs/transformers": "^4.4.3",
- "@svgr/webpack": "^5.5.0",
- "clsx": "^1.2.1",
- "docusaurus-plugin-image-zoom": "^3.0.1",
- "file-loader": "^6.2.0",
- "hast-util-is-element": "1.1.0",
- "meilisearch-docsearch": "^0.8.0",
- "prism-react-renderer": "^2.4.1",
- "react": "^19.2.8",
- "react-dom": "^19.2.8",
- "shiki": "^4.4.3",
- "url-loader": "^4.1.1"
+ "@rspress/core": "^2.0.20",
+ "rspress-plugin-file-tree": "^1.0.5",
+ "rspress-plugin-google-analytics": "^1.0.0",
+ "rspress-plugin-mermaid": "^1.0.1"
},
"devDependencies": {
- "@docusaurus/module-type-aliases": "3.10.2",
- "docusaurus-plugin-sass": "^0.2.6",
- "husky": "^7.0.4",
- "markdownlint": "^0.25.1",
- "markdownlint-cli2": "^0.4.0",
- "sass-embedded": "^1.102.0"
- },
- "engines": {
- "node": ">=18.0"
+ "@biomejs/biome": "2.5.8",
+ "@rsbuild/plugin-sass": "^2.0.1",
+ "@rspress/plugin-sitemap": "^2.0.19",
+ "@types/node": "^22.20.1",
+ "@types/react": "^19.2.18",
+ "@types/react-dom": "^19.2.5",
+ "react": "^19.2.8",
+ "react-dom": "^19.2.8",
+ "typescript": "^6.0.3"
},
- "packageManager": "pnpm@10.34.5"
+ "devEngines": {
+ "packageManager": {
+ "name": "pnpm",
+ "version": "11.24.0",
+ "onFail": "download"
+ }
+ }
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 25d68597..28029ad9 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,13599 +1,3712 @@
+---
lockfileVersion: '9.0'
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
importers:
.:
- dependencies:
- '@docusaurus/core':
- specifier: 3.10.2
- version: 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/faster':
- specifier: 3.10.2
- version: 3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))
- '@docusaurus/plugin-client-redirects':
- specifier: 3.10.2
- version: 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/preset-classic':
- specifier: 3.10.2
- version: 3.10.2(@algolia/client-search@5.46.2)(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(@types/react@18.3.12)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(search-insights@2.17.1)(typescript@5.6.3)
- '@docusaurus/theme-classic':
- specifier: 3.10.2
- version: 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@rspack/core@1.7.11)(@swc/core@1.16.0)(@types/react@18.3.12)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/theme-common':
- specifier: 3.10.2
- version: 3.10.2(@docusaurus/plugin-content-docs@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3))(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/theme-mermaid':
- specifier: 3.10.2
- version: 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@docusaurus/plugin-content-docs@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@mdx-js/react':
- specifier: ^3.1.1
- version: 3.1.1(@types/react@18.3.12)(react@19.2.8)
- '@shikijs/rehype':
- specifier: ^4.4.3
- version: 4.4.3
- '@shikijs/transformers':
- specifier: ^4.4.3
- version: 4.4.3
- '@svgr/webpack':
- specifier: ^5.5.0
- version: 5.5.0
- clsx:
- specifier: ^1.2.1
- version: 1.2.1
- docusaurus-plugin-image-zoom:
- specifier: ^3.0.1
- version: 3.0.1(@docusaurus/theme-classic@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@rspack/core@1.7.11)(@swc/core@1.16.0)(@types/react@18.3.12)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3))
- file-loader:
- specifier: ^6.2.0
- version: 6.2.0(webpack@5.95.0(@swc/core@1.16.0))
- hast-util-is-element:
- specifier: 1.1.0
- version: 1.1.0
- meilisearch-docsearch:
- specifier: ^0.8.0
- version: 0.8.0
- prism-react-renderer:
- specifier: ^2.4.1
- version: 2.4.1(react@19.2.8)
- react:
- specifier: ^19.2.8
- version: 19.2.8
- react-dom:
- specifier: ^19.2.8
- version: 19.2.8(react@19.2.8)
- shiki:
- specifier: ^4.4.3
- version: 4.4.3
- url-loader:
- specifier: ^4.1.1
- version: 4.1.1(file-loader@6.2.0(webpack@5.95.0(@swc/core@1.16.0)))(webpack@5.95.0(@swc/core@1.16.0))
- devDependencies:
- '@docusaurus/module-type-aliases':
- specifier: 3.10.2
- version: 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- docusaurus-plugin-sass:
- specifier: ^0.2.6
- version: 0.2.6(@docusaurus/core@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3))(@rspack/core@1.7.11)(sass-embedded@1.102.0)(sass@1.102.0)(webpack@5.95.0(@swc/core@1.16.0))
- husky:
- specifier: ^7.0.4
- version: 7.0.4
- markdownlint:
- specifier: ^0.25.1
- version: 0.25.1
- markdownlint-cli2:
- specifier: ^0.4.0
- version: 0.4.0
- sass-embedded:
- specifier: ^1.102.0
- version: 1.102.0
+ configDependencies: {}
+ packageManagerDependencies:
+ '@pnpm/exe':
+ specifier: 11.24.0
+ version: 11.24.0
+ pnpm:
+ specifier: 11.24.0
+ version: 11.24.0
packages:
- '@11ty/gray-matter@1.0.0':
- resolution: {integrity: sha512-7mJJl+wf1AByoT0PknQiQfOPnVNT4fevGrUBVWO4HXsnYn1aQPyRyrELYrNUFleUBM++KzMKN6QaxHPk0t/6/g==}
- engines: {node: '>=11'}
+ '@pnpm/exe@11.24.0':
+ resolution: {integrity: sha512-yCZWlhNOB3GS0I2uZC/CggwGZ+TLVLbOuBcMbVWXKFYJOg/0gnQw8eIN6YZLA+eeSvfHEvS79IDdbwu5CMQR0g==}
+ hasBin: true
- '@algolia/abtesting@1.12.2':
- resolution: {integrity: sha512-oWknd6wpfNrmRcH0vzed3UPX0i17o4kYLM5OMITyMVM2xLgaRbIafoxL0e8mcrNNb0iORCJA0evnNDKRYth5WQ==}
- engines: {node: '>= 14.0.0'}
+ '@pnpm/linux-arm64@11.24.0':
+ resolution: {integrity: sha512-wgAF82SnMfWU8/xb0VLszKJYqL+MDHMMGz42s4jW+GIFUGYna/xG5VXUxgcv2FaZhJ2GbyZVUf2f/UJs6nb+zA==}
+ cpu: [arm64]
+ os: [linux]
- '@algolia/autocomplete-core@1.17.9':
- resolution: {integrity: sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==}
+ '@pnpm/linux-x64@11.24.0':
+ resolution: {integrity: sha512-94e4GRvFB5hEwr9subLHLF2q3+DduKFPh2FE0+F7fgqt1Bs86gDxjJ7bbQCpTX2X4j6cUTA5Hc0HFzMz4xKnaA==}
+ cpu: [x64]
+ os: [linux]
- '@algolia/autocomplete-core@1.19.8':
- resolution: {integrity: sha512-3YEorYg44niXcm7gkft3nXYItHd44e8tmh4D33CTszPgP0QWkaLEaFywiNyJBo7UL/mqObA/G9RYuU7R8tN1IA==}
+ '@pnpm/linuxstatic-arm64@11.24.0':
+ resolution: {integrity: sha512-1Vwk+M5fzjg364SDZfrtaZfthsy1THS9eSdH7dpBaG0l3HbLusQrh8labRlpMmK8KyQXcI1FvYLzPZVuAGGPng==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
- '@algolia/autocomplete-plugin-algolia-insights@1.17.9':
- resolution: {integrity: sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==}
- peerDependencies:
- search-insights: '>= 1 < 3'
+ '@pnpm/linuxstatic-x64@11.24.0':
+ resolution: {integrity: sha512-oyPChWYdJpJMDnwtCFNzupD+GEO4G6DDMARuZfBrCUgqRm1h2KDcVCqk9IbfFBfxWdK+bVHJpA9Qp3nlL6/thw==}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
- '@algolia/autocomplete-plugin-algolia-insights@1.19.8':
- resolution: {integrity: sha512-ZvJWO8ZZJDpc1LNM2TTBdmQsZBLMR4rU5iNR2OYvEeFBiaf/0ESnRSSLQbryarJY4SVxtoz6A2ZtDMNM+iQEAA==}
- peerDependencies:
- search-insights: '>= 1 < 3'
+ '@pnpm/macos-arm64@11.24.0':
+ resolution: {integrity: sha512-nBzaOkR4D7HiuJRwlpk1aqaA/Wai11/zuCZjH5ZUe6fq86UWsqME0u3/F5K0j7yN8X2h7iKiApAaVmbfYMIc6A==}
+ cpu: [arm64]
+ os: [darwin]
- '@algolia/autocomplete-preset-algolia@1.17.9':
- resolution: {integrity: sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==}
- peerDependencies:
- '@algolia/client-search': '>= 4.9.1 < 6'
- algoliasearch: '>= 4.9.1 < 6'
+ '@pnpm/win-arm64@11.24.0':
+ resolution: {integrity: sha512-ECLc0U/5cnXRkBrpO/dW+x1Y+a2CCqS4l171H7+YOQNcSaCAWlezP3YNvuO+5awwGWHIW7KEXbBruu5n50zVuA==}
+ cpu: [arm64]
+ os: [win32]
- '@algolia/autocomplete-shared@1.17.9':
- resolution: {integrity: sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ==}
- peerDependencies:
- '@algolia/client-search': '>= 4.9.1 < 6'
- algoliasearch: '>= 4.9.1 < 6'
+ '@pnpm/win-x64@11.24.0':
+ resolution: {integrity: sha512-2wgDrs2SiyBoU6Yw1A8QLLqBABWHwuMMQOU85k7ZMut/W94u/oizrDQiyfJyW9XzYCz4Dn2iw7OHx+3R2x7mEQ==}
+ cpu: [x64]
+ os: [win32]
- '@algolia/autocomplete-shared@1.19.8':
- resolution: {integrity: sha512-h5hf2t8ejF6vlOgvLaZzQbWs5SyH2z4PAWygNAvvD/2RI29hdQ54ldUGwqVuj9Srs+n8XUKTPUqb7fvhBhQrnQ==}
- peerDependencies:
- '@algolia/client-search': '>= 4.9.1 < 6'
- algoliasearch: '>= 4.9.1 < 6'
+ '@reflink/reflink-darwin-arm64@0.1.19':
+ resolution: {integrity: sha512-ruy44Lpepdk1FqDz38vExBY/PVUsjxZA+chd9wozjUH9JjuDT/HEaQYA6wYN9mf041l0yLVar6BCZuWABJvHSA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
- '@algolia/client-abtesting@5.46.2':
- resolution: {integrity: sha512-oRSUHbylGIuxrlzdPA8FPJuwrLLRavOhAmFGgdAvMcX47XsyM+IOGa9tc7/K5SPvBqn4nhppOCEz7BrzOPWc4A==}
- engines: {node: '>= 14.0.0'}
+ '@reflink/reflink-darwin-x64@0.1.19':
+ resolution: {integrity: sha512-By85MSWrMZa+c26TcnAy8SDk0sTUkYlNnwknSchkhHpGXOtjNDUOxJE9oByBnGbeuIE1PiQsxDG3Ud+IVV9yuA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
- '@algolia/client-analytics@5.46.2':
- resolution: {integrity: sha512-EPBN2Oruw0maWOF4OgGPfioTvd+gmiNwx0HmD9IgmlS+l75DatcBkKOPNJN+0z3wBQWUO5oq602ATxIfmTQ8bA==}
- engines: {node: '>= 14.0.0'}
+ '@reflink/reflink-linux-arm64-gnu@0.1.19':
+ resolution: {integrity: sha512-7P+er8+rP9iNeN+bfmccM4hTAaLP6PQJPKWSA4iSk2bNvo6KU6RyPgYeHxXmzNKzPVRcypZQTpFgstHam6maVg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
- '@algolia/client-common@5.46.2':
- resolution: {integrity: sha512-Hj8gswSJNKZ0oyd0wWissqyasm+wTz1oIsv5ZmLarzOZAp3vFEda8bpDQ8PUhO+DfkbiLyVnAxsPe4cGzWtqkg==}
- engines: {node: '>= 14.0.0'}
+ '@reflink/reflink-linux-arm64-musl@0.1.19':
+ resolution: {integrity: sha512-37iO/Dp6m5DDaC2sf3zPtx/hl9FV3Xze4xoYidrxxS9bgP3S8ALroxRK6xBG/1TtfXKTvolvp+IjrUU6ujIGmA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
- '@algolia/client-insights@5.46.2':
- resolution: {integrity: sha512-6dBZko2jt8FmQcHCbmNLB0kCV079Mx/DJcySTL3wirgDBUH7xhY1pOuUTLMiGkqM5D8moVZTvTdRKZUJRkrwBA==}
- engines: {node: '>= 14.0.0'}
+ '@reflink/reflink-linux-x64-gnu@0.1.19':
+ resolution: {integrity: sha512-jbI8jvuYCaA3MVUdu8vLoLAFqC+iNMpiSuLbxlAgg7x3K5bsS8nOpTRnkLF7vISJ+rVR8W+7ThXlXlUQ93ulkw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
- '@algolia/client-personalization@5.46.2':
- resolution: {integrity: sha512-1waE2Uqh/PHNeDXGn/PM/WrmYOBiUGSVxAWqiJIj73jqPqvfzZgzdakHscIVaDl6Cp+j5dwjsZ5LCgaUr6DtmA==}
- engines: {node: '>= 14.0.0'}
+ '@reflink/reflink-linux-x64-musl@0.1.19':
+ resolution: {integrity: sha512-e9FBWDe+lv7QKAwtKOt6A2W/fyy/aEEfr0g6j/hWzvQcrzHCsz07BNQYlNOjTfeytrtLU7k449H1PI95jA4OjQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
- '@algolia/client-query-suggestions@5.46.2':
- resolution: {integrity: sha512-EgOzTZkyDcNL6DV0V/24+oBJ+hKo0wNgyrOX/mePBM9bc9huHxIY2352sXmoZ648JXXY2x//V1kropF/Spx83w==}
- engines: {node: '>= 14.0.0'}
+ '@reflink/reflink-win32-arm64-msvc@0.1.19':
+ resolution: {integrity: sha512-09PxnVIQcd+UOn4WAW73WU6PXL7DwGS6wPlkMhMg2zlHHG65F3vHepOw06HFCq+N42qkaNAc8AKIabWvtk6cIQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
- '@algolia/client-search@5.46.2':
- resolution: {integrity: sha512-ZsOJqu4HOG5BlvIFnMU0YKjQ9ZI6r3C31dg2jk5kMWPSdhJpYL9xa5hEe7aieE+707dXeMI4ej3diy6mXdZpgA==}
- engines: {node: '>= 14.0.0'}
+ '@reflink/reflink-win32-x64-msvc@0.1.19':
+ resolution: {integrity: sha512-E//yT4ni2SyhwP8JRjVGWr3cbnhWDiPLgnQ66qqaanjjnMiu3O/2tjCPQXlcGc/DEYofpDc9fvhv6tALQsMV9w==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
- '@algolia/events@4.0.1':
- resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==}
+ '@reflink/reflink@0.1.19':
+ resolution: {integrity: sha512-DmCG8GzysnCZ15bres3N5AHCmwBwYgp0As6xjhQ47rAUTUXxJiK+lLUxaGsX3hd/30qUpVElh05PbGuxRPgJwA==}
+ engines: {node: '>= 10'}
- '@algolia/ingestion@1.46.2':
- resolution: {integrity: sha512-1Uw2OslTWiOFDtt83y0bGiErJYy5MizadV0nHnOoHFWMoDqWW0kQoMFI65pXqRSkVvit5zjXSLik2xMiyQJDWQ==}
- engines: {node: '>= 14.0.0'}
+ detect-libc@2.1.2:
+ resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
+ engines: {node: '>=8'}
- '@algolia/monitoring@1.46.2':
- resolution: {integrity: sha512-xk9f+DPtNcddWN6E7n1hyNNsATBCHIqAvVGG2EAGHJc4AFYL18uM/kMTiOKXE/LKDPyy1JhIerrh9oYb7RBrgw==}
- engines: {node: '>= 14.0.0'}
+ pnpm@11.24.0:
+ resolution: {integrity: sha512-vSfjRel23LC+C3oSKCF7BJqBfiGx81XJDb59xGZxiVqLwebQbCRVRQXqk+oLRfSJon7Bv7yN5qlln8oPFvoAAA==}
+ engines: {node: '>=22.13'}
+ hasBin: true
- '@algolia/recommend@5.46.2':
- resolution: {integrity: sha512-NApbTPj9LxGzNw4dYnZmj2BoXiAc8NmbbH6qBNzQgXklGklt/xldTvu+FACN6ltFsTzoNU6j2mWNlHQTKGC5+Q==}
- engines: {node: '>= 14.0.0'}
+snapshots:
- '@algolia/requester-browser-xhr@5.46.2':
- resolution: {integrity: sha512-ekotpCwpSp033DIIrsTpYlGUCF6momkgupRV/FA3m62SreTSZUKjgK6VTNyG7TtYfq9YFm/pnh65bATP/ZWJEg==}
- engines: {node: '>= 14.0.0'}
+ '@pnpm/exe@11.24.0':
+ dependencies:
+ '@reflink/reflink': 0.1.19
+ detect-libc: 2.1.2
+ optionalDependencies:
+ '@pnpm/linux-arm64': 11.24.0
+ '@pnpm/linux-x64': 11.24.0
+ '@pnpm/linuxstatic-arm64': 11.24.0
+ '@pnpm/linuxstatic-x64': 11.24.0
+ '@pnpm/macos-arm64': 11.24.0
+ '@pnpm/win-arm64': 11.24.0
+ '@pnpm/win-x64': 11.24.0
+
+ '@pnpm/linux-arm64@11.24.0':
+ optional: true
- '@algolia/requester-fetch@5.46.2':
- resolution: {integrity: sha512-gKE+ZFi/6y7saTr34wS0SqYFDcjHW4Wminv8PDZEi0/mE99+hSrbKgJWxo2ztb5eqGirQTgIh1AMVacGGWM1iw==}
- engines: {node: '>= 14.0.0'}
+ '@pnpm/linux-x64@11.24.0':
+ optional: true
- '@algolia/requester-node-http@5.46.2':
- resolution: {integrity: sha512-ciPihkletp7ttweJ8Zt+GukSVLp2ANJHU+9ttiSxsJZThXc4Y2yJ8HGVWesW5jN1zrsZsezN71KrMx/iZsOYpg==}
- engines: {node: '>= 14.0.0'}
+ '@pnpm/linuxstatic-arm64@11.24.0':
+ optional: true
- '@ampproject/remapping@2.3.0':
- resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
- engines: {node: '>=6.0.0'}
+ '@pnpm/linuxstatic-x64@11.24.0':
+ optional: true
- '@antfu/install-pkg@0.4.1':
- resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==}
+ '@pnpm/macos-arm64@11.24.0':
+ optional: true
- '@antfu/utils@0.7.10':
- resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==}
+ '@pnpm/win-arm64@11.24.0':
+ optional: true
- '@babel/code-frame@7.26.0':
- resolution: {integrity: sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==}
- engines: {node: '>=6.9.0'}
+ '@pnpm/win-x64@11.24.0':
+ optional: true
- '@babel/compat-data@7.26.0':
- resolution: {integrity: sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA==}
- engines: {node: '>=6.9.0'}
+ '@reflink/reflink-darwin-arm64@0.1.19':
+ optional: true
- '@babel/core@7.26.0':
- resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==}
- engines: {node: '>=6.9.0'}
+ '@reflink/reflink-darwin-x64@0.1.19':
+ optional: true
- '@babel/generator@7.26.0':
- resolution: {integrity: sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w==}
- engines: {node: '>=6.9.0'}
+ '@reflink/reflink-linux-arm64-gnu@0.1.19':
+ optional: true
- '@babel/helper-annotate-as-pure@7.25.9':
- resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==}
- engines: {node: '>=6.9.0'}
+ '@reflink/reflink-linux-arm64-musl@0.1.19':
+ optional: true
- '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9':
- resolution: {integrity: sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==}
- engines: {node: '>=6.9.0'}
+ '@reflink/reflink-linux-x64-gnu@0.1.19':
+ optional: true
- '@babel/helper-compilation-targets@7.25.9':
- resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==}
- engines: {node: '>=6.9.0'}
+ '@reflink/reflink-linux-x64-musl@0.1.19':
+ optional: true
- '@babel/helper-create-class-features-plugin@7.25.9':
- resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
+ '@reflink/reflink-win32-arm64-msvc@0.1.19':
+ optional: true
- '@babel/helper-create-regexp-features-plugin@7.25.9':
- resolution: {integrity: sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
+ '@reflink/reflink-win32-x64-msvc@0.1.19':
+ optional: true
- '@babel/helper-define-polyfill-provider@0.6.2':
- resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==}
- peerDependencies:
- '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+ '@reflink/reflink@0.1.19':
+ optionalDependencies:
+ '@reflink/reflink-darwin-arm64': 0.1.19
+ '@reflink/reflink-darwin-x64': 0.1.19
+ '@reflink/reflink-linux-arm64-gnu': 0.1.19
+ '@reflink/reflink-linux-arm64-musl': 0.1.19
+ '@reflink/reflink-linux-x64-gnu': 0.1.19
+ '@reflink/reflink-linux-x64-musl': 0.1.19
+ '@reflink/reflink-win32-arm64-msvc': 0.1.19
+ '@reflink/reflink-win32-x64-msvc': 0.1.19
- '@babel/helper-member-expression-to-functions@7.25.9':
- resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==}
- engines: {node: '>=6.9.0'}
+ detect-libc@2.1.2: {}
- '@babel/helper-module-imports@7.25.9':
- resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==}
- engines: {node: '>=6.9.0'}
+ pnpm@11.24.0: {}
- '@babel/helper-module-transforms@7.26.0':
- resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
+---
+lockfileVersion: '9.0'
- '@babel/helper-optimise-call-expression@7.25.9':
- resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==}
- engines: {node: '>=6.9.0'}
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
- '@babel/helper-plugin-utils@7.25.9':
- resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==}
- engines: {node: '>=6.9.0'}
+importers:
- '@babel/helper-remap-async-to-generator@7.25.9':
- resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
+ .:
+ dependencies:
+ '@rspress/core':
+ specifier: ^2.0.20
+ version: 2.0.20(@rspack/core@2.1.10(@swc/helpers@0.5.23))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0)
+ rspress-plugin-file-tree:
+ specifier: ^1.0.5
+ version: 1.0.5(@rspress/core@2.0.20(@rspack/core@2.1.10(@swc/helpers@0.5.23))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0))(supports-color@9.4.0)
+ rspress-plugin-google-analytics:
+ specifier: ^1.0.0
+ version: 1.0.0(@rspress/core@2.0.20(@rspack/core@2.1.10(@swc/helpers@0.5.23))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0))(supports-color@9.4.0)
+ rspress-plugin-mermaid:
+ specifier: ^1.0.1
+ version: 1.0.1(@rspress/core@2.0.20(@rspack/core@2.1.10(@swc/helpers@0.5.23))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0))(supports-color@9.4.0)
+ devDependencies:
+ '@biomejs/biome':
+ specifier: 2.5.8
+ version: 2.5.8
+ '@rsbuild/plugin-sass':
+ specifier: ^2.0.1
+ version: 2.0.1(@rsbuild/core@2.1.13)
+ '@rspress/plugin-sitemap':
+ specifier: ^2.0.19
+ version: 2.0.19(@rspress/core@2.0.20(@rspack/core@2.1.10(@swc/helpers@0.5.23))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0))
+ '@types/node':
+ specifier: ^22.20.1
+ version: 22.20.1
+ '@types/react':
+ specifier: ^19.2.18
+ version: 19.2.18
+ '@types/react-dom':
+ specifier: ^19.2.5
+ version: 19.2.5(@types/react@19.2.18)
+ react:
+ specifier: ^19.2.8
+ version: 19.2.8
+ react-dom:
+ specifier: ^19.2.8
+ version: 19.2.8(react@19.2.8)
+ typescript:
+ specifier: ^6.0.3
+ version: 6.0.3
- '@babel/helper-replace-supers@7.25.9':
- resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
+packages:
- '@babel/helper-simple-access@7.25.9':
- resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==}
- engines: {node: '>=6.9.0'}
+ '@biomejs/biome@2.5.8':
+ resolution: {integrity: sha512-aeAeeJB9fSDc7Gq+2GqpQxA0qBj6gj1k2R6L1cYqGePKP/baIq1WX8y6B+D+nRsO5ViQL22K/8IwbqERW0q1nw==}
+ engines: {node: '>=14.21.3'}
+ hasBin: true
- '@babel/helper-skip-transparent-expression-wrappers@7.25.9':
- resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==}
- engines: {node: '>=6.9.0'}
+ '@biomejs/cli-darwin-arm64@2.5.8':
+ resolution: {integrity: sha512-mk1QON9PHllvvLN5gU3f4rMxeh4syK5p9OvKyWH6/W8ueh04uaC8TUXXByhGufWf/y5mQc03ZLM45zU+cmqMjA==}
+ engines: {node: '>=14.21.3'}
+ cpu: [arm64]
+ os: [darwin]
- '@babel/helper-string-parser@7.25.9':
- resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
- engines: {node: '>=6.9.0'}
+ '@biomejs/cli-darwin-x64@2.5.8':
+ resolution: {integrity: sha512-bsGwFMBNyHPyiLSsQcZJxdoRrg1V4JL+d7wEsvUBczlP9U9lwM+7mzQHxI4o1mhBsTmdOBbAb6fHU3Z3snN45w==}
+ engines: {node: '>=14.21.3'}
+ cpu: [x64]
+ os: [darwin]
- '@babel/helper-validator-identifier@7.25.9':
- resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
- engines: {node: '>=6.9.0'}
+ '@biomejs/cli-linux-arm64-musl@2.5.8':
+ resolution: {integrity: sha512-VcJNbstduTHx83NGAdhp78/JOcP45BZHXL7yNsfI1uGzdUgegAz2s+mSoT7wK6PBNzLoqG0zDOXaz/RQYVtSiw==}
+ engines: {node: '>=14.21.3'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
- '@babel/helper-validator-option@7.25.9':
- resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==}
- engines: {node: '>=6.9.0'}
+ '@biomejs/cli-linux-arm64@2.5.8':
+ resolution: {integrity: sha512-XmFiA0WPYFC+uiUDC8WRFzAIH9bo7vwQLav38Uoq4ETC+T/+uBi0TsYGJECkugY3r8USl3jc+Ae2/irAF6F2lQ==}
+ engines: {node: '>=14.21.3'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
- '@babel/helper-wrap-function@7.25.9':
- resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==}
- engines: {node: '>=6.9.0'}
+ '@biomejs/cli-linux-x64-musl@2.5.8':
+ resolution: {integrity: sha512-kKmiyokeISRGq2FLwvr+TzsgBusfxaZ0FZNLcOYOpCK/78tRrEjeEBLvq3xLZMpqbANgJdRPI7vZX8ZL37u9/w==}
+ engines: {node: '>=14.21.3'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
- '@babel/helpers@7.26.0':
- resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==}
- engines: {node: '>=6.9.0'}
+ '@biomejs/cli-linux-x64@2.5.8':
+ resolution: {integrity: sha512-S5wcm9OBDvLHodD4PUaN488hCpco9QD/9ZxuYJiw4euWtr/oQvLR72z2ixItH8Wd5BCm6FZaeb+YNvOoM1xHtQ==}
+ engines: {node: '>=14.21.3'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
- '@babel/parser@7.26.1':
- resolution: {integrity: sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==}
- engines: {node: '>=6.0.0'}
- hasBin: true
+ '@biomejs/cli-win32-arm64@2.5.8':
+ resolution: {integrity: sha512-nILH0mzm3Hi3iEdd7o7GpB8kBR/mSQwfQG/tyBqyNrY2GFtcgwfV9nV8xLmbtUpMNY/Oi0Ml1XgfR4flOdq+AA==}
+ engines: {node: '>=14.21.3'}
+ cpu: [arm64]
+ os: [win32]
- '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9':
- resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
+ '@biomejs/cli-win32-x64@2.5.8':
+ resolution: {integrity: sha512-I2czzXTY61f3nFJxXoMDq80t7MivxDEnCjE+8sDKoFfcKMaoQdkqhIFQ3KyY0XLzeSpUBYeNAXgD+iOV/BU0VA==}
+ engines: {node: '>=14.21.3'}
+ cpu: [x64]
+ os: [win32]
- '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9':
- resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
+ '@braintree/sanitize-url@6.0.4':
+ resolution: {integrity: sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==}
- '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9':
- resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
+ '@bufbuild/protobuf@2.14.0':
+ resolution: {integrity: sha512-C3UGsiCwSprE2NKIIFA3hCDlpXTMCAXRZuEVp88L1GY36Y41+rYL5fryE+nOFhp4p4JPQvdV8PQ4DWgHgeTE+w==}
- '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9':
- resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.13.0
+ '@emnapi/core@1.11.3':
+ resolution: {integrity: sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==}
- '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9':
- resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
+ '@emnapi/runtime@1.11.3':
+ resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==}
- '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2':
- resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@emnapi/wasi-threads@1.2.3':
+ resolution: {integrity: sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==}
- '@babel/plugin-syntax-dynamic-import@7.8.3':
- resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@mdx-js/mdx@3.1.1':
+ resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==}
- '@babel/plugin-syntax-import-assertions@7.25.9':
- resolution: {integrity: sha512-4GHX5uzr5QMOOuzV0an9MFju4hKlm0OyePl/lHhcsTVae5t/IKVHnb8W67Vr6FuLlk5lPqLB7n7O+K5R46emYg==}
- engines: {node: '>=6.9.0'}
+ '@mdx-js/react@3.1.1':
+ resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==}
peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@types/react': '>=16'
+ react: '>=16'
- '@babel/plugin-syntax-import-attributes@7.25.9':
- resolution: {integrity: sha512-u3EN9ub8LyYvgTnrgp8gboElouayiwPdnM7x5tcnW3iSt09/lQYPwMNK40I9IUxo7QOZhAsPHCmmuO7EPdruqg==}
- engines: {node: '>=6.9.0'}
+ '@napi-rs/wasm-runtime@1.1.6':
+ resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==}
peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@emnapi/core': ^1.7.1
+ '@emnapi/runtime': ^1.7.1
- '@babel/plugin-syntax-jsx@7.25.9':
- resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@parcel/watcher-android-arm64@2.6.0':
+ resolution: {integrity: sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [android]
- '@babel/plugin-syntax-typescript@7.25.9':
- resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@parcel/watcher-darwin-arm64@2.6.0':
+ resolution: {integrity: sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [darwin]
- '@babel/plugin-syntax-unicode-sets-regex@7.18.6':
- resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
+ '@parcel/watcher-darwin-x64@2.6.0':
+ resolution: {integrity: sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [darwin]
- '@babel/plugin-transform-arrow-functions@7.25.9':
- resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@parcel/watcher-freebsd-x64@2.6.0':
+ resolution: {integrity: sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [freebsd]
- '@babel/plugin-transform-async-generator-functions@7.25.9':
- resolution: {integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@parcel/watcher-linux-arm-glibc@2.6.0':
+ resolution: {integrity: sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm]
+ os: [linux]
+ libc: [glibc]
- '@babel/plugin-transform-async-to-generator@7.25.9':
- resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@parcel/watcher-linux-arm-musl@2.6.0':
+ resolution: {integrity: sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm]
+ os: [linux]
+ libc: [musl]
- '@babel/plugin-transform-block-scoped-functions@7.25.9':
- resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@parcel/watcher-linux-arm64-glibc@2.6.0':
+ resolution: {integrity: sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
- '@babel/plugin-transform-block-scoping@7.25.9':
- resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@parcel/watcher-linux-arm64-musl@2.6.0':
+ resolution: {integrity: sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
- '@babel/plugin-transform-class-properties@7.25.9':
- resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@parcel/watcher-linux-x64-glibc@2.6.0':
+ resolution: {integrity: sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
- '@babel/plugin-transform-class-static-block@7.25.9':
- resolution: {integrity: sha512-UIf+72C7YJ+PJ685/PpATbCz00XqiFEzHX5iysRwfvNT0Ko+FaXSvRgLytFSp8xUItrG9pFM/KoBBZDrY/cYyg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.12.0
+ '@parcel/watcher-linux-x64-musl@2.6.0':
+ resolution: {integrity: sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
- '@babel/plugin-transform-classes@7.25.9':
- resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@parcel/watcher-win32-arm64@2.6.0':
+ resolution: {integrity: sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [win32]
- '@babel/plugin-transform-computed-properties@7.25.9':
- resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@parcel/watcher-win32-x64@2.6.0':
+ resolution: {integrity: sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [win32]
- '@babel/plugin-transform-destructuring@7.25.9':
- resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@parcel/watcher@2.6.0':
+ resolution: {integrity: sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==}
+ engines: {node: '>= 10.0.0'}
- '@babel/plugin-transform-dotall-regex@7.25.9':
- resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==}
- engines: {node: '>=6.9.0'}
+ '@rsbuild/core@2.1.13':
+ resolution: {integrity: sha512-Z+6MzmjOio4+bFZQ24k+7ge/oNCOdXIunAssrswTNE8AIf6mcyXpJZevRXRiOEMZasRPA8VNyh+9JngQLg729Q==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
peerDependencies:
- '@babel/core': ^7.0.0-0
+ core-js: '>= 3.0.0'
+ peerDependenciesMeta:
+ core-js:
+ optional: true
- '@babel/plugin-transform-duplicate-keys@7.25.9':
- resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==}
- engines: {node: '>=6.9.0'}
+ '@rsbuild/plugin-react@2.1.0':
+ resolution: {integrity: sha512-RQTIAWB/CwPjoWt9iAl+8HixeQVgZ7kEIBrWPCixfITyHdiD84h0YpUTpEUuz6kGHw1KXT9mHZ3Rwy6WG7aRDA==}
peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@rsbuild/core': ^2.0.0
+ peerDependenciesMeta:
+ '@rsbuild/core':
+ optional: true
- '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9':
- resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==}
- engines: {node: '>=6.9.0'}
+ '@rsbuild/plugin-sass@2.0.1':
+ resolution: {integrity: sha512-BZRpVTZW+za+sv84nYYdIjR7XwVqyS8+1wAha/7BvQ1igdzlmT6xPd6h4jTWfNzdHuzIHZsuWY7kPS/ybzcndA==}
peerDependencies:
- '@babel/core': ^7.0.0
+ '@rsbuild/core': ^2.0.0
+ peerDependenciesMeta:
+ '@rsbuild/core':
+ optional: true
- '@babel/plugin-transform-dynamic-import@7.25.9':
- resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@rspack/binding-darwin-arm64@2.1.10':
+ resolution: {integrity: sha512-DZlcTpbIb2mjeS1aSG4k01UH33Zj7T+k8ZylPK6HmsKs4JvK4wgpWFC78WVv3p/Aj3MZS6DwtDLwpZ2Ihj/fpg==}
+ cpu: [arm64]
+ os: [darwin]
- '@babel/plugin-transform-exponentiation-operator@7.25.9':
- resolution: {integrity: sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@rspack/binding-darwin-x64@2.1.10':
+ resolution: {integrity: sha512-my/0h2LwxCRT6cg3oDDC2e0ZOxQLVajAdIcv0fqnQk5JRNvVuL89PuTutitnSqie1A0/JSL8OQz5XHwmoS3kow==}
+ cpu: [x64]
+ os: [darwin]
- '@babel/plugin-transform-export-namespace-from@7.25.9':
- resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@rspack/binding-linux-arm64-gnu@2.1.10':
+ resolution: {integrity: sha512-laevn9g+E5PAUEGqiKe6Ju5KApsuQYp+bPI17XS3Lkl8eqL5pS/BmHYU7QMlst4GzV8+wlruVTMh//+st6Vqzg==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
- '@babel/plugin-transform-for-of@7.25.9':
- resolution: {integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@rspack/binding-linux-arm64-musl@2.1.10':
+ resolution: {integrity: sha512-V71+Qz5G72+ROZXrJn5zxOszdG1AEbO8pcC/itXXtf4yRR6a3bVHKNKGhipBNxb8eI6cnD/01FH1h3ZG655jLw==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
- '@babel/plugin-transform-function-name@7.25.9':
- resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@rspack/binding-linux-ppc64-gnu@2.1.10':
+ resolution: {integrity: sha512-U7HlNzHcDtZ+LYOtOJmtx67kHEybZzUUAaP7aEXjGYO5WTCgh/176sW2UYP0rmZLrgUNFUuzn+B98RLaClNaVg==}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
- '@babel/plugin-transform-json-strings@7.25.9':
- resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@rspack/binding-linux-riscv64-gnu@2.1.10':
+ resolution: {integrity: sha512-GMGTJpy9/ecE+5F5IfxZH4bXv0Wx/b2TiehTlCbTksbL+pKpLHYy0rwGdjWDKbmBkhxMMqPiC7PDnn9LbdnnLA==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
- '@babel/plugin-transform-literals@7.25.9':
- resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@rspack/binding-linux-riscv64-musl@2.1.10':
+ resolution: {integrity: sha512-rkurnAWc04vIbzG1QCrPBWSJadZvaOt1mazFH3EdiJO8VUiu0I1T9zdiwuDOPrd50lOKIZlcTXbd5aaAkWEnvQ==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [musl]
- '@babel/plugin-transform-logical-assignment-operators@7.25.9':
- resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@rspack/binding-linux-s390x-gnu@2.1.10':
+ resolution: {integrity: sha512-X+DyxkriZEAF/wihI7ERDv+CAS0mbMv36aEuQ+vXzTlvS6cSmpou/r29AHbvIF3NlG1UeAbDVlOs9QrMBZjpUQ==}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
- '@babel/plugin-transform-member-expression-literals@7.25.9':
- resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@rspack/binding-linux-x64-gnu@2.1.10':
+ resolution: {integrity: sha512-Fat09V6jUuyo9qG7Wyj9cQ31VDfLmokXyBtGqKxY5OvSWHereB7QUub5btbPXHwbp6Iq4aAQyUbbLTzvR1YaBw==}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
- '@babel/plugin-transform-modules-amd@7.25.9':
- resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@rspack/binding-linux-x64-musl@2.1.10':
+ resolution: {integrity: sha512-lhHOnIJ4ClpIlA1f1L8aoxEZivYLjnjq5A6jKKz7BKsm+cHK8kqqEm6lO5KqA5xQT0Lonq1o28bmKHEj6JHInw==}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
- '@babel/plugin-transform-modules-commonjs@7.25.9':
- resolution: {integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@rspack/binding-wasm32-wasi@2.1.10':
+ resolution: {integrity: sha512-KY5YbWbuvYcoaLXnV+vzZOvGRCeb6jt4EpVpKdph1h1IJjwX/ju15EQ+GOe3iecZEdf0OttQcNVcwBkLkFT9ag==}
+ cpu: [wasm32]
- '@babel/plugin-transform-modules-systemjs@7.25.9':
- resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@rspack/binding-win32-arm64-msvc@2.1.10':
+ resolution: {integrity: sha512-z4GWzMLofaDGpAt9Z+MlN88LlUBDm+zM6R2GdOOPM6/4g/h3/+47OP7casmSL3AwTGYBEJqogwt08sRSosB6Cg==}
+ cpu: [arm64]
+ os: [win32]
- '@babel/plugin-transform-modules-umd@7.25.9':
- resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@rspack/binding-win32-ia32-msvc@2.1.10':
+ resolution: {integrity: sha512-7qcWdsZ+GuGtzKjqgy7wTN7Dso/ezIY8yhx1r2yIbcczdmXj4FhaEampMDp/25HwtKwIGBBoh6HHSt3JWxpTUg==}
+ cpu: [ia32]
+ os: [win32]
- '@babel/plugin-transform-named-capturing-groups-regex@7.25.9':
- resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
+ '@rspack/binding-win32-x64-msvc@2.1.10':
+ resolution: {integrity: sha512-pgp23pLrzfhGnKycxzr7ifP17lAbWZEfnx1bX8gXtYrnpJ66DRNyTKSzxB6sa/HBWjS1L8PX5TjMZ44WfPydqQ==}
+ cpu: [x64]
+ os: [win32]
- '@babel/plugin-transform-new-target@7.25.9':
- resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@rspack/binding@2.1.10':
+ resolution: {integrity: sha512-vnu/UP5HnrND15lO9+VeG6eUrbTyycHNQNQ3XEiRiFojuoiGZkIZC3Hbzr8qQH44C6vScPODEPvvIVvLcO2LpQ==}
- '@babel/plugin-transform-nullish-coalescing-operator@7.25.9':
- resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==}
- engines: {node: '>=6.9.0'}
+ '@rspack/core@2.1.10':
+ resolution: {integrity: sha512-YSS2/Xxz8uiG/KXDkqOoA3dTetNo/vysk7bAexQOrU8iuq7JuzDTTAwLKvWZnwmvME8M8m5wcM4YvfIwYmidHA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@module-federation/runtime-tools': ^0.24.1 || ^2.0.0
+ '@swc/helpers': ^0.5.23
+ peerDependenciesMeta:
+ '@module-federation/runtime-tools':
+ optional: true
+ '@swc/helpers':
+ optional: true
- '@babel/plugin-transform-numeric-separator@7.25.9':
- resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==}
- engines: {node: '>=6.9.0'}
+ '@rspack/plugin-react-refresh@2.0.2':
+ resolution: {integrity: sha512-dGNZiCxQxgAUI9sah7gd8u+O7OJZRCmqtEJNDOd8xW5RqcieC86F7p5qcShyw6onH5pKf57evpr2VjGbaFGkZg==}
peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@rspack/core': ^2.0.0
+ react-refresh: '>=0.10.0 <1.0.0'
+ peerDependenciesMeta:
+ '@rspack/core':
+ optional: true
- '@babel/plugin-transform-object-rest-spread@7.25.9':
- resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@rspress/core@2.0.20':
+ resolution: {integrity: sha512-JR+hsQicVDQIj7122KyIJrkwZCuVEXZm4MDLcXaoBHdtMP3hoK6cp1ZXEb0LdnKwG2MduFlK6i+L7vGLrN8QZA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
- '@babel/plugin-transform-object-super@7.25.9':
- resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==}
- engines: {node: '>=6.9.0'}
+ '@rspress/plugin-sitemap@2.0.19':
+ resolution: {integrity: sha512-9ydrpj9hmmXWKWKIXUqJ1UrfxSvfxhHZRBZLb5OkTlOuQBNAg6BpsrW1WHoJqJr7p+3zqlz7S/9HTzSA3+EYcA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@rspress/core': ^2.0.10
- '@babel/plugin-transform-optional-catch-binding@7.25.9':
- resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@rspress/shared@2.0.20':
+ resolution: {integrity: sha512-+e55crMZom5BQLgebrT4Pz4Zg0P7JIsYnDz4Ey65CTloFhfan1rARQpgb74b2bf5kKv/sPbPw6pfD8Fu74mCPQ==}
- '@babel/plugin-transform-optional-chaining@7.25.9':
- resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@shikijs/core@4.4.3':
+ resolution: {integrity: sha512-QCR4q2ZO/ILJEuwiBMel4wdcTDb1JGwfjKTxPDF6x8ixOaluPrVqIn06C99AcRPhmYlBR56d/Fb+GN58GzExpg==}
+ engines: {node: '>=20'}
- '@babel/plugin-transform-parameters@7.25.9':
- resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@shikijs/engine-javascript@4.4.3':
+ resolution: {integrity: sha512-FbOjFJp9VLdo1Wevs10BBtVxiTWwNLqZh5Gkhjgda/ioL15YOgeSl9n+6XMa3qRlPQzfhFNe641SrynFHYG0nQ==}
+ engines: {node: '>=20'}
- '@babel/plugin-transform-private-methods@7.25.9':
- resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@shikijs/engine-oniguruma@4.4.3':
+ resolution: {integrity: sha512-EcOQkxdxGQrc1Row/cC2c96/v1dbZqGnEVu1qTuT/MJmp6+cXCvQussowVmCv5Tqr3KuY3c7IbM6HTW3LJ1k9w==}
+ engines: {node: '>=20'}
- '@babel/plugin-transform-private-property-in-object@7.25.9':
- resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@shikijs/langs@4.4.3':
+ resolution: {integrity: sha512-ePic0yfAJGOF83D5wBHK/00EjK65oahBYxFk5epgq33WRv7X9UuxLEV8PtR0szC0z8dl7INIpIodB99JRFlR+A==}
+ engines: {node: '>=20'}
- '@babel/plugin-transform-property-literals@7.25.9':
- resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@shikijs/primitive@4.4.3':
+ resolution: {integrity: sha512-m0wBeLDQDeIxRdUmrCPdQqfuUamDwRL5isCfYbguKD6NiaKpVbsv+3J81DyIKgNW5h4WAIIr8T4EkgQrBBxvaQ==}
+ engines: {node: '>=20'}
- '@babel/plugin-transform-react-constant-elements@7.25.7':
- resolution: {integrity: sha512-/qXt69Em8HgsjCLu7G3zdIQn7A2QwmYND7Wa0LTp09Na+Zn8L5d0A7wSXrKi18TJRc/Q5S1i1De/SU1LzVkSvA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@shikijs/rehype@4.4.3':
+ resolution: {integrity: sha512-vkG9jG1aRnrx05R31uAOKQHE8qpY7r1cBXE2sAZgFK2IaPnQHwaP4L1C6amQixmZ8thBsKwfbSsYxMDoo46UWQ==}
+ engines: {node: '>=20'}
- '@babel/plugin-transform-react-display-name@7.25.9':
- resolution: {integrity: sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@shikijs/themes@4.4.3':
+ resolution: {integrity: sha512-w8UHjeUnIR965KMWJHUPXOc2mNJUnK3vpVLYLvw5IYU2mnTTJ89E24OrJDBNiJDQ0qzb0tc4l7mrIXx5cFeIyw==}
+ engines: {node: '>=20'}
- '@babel/plugin-transform-react-jsx-development@7.25.9':
- resolution: {integrity: sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@shikijs/types@4.4.3':
+ resolution: {integrity: sha512-UEJxmRR++MAGR6hugn0vgVS2W/6lWAts84FFSrnlH9sP0LNol7E5+NQ792pH8liWUhyMyjhTgSUH3k7iD7tc5g==}
+ engines: {node: '>=20'}
- '@babel/plugin-transform-react-jsx@7.25.9':
- resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@shikijs/vscode-textmate@10.0.2':
+ resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
- '@babel/plugin-transform-react-pure-annotations@7.25.9':
- resolution: {integrity: sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@swc/helpers@0.5.23':
+ resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==}
- '@babel/plugin-transform-regenerator@7.25.9':
- resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@ts-morph/common@0.28.1':
+ resolution: {integrity: sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g==}
- '@babel/plugin-transform-reserved-words@7.25.9':
- resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@tybys/wasm-util@0.10.3':
+ resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==}
- '@babel/plugin-transform-runtime@7.25.9':
- resolution: {integrity: sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@types/d3-scale-chromatic@3.1.0':
+ resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==}
- '@babel/plugin-transform-shorthand-properties@7.25.9':
- resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@types/d3-scale@4.0.9':
+ resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==}
- '@babel/plugin-transform-spread@7.25.9':
- resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@types/d3-time@3.0.4':
+ resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==}
- '@babel/plugin-transform-sticky-regex@7.25.9':
- resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@types/debug@4.1.13':
+ resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==}
- '@babel/plugin-transform-template-literals@7.25.9':
- resolution: {integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@types/estree-jsx@1.0.5':
+ resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==}
- '@babel/plugin-transform-typeof-symbol@7.25.9':
- resolution: {integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@types/estree@1.0.9':
+ resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
- '@babel/plugin-transform-typescript@7.25.9':
- resolution: {integrity: sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@types/hast@3.0.5':
+ resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==}
- '@babel/plugin-transform-unicode-escapes@7.25.9':
- resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@types/mdast@3.0.15':
+ resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==}
- '@babel/plugin-transform-unicode-property-regex@7.25.9':
- resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@types/mdast@4.0.4':
+ resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
- '@babel/plugin-transform-unicode-regex@7.25.9':
- resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@types/mdx@2.0.14':
+ resolution: {integrity: sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg==}
- '@babel/plugin-transform-unicode-sets-regex@7.25.9':
- resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
+ '@types/ms@2.1.0':
+ resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
- '@babel/preset-env@7.25.9':
- resolution: {integrity: sha512-XqDEt+hfsQukahSX9JOBDHhpUHDhj2zGSxoqWQFCMajOSBnbhBdgON/bU/5PkBA1yX5tqW6tTzuIPVsZTQ7h5Q==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@types/node@22.20.1':
+ resolution: {integrity: sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q==}
- '@babel/preset-modules@0.1.6-no-external-plugins':
- resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==}
- peerDependencies:
- '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0
+ '@types/node@25.9.5':
+ resolution: {integrity: sha512-OScDchr2fwuUmWdf4kZ9h7PcJiYDVInhJizG/biAq3cAvqwYktuy/TYGGdZNMtNTFUP7rnb0NU4TUdm82kt4Rg==}
- '@babel/preset-react@7.25.9':
- resolution: {integrity: sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw==}
- engines: {node: '>=6.9.0'}
+ '@types/react-dom@19.2.5':
+ resolution: {integrity: sha512-fMPwH9v7r/pp43yUd2/Mbiex5KouJwwR3dzHkhLREUC6764VyDsqxhAxv6OFEYR1RhjOyD1naqba8ECDBe7ZQg==}
peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@types/react': ^19.2.0
- '@babel/preset-typescript@7.26.0':
- resolution: {integrity: sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@types/react@19.2.18':
+ resolution: {integrity: sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==}
- '@babel/runtime@7.26.0':
- resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==}
- engines: {node: '>=6.9.0'}
+ '@types/supports-color@8.1.3':
+ resolution: {integrity: sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==}
- '@babel/template@7.25.9':
- resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==}
- engines: {node: '>=6.9.0'}
+ '@types/trusted-types@2.0.7':
+ resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
- '@babel/traverse@7.25.9':
- resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==}
- engines: {node: '>=6.9.0'}
+ '@types/unist@2.0.11':
+ resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
- '@babel/types@7.26.0':
- resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==}
- engines: {node: '>=6.9.0'}
+ '@types/unist@3.0.3':
+ resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
- '@braintree/sanitize-url@7.1.0':
- resolution: {integrity: sha512-o+UlMLt49RvtCASlOMW0AkHnabN9wR9rwCCherxO0yG4Npy34GkvrAqdXQvrhNs+jh+gkK8gB8Lf05qL/O7KWg==}
+ '@ungap/structured-clone@1.3.3':
+ resolution: {integrity: sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==}
- '@bufbuild/protobuf@2.10.2':
- resolution: {integrity: sha512-uFsRXwIGyu+r6AMdz+XijIIZJYpoWeYzILt5yZ2d3mCjQrWUTVpVD9WL/jZAbvp+Ed04rOhrsk7FiTcEDseB5A==}
+ '@unhead/react@2.1.17':
+ resolution: {integrity: sha512-KmcYksDjlLozL0fxUjIDwH/0k6+Lg2HWHLUPlkRW8Gl08hdB1AbLB5iU9QxFvkaT8p0Q4dFEqZWnz3g6RMeiRA==}
+ peerDependencies:
+ react: '>=18.3.1'
- '@chevrotain/cst-dts-gen@11.0.3':
- resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==}
+ acorn-jsx@5.3.2:
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
- '@chevrotain/gast@11.0.3':
- resolution: {integrity: sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==}
+ acorn@8.18.0:
+ resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
- '@chevrotain/regexp-to-ast@11.0.3':
- resolution: {integrity: sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==}
+ ansi-regex@6.3.0:
+ resolution: {integrity: sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==}
+ engines: {node: '>=12'}
- '@chevrotain/types@11.0.3':
- resolution: {integrity: sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==}
+ astring@1.9.0:
+ resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==}
+ hasBin: true
- '@chevrotain/utils@11.0.3':
- resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==}
+ bail@2.0.2:
+ resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
- '@colors/colors@1.5.0':
- resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
- engines: {node: '>=0.1.90'}
+ balanced-match@4.0.4:
+ resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
+ engines: {node: 18 || 20 || >=22}
- '@csstools/cascade-layer-name-parser@2.0.5':
- resolution: {integrity: sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==}
- engines: {node: '>=18'}
- peerDependencies:
- '@csstools/css-parser-algorithms': ^3.0.5
- '@csstools/css-tokenizer': ^3.0.4
+ big.js@5.2.2:
+ resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==}
- '@csstools/color-helpers@5.1.0':
- resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==}
- engines: {node: '>=18'}
+ body-scroll-lock@4.0.0-beta.0:
+ resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==}
- '@csstools/css-calc@2.1.4':
- resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==}
- engines: {node: '>=18'}
- peerDependencies:
- '@csstools/css-parser-algorithms': ^3.0.5
- '@csstools/css-tokenizer': ^3.0.4
+ brace-expansion@5.0.9:
+ resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==}
+ engines: {node: 20 || >=22}
- '@csstools/css-color-parser@3.1.0':
- resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==}
- engines: {node: '>=18'}
- peerDependencies:
- '@csstools/css-parser-algorithms': ^3.0.5
- '@csstools/css-tokenizer': ^3.0.4
+ ccount@2.0.1:
+ resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
- '@csstools/css-parser-algorithms@3.0.5':
- resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==}
- engines: {node: '>=18'}
- peerDependencies:
- '@csstools/css-tokenizer': ^3.0.4
+ character-entities-html4@2.1.0:
+ resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
- '@csstools/css-tokenizer@3.0.4':
- resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==}
- engines: {node: '>=18'}
+ character-entities-legacy@3.0.0:
+ resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
- '@csstools/media-query-list-parser@4.0.3':
- resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==}
- engines: {node: '>=18'}
- peerDependencies:
- '@csstools/css-parser-algorithms': ^3.0.5
- '@csstools/css-tokenizer': ^3.0.4
+ character-entities@2.0.2:
+ resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
- '@csstools/postcss-alpha-function@1.0.1':
- resolution: {integrity: sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ character-reference-invalid@2.0.1:
+ resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==}
- '@csstools/postcss-cascade-layers@5.0.2':
- resolution: {integrity: sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ chokidar@5.0.0:
+ resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==}
+ engines: {node: '>= 20.19.0'}
- '@csstools/postcss-color-function-display-p3-linear@1.0.1':
- resolution: {integrity: sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ clsx@2.1.1:
+ resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
+ engines: {node: '>=6'}
- '@csstools/postcss-color-function@4.0.12':
- resolution: {integrity: sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ code-block-writer@13.0.3:
+ resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==}
- '@csstools/postcss-color-mix-function@3.0.12':
- resolution: {integrity: sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ collapse-white-space@2.1.0:
+ resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==}
- '@csstools/postcss-color-mix-variadic-function-arguments@1.0.2':
- resolution: {integrity: sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ colorjs.io@0.7.1:
+ resolution: {integrity: sha512-LY7OHnJZxHwT5UlzNa9bbhHHDbzB6yE5+3MIPwJEQKRvSCt/T4G7epsj+9j2BExUIIfXFIJGsIXUKdfrK9Q5tA==}
- '@csstools/postcss-content-alt-text@2.0.8':
- resolution: {integrity: sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ comma-separated-tokens@2.0.3:
+ resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
- '@csstools/postcss-contrast-color-function@2.0.12':
- resolution: {integrity: sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ commander@7.2.0:
+ resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
+ engines: {node: '>= 10'}
- '@csstools/postcss-exponential-functions@2.0.9':
- resolution: {integrity: sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ commander@8.3.0:
+ resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
+ engines: {node: '>= 12'}
- '@csstools/postcss-font-format-keywords@4.0.0':
- resolution: {integrity: sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ compute-scroll-into-view@3.1.1:
+ resolution: {integrity: sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==}
- '@csstools/postcss-gamut-mapping@2.0.11':
- resolution: {integrity: sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==}
+ cookie@1.1.1:
+ resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==}
engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
- '@csstools/postcss-gradients-interpolation-method@5.0.12':
- resolution: {integrity: sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ copy-to-clipboard@3.3.3:
+ resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==}
- '@csstools/postcss-hwb-function@4.0.12':
- resolution: {integrity: sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ cose-base@1.0.3:
+ resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==}
- '@csstools/postcss-ic-unit@4.0.4':
- resolution: {integrity: sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ csstype@3.2.3:
+ resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
- '@csstools/postcss-initial@2.0.1':
- resolution: {integrity: sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==}
- engines: {node: '>=18'}
+ cytoscape-cose-bilkent@4.1.0:
+ resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==}
peerDependencies:
- postcss: ^8.4
+ cytoscape: ^3.2.0
- '@csstools/postcss-is-pseudo-class@5.0.3':
- resolution: {integrity: sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ cytoscape@3.34.1:
+ resolution: {integrity: sha512-Lr0RvH9H75y9ar8h9Toy6u4lxRSCcxUq+hHcQ26sVWo6BnaQp1gwEZOYqwuYTZhyW7npyKnNLP8oJ2p1/3OZ7g==}
+ engines: {node: '>=0.10'}
- '@csstools/postcss-light-dark-function@2.0.11':
- resolution: {integrity: sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-array@2.12.1:
+ resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==}
- '@csstools/postcss-logical-float-and-clear@3.0.0':
- resolution: {integrity: sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-array@3.2.4:
+ resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==}
+ engines: {node: '>=12'}
- '@csstools/postcss-logical-overflow@2.0.0':
- resolution: {integrity: sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-axis@3.0.0:
+ resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==}
+ engines: {node: '>=12'}
- '@csstools/postcss-logical-overscroll-behavior@2.0.0':
- resolution: {integrity: sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-brush@3.0.0:
+ resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==}
+ engines: {node: '>=12'}
- '@csstools/postcss-logical-resize@3.0.0':
- resolution: {integrity: sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-chord@3.0.1:
+ resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==}
+ engines: {node: '>=12'}
- '@csstools/postcss-logical-viewport-units@3.0.4':
- resolution: {integrity: sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-color@3.1.0:
+ resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==}
+ engines: {node: '>=12'}
- '@csstools/postcss-media-minmax@2.0.9':
- resolution: {integrity: sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-contour@4.0.2:
+ resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==}
+ engines: {node: '>=12'}
- '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.5':
- resolution: {integrity: sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-delaunay@6.0.4:
+ resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==}
+ engines: {node: '>=12'}
- '@csstools/postcss-nested-calc@4.0.0':
- resolution: {integrity: sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-dispatch@3.0.1:
+ resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==}
+ engines: {node: '>=12'}
- '@csstools/postcss-normalize-display-values@4.0.0':
- resolution: {integrity: sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-drag@3.0.0:
+ resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==}
+ engines: {node: '>=12'}
- '@csstools/postcss-oklab-function@4.0.12':
- resolution: {integrity: sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-dsv@3.0.1:
+ resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==}
+ engines: {node: '>=12'}
+ hasBin: true
- '@csstools/postcss-position-area-property@1.0.0':
- resolution: {integrity: sha512-fUP6KR8qV2NuUZV3Cw8itx0Ep90aRjAZxAEzC3vrl6yjFv+pFsQbR18UuQctEKmA72K9O27CoYiKEgXxkqjg8Q==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-ease@3.0.1:
+ resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==}
+ engines: {node: '>=12'}
- '@csstools/postcss-progressive-custom-properties@4.2.1':
- resolution: {integrity: sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-fetch@3.0.1:
+ resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==}
+ engines: {node: '>=12'}
- '@csstools/postcss-random-function@2.0.1':
- resolution: {integrity: sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-force@3.0.0:
+ resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==}
+ engines: {node: '>=12'}
- '@csstools/postcss-relative-color-syntax@3.0.12':
- resolution: {integrity: sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-format@3.1.2:
+ resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==}
+ engines: {node: '>=12'}
- '@csstools/postcss-scope-pseudo-class@4.0.1':
- resolution: {integrity: sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-geo@3.1.1:
+ resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==}
+ engines: {node: '>=12'}
- '@csstools/postcss-sign-functions@1.1.4':
- resolution: {integrity: sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-hierarchy@3.1.2:
+ resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==}
+ engines: {node: '>=12'}
- '@csstools/postcss-stepped-value-functions@4.0.9':
- resolution: {integrity: sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-interpolate@3.0.1:
+ resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==}
+ engines: {node: '>=12'}
- '@csstools/postcss-system-ui-font-family@1.0.0':
- resolution: {integrity: sha512-s3xdBvfWYfoPSBsikDXbuorcMG1nN1M6GdU0qBsGfcmNR0A/qhloQZpTxjA3Xsyrk1VJvwb2pOfiOT3at/DuIQ==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-path@1.0.9:
+ resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==}
- '@csstools/postcss-text-decoration-shorthand@4.0.3':
- resolution: {integrity: sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-path@3.1.0:
+ resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==}
+ engines: {node: '>=12'}
- '@csstools/postcss-trigonometric-functions@4.0.9':
- resolution: {integrity: sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-polygon@3.0.1:
+ resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==}
+ engines: {node: '>=12'}
- '@csstools/postcss-unset-value@4.0.0':
- resolution: {integrity: sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-quadtree@3.0.1:
+ resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==}
+ engines: {node: '>=12'}
- '@csstools/selector-resolve-nested@3.1.0':
- resolution: {integrity: sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss-selector-parser: ^7.0.0
+ d3-random@3.0.1:
+ resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==}
+ engines: {node: '>=12'}
- '@csstools/selector-specificity@5.0.0':
- resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss-selector-parser: ^7.0.0
+ d3-sankey@0.12.3:
+ resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==}
- '@csstools/utilities@2.0.0':
- resolution: {integrity: sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
+ d3-scale-chromatic@3.1.0:
+ resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==}
+ engines: {node: '>=12'}
- '@discoveryjs/json-ext@0.5.7':
- resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==}
- engines: {node: '>=10.0.0'}
+ d3-scale@4.0.2:
+ resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==}
+ engines: {node: '>=12'}
- '@docsearch/css@3.9.0':
- resolution: {integrity: sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA==}
+ d3-selection@3.0.0:
+ resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==}
+ engines: {node: '>=12'}
- '@docsearch/react@3.9.0':
- resolution: {integrity: sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ==}
- peerDependencies:
- '@types/react': '>= 16.8.0 < 20.0.0'
- react: '>= 16.8.0 < 20.0.0'
- react-dom: '>= 16.8.0 < 20.0.0'
- search-insights: '>= 1 < 3'
- peerDependenciesMeta:
- '@types/react':
- optional: true
- react:
- optional: true
- react-dom:
- optional: true
- search-insights:
- optional: true
+ d3-shape@1.3.7:
+ resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==}
+
+ d3-shape@3.2.0:
+ resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==}
+ engines: {node: '>=12'}
+
+ d3-time-format@4.1.0:
+ resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==}
+ engines: {node: '>=12'}
+
+ d3-time@3.1.0:
+ resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==}
+ engines: {node: '>=12'}
- '@docusaurus/babel@3.10.2':
- resolution: {integrity: sha512-aJ1hpGyvfkte3dDAfNbWM4biW4yWZBVz7TIGLZP+v+tWOBgxX3e0N5ZIXHIvmfNNXTI77pcHUx3KmtOk05Ze3Q==}
- engines: {node: '>=20.0'}
+ d3-timer@3.0.1:
+ resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==}
+ engines: {node: '>=12'}
- '@docusaurus/bundler@3.10.2':
- resolution: {integrity: sha512-i0ZNcy0f0WhaOlYVgzLsWhIoEXO9kS3HRoKPtgE6vQtZUq7arKZaYdNBudr3mqCmd+TyOkwtwfHgs1ENj07r5g==}
- engines: {node: '>=20.0'}
+ d3-transition@3.0.1:
+ resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==}
+ engines: {node: '>=12'}
peerDependencies:
- '@docusaurus/faster': '*'
- peerDependenciesMeta:
- '@docusaurus/faster':
- optional: true
+ d3-selection: 2 - 3
- '@docusaurus/core@3.10.2':
- resolution: {integrity: sha512-EYByj6nk+aD9KeVxV6Hmo2/nAAT79P21Y82ycTBOBtrmqilloIbIEhgL2/8Xpt2Jz/pgNqHAwyusOGwmbKeJmA==}
- engines: {node: '>=20.0'}
- hasBin: true
+ d3-zoom@3.0.0:
+ resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==}
+ engines: {node: '>=12'}
+
+ d3@7.9.0:
+ resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==}
+ engines: {node: '>=12'}
+
+ dagre-d3-es@7.0.13:
+ resolution: {integrity: sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==}
+
+ dayjs@1.11.23:
+ resolution: {integrity: sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==}
+
+ debug@4.4.3:
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
peerDependencies:
- '@docusaurus/faster': '*'
- '@mdx-js/react': ^3.0.0
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
+ supports-color: '*'
peerDependenciesMeta:
- '@docusaurus/faster':
+ supports-color:
optional: true
- '@docusaurus/cssnano-preset@3.10.2':
- resolution: {integrity: sha512-4gCnHRbJLTloiwfvFAa92tgb2gI4KYhvjfQVYnEaiMO/EgvWfCo1LwytHXen+1oZAN0VAlS0JAPxp3MsvKDa3A==}
- engines: {node: '>=20.0'}
+ decode-named-character-reference@1.3.0:
+ resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==}
- '@docusaurus/faster@3.10.2':
- resolution: {integrity: sha512-p/5E5/RyHv+QWusJMPN5i3OMJTqTgkhuwzVbB1AReDWTUHXQCmf5mlTFzGiDrWeQWIDOKsuOPn1jJh0s9LUOHA==}
- engines: {node: '>=20.0'}
- peerDependencies:
- '@docusaurus/types': '*'
+ deepmerge@4.3.1:
+ resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+ engines: {node: '>=0.10.0'}
- '@docusaurus/logger@3.10.2':
- resolution: {integrity: sha512-gSEwqtPfCAnC3ZSJY6xL7tcIfgg0vFD39jbv93eakuweyvO2864xR0K+kmKwBhkTCtWRNjuGGnb5rdmkD/ndqw==}
- engines: {node: '>=20.0'}
+ delaunator@5.1.0:
+ resolution: {integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==}
- '@docusaurus/mdx-loader@3.10.2':
- resolution: {integrity: sha512-9Fd4V/SFjfrVQ0JH5EN0+iPWyFunvTeQE3gfyFeetqPaXMP0OylIjOw16dCuXG4NZJrYdBqwzjh18/h3gRi47w==}
- engines: {node: '>=20.0'}
- peerDependencies:
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
+ dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
- '@docusaurus/module-type-aliases@3.10.2':
- resolution: {integrity: sha512-h/I5e4jaAhDHW4vaLENi1i2hnOEnXY1t9R+nnRTbgUl7ymVRzN/HF7dDfj8rKYGj8gfIge+Ef+iYRAMtbGvsrQ==}
- peerDependencies:
- react: '*'
- react-dom: '*'
+ detect-libc@2.1.2:
+ resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
+ engines: {node: '>=8'}
- '@docusaurus/plugin-client-redirects@3.10.2':
- resolution: {integrity: sha512-z5I5ttCXw+8y2gHVZvqAMmUw4Rb0ZzKA5eCPk87SfM/jCKOTvE24yDpPAwwipvug96ij7mOwEHXWw8G4LlWdGA==}
- engines: {node: '>=20.0'}
- peerDependencies:
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
+ devlop@1.1.0:
+ resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
- '@docusaurus/plugin-content-blog@3.10.2':
- resolution: {integrity: sha512-0cbEnNKf0InmLkhj/+nVRmqEnWEoOE8Mh+2x1qOXI0qYpCnphq4RXknVJ8BvybKRXqYVvbmdMfiJSup+k4tm5w==}
- engines: {node: '>=20.0'}
- peerDependencies:
- '@docusaurus/plugin-content-docs': '*'
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
+ diff@5.2.2:
+ resolution: {integrity: sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==}
+ engines: {node: '>=0.3.1'}
- '@docusaurus/plugin-content-docs@3.10.2':
- resolution: {integrity: sha512-Sqwl4FPoZBDrlY8I2VU2H8O0M91CHp9T8ToMSkTZmjvHCif+1laqfXi6sTk8IfyVS/trN5yNjcWd1bFsGB6W5Q==}
- engines: {node: '>=20.0'}
- peerDependencies:
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
+ dompurify@3.4.14:
+ resolution: {integrity: sha512-dVoH9z+MY+C9IilgGCk3YfFqjLi3fChm2OiKJMzh6axrJ5qwxqWaZamgmHrpv22CN/KdbZJuGEGgfQoL00LTdg==}
- '@docusaurus/plugin-content-pages@3.10.2':
- resolution: {integrity: sha512-h5R12sZ/vV9EPiVjvIl9YFCOwkpwXes7dQMYt3EvP6Pphu4amHxxTqWxf08Fl5DR8h+oZMbWpFTNw5vKEYfvzQ==}
- engines: {node: '>=20.0'}
- peerDependencies:
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
+ eastasianwidth@0.2.0:
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
- '@docusaurus/plugin-css-cascade-layers@3.10.2':
- resolution: {integrity: sha512-UkdvQby5OQUKWrw3lLnSTJXQ6VETaUVTuPQX9AABtmFm5h+ifEBx1OQ+LN726Q4byuwBf2ElHkf4qU4hTxdvRg==}
- engines: {node: '>=20.0'}
+ elkjs@0.9.3:
+ resolution: {integrity: sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==}
- '@docusaurus/plugin-debug@3.10.2':
- resolution: {integrity: sha512-8vbZNOSCpnsT57EY6CgN7sgRVmx3KTYwO8Uvo2pbxOyb8tbqAwtT9SslqaQ41HbA1v1hpn5RP7u5s2KvRwAFpQ==}
- engines: {node: '>=20.0'}
- peerDependencies:
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
+ emoji-regex@10.6.0:
+ resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
- '@docusaurus/plugin-google-analytics@3.10.2':
- resolution: {integrity: sha512-kMHMBK9j4VAtgd5owwrRLRIi0EjkrpXlX7ePj1+y68XfVZV9I1T4S+koPDm+Hfw2TtnyHvh0uNrDvjz+DjQGVA==}
- engines: {node: '>=20.0'}
- peerDependencies:
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
+ emojis-list@3.0.0:
+ resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
+ engines: {node: '>= 4'}
- '@docusaurus/plugin-google-gtag@3.10.2':
- resolution: {integrity: sha512-Vt90nNFhtAChRe9+it1hcHFgFvETdSnOkL5Bma+p6E/yU2tAYrvvyk+gv+LJGM2ZUkyKuKXLRsZ2Lb0bO7+Vog==}
- engines: {node: '>=20.0'}
- peerDependencies:
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
+ entities@6.0.1:
+ resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
+ engines: {node: '>=0.12'}
- '@docusaurus/plugin-google-tag-manager@3.10.2':
- resolution: {integrity: sha512-MLCffCldysi/R0nzJQP7ZWd0xAoGNnSTiVOo6TTR6mKVGFhE+/XArGe67ZcaZv1uytgQXoXs92VJrgVDrz80rQ==}
- engines: {node: '>=20.0'}
- peerDependencies:
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
+ esast-util-from-estree@2.0.0:
+ resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==}
- '@docusaurus/plugin-sitemap@3.10.2':
- resolution: {integrity: sha512-PODkwg5XetLML3hU/3xpCKJUZ9cqExLaBnD/Fzzwj2VHogLeqnDisLIujae87zuze7T4mCm2A6KEqZkyiz07EQ==}
- engines: {node: '>=20.0'}
- peerDependencies:
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
+ esast-util-from-js@2.0.1:
+ resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==}
- '@docusaurus/plugin-svgr@3.10.2':
- resolution: {integrity: sha512-JgfT3jWM0TJ8Uw0cEcqxHpybngQY1vlBYpuuNO+gEh5iPh5Ar+vxq/u9CFrYsWeXy48BN7Db76Pzp2edNXUQ8A==}
- engines: {node: '>=20.0'}
- peerDependencies:
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
+ escape-string-regexp@5.0.0:
+ resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+ engines: {node: '>=12'}
- '@docusaurus/preset-classic@3.10.2':
- resolution: {integrity: sha512-a4B3VczmDl99zK0EufDQYomdJ186WDingjmDXxhN2PNPS9Ty/Y2M5CLFX1KQMRKqRTLiRDKfutzG5IY1FC/ceg==}
- engines: {node: '>=20.0'}
- peerDependencies:
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
+ estree-util-attach-comments@3.0.0:
+ resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==}
- '@docusaurus/react-loadable@6.0.0':
- resolution: {integrity: sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==}
- peerDependencies:
- react: '*'
+ estree-util-build-jsx@3.0.1:
+ resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==}
- '@docusaurus/theme-classic@3.10.2':
- resolution: {integrity: sha512-JqTSLQmqmA9uKWZsD5iwBGJ4JyKB4/yTw6PsSXVPRJG/6GAm/u+add9Iip+hvwP12/AnPNztrdxsI14NJW4KeA==}
- engines: {node: '>=20.0'}
- peerDependencies:
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
+ estree-util-is-identifier-name@3.0.0:
+ resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==}
- '@docusaurus/theme-common@3.10.2':
- resolution: {integrity: sha512-R9b/vMpK1yye6hNZTA6x/ivRv+at6GhxnXcxkpzCGzO1R1RwiquqiFg2wMFh6aqlJTpWRFKpFD2TzCDQcyOU0A==}
- engines: {node: '>=20.0'}
- peerDependencies:
- '@docusaurus/plugin-content-docs': '*'
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
+ estree-util-scope@1.0.0:
+ resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==}
+
+ estree-util-to-js@2.0.0:
+ resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==}
+
+ estree-util-visit@2.0.0:
+ resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==}
+
+ estree-walker@3.0.3:
+ resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
- '@docusaurus/theme-mermaid@3.10.2':
- resolution: {integrity: sha512-Stssh5MYQJ+EdYugUXf+ZcpeJFQPKXf0KCd/SWp10o3CmXNaOoh5IEgVjVqY1e1XhQf3on4+Y4BnrMiD95E2SQ==}
- engines: {node: '>=20.0'}
+ extend@3.0.2:
+ resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
+
+ fdir@6.5.0:
+ resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
+ engines: {node: '>=12.0.0'}
peerDependencies:
- '@mermaid-js/layout-elk': ^0.1.9
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
+ picomatch: ^3 || ^4
peerDependenciesMeta:
- '@mermaid-js/layout-elk':
+ picomatch:
optional: true
- '@docusaurus/theme-search-algolia@3.10.2':
- resolution: {integrity: sha512-1msxllyhi/5m77JukXtp5UFnUAriwZIC1oJ7MTnpQpCwLTbclJi5BK5n28CTZuSXpQN2ewbbnqRgAhMM6c6ihg==}
- engines: {node: '>=20.0'}
- peerDependencies:
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
-
- '@docusaurus/theme-translations@3.10.2':
- resolution: {integrity: sha512-iv20wrxnyXkY89LM3TzRlzGlt5fIGO5UnaR6UL1ZVfB9RRFjxQFQ6awDrwAc6Km8Y5gD8pInuwYPF+6/TiCxXA==}
- engines: {node: '>=20.0'}
+ flat@6.0.1:
+ resolution: {integrity: sha512-/3FfIa8mbrg3xE7+wAhWeV+bd7L2Mof+xtZb5dRDKZ+wDvYJK4WDYeIOuOhre5Yv5aQObZrlbRmk3RTSiuQBtw==}
+ engines: {node: '>=18'}
+ hasBin: true
- '@docusaurus/types@3.10.2':
- resolution: {integrity: sha512-B6rvfwIFSapUqUJjMriZswX13K8l5Z7AcmVE6uTEJpYddQieSTR12DsGaFtcZAIDsQd4p+0WTl0Vc6jmZK0Trw==}
- peerDependencies:
- react: ^18.0.0 || ^19.0.0
- react-dom: ^18.0.0 || ^19.0.0
+ flexsearch@0.8.212:
+ resolution: {integrity: sha512-wSyJr1GUWoOOIISRu+X2IXiOcVfg9qqBRyCPRUdLMIGJqPzMo+jMRlvE83t14v1j0dRMEaBbER/adQjp6Du2pw==}
- '@docusaurus/utils-common@3.10.2':
- resolution: {integrity: sha512-x3Dz6jv6iQKBNjBmVTu8p57abMp/VNTUgKBMgRVXJc5444orBTsArv0+cdfrXTiz/VMmHfDRVkPbL7GH2B7T7w==}
- engines: {node: '>=20.0'}
+ get-east-asian-width@1.6.0:
+ resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==}
+ engines: {node: '>=18'}
- '@docusaurus/utils-validation@3.10.2':
- resolution: {integrity: sha512-sn8unbDfUL585NtR3cwHefPicOyaHvPaX7VD0aOg/siIxUBoKyKKaGEqzJZDS64mM43TnxurkYDtmB1wsJlZsw==}
- engines: {node: '>=20.0'}
+ has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
- '@docusaurus/utils@3.10.2':
- resolution: {integrity: sha512-xx0W3eav2uW1NRIpuHJWNwLTC15xPNjU4Uxi9NSnd3swYC96BE3vFiT93SD8s24kmAAWNwgZwfZ2fghGZ01Lcw==}
- engines: {node: '>=20.0'}
+ hast-util-from-parse5@8.0.3:
+ resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==}
- '@emnapi/core@1.7.1':
- resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==}
+ hast-util-heading-rank@3.0.0:
+ resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==}
- '@emnapi/runtime@1.7.1':
- resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
+ hast-util-is-element@3.0.0:
+ resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==}
- '@emnapi/wasi-threads@1.1.0':
- resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==}
+ hast-util-parse-selector@4.0.0:
+ resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==}
- '@hapi/hoek@9.3.0':
- resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==}
+ hast-util-raw@9.1.0:
+ resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==}
- '@hapi/topo@5.1.0':
- resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
+ hast-util-to-estree@3.1.3:
+ resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==}
- '@iconify/types@2.0.0':
- resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
+ hast-util-to-html@9.0.5:
+ resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==}
- '@iconify/utils@2.1.33':
- resolution: {integrity: sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==}
+ hast-util-to-jsx-runtime@2.3.6:
+ resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==}
- '@jest/schemas@29.6.3':
- resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hast-util-to-parse5@8.0.1:
+ resolution: {integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==}
- '@jest/types@29.6.3':
- resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hast-util-to-string@3.0.1:
+ resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==}
- '@jridgewell/gen-mapping@0.3.5':
- resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
- engines: {node: '>=6.0.0'}
+ hast-util-whitespace@3.0.0:
+ resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
- '@jridgewell/resolve-uri@3.1.2':
- resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
- engines: {node: '>=6.0.0'}
+ hastscript@9.0.1:
+ resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==}
- '@jridgewell/set-array@1.2.1':
- resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
- engines: {node: '>=6.0.0'}
+ hookable@6.1.1:
+ resolution: {integrity: sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==}
- '@jridgewell/source-map@0.3.6':
- resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==}
+ html-void-elements@3.0.0:
+ resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
- '@jridgewell/sourcemap-codec@1.5.0':
- resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+ iconv-lite@0.6.3:
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
- '@jridgewell/trace-mapping@0.3.25':
- resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+ immutable@5.1.9:
+ resolution: {integrity: sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==}
- '@jsonjoy.com/base64@1.1.2':
- resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==}
- engines: {node: '>=10.0'}
- peerDependencies:
- tslib: '2'
+ inline-style-parser@0.2.7:
+ resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==}
- '@jsonjoy.com/buffers@1.2.1':
- resolution: {integrity: sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==}
- engines: {node: '>=10.0'}
- peerDependencies:
- tslib: '2'
+ internmap@1.0.1:
+ resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==}
- '@jsonjoy.com/codegen@1.0.0':
- resolution: {integrity: sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==}
- engines: {node: '>=10.0'}
- peerDependencies:
- tslib: '2'
+ internmap@2.0.3:
+ resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==}
+ engines: {node: '>=12'}
- '@jsonjoy.com/json-pack@1.21.0':
- resolution: {integrity: sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==}
- engines: {node: '>=10.0'}
- peerDependencies:
- tslib: '2'
+ is-absolute-url@4.0.1:
+ resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- '@jsonjoy.com/json-pointer@1.0.2':
- resolution: {integrity: sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==}
- engines: {node: '>=10.0'}
- peerDependencies:
- tslib: '2'
+ is-alphabetical@2.0.1:
+ resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
- '@jsonjoy.com/util@1.9.0':
- resolution: {integrity: sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==}
- engines: {node: '>=10.0'}
- peerDependencies:
- tslib: '2'
+ is-alphanumerical@2.0.1:
+ resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
- '@leichtgewicht/ip-codec@2.0.5':
- resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==}
+ is-decimal@2.0.1:
+ resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
- '@mdx-js/mdx@3.1.0':
- resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==}
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
- '@mdx-js/react@3.1.1':
- resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==}
- peerDependencies:
- '@types/react': '>=16'
- react: '>=16'
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
- '@mermaid-js/parser@0.4.0':
- resolution: {integrity: sha512-wla8XOWvQAwuqy+gxiZqY+c7FokraOTHRWMsbB4AgRx9Sy7zKslNyejy7E+a77qHfey5GXw/ik3IXv/NHMJgaA==}
+ is-hexadecimal@2.0.1:
+ resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
- '@module-federation/error-codes@0.22.0':
- resolution: {integrity: sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==}
+ is-plain-obj@4.1.0:
+ resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
+ engines: {node: '>=12'}
- '@module-federation/runtime-core@0.22.0':
- resolution: {integrity: sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==}
+ json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
- '@module-federation/runtime-tools@0.22.0':
- resolution: {integrity: sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==}
+ katex@0.16.47:
+ resolution: {integrity: sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==}
+ hasBin: true
- '@module-federation/runtime@0.22.0':
- resolution: {integrity: sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==}
+ khroma@2.1.0:
+ resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==}
- '@module-federation/sdk@0.22.0':
- resolution: {integrity: sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==}
+ kleur@4.1.5:
+ resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
+ engines: {node: '>=6'}
- '@module-federation/webpack-bundler-runtime@0.22.0':
- resolution: {integrity: sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==}
+ layout-base@1.0.2:
+ resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==}
- '@napi-rs/wasm-runtime@1.0.7':
- resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==}
+ loader-utils@2.0.4:
+ resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==}
+ engines: {node: '>=8.9.0'}
- '@nodelib/fs.scandir@2.1.5':
- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
- engines: {node: '>= 8'}
+ lodash-es@4.18.1:
+ resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==}
- '@nodelib/fs.stat@2.0.5':
- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
- engines: {node: '>= 8'}
+ longest-streak@3.1.0:
+ resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
- '@nodelib/fs.walk@1.2.8':
- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
- engines: {node: '>= 8'}
+ markdown-extensions@2.0.0:
+ resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==}
+ engines: {node: '>=16'}
- '@parcel/watcher-android-arm64@2.5.1':
- resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [android]
+ markdown-table@3.0.4:
+ resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==}
- '@parcel/watcher-darwin-arm64@2.5.1':
- resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [darwin]
+ mdast-util-find-and-replace@3.0.2:
+ resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==}
- '@parcel/watcher-darwin-x64@2.5.1':
- resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [darwin]
+ mdast-util-from-markdown@1.3.1:
+ resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==}
- '@parcel/watcher-freebsd-x64@2.5.1':
- resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [freebsd]
+ mdast-util-from-markdown@2.0.3:
+ resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==}
- '@parcel/watcher-linux-arm-glibc@2.5.1':
- resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm]
- os: [linux]
- libc: [glibc]
+ mdast-util-gfm-autolink-literal@2.0.1:
+ resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==}
- '@parcel/watcher-linux-arm-musl@2.5.1':
- resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm]
- os: [linux]
- libc: [musl]
+ mdast-util-gfm-footnote@2.1.0:
+ resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==}
- '@parcel/watcher-linux-arm64-glibc@2.5.1':
- resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
+ mdast-util-gfm-strikethrough@2.0.0:
+ resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==}
- '@parcel/watcher-linux-arm64-musl@2.5.1':
- resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
+ mdast-util-gfm-table@2.0.0:
+ resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==}
- '@parcel/watcher-linux-x64-glibc@2.5.1':
- resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
-
- '@parcel/watcher-linux-x64-musl@2.5.1':
- resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [linux]
- libc: [musl]
-
- '@parcel/watcher-win32-arm64@2.5.1':
- resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [win32]
+ mdast-util-gfm-task-list-item@2.0.0:
+ resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==}
- '@parcel/watcher-win32-ia32@2.5.1':
- resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==}
- engines: {node: '>= 10.0.0'}
- cpu: [ia32]
- os: [win32]
+ mdast-util-gfm@3.1.0:
+ resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==}
- '@parcel/watcher-win32-x64@2.5.1':
- resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [win32]
+ mdast-util-mdx-expression@2.0.1:
+ resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==}
- '@parcel/watcher@2.5.1':
- resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==}
- engines: {node: '>= 10.0.0'}
+ mdast-util-mdx-jsx@3.2.0:
+ resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==}
- '@pnpm/config.env-replace@1.1.0':
- resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==}
- engines: {node: '>=12.22.0'}
+ mdast-util-mdx@3.0.0:
+ resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==}
- '@pnpm/network.ca-file@1.0.2':
- resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==}
- engines: {node: '>=12.22.0'}
+ mdast-util-mdxjs-esm@2.0.1:
+ resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==}
- '@pnpm/npm-conf@2.3.1':
- resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==}
- engines: {node: '>=12'}
+ mdast-util-phrasing@4.1.0:
+ resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
- '@polka/url@1.0.0-next.28':
- resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==}
+ mdast-util-to-hast@13.2.1:
+ resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==}
- '@rspack/binding-darwin-arm64@1.7.11':
- resolution: {integrity: sha512-oduECiZVqbO5zlVw+q7Vy65sJFth99fWPTyucwvLJJtJkPL5n17Uiql2cYP6Ijn0pkqtf1SXgK8WjiKLG5bIig==}
- cpu: [arm64]
- os: [darwin]
+ mdast-util-to-markdown-cjk-friendly-gfm-strikethrough@1.0.0:
+ resolution: {integrity: sha512-1ePVfB4P/vz3xSsm6H3D32r6VYGErxclnuLLFK02/2ReF+UdEKm7caulK6Vm0LBIp5gPRtB2Z1OYDznCkX3k2w==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/mdast': '*'
+ peerDependenciesMeta:
+ '@types/mdast':
+ optional: true
- '@rspack/binding-darwin-x64@1.7.11':
- resolution: {integrity: sha512-a1+TtTE9ap6RalgFi7FGIgkJP6O4Vy6ctv+9WGJy53E4kuqHR0RygzaiVxCI/GMc/vBT9vY23hyrpWb3d1vtXA==}
- cpu: [x64]
- os: [darwin]
+ mdast-util-to-markdown-cjk-friendly@1.0.0:
+ resolution: {integrity: sha512-BoaAm8mlJ+LAYz0Qs532Y3ciTuQYgBUPZcSFbvC/ZKmEMAKgulw84YvQK1gI34t/vL2euSfuaWlqczkTBgamkw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/mdast': '*'
+ peerDependenciesMeta:
+ '@types/mdast':
+ optional: true
- '@rspack/binding-linux-arm64-gnu@1.7.11':
- resolution: {integrity: sha512-P0QrGRPbTWu6RKWfN0bDtbnEps3rXH0MWIMreZABoUrVmNQKtXR6e73J3ub6a+di5s2+K0M2LJ9Bh2/H4UsDUA==}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
+ mdast-util-to-markdown@2.1.2:
+ resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==}
- '@rspack/binding-linux-arm64-musl@1.7.11':
- resolution: {integrity: sha512-6ky7R43VMjWwmx3Yx7Jl7faLBBMAgMDt+/bN35RgwjiPgsIByz65EwytUVuW9rikB43BGHvA/eqlnjLrUzNBqw==}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
+ mdast-util-to-string@3.2.0:
+ resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==}
- '@rspack/binding-linux-x64-gnu@1.7.11':
- resolution: {integrity: sha512-cuOJMfCOvb2Wgsry5enXJ3iT1FGUjdPqtGUBVupQlEG4ntSYsQ2PtF4wIDVasR3wdxC5nQbipOrDiN/u6fYsdQ==}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
+ mdast-util-to-string@4.0.0:
+ resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
- '@rspack/binding-linux-x64-musl@1.7.11':
- resolution: {integrity: sha512-CoK37hva4AmHGh3VCsQXmGr40L36m1/AdnN5LEjUX6kx5rEH7/1nEBN6Ii72pejqDVvk9anEROmPDiPw10tpFg==}
- cpu: [x64]
- os: [linux]
- libc: [musl]
+ medium-zoom@1.1.0:
+ resolution: {integrity: sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==}
- '@rspack/binding-wasm32-wasi@1.7.11':
- resolution: {integrity: sha512-OtrmnPUVJMxjNa3eDMfHyPdtlLRmmp/aIm0fQHlAOATbZvlGm12q7rhPW5BXTu1yh+1rQ1/uqvz+SzKEZXuJaQ==}
- cpu: [wasm32]
+ mermaid@10.9.8:
+ resolution: {integrity: sha512-gmIhmkmD/3DL5lErDV71E/cFUkEbBW4VTFpsJH1HSYjeBICRKOoc4AZem+RNz/FhhCXKBMZiD75bIfBlb2A4yA==}
- '@rspack/binding-win32-arm64-msvc@1.7.11':
- resolution: {integrity: sha512-lObFW6e5lCWNgTBNwT//yiEDbsxm9QG4BYUojqeXxothuzJ/L6ibXz6+gLMvbOvLGV3nKgkXmx8GvT9WDKR0mA==}
- cpu: [arm64]
- os: [win32]
+ micromark-core-commonmark@1.1.0:
+ resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==}
- '@rspack/binding-win32-ia32-msvc@1.7.11':
- resolution: {integrity: sha512-0pYGnZd8PPqNR68zQ8skamqNAXEA1sUfXuAdYcknIIRq2wsbiwFzIc0Pov1cIfHYab37G7sSIPBiOUdOWF5Ivw==}
- cpu: [ia32]
- os: [win32]
+ micromark-core-commonmark@2.0.3:
+ resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==}
- '@rspack/binding-win32-x64-msvc@1.7.11':
- resolution: {integrity: sha512-EeQXayoQk/uBkI3pdoXfQBXNIUrADq56L3s/DFyM2pJeUDrWmhfIw2UFIGkYPTMSCo8F2JcdcGM32FGJrSnU0Q==}
- cpu: [x64]
- os: [win32]
+ micromark-extension-cjk-friendly-gfm-strikethrough@2.0.1:
+ resolution: {integrity: sha512-wVC0zwjJNqQeX+bb07YTPu/CvSAyCTafyYb7sMhX1r62/Lw5M/df3JyYaANyp8g15c1ypJRFSsookTqA1IDsUg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ micromark: ^4.0.0
+ micromark-util-types: ^2.0.0
+ peerDependenciesMeta:
+ micromark-util-types:
+ optional: true
- '@rspack/binding@1.7.11':
- resolution: {integrity: sha512-2MGdy2s2HimsDT444Bp5XnALzNRxuBNc7y0JzyuqKbHBywd4x2NeXyhWXXoxufaCFu5PBc9Qq9jyfjW2Aeh06Q==}
+ micromark-extension-cjk-friendly-util@3.0.1:
+ resolution: {integrity: sha512-GcbXqTTHOsiZHyF753oIddP/J2eH8j9zpyQPhkof6B2JNxfEJabnQqxbCgzJNuNes0Y2jTNJ3LiYPSXr6eJA8w==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ micromark-util-types: '*'
+ peerDependenciesMeta:
+ micromark-util-types:
+ optional: true
- '@rspack/core@1.7.11':
- resolution: {integrity: sha512-rsD9b+Khmot5DwCMiB3cqTQo53ioPG3M/A7BySu8+0+RS7GCxKm+Z+mtsjtG/vsu4Tn2tcqCdZtA3pgLoJB+ew==}
- engines: {node: '>=18.12.0'}
+ micromark-extension-cjk-friendly@2.0.1:
+ resolution: {integrity: sha512-OkzoYVTL1ChbvQ8Cc1ayTIz7paFQz8iS9oIYmewncweUSwmWR+hkJF9spJ1lxB90XldJl26A1F4IkPOKS3bDXw==}
+ engines: {node: '>=18'}
peerDependencies:
- '@swc/helpers': '>=0.5.1'
+ micromark: ^4.0.0
+ micromark-util-types: ^2.0.0
peerDependenciesMeta:
- '@swc/helpers':
+ micromark-util-types:
optional: true
- '@rspack/lite-tapable@1.1.0':
- resolution: {integrity: sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==}
+ micromark-extension-gfm-autolink-literal@2.1.0:
+ resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==}
- '@shikijs/core@4.4.3':
- resolution: {integrity: sha512-QCR4q2ZO/ILJEuwiBMel4wdcTDb1JGwfjKTxPDF6x8ixOaluPrVqIn06C99AcRPhmYlBR56d/Fb+GN58GzExpg==}
- engines: {node: '>=20'}
+ micromark-extension-gfm-footnote@2.1.0:
+ resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==}
- '@shikijs/engine-javascript@4.4.3':
- resolution: {integrity: sha512-FbOjFJp9VLdo1Wevs10BBtVxiTWwNLqZh5Gkhjgda/ioL15YOgeSl9n+6XMa3qRlPQzfhFNe641SrynFHYG0nQ==}
- engines: {node: '>=20'}
+ micromark-extension-gfm-strikethrough@2.1.0:
+ resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==}
- '@shikijs/engine-oniguruma@4.4.3':
- resolution: {integrity: sha512-EcOQkxdxGQrc1Row/cC2c96/v1dbZqGnEVu1qTuT/MJmp6+cXCvQussowVmCv5Tqr3KuY3c7IbM6HTW3LJ1k9w==}
- engines: {node: '>=20'}
+ micromark-extension-gfm-table@2.1.1:
+ resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==}
- '@shikijs/langs@4.4.3':
- resolution: {integrity: sha512-ePic0yfAJGOF83D5wBHK/00EjK65oahBYxFk5epgq33WRv7X9UuxLEV8PtR0szC0z8dl7INIpIodB99JRFlR+A==}
- engines: {node: '>=20'}
+ micromark-extension-gfm-tagfilter@2.0.0:
+ resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==}
- '@shikijs/primitive@4.4.3':
- resolution: {integrity: sha512-m0wBeLDQDeIxRdUmrCPdQqfuUamDwRL5isCfYbguKD6NiaKpVbsv+3J81DyIKgNW5h4WAIIr8T4EkgQrBBxvaQ==}
- engines: {node: '>=20'}
+ micromark-extension-gfm-task-list-item@2.1.0:
+ resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==}
- '@shikijs/rehype@4.4.3':
- resolution: {integrity: sha512-vkG9jG1aRnrx05R31uAOKQHE8qpY7r1cBXE2sAZgFK2IaPnQHwaP4L1C6amQixmZ8thBsKwfbSsYxMDoo46UWQ==}
- engines: {node: '>=20'}
+ micromark-extension-gfm@3.0.0:
+ resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==}
- '@shikijs/themes@4.4.3':
- resolution: {integrity: sha512-w8UHjeUnIR965KMWJHUPXOc2mNJUnK3vpVLYLvw5IYU2mnTTJ89E24OrJDBNiJDQ0qzb0tc4l7mrIXx5cFeIyw==}
- engines: {node: '>=20'}
+ micromark-extension-mdx-expression@3.0.1:
+ resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==}
- '@shikijs/transformers@4.4.3':
- resolution: {integrity: sha512-oJSARV6NaWd+rnNJbtnpAdj3Zg0ZVyzsnMgb3vi3HA+35y8lBWUCpOnWsmyiXZIikY+x1BDqrQUgmxfzWh7Jvw==}
- engines: {node: '>=20'}
+ micromark-extension-mdx-jsx@3.0.2:
+ resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==}
- '@shikijs/types@4.4.3':
- resolution: {integrity: sha512-UEJxmRR++MAGR6hugn0vgVS2W/6lWAts84FFSrnlH9sP0LNol7E5+NQ792pH8liWUhyMyjhTgSUH3k7iD7tc5g==}
- engines: {node: '>=20'}
+ micromark-extension-mdx-md@2.0.0:
+ resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==}
- '@shikijs/vscode-textmate@10.0.2':
- resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
+ micromark-extension-mdxjs-esm@3.0.0:
+ resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==}
- '@sideway/address@4.1.5':
- resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==}
+ micromark-extension-mdxjs@3.0.0:
+ resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==}
- '@sideway/formula@3.0.1':
- resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==}
+ micromark-factory-destination@1.1.0:
+ resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==}
- '@sideway/pinpoint@2.0.0':
- resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==}
+ micromark-factory-destination@2.0.1:
+ resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==}
- '@sinclair/typebox@0.27.8':
- resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
+ micromark-factory-label@1.1.0:
+ resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==}
- '@sindresorhus/is@4.6.0':
- resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
- engines: {node: '>=10'}
+ micromark-factory-label@2.0.1:
+ resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==}
- '@sindresorhus/is@5.6.0':
- resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==}
- engines: {node: '>=14.16'}
+ micromark-factory-mdx-expression@2.0.3:
+ resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==}
- '@slorber/react-helmet-async@1.3.0':
- resolution: {integrity: sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A==}
- peerDependencies:
- react: ^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ micromark-factory-space@1.1.0:
+ resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==}
- '@slorber/remark-comment@1.0.0':
- resolution: {integrity: sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==}
+ micromark-factory-space@2.0.1:
+ resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==}
- '@svgr/babel-plugin-add-jsx-attribute@5.4.0':
- resolution: {integrity: sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==}
- engines: {node: '>=10'}
+ micromark-factory-title@1.1.0:
+ resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==}
- '@svgr/babel-plugin-add-jsx-attribute@8.0.0':
- resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==}
- engines: {node: '>=14'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ micromark-factory-title@2.0.1:
+ resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==}
- '@svgr/babel-plugin-remove-jsx-attribute@5.4.0':
- resolution: {integrity: sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==}
- engines: {node: '>=10'}
+ micromark-factory-whitespace@1.1.0:
+ resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==}
- '@svgr/babel-plugin-remove-jsx-attribute@8.0.0':
- resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==}
- engines: {node: '>=14'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ micromark-factory-whitespace@2.0.1:
+ resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==}
- '@svgr/babel-plugin-remove-jsx-empty-expression@5.0.1':
- resolution: {integrity: sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==}
- engines: {node: '>=10'}
+ micromark-util-character@1.2.0:
+ resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==}
- '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0':
- resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==}
- engines: {node: '>=14'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ micromark-util-character@2.1.1:
+ resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==}
- '@svgr/babel-plugin-replace-jsx-attribute-value@5.0.1':
- resolution: {integrity: sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==}
- engines: {node: '>=10'}
+ micromark-util-chunked@1.1.0:
+ resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==}
- '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0':
- resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==}
- engines: {node: '>=14'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ micromark-util-chunked@2.0.1:
+ resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==}
- '@svgr/babel-plugin-svg-dynamic-title@5.4.0':
- resolution: {integrity: sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==}
- engines: {node: '>=10'}
+ micromark-util-classify-character@1.1.0:
+ resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==}
- '@svgr/babel-plugin-svg-dynamic-title@8.0.0':
- resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==}
- engines: {node: '>=14'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ micromark-util-classify-character@2.0.1:
+ resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==}
- '@svgr/babel-plugin-svg-em-dimensions@5.4.0':
- resolution: {integrity: sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==}
- engines: {node: '>=10'}
+ micromark-util-combine-extensions@1.1.0:
+ resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==}
- '@svgr/babel-plugin-svg-em-dimensions@8.0.0':
- resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==}
- engines: {node: '>=14'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ micromark-util-combine-extensions@2.0.1:
+ resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==}
- '@svgr/babel-plugin-transform-react-native-svg@5.4.0':
- resolution: {integrity: sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==}
- engines: {node: '>=10'}
+ micromark-util-decode-numeric-character-reference@1.1.0:
+ resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==}
- '@svgr/babel-plugin-transform-react-native-svg@8.1.0':
- resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==}
- engines: {node: '>=14'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ micromark-util-decode-numeric-character-reference@2.0.2:
+ resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==}
- '@svgr/babel-plugin-transform-svg-component@5.5.0':
- resolution: {integrity: sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==}
- engines: {node: '>=10'}
+ micromark-util-decode-string@1.1.0:
+ resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==}
- '@svgr/babel-plugin-transform-svg-component@8.0.0':
- resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==}
- engines: {node: '>=12'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ micromark-util-decode-string@2.0.1:
+ resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==}
- '@svgr/babel-preset@5.5.0':
- resolution: {integrity: sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==}
- engines: {node: '>=10'}
+ micromark-util-encode@1.1.0:
+ resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==}
- '@svgr/babel-preset@8.1.0':
- resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==}
- engines: {node: '>=14'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ micromark-util-encode@2.0.1:
+ resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==}
- '@svgr/core@5.5.0':
- resolution: {integrity: sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==}
- engines: {node: '>=10'}
+ micromark-util-events-to-acorn@2.0.3:
+ resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==}
- '@svgr/core@8.1.0':
- resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==}
- engines: {node: '>=14'}
+ micromark-util-html-tag-name@1.2.0:
+ resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==}
- '@svgr/hast-util-to-babel-ast@5.5.0':
- resolution: {integrity: sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==}
- engines: {node: '>=10'}
+ micromark-util-html-tag-name@2.0.1:
+ resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==}
- '@svgr/hast-util-to-babel-ast@8.0.0':
- resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==}
- engines: {node: '>=14'}
+ micromark-util-normalize-identifier@1.1.0:
+ resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==}
- '@svgr/plugin-jsx@5.5.0':
- resolution: {integrity: sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==}
- engines: {node: '>=10'}
+ micromark-util-normalize-identifier@2.0.1:
+ resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==}
- '@svgr/plugin-jsx@8.1.0':
- resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==}
- engines: {node: '>=14'}
- peerDependencies:
- '@svgr/core': '*'
+ micromark-util-resolve-all@1.1.0:
+ resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==}
- '@svgr/plugin-svgo@5.5.0':
- resolution: {integrity: sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==}
- engines: {node: '>=10'}
+ micromark-util-resolve-all@2.0.1:
+ resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==}
- '@svgr/plugin-svgo@8.1.0':
- resolution: {integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==}
- engines: {node: '>=14'}
- peerDependencies:
- '@svgr/core': '*'
+ micromark-util-sanitize-uri@1.2.0:
+ resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==}
- '@svgr/webpack@5.5.0':
- resolution: {integrity: sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==}
- engines: {node: '>=10'}
+ micromark-util-sanitize-uri@2.0.1:
+ resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==}
- '@svgr/webpack@8.1.0':
- resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==}
- engines: {node: '>=14'}
+ micromark-util-subtokenize@1.1.0:
+ resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==}
- '@swc/core-darwin-arm64@1.16.0':
- resolution: {integrity: sha512-SJQPl+xG/zB8bNjC/gTg3WOmOvz7EzlQD+VShfCKFYPNr2qvb+vATUY11vYEjnMWCn6wV8H8eAtjQrVflYyX5A==}
- engines: {node: '>=10'}
- cpu: [arm64]
- os: [darwin]
+ micromark-util-subtokenize@2.1.0:
+ resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==}
- '@swc/core-darwin-x64@1.16.0':
- resolution: {integrity: sha512-ql2JVch8V5t1i+HxiiuD4oVDI1dOku4/e3QiCkplONrm3SLitqNAP+nztHN51fSG2IgGuOwpAi3hgA+ukT5yQg==}
- engines: {node: '>=10'}
- cpu: [x64]
- os: [darwin]
+ micromark-util-symbol@1.1.0:
+ resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==}
- '@swc/core-linux-arm-gnueabihf@1.16.0':
- resolution: {integrity: sha512-PcdDBaRbe39y37h1rXVkhNy7mEU7f8b34KD761C68R23EsfMsj5oDPVddRzGdSRAvwwSfH0WSNEHgYmc/AJipg==}
- engines: {node: '>=10'}
- cpu: [arm]
- os: [linux]
+ micromark-util-symbol@2.0.1:
+ resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==}
- '@swc/core-linux-arm64-gnu@1.16.0':
- resolution: {integrity: sha512-t21IUztHQ/COucy7Kk9eIlehmq08H/hYq7aRA6fZox3S5ddi6TxWPK6e5S/+aTCf6+Od9qQ+LIpjHMiTy737vA==}
- engines: {node: '>=10'}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
+ micromark-util-types@1.1.0:
+ resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==}
- '@swc/core-linux-arm64-musl@1.16.0':
- resolution: {integrity: sha512-d9+iajbMB87b0umgbP+Gy3yBDSDgty4Q6H5pZ8fgTb/dOoKIwwynP4L4kvWCOFg2i49kxmAAUs1uJZh9s0E+RQ==}
- engines: {node: '>=10'}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
+ micromark-util-types@2.0.2:
+ resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==}
- '@swc/core-linux-ppc64-gnu@1.16.0':
- resolution: {integrity: sha512-QRpeKGOg+B0qmo3BFU+6rL/gpoKYYJ7OFSMf5DNMafohYZ/iq2qvAH9Gcrf8NxROj3iooKOVewJ+YgahH1nSLw==}
- engines: {node: '>=10'}
- cpu: [ppc64]
- os: [linux]
- libc: [glibc]
+ micromark@3.2.0:
+ resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==}
- '@swc/core-linux-s390x-gnu@1.16.0':
- resolution: {integrity: sha512-q+Vr/hmHCcRXT/WFzOJC+T6GGEEtq2iaTtmyLfxO7yzu4ckgcqSNkg9m181wfNhuMwfNBoBhOfwQCnLsGZ5F4g==}
- engines: {node: '>=10'}
- cpu: [s390x]
- os: [linux]
- libc: [glibc]
+ micromark@4.0.2:
+ resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==}
- '@swc/core-linux-x64-gnu@1.16.0':
- resolution: {integrity: sha512-DWVBc3QnpsSgKoq8N4rmZeZa5r/XrHdLkITsExN/tvTdqPtAPDPt+Ysy33OfgBlyN8lNe4xwsXWe6DXlRkJeRQ==}
- engines: {node: '>=10'}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
+ minimatch@10.2.6:
+ resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==}
+ engines: {node: 18 || 20 || >=22}
- '@swc/core-linux-x64-musl@1.16.0':
- resolution: {integrity: sha512-6XCgDSc1HPf/5dpjvABhKHICiBcsuZyW3hQMkn8sxel0TqprkJGp+H4iaBYIUTPixhrBub2hBPtfjcZLE6yL3w==}
- engines: {node: '>=10'}
- cpu: [x64]
- os: [linux]
- libc: [musl]
+ mri@1.2.0:
+ resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
+ engines: {node: '>=4'}
- '@swc/core-win32-arm64-msvc@1.16.0':
- resolution: {integrity: sha512-T/+9VVCZJ3AKEth9IP3U9AJ2YscQq+7LUqRTvfR4a2q36+Ri22oOwUizpAKOqQ42vb2Y/kOa4TOcJOfHoDIT/w==}
- engines: {node: '>=10'}
- cpu: [arm64]
- os: [win32]
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
- '@swc/core-win32-ia32-msvc@1.16.0':
- resolution: {integrity: sha512-Pr1lsR/PMs8ndL0UWMrW8nLZ7H7sspIxBRDdjL8f+YJ/FJNASgzfunbVVXAqj0csgIJYHPZy+OW9smjFmk1Rcg==}
- engines: {node: '>=10'}
- cpu: [ia32]
- os: [win32]
+ nanoid@3.3.18:
+ resolution: {integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
- '@swc/core-win32-x64-msvc@1.16.0':
- resolution: {integrity: sha512-ktdeYLgOQdaonvsj5tJijqgpb0wk7gfF80wCFVA0kucI1hhSUIyfcGbjo5+9sdqv38OhMnTdLoA6xbqgOgPQjw==}
- engines: {node: '>=10'}
- cpu: [x64]
- os: [win32]
+ node-addon-api@7.1.1:
+ resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
- '@swc/core@1.16.0':
- resolution: {integrity: sha512-zSdvEHxBg00WhUNtW/u58hhcdR33gjtMQvOBo8F7POWJDyjRCt/miKfhidT3hCc/118RUwNnlEAmxiihFMbK4Q==}
- engines: {node: '>=10'}
- peerDependencies:
- '@swc/helpers': '>=0.5.17'
- peerDependenciesMeta:
- '@swc/helpers':
- optional: true
+ non-layered-tidy-tree-layout@2.0.2:
+ resolution: {integrity: sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==}
- '@swc/counter@0.1.3':
- resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
+ nprogress@0.2.0:
+ resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==}
- '@swc/html-darwin-arm64@1.16.0':
- resolution: {integrity: sha512-vp8i42hiGM/Jy4lY48sOu+y02SnWKpqxsUErCHnWIU/G8WxHdZrX+xn8VOph/eQXFk4kU+/kGdaRDrRKGMITnQ==}
- engines: {node: '>=10'}
- cpu: [arm64]
- os: [darwin]
+ oniguruma-parser@0.12.2:
+ resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==}
- '@swc/html-darwin-x64@1.16.0':
- resolution: {integrity: sha512-CsRsBMO2evmQbz1JEzwbebzZro4F1TjT0IGrEk/IxzRMmQjJ8zfNOe140ToouuZs3HnLSuJQgMadI2WE76fxbw==}
- engines: {node: '>=10'}
- cpu: [x64]
- os: [darwin]
+ oniguruma-to-es@4.3.6:
+ resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==}
- '@swc/html-linux-arm-gnueabihf@1.16.0':
- resolution: {integrity: sha512-Dbw/+0FQLzhcYOIUktBUu34qpBFsnW+qp6kid8Dfs/M8FUOOsST96zh7lZ3NSV/Z7XgOuvWDXz5HVmevuiRm+w==}
- engines: {node: '>=10'}
- cpu: [arm]
- os: [linux]
+ parse-entities@4.0.2:
+ resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==}
- '@swc/html-linux-arm64-gnu@1.16.0':
- resolution: {integrity: sha512-e3EyiP0e8Y9UMY/Kmdg4rcq934WHRcvjElHaGQkDecypGxDC9eoihNlrSTxNZQXnCrgUoqrGfxQiappYUwA86A==}
- engines: {node: '>=10'}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
+ parse5@7.3.0:
+ resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
- '@swc/html-linux-arm64-musl@1.16.0':
- resolution: {integrity: sha512-f9lCGwEJIwOOjpunMq8ALWHhSzd/8D4bgmEPsUrkHbTxSopKU1hPxTSPwGZvwNxWNsTJjACZsnAyyGcND+O5aQ==}
- engines: {node: '>=10'}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
+ path-browserify@1.0.1:
+ resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
- '@swc/html-linux-ppc64-gnu@1.16.0':
- resolution: {integrity: sha512-Yc4Q4agRXBDLI1gs3HEwf6Rp2U0z+6ivmie77bfPjH5b1EOC3g/XrviNtAFfG7sEYzEjHZGHTr5ohs9Hd3ibYw==}
- engines: {node: '>=10'}
- cpu: [ppc64]
- os: [linux]
- libc: [glibc]
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
- '@swc/html-linux-s390x-gnu@1.16.0':
- resolution: {integrity: sha512-0LqXAV+uBZJeqYCsLDE2QtZqHK2sAzOo51BJP45GQLqjIWYY5ujnSIMppZeaDclS/ZIpRIegluypTA2BoQW9qg==}
- engines: {node: '>=10'}
- cpu: [s390x]
- os: [linux]
- libc: [glibc]
+ picomatch@4.0.7:
+ resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==}
+ engines: {node: '>=12'}
- '@swc/html-linux-x64-gnu@1.16.0':
- resolution: {integrity: sha512-AglfxbBTnc1q+cDLufeqvgsNytiuSJbjPLxOJ9QM8fz49iZJQicD//Y4OgsD+2FVfbMsL4/g60+jE3aTEpGqbQ==}
- engines: {node: '>=10'}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
+ postcss@8.5.26:
+ resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==}
+ engines: {node: ^10 || ^12 || >=14}
- '@swc/html-linux-x64-musl@1.16.0':
- resolution: {integrity: sha512-Xa0sEUCowK9fN2Na0bguTGdx++BjLeONFG3omWVPMEd2VTJYOfNVhqka4pKbmQUocCVhQbxewuuZOxrO/6Fk6Q==}
- engines: {node: '>=10'}
- cpu: [x64]
- os: [linux]
- libc: [musl]
+ property-information@7.2.0:
+ resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==}
- '@swc/html-win32-arm64-msvc@1.16.0':
- resolution: {integrity: sha512-8CR2aS/kWzr/cFlRschBUj94SiZ87f36U3ChUQX/fEoHTR1Z29PQTdmqtna4wueSNItk2Q1gyi6Y1OD0U/iDuQ==}
- engines: {node: '>=10'}
- cpu: [arm64]
- os: [win32]
+ react-dom@19.2.8:
+ resolution: {integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==}
+ peerDependencies:
+ react: ^19.2.8
- '@swc/html-win32-ia32-msvc@1.16.0':
- resolution: {integrity: sha512-UlNq29HY9HtDnVUEB37IRrzqMh/mdksc2djKikouNRJ0bJvp4wIcXfkRKNMS+9wDgXdtMWV8JNyAKOGTwvt4UQ==}
- engines: {node: '>=10'}
- cpu: [ia32]
- os: [win32]
+ react-lazy-with-preload@2.2.1:
+ resolution: {integrity: sha512-ONSb8gizLE5jFpdHAclZ6EAAKuFX2JydnFXPPPjoUImZlLjGtKzyBS8SJgJq7CpLgsGKh9QCZdugJyEEOVC16Q==}
- '@swc/html-win32-x64-msvc@1.16.0':
- resolution: {integrity: sha512-3a+67eFx2XLWzDtYs5dg/t20J8uFXemF68tt7vIKyItdNzew+ivBu19JzQN/6wGSVHrXqf17vEQwmOO+gEYi1A==}
- engines: {node: '>=10'}
- cpu: [x64]
- os: [win32]
+ react-reconciler@0.33.0:
+ resolution: {integrity: sha512-KetWRytFv1epdpJc3J4G75I4WrplZE5jOL7Yq0p34+OVOKF4Se7WrdIdVC45XsSSmUTlht2FM/fM1FZb1mfQeA==}
+ engines: {node: '>=0.10.0'}
+ peerDependencies:
+ react: ^19.2.0
- '@swc/html@1.16.0':
- resolution: {integrity: sha512-mVJxXQo4Ga0OX5/aF6gKeclfps/aVsJpfaiEMifoplOhVBXGeKeMkr81Icspg/6WErbINVb1P47VFbj6cv+UrA==}
- engines: {node: '>=14'}
+ react-refresh@0.18.0:
+ resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==}
+ engines: {node: '>=0.10.0'}
- '@swc/types@0.1.28':
- resolution: {integrity: sha512-V6Mnml8v09QALx6K0elJ7o9K/MkVDtW3t6L+7Ou/JcWtb3xwId2AH4FeOceySd2JaO87IMw4+6vSZxLm34LPbw==}
+ react-render-to-markdown@19.1.0:
+ resolution: {integrity: sha512-dF9b3tO41ezqdmHP8X92kbHbMexJ6iC7iHw4ykC8fwiO7DgpFc9PhMoKlI+BcPzRxGcWgQSdrixVB9RykhjJpQ==}
+ peerDependencies:
+ react: '>=19'
- '@szmarczak/http-timer@5.0.1':
- resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==}
- engines: {node: '>=14.16'}
+ react-router-dom@7.18.2:
+ resolution: {integrity: sha512-AIKJ/jgGlFb3EbfCXk5Gzshiwt+l3mqbCrNjmEWMMjqQxNJ3svBa6bgzFyCC2Sw3RA0VWF1kg3uQf2OFhxb8hw==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ react: '>=18'
+ react-dom: '>=18'
- '@trysound/sax@0.2.0':
- resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
- engines: {node: '>=10.13.0'}
+ react-router@7.18.2:
+ resolution: {integrity: sha512-aUVMjFm3GAPTTZL7oYr5E7ETiqfQCHRLH+B+5afnICvf0r7kkK4eR6SMuwbSTJw/7t+12khT/Kahij49fqOCIg==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ react: '>=18'
+ react-dom: '>=18'
+ peerDependenciesMeta:
+ react-dom:
+ optional: true
- '@tybys/wasm-util@0.10.1':
- resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
+ react@19.2.8:
+ resolution: {integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==}
+ engines: {node: '>=0.10.0'}
- '@types/acorn@4.0.6':
- resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==}
+ readdirp@5.1.1:
+ resolution: {integrity: sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==}
+ engines: {node: '>= 20.19.0'}
- '@types/body-parser@1.19.5':
- resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==}
+ recma-build-jsx@1.0.0:
+ resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==}
- '@types/bonjour@3.5.13':
- resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==}
+ recma-jsx@1.0.1:
+ resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
- '@types/connect-history-api-fallback@1.5.4':
- resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==}
+ recma-parse@1.0.0:
+ resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==}
- '@types/connect@3.4.38':
- resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
+ recma-stringify@1.0.0:
+ resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==}
- '@types/d3-array@3.2.1':
- resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==}
+ reduce-configs@2.0.1:
+ resolution: {integrity: sha512-H9KTCWTEb1YM1OoOz0f6TeGZYlW82sIT1viNg3W8CjjY0pD3WI4MHs8GifKt5FKTVIfHh/DenfJqqY+FP9jF2A==}
- '@types/d3-axis@3.0.6':
- resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==}
+ regex-recursion@6.0.2:
+ resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==}
- '@types/d3-brush@3.0.6':
- resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==}
+ regex-utilities@2.3.0:
+ resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==}
- '@types/d3-chord@3.0.6':
- resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==}
+ regex@6.1.0:
+ resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==}
- '@types/d3-color@3.1.3':
- resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==}
+ rehype-external-links@3.0.0:
+ resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==}
- '@types/d3-contour@3.0.6':
- resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==}
+ rehype-raw@7.0.0:
+ resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==}
- '@types/d3-delaunay@6.0.4':
- resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==}
+ rehype-recma@1.0.0:
+ resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==}
- '@types/d3-dispatch@3.0.6':
- resolution: {integrity: sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==}
+ remark-cjk-friendly-gfm-strikethrough@2.3.1:
+ resolution: {integrity: sha512-JE3TGgouk/sy92SemNMEUhO5mNP4on04cmzOV3s3R5Dbk160ewmpM4tgPiinKKvoJ5UW2fTu7FOYsjVbusSA9w==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/mdast': ^4.0.0
+ unified: ^11.0.0
+ peerDependenciesMeta:
+ '@types/mdast':
+ optional: true
- '@types/d3-drag@3.0.7':
- resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==}
+ remark-cjk-friendly@2.3.1:
+ resolution: {integrity: sha512-f+pKZRxCRwNEGFBKNRAZAqU91GIK1SAo3ZyFHWRUgC9zcxRR0BXKd6YwqgSsxtW0rNpUDtONj7H5nje2WL3fcA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/mdast': ^4.0.0
+ unified: ^11.0.0
+ peerDependenciesMeta:
+ '@types/mdast':
+ optional: true
- '@types/d3-dsv@3.0.7':
- resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==}
+ remark-gfm@4.0.1:
+ resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==}
- '@types/d3-ease@3.0.2':
- resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==}
+ remark-mdc@3.11.1:
+ resolution: {integrity: sha512-bjH7Q1OO1BSXVPmUxYIrGH2dUAZkizNY3i9WJUEcIFLowZAEjLTT7fUAH2vH0Tpkeh+/MrzwFFmeWcZ66QLh7A==}
- '@types/d3-fetch@3.0.7':
- resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==}
+ remark-mdx@3.1.1:
+ resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==}
- '@types/d3-force@3.0.10':
- resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==}
+ remark-parse@11.0.0:
+ resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==}
- '@types/d3-format@3.0.4':
- resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==}
+ remark-rehype@11.1.2:
+ resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==}
- '@types/d3-geo@3.1.0':
- resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==}
+ remark-stringify@11.0.0:
+ resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==}
- '@types/d3-hierarchy@3.1.7':
- resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==}
+ robust-predicates@3.0.3:
+ resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==}
- '@types/d3-interpolate@3.0.4':
- resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==}
+ rspress-plugin-devkit@1.0.0:
+ resolution: {integrity: sha512-Xe+yxu9X9a+SBH8CSPZJSiqm0OtaIvx9FCXI1MQMpfmaK75/F+3Rvbz/zJw7nFxxpo5HsePb86ScGOYNIKNLFg==}
+ peerDependencies:
+ '@rspress/core': ^2.0.0-rc.4 || ^2.0.0
- '@types/d3-path@3.1.0':
- resolution: {integrity: sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==}
+ rspress-plugin-file-tree@1.0.5:
+ resolution: {integrity: sha512-OjdEn09HvUmpANlAScw2DmRatc257xXabMebwWZkGnfdxm7zt/qjrbDov1+VzcJdRJHsBoUd1r10xlUXd1K6LQ==}
+ peerDependencies:
+ '@rspress/core': ^2.0.0-rc.4 || ^2.0.0
- '@types/d3-polygon@3.0.2':
- resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==}
+ rspress-plugin-google-analytics@1.0.0:
+ resolution: {integrity: sha512-VgrL7ePZjjbaAeICXzcTxqj4v2zUbQAiF983x7N1B3FsoG1fQPuwhDO9vea67kh5eug4+VOTnm1N32ehkM+RBw==}
+ peerDependencies:
+ '@rspress/core': ^2.0.0-rc.4 || ^2.0.0
- '@types/d3-quadtree@3.0.6':
- resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==}
+ rspress-plugin-mermaid@1.0.1:
+ resolution: {integrity: sha512-FAL9Q5+DZJqCnuYPCYaOr+FY6WS56jFBJy5YyXKQWwzIYqWmS/tBgaNSdCBctLAG8AKeyUlFODg/7s6WqTY2/Q==}
+ peerDependencies:
+ '@rspress/core': ^2.0.0-rc.4 || ^2.0.0
- '@types/d3-random@3.0.3':
- resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==}
+ rw@1.3.3:
+ resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==}
- '@types/d3-scale-chromatic@3.0.3':
- resolution: {integrity: sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==}
+ rxjs@7.8.2:
+ resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
- '@types/d3-scale@4.0.8':
- resolution: {integrity: sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==}
+ sade@1.8.1:
+ resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
+ engines: {node: '>=6'}
- '@types/d3-selection@3.0.11':
- resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==}
+ safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
- '@types/d3-shape@3.1.6':
- resolution: {integrity: sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==}
+ sass-embedded-all-unknown@1.103.1:
+ resolution: {integrity: sha512-MwX2ap06TbImAqlbnH6EndgBBejk6Eq2QB6Ae2hukCn9wmXf9cRu27um3mz3tyB4oJOOku0xfHqFH/+ckYj6YA==}
+ cpu: ['!arm', '!arm64', '!riscv64', '!x64']
- '@types/d3-time-format@4.0.3':
- resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==}
+ sass-embedded-android-arm64@1.103.1:
+ resolution: {integrity: sha512-jBXWMksyz55XeLOWvQs64BqiG5DcqflmMxcvMoA2oHtQT/7XZ02hBn502qpcF/q8Qd+qqG/hU5ccM+hGXrbQZw==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm64]
+ os: [android]
- '@types/d3-time@3.0.3':
- resolution: {integrity: sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==}
+ sass-embedded-android-arm@1.103.1:
+ resolution: {integrity: sha512-p36WHpsu5HEo2+NVNbI2Nmb8VgVH0xwOQyzghvZhF7ikGCzEVYI5BP28vHUZlCcgj2TUvMEJKI2lV336a+F/sg==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm]
+ os: [android]
- '@types/d3-timer@3.0.2':
- resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==}
+ sass-embedded-android-riscv64@1.103.1:
+ resolution: {integrity: sha512-rzrH7RNntk0rx+zCE9xOiAIUt37D1cQKvFfcoX0xiePdGbNHBN8DWKaWN9vaCRfbgKCmxPjevzaqFNI/G/8E1A==}
+ engines: {node: '>=14.0.0'}
+ cpu: [riscv64]
+ os: [android]
- '@types/d3-transition@3.0.9':
- resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==}
+ sass-embedded-android-x64@1.103.1:
+ resolution: {integrity: sha512-EQglAJXJutuIcqgZf7YOwzao2ND6ow/OgqN+cM48/Qaeb6AimYmZiUJmM9FFcmS3Q2n1k6/2OU3l3Hlin7bFpw==}
+ engines: {node: '>=14.0.0'}
+ cpu: [x64]
+ os: [android]
- '@types/d3-zoom@3.0.8':
- resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==}
+ sass-embedded-darwin-arm64@1.103.1:
+ resolution: {integrity: sha512-rlaBeCul8pLbDRKdBAxdDxSBwFU5fbX42ci6CxW2Vbs34jWTMQ72+nE2v2KkGGce+JnYbb7UV6xDP/4uDWWi+w==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm64]
+ os: [darwin]
- '@types/d3@7.4.3':
- resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==}
+ sass-embedded-darwin-x64@1.103.1:
+ resolution: {integrity: sha512-VSKFfhI//AOct6ppFmAaSH7tlW2LOFECMGs77jIoWf0ZjvGch/3sc9lUTTdIaYIOnTS4qpZck+8OcI2D0G92QA==}
+ engines: {node: '>=14.0.0'}
+ cpu: [x64]
+ os: [darwin]
- '@types/debug@4.1.12':
- resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+ sass-embedded-linux-arm64@1.103.1:
+ resolution: {integrity: sha512-rC+80/Xr9svo0ka2Zr/sjD+N1zEHTw2Urm/nsEjaVp5HSH2i22jwhTKTIqie2OLl6ti+qdYnbI0sSfxOYRtgrg==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: glibc
- '@types/estree-jsx@1.0.5':
- resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==}
+ sass-embedded-linux-arm@1.103.1:
+ resolution: {integrity: sha512-tJRLPUtBwXHTnBnG7I39gQvCLreuOHLLCMyKHPR1hQ7aFNwiZjADYzKMRQPNMUqti/Os9z+6I7V13FqgQHfuzg==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm]
+ os: [linux]
+ libc: glibc
- '@types/estree@1.0.6':
- resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
+ sass-embedded-linux-musl-arm64@1.103.1:
+ resolution: {integrity: sha512-jMgG/C/VMo7+ShMFdk0xjJmQmYkj1PbJu/yrQiaQHpuo5pE2G+vnkEgsuM5EM3lTQ4MbMfnf715qy1fkbNPiUQ==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: musl
- '@types/express-serve-static-core@4.19.6':
- resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==}
+ sass-embedded-linux-musl-arm@1.103.1:
+ resolution: {integrity: sha512-N8L/kgVzXpnH+8d6ErIzqvb0l8kHODR3OfPaf0Azw6DOLGtEjwDRUbHno+G7iogGzyPOjKsM8OdyqHJj/bpTdw==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm]
+ os: [linux]
+ libc: musl
- '@types/express-serve-static-core@5.0.0':
- resolution: {integrity: sha512-AbXMTZGt40T+KON9/Fdxx0B2WK5hsgxcfXJLr5bFpZ7b4JCex2WyQPTEKdXqfHiY5nKKBScZ7yCoO6Pvgxfvnw==}
+ sass-embedded-linux-musl-riscv64@1.103.1:
+ resolution: {integrity: sha512-LZm8rEvI6sKU87qPOlODsYeAs7CmWy0B4ShYkjG4OMcGCcV4Ffxn25XW4TFqmruThITQvJ8WT+WGblzdoxYgbA==}
+ engines: {node: '>=14.0.0'}
+ cpu: [riscv64]
+ os: [linux]
+ libc: musl
- '@types/express@4.17.21':
- resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==}
+ sass-embedded-linux-musl-x64@1.103.1:
+ resolution: {integrity: sha512-rmKzgk4t6RpaDhSefbbnk5yrA4pk1nHlVhJECGay8yMfzK8eglATeY9fzPgt89xCuQk6rkOiy11e+m8tLYOW5Q==}
+ engines: {node: '>=14.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: musl
- '@types/geojson@7946.0.14':
- resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==}
+ sass-embedded-linux-riscv64@1.103.1:
+ resolution: {integrity: sha512-xydQmtxla31uMrmN6z+mAogVGdEMDmkUElVq2+udomX/TPZDYJBkApEyJl237M2VLWVv29v1N4U4i2Z4xa7SDA==}
+ engines: {node: '>=14.0.0'}
+ cpu: [riscv64]
+ os: [linux]
+ libc: glibc
- '@types/hast@3.0.4':
- resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
+ sass-embedded-linux-x64@1.103.1:
+ resolution: {integrity: sha512-Rln1oWm0MWKzzemOgQWrRFzfVBARwS9qxAidZPpCQHSohzPnWizFkmY1CUJad/YJNsA7sscueMdX63OEvxoM8w==}
+ engines: {node: '>=14.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: glibc
- '@types/hast@3.0.5':
- resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==}
+ sass-embedded-unknown-all@1.103.1:
+ resolution: {integrity: sha512-p7kI4US8+n+YguKczXh+4KcodJnk+8cwv+QFdvMaz3OfPrdHV0EnhPsaVDWD9qXb1XXCEdUhpp6vQwGk3eKc3A==}
+ os: ['!android', '!darwin', '!linux', '!win32']
- '@types/history@4.7.11':
- resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==}
+ sass-embedded-win32-arm64@1.103.1:
+ resolution: {integrity: sha512-/0renOj3SpZGu4TA8CZJ6qZbTxGZk1khkPfiBTmV1uFB40ESYM5VsdXNj76P07bsAjIj9X2fCjTafLQFLSd9Nw==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm64]
+ os: [win32]
- '@types/html-minifier-terser@6.1.0':
- resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==}
+ sass-embedded-win32-x64@1.103.1:
+ resolution: {integrity: sha512-fIg60j9u5YlLUU3W8FvySMR4HHIo9R12HHFQTW7njyQ8nXqgR+t+XfCzGJloQka8g583BlAfu31Q76Ljr5o+9g==}
+ engines: {node: '>=14.0.0'}
+ cpu: [x64]
+ os: [win32]
- '@types/http-cache-semantics@4.0.4':
- resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==}
+ sass-embedded@1.103.1:
+ resolution: {integrity: sha512-UVIuFZPzz+4DXYbHzQ5gKaKkyP2IH3Sc/WoF63N2V7QIfnC2E9UpQAtiKlCVJTfBe43HRgHDBLnXpZkYAEBsNQ==}
+ engines: {node: '>=20.19.0'}
+ hasBin: true
- '@types/http-errors@2.0.4':
- resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==}
+ sass@1.103.1:
+ resolution: {integrity: sha512-9icZURbP51S6S0QGoyaeqk9uB06GNWxsFYWfH5RgpFgqK5FA8tJcM3AdVxrZEVJ7dz+L87nG95gBKf4VuaMHGw==}
+ engines: {node: '>=20.19.0'}
+ hasBin: true
- '@types/http-proxy@1.17.15':
- resolution: {integrity: sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==}
+ scheduler@0.27.0:
+ resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
- '@types/istanbul-lib-coverage@2.0.6':
- resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==}
+ scroll-into-view-if-needed@3.1.0:
+ resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==}
- '@types/istanbul-lib-report@3.0.3':
- resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==}
+ scule@1.3.0:
+ resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==}
- '@types/istanbul-reports@3.0.4':
- resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==}
+ set-cookie-parser@2.7.2:
+ resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==}
- '@types/json-schema@7.0.15':
- resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+ shiki@4.4.3:
+ resolution: {integrity: sha512-Mb/GvXPHBAXdgGIcnfU5L3ldpn1XcxrGkPHwqgRx17/I2XRfqlFKk2vGkHWINn1kdXvzJZeuO3is6I9KLPFm0g==}
+ engines: {node: '>=20'}
- '@types/mdast@4.0.4':
- resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
- '@types/mdx@2.0.13':
- resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==}
+ source-map@0.7.6:
+ resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
+ engines: {node: '>= 12'}
- '@types/mime@1.3.5':
- resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==}
+ space-separated-tokens@2.0.2:
+ resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
- '@types/ms@0.7.34':
- resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
+ string-width@6.1.0:
+ resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==}
+ engines: {node: '>=16'}
- '@types/node-forge@1.3.11':
- resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==}
+ stringify-entities@4.0.4:
+ resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
- '@types/node@17.0.45':
- resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
+ strip-ansi@7.2.0:
+ resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==}
+ engines: {node: '>=12'}
- '@types/node@22.8.1':
- resolution: {integrity: sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==}
+ style-to-js@1.1.21:
+ resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==}
- '@types/parse-json@4.0.2':
- resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
+ style-to-object@1.0.14:
+ resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==}
- '@types/prismjs@1.26.4':
- resolution: {integrity: sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==}
+ stylis@4.4.0:
+ resolution: {integrity: sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA==}
- '@types/prop-types@15.7.13':
- resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==}
+ supports-color@8.1.1:
+ resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
+ engines: {node: '>=10'}
- '@types/q@1.5.8':
- resolution: {integrity: sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==}
+ supports-color@9.4.0:
+ resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==}
+ engines: {node: '>=12'}
- '@types/qs@6.9.16':
- resolution: {integrity: sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==}
+ sync-child-process@1.0.2:
+ resolution: {integrity: sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==}
+ engines: {node: '>=16.0.0'}
- '@types/range-parser@1.2.7':
- resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==}
+ sync-message-port@1.2.0:
+ resolution: {integrity: sha512-gAQ9qrUN/UCypHtGFbbe7Rc/f9bzO88IwrG8TDo/aMKAApKyD6E3W4Cm0EfhfBb6Z6SKt59tTCTfD+n1xmAvMg==}
+ engines: {node: '>=16.0.0'}
- '@types/react-router-config@5.0.11':
- resolution: {integrity: sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==}
+ tinyglobby@0.2.17:
+ resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
+ engines: {node: '>=12.0.0'}
- '@types/react-router-dom@5.3.3':
- resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==}
+ toggle-selection@1.0.6:
+ resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==}
- '@types/react-router@5.1.20':
- resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==}
+ trim-lines@3.0.1:
+ resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
- '@types/react@18.3.12':
- resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==}
+ trough@2.2.0:
+ resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
- '@types/retry@0.12.2':
- resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==}
+ ts-dedent@2.3.0:
+ resolution: {integrity: sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg==}
+ engines: {node: '>=6.10'}
- '@types/sax@1.2.7':
- resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==}
+ ts-morph@27.0.2:
+ resolution: {integrity: sha512-fhUhgeljcrdZ+9DZND1De1029PrE+cMkIP7ooqkLRTrRLTqcki2AstsyJm0vRNbTbVCNJ0idGlbBrfqc7/nA8w==}
- '@types/send@0.17.4':
- resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==}
+ tslib@2.8.1:
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
- '@types/serve-index@1.9.4':
- resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==}
+ typescript@6.0.3:
+ resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
- '@types/serve-static@1.15.7':
- resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==}
+ undici-types@6.21.0:
+ resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
- '@types/sockjs@0.3.36':
- resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==}
+ undici-types@7.24.6:
+ resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==}
- '@types/trusted-types@2.0.7':
- resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
+ unhead@2.1.17:
+ resolution: {integrity: sha512-HLMKXOszRhAPBrr6VlqCeVeJq2kbC4kXwzGLEZvvojPLWNYTJw22xG7Bfwhsvs31+IBet3Wl8ADg9dwYdyphfQ==}
- '@types/unist@2.0.11':
- resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
+ unified@11.0.5:
+ resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
- '@types/unist@3.0.3':
- resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
+ unist-util-is@6.0.1:
+ resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==}
- '@types/ws@8.5.12':
- resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==}
+ unist-util-position-from-estree@2.0.0:
+ resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==}
- '@types/yargs-parser@21.0.3':
- resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
+ unist-util-position@5.0.0:
+ resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
- '@types/yargs@17.0.33':
- resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==}
+ unist-util-stringify-position@3.0.3:
+ resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==}
- '@ungap/structured-clone@1.2.0':
- resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
- deprecated: Potential CWE-502 - Update to 1.3.1 or higher
+ unist-util-stringify-position@4.0.0:
+ resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
- '@webassemblyjs/ast@1.12.1':
- resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==}
+ unist-util-visit-children@3.0.0:
+ resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==}
- '@webassemblyjs/floating-point-hex-parser@1.11.6':
- resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==}
+ unist-util-visit-parents@6.0.2:
+ resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==}
- '@webassemblyjs/helper-api-error@1.11.6':
- resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==}
+ unist-util-visit@5.1.0:
+ resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==}
- '@webassemblyjs/helper-buffer@1.12.1':
- resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==}
+ util-ts-types@1.0.0:
+ resolution: {integrity: sha512-/HXNO5CaJxhnzk5xzpOg1esDu3KHXTW76p+RnFYjIAj9S8nifzsa/BGqHCPr+8wntPJ9k5eUFf9vqOOCo8RgbQ==}
- '@webassemblyjs/helper-numbers@1.11.6':
- resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==}
+ uuid@14.0.2:
+ resolution: {integrity: sha512-xZe/16rV4aa+HGSOCiY2YeLT1OybRLrrkL/Rqaq7p7GMVXjFh+6wN4oMYgjFmnSnhY8t6Xpdl2l9qmnHYuMHwQ==}
+ hasBin: true
- '@webassemblyjs/helper-wasm-bytecode@1.11.6':
- resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==}
+ uvu@0.5.6:
+ resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==}
+ engines: {node: '>=8'}
+ hasBin: true
- '@webassemblyjs/helper-wasm-section@1.12.1':
- resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==}
+ varint@6.0.0:
+ resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==}
- '@webassemblyjs/ieee754@1.11.6':
- resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==}
+ vfile-location@5.0.3:
+ resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==}
- '@webassemblyjs/leb128@1.11.6':
- resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==}
+ vfile-message@4.0.3:
+ resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==}
- '@webassemblyjs/utf8@1.11.6':
- resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==}
+ vfile-reporter@8.1.1:
+ resolution: {integrity: sha512-qxRZcnFSQt6pWKn3PAk81yLK2rO2i7CDXpy8v8ZquiEOMLSnPw6BMSi9Y1sUCwGGl7a9b3CJT1CKpnRF7pp66g==}
- '@webassemblyjs/wasm-edit@1.12.1':
- resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==}
+ vfile-sort@4.0.0:
+ resolution: {integrity: sha512-lffPI1JrbHDTToJwcq0rl6rBmkjQmMuXkAxsZPRS9DXbaJQvc642eCg6EGxcX2i1L+esbuhq+2l9tBll5v8AeQ==}
- '@webassemblyjs/wasm-gen@1.12.1':
- resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==}
+ vfile-statistics@3.0.0:
+ resolution: {integrity: sha512-/qlwqwWBWFOmpXujL/20P+Iuydil0rZZNglR+VNm6J0gpLHwuVM5s7g2TfVoswbXjZ4HuIhLMySEyIw5i7/D8w==}
- '@webassemblyjs/wasm-opt@1.12.1':
- resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==}
+ vfile@6.0.3:
+ resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
- '@webassemblyjs/wasm-parser@1.12.1':
- resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==}
+ web-namespaces@2.0.1:
+ resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
- '@webassemblyjs/wast-printer@1.12.1':
- resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==}
+ web-worker@1.5.0:
+ resolution: {integrity: sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw==}
- '@xtuc/ieee754@1.2.0':
- resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==}
+ yaml@2.9.0:
+ resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==}
+ engines: {node: '>= 14.6'}
+ hasBin: true
- '@xtuc/long@4.2.2':
- resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
+ zwitch@2.0.4:
+ resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
- accepts@1.3.8:
- resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
- engines: {node: '>= 0.6'}
+snapshots:
- acorn-import-attributes@1.9.5:
- resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
- peerDependencies:
- acorn: ^8
+ '@biomejs/biome@2.5.8':
+ optionalDependencies:
+ '@biomejs/cli-darwin-arm64': 2.5.8
+ '@biomejs/cli-darwin-x64': 2.5.8
+ '@biomejs/cli-linux-arm64': 2.5.8
+ '@biomejs/cli-linux-arm64-musl': 2.5.8
+ '@biomejs/cli-linux-x64': 2.5.8
+ '@biomejs/cli-linux-x64-musl': 2.5.8
+ '@biomejs/cli-win32-arm64': 2.5.8
+ '@biomejs/cli-win32-x64': 2.5.8
+
+ '@biomejs/cli-darwin-arm64@2.5.8':
+ optional: true
- acorn-jsx@5.3.2:
- resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
- peerDependencies:
- acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ '@biomejs/cli-darwin-x64@2.5.8':
+ optional: true
- acorn-walk@8.3.4:
- resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==}
- engines: {node: '>=0.4.0'}
+ '@biomejs/cli-linux-arm64-musl@2.5.8':
+ optional: true
- acorn@8.14.0:
- resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
- engines: {node: '>=0.4.0'}
- hasBin: true
+ '@biomejs/cli-linux-arm64@2.5.8':
+ optional: true
- address@2.0.3:
- resolution: {integrity: sha512-XNAb/a6TCqou+TufU8/u11HCu9x1gYvOoxLwtlXgIqmkrYQADVv6ljyW2zwiPhHz9R1gItAWpuDrdJMmrOBFEA==}
- engines: {node: '>= 16.0.0'}
+ '@biomejs/cli-linux-x64-musl@2.5.8':
+ optional: true
- aggregate-error@3.1.0:
- resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
- engines: {node: '>=8'}
+ '@biomejs/cli-linux-x64@2.5.8':
+ optional: true
- ajv-formats@2.1.1:
- resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
- peerDependencies:
- ajv: ^8.0.0
- peerDependenciesMeta:
- ajv:
- optional: true
+ '@biomejs/cli-win32-arm64@2.5.8':
+ optional: true
- ajv-keywords@3.5.2:
- resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==}
- peerDependencies:
- ajv: ^6.9.1
+ '@biomejs/cli-win32-x64@2.5.8':
+ optional: true
- ajv-keywords@5.1.0:
- resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==}
- peerDependencies:
- ajv: ^8.8.2
+ '@braintree/sanitize-url@6.0.4': {}
- ajv@6.12.6:
- resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+ '@bufbuild/protobuf@2.14.0': {}
- ajv@8.17.1:
- resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
+ '@emnapi/core@1.11.3':
+ dependencies:
+ '@emnapi/wasi-threads': 1.2.3
+ tslib: 2.8.1
+ optional: true
- algoliasearch-helper@3.26.1:
- resolution: {integrity: sha512-CAlCxm4fYBXtvc5MamDzP6Svu8rW4z9me4DCBY1rQ2UDJ0u0flWmusQ8M3nOExZsLLRcUwUPoRAPMrhzOG3erw==}
- peerDependencies:
- algoliasearch: '>= 3.1 < 6'
+ '@emnapi/runtime@1.11.3':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
- algoliasearch@5.46.2:
- resolution: {integrity: sha512-qqAXW9QvKf2tTyhpDA4qXv1IfBwD2eduSW6tUEBFIfCeE9gn9HQ9I5+MaKoenRuHrzk5sQoNh1/iof8mY7uD6Q==}
- engines: {node: '>= 14.0.0'}
+ '@emnapi/wasi-threads@1.2.3':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
- ansi-align@3.0.1:
- resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
+ '@mdx-js/mdx@3.1.1(supports-color@9.4.0)':
+ dependencies:
+ '@types/estree': 1.0.9
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.5
+ '@types/mdx': 2.0.14
+ acorn: 8.18.0
+ collapse-white-space: 2.1.0
+ devlop: 1.1.0
+ estree-util-is-identifier-name: 3.0.0
+ estree-util-scope: 1.0.0
+ estree-walker: 3.0.3
+ hast-util-to-jsx-runtime: 2.3.6(supports-color@9.4.0)
+ markdown-extensions: 2.0.0
+ recma-build-jsx: 1.0.0
+ recma-jsx: 1.0.1(acorn@8.18.0)
+ recma-stringify: 1.0.0
+ rehype-recma: 1.0.0(supports-color@9.4.0)
+ remark-mdx: 3.1.1(supports-color@9.4.0)
+ remark-parse: 11.0.0(supports-color@9.4.0)
+ remark-rehype: 11.1.2
+ source-map: 0.7.6
+ unified: 11.0.5
+ unist-util-position-from-estree: 2.0.0
+ unist-util-stringify-position: 4.0.0
+ unist-util-visit: 5.1.0
+ vfile: 6.0.3
+ transitivePeerDependencies:
+ - supports-color
- ansi-html-community@0.0.8:
- resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==}
- engines: {'0': node >= 0.8.0}
- hasBin: true
+ '@mdx-js/react@3.1.1(@types/react@19.2.18)(react@19.2.8)':
+ dependencies:
+ '@types/mdx': 2.0.14
+ '@types/react': 19.2.18
+ react: 19.2.8
- ansi-regex@5.0.1:
- resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
- engines: {node: '>=8'}
+ '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)':
+ dependencies:
+ '@emnapi/core': 1.11.3
+ '@emnapi/runtime': 1.11.3
+ '@tybys/wasm-util': 0.10.3
+ optional: true
- ansi-regex@6.1.0:
- resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
- engines: {node: '>=12'}
+ '@parcel/watcher-android-arm64@2.6.0':
+ optional: true
- ansi-styles@3.2.1:
- resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
- engines: {node: '>=4'}
+ '@parcel/watcher-darwin-arm64@2.6.0':
+ optional: true
- ansi-styles@4.3.0:
- resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
- engines: {node: '>=8'}
+ '@parcel/watcher-darwin-x64@2.6.0':
+ optional: true
- ansi-styles@6.2.1:
- resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
- engines: {node: '>=12'}
+ '@parcel/watcher-freebsd-x64@2.6.0':
+ optional: true
- ansis@3.17.0:
- resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==}
- engines: {node: '>=14'}
+ '@parcel/watcher-linux-arm-glibc@2.6.0':
+ optional: true
- anymatch@3.1.3:
- resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
- engines: {node: '>= 8'}
+ '@parcel/watcher-linux-arm-musl@2.6.0':
+ optional: true
- arg@5.0.2:
- resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
+ '@parcel/watcher-linux-arm64-glibc@2.6.0':
+ optional: true
- argparse@1.0.10:
- resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
+ '@parcel/watcher-linux-arm64-musl@2.6.0':
+ optional: true
- argparse@2.0.1:
- resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+ '@parcel/watcher-linux-x64-glibc@2.6.0':
+ optional: true
- array-buffer-byte-length@1.0.1:
- resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
- engines: {node: '>= 0.4'}
+ '@parcel/watcher-linux-x64-musl@2.6.0':
+ optional: true
- array-flatten@1.1.1:
- resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
+ '@parcel/watcher-win32-arm64@2.6.0':
+ optional: true
- array-union@2.1.0:
- resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
- engines: {node: '>=8'}
+ '@parcel/watcher-win32-x64@2.6.0':
+ optional: true
- array-union@3.0.1:
- resolution: {integrity: sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==}
- engines: {node: '>=12'}
+ '@parcel/watcher@2.6.0':
+ dependencies:
+ detect-libc: 2.1.2
+ is-glob: 4.0.3
+ node-addon-api: 7.1.1
+ picomatch: 4.0.7
+ optionalDependencies:
+ '@parcel/watcher-android-arm64': 2.6.0
+ '@parcel/watcher-darwin-arm64': 2.6.0
+ '@parcel/watcher-darwin-x64': 2.6.0
+ '@parcel/watcher-freebsd-x64': 2.6.0
+ '@parcel/watcher-linux-arm-glibc': 2.6.0
+ '@parcel/watcher-linux-arm-musl': 2.6.0
+ '@parcel/watcher-linux-arm64-glibc': 2.6.0
+ '@parcel/watcher-linux-arm64-musl': 2.6.0
+ '@parcel/watcher-linux-x64-glibc': 2.6.0
+ '@parcel/watcher-linux-x64-musl': 2.6.0
+ '@parcel/watcher-win32-arm64': 2.6.0
+ '@parcel/watcher-win32-x64': 2.6.0
+ optional: true
- array.prototype.reduce@1.0.7:
- resolution: {integrity: sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q==}
- engines: {node: '>= 0.4'}
+ '@rsbuild/core@2.1.13':
+ dependencies:
+ '@rspack/core': 2.1.10(@swc/helpers@0.5.23)
+ '@swc/helpers': 0.5.23
+ transitivePeerDependencies:
+ - '@module-federation/runtime-tools'
- arraybuffer.prototype.slice@1.0.3:
- resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
- engines: {node: '>= 0.4'}
+ '@rsbuild/plugin-react@2.1.0(@rsbuild/core@2.1.13)(@rspack/core@2.1.10(@swc/helpers@0.5.23))':
+ dependencies:
+ '@rspack/plugin-react-refresh': 2.0.2(@rspack/core@2.1.10(@swc/helpers@0.5.23))(react-refresh@0.18.0)
+ react-refresh: 0.18.0
+ optionalDependencies:
+ '@rsbuild/core': 2.1.13
+ transitivePeerDependencies:
+ - '@rspack/core'
- astring@1.9.0:
- resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==}
- hasBin: true
+ '@rsbuild/plugin-sass@2.0.1(@rsbuild/core@2.1.13)':
+ dependencies:
+ deepmerge: 4.3.1
+ loader-utils: 2.0.4
+ postcss: 8.5.26
+ reduce-configs: 2.0.1
+ sass-embedded: 1.103.1
+ optionalDependencies:
+ '@rsbuild/core': 2.1.13
- autoprefixer@10.4.23:
- resolution: {integrity: sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==}
- engines: {node: ^10 || ^12 || >=14}
- hasBin: true
- peerDependencies:
- postcss: ^8.1.0
+ '@rspack/binding-darwin-arm64@2.1.10':
+ optional: true
- available-typed-arrays@1.0.7:
- resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
- engines: {node: '>= 0.4'}
+ '@rspack/binding-darwin-x64@2.1.10':
+ optional: true
- babel-loader@9.2.1:
- resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==}
- engines: {node: '>= 14.15.0'}
- peerDependencies:
- '@babel/core': ^7.12.0
- webpack: '>=5'
+ '@rspack/binding-linux-arm64-gnu@2.1.10':
+ optional: true
- babel-plugin-dynamic-import-node@2.3.3:
- resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==}
+ '@rspack/binding-linux-arm64-musl@2.1.10':
+ optional: true
- babel-plugin-polyfill-corejs2@0.4.11:
- resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==}
- peerDependencies:
- '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+ '@rspack/binding-linux-ppc64-gnu@2.1.10':
+ optional: true
- babel-plugin-polyfill-corejs3@0.10.6:
- resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==}
- peerDependencies:
- '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+ '@rspack/binding-linux-riscv64-gnu@2.1.10':
+ optional: true
- babel-plugin-polyfill-regenerator@0.6.2:
- resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==}
- peerDependencies:
- '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+ '@rspack/binding-linux-riscv64-musl@2.1.10':
+ optional: true
- bail@2.0.2:
- resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
+ '@rspack/binding-linux-s390x-gnu@2.1.10':
+ optional: true
- balanced-match@1.0.2:
- resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ '@rspack/binding-linux-x64-gnu@2.1.10':
+ optional: true
- baseline-browser-mapping@2.9.11:
- resolution: {integrity: sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==}
- hasBin: true
+ '@rspack/binding-linux-x64-musl@2.1.10':
+ optional: true
- batch@0.6.1:
- resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==}
+ '@rspack/binding-wasm32-wasi@2.1.10':
+ dependencies:
+ '@emnapi/core': 1.11.3
+ '@emnapi/runtime': 1.11.3
+ '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)
+ optional: true
- big.js@5.2.2:
- resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==}
+ '@rspack/binding-win32-arm64-msvc@2.1.10':
+ optional: true
- binary-extensions@2.3.0:
- resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
- engines: {node: '>=8'}
+ '@rspack/binding-win32-ia32-msvc@2.1.10':
+ optional: true
- body-parser@1.20.3:
- resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==}
- engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+ '@rspack/binding-win32-x64-msvc@2.1.10':
+ optional: true
- bonjour-service@1.2.1:
- resolution: {integrity: sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==}
+ '@rspack/binding@2.1.10':
+ optionalDependencies:
+ '@rspack/binding-darwin-arm64': 2.1.10
+ '@rspack/binding-darwin-x64': 2.1.10
+ '@rspack/binding-linux-arm64-gnu': 2.1.10
+ '@rspack/binding-linux-arm64-musl': 2.1.10
+ '@rspack/binding-linux-ppc64-gnu': 2.1.10
+ '@rspack/binding-linux-riscv64-gnu': 2.1.10
+ '@rspack/binding-linux-riscv64-musl': 2.1.10
+ '@rspack/binding-linux-s390x-gnu': 2.1.10
+ '@rspack/binding-linux-x64-gnu': 2.1.10
+ '@rspack/binding-linux-x64-musl': 2.1.10
+ '@rspack/binding-wasm32-wasi': 2.1.10
+ '@rspack/binding-win32-arm64-msvc': 2.1.10
+ '@rspack/binding-win32-ia32-msvc': 2.1.10
+ '@rspack/binding-win32-x64-msvc': 2.1.10
+
+ '@rspack/core@2.1.10(@swc/helpers@0.5.23)':
+ dependencies:
+ '@rspack/binding': 2.1.10
+ optionalDependencies:
+ '@swc/helpers': 0.5.23
- boolbase@1.0.0:
- resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
+ '@rspack/plugin-react-refresh@2.0.2(@rspack/core@2.1.10(@swc/helpers@0.5.23))(react-refresh@0.18.0)':
+ dependencies:
+ react-refresh: 0.18.0
+ optionalDependencies:
+ '@rspack/core': 2.1.10(@swc/helpers@0.5.23)
- boxen@6.2.1:
- resolution: {integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ '@rspress/core@2.0.20(@rspack/core@2.1.10(@swc/helpers@0.5.23))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0)':
+ dependencies:
+ '@mdx-js/mdx': 3.1.1(supports-color@9.4.0)
+ '@mdx-js/react': 3.1.1(@types/react@19.2.18)(react@19.2.8)
+ '@rsbuild/core': 2.1.13
+ '@rsbuild/plugin-react': 2.1.0(@rsbuild/core@2.1.13)(@rspack/core@2.1.10(@swc/helpers@0.5.23))
+ '@rspress/shared': 2.0.20(supports-color@9.4.0)
+ '@shikijs/rehype': 4.4.3
+ '@types/mdast': 4.0.4
+ '@types/react': 19.2.18
+ '@unhead/react': 2.1.17(react@19.2.8)
+ body-scroll-lock: 4.0.0-beta.0
+ clsx: 2.1.1
+ copy-to-clipboard: 3.3.3
+ flexsearch: 0.8.212
+ hast-util-heading-rank: 3.0.0
+ hast-util-to-jsx-runtime: 2.3.6(supports-color@9.4.0)
+ mdast-util-mdx: 3.0.0(supports-color@9.4.0)
+ mdast-util-mdxjs-esm: 2.0.1(supports-color@9.4.0)
+ medium-zoom: 1.1.0
+ nprogress: 0.2.0
+ react: 19.2.8
+ react-dom: 19.2.8(react@19.2.8)
+ react-lazy-with-preload: 2.2.1
+ react-render-to-markdown: 19.1.0(react@19.2.8)
+ react-router-dom: 7.18.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
+ rehype-external-links: 3.0.0
+ rehype-raw: 7.0.0
+ remark-cjk-friendly: 2.3.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(unified@11.0.5)
+ remark-cjk-friendly-gfm-strikethrough: 2.3.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0)(unified@11.0.5)
+ remark-gfm: 4.0.1(supports-color@9.4.0)
+ remark-mdx: 3.1.1(supports-color@9.4.0)
+ remark-parse: 11.0.0(supports-color@9.4.0)
+ remark-stringify: 11.0.0
+ scroll-into-view-if-needed: 3.1.0
+ shiki: 4.4.3
+ unified: 11.0.5
+ unist-util-visit: 5.1.0
+ unist-util-visit-children: 3.0.0
+ vfile: 6.0.3
+ transitivePeerDependencies:
+ - '@module-federation/runtime-tools'
+ - '@rspack/core'
+ - core-js
+ - micromark
+ - micromark-util-types
+ - supports-color
- boxen@7.1.1:
- resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==}
- engines: {node: '>=14.16'}
+ '@rspress/plugin-sitemap@2.0.19(@rspress/core@2.0.20(@rspack/core@2.1.10(@swc/helpers@0.5.23))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0))':
+ dependencies:
+ '@rspress/core': 2.0.20(@rspack/core@2.1.10(@swc/helpers@0.5.23))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0)
- brace-expansion@1.1.11:
- resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+ '@rspress/shared@2.0.20(supports-color@9.4.0)':
+ dependencies:
+ '@rsbuild/core': 2.1.13
+ '@shikijs/rehype': 4.4.3
+ '@types/react': 19.2.18
+ mdast-util-mdx-jsx: 3.2.0(supports-color@9.4.0)
+ unified: 11.0.5
+ transitivePeerDependencies:
+ - '@module-federation/runtime-tools'
+ - core-js
+ - supports-color
- braces@3.0.3:
- resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
- engines: {node: '>=8'}
+ '@shikijs/core@4.4.3':
+ dependencies:
+ '@shikijs/primitive': 4.4.3
+ '@shikijs/types': 4.4.3
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.5
+ hast-util-to-html: 9.0.5
- browserslist@4.24.2:
- resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
+ '@shikijs/engine-javascript@4.4.3':
+ dependencies:
+ '@shikijs/types': 4.4.3
+ '@shikijs/vscode-textmate': 10.0.2
+ oniguruma-to-es: 4.3.6
- browserslist@4.28.1:
- resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
+ '@shikijs/engine-oniguruma@4.4.3':
+ dependencies:
+ '@shikijs/types': 4.4.3
+ '@shikijs/vscode-textmate': 10.0.2
- buffer-from@1.1.2:
- resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+ '@shikijs/langs@4.4.3':
+ dependencies:
+ '@shikijs/types': 4.4.3
- bundle-name@4.1.0:
- resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
- engines: {node: '>=18'}
+ '@shikijs/primitive@4.4.3':
+ dependencies:
+ '@shikijs/types': 4.4.3
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.5
- bytes@3.0.0:
- resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==}
- engines: {node: '>= 0.8'}
+ '@shikijs/rehype@4.4.3':
+ dependencies:
+ '@shikijs/types': 4.4.3
+ '@types/hast': 3.0.5
+ hast-util-to-string: 3.0.1
+ shiki: 4.4.3
+ unified: 11.0.5
+ unist-util-visit: 5.1.0
- bytes@3.1.2:
- resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
- engines: {node: '>= 0.8'}
+ '@shikijs/themes@4.4.3':
+ dependencies:
+ '@shikijs/types': 4.4.3
- cacheable-lookup@7.0.0:
- resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==}
- engines: {node: '>=14.16'}
+ '@shikijs/types@4.4.3':
+ dependencies:
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.5
- cacheable-request@10.2.14:
- resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==}
- engines: {node: '>=14.16'}
+ '@shikijs/vscode-textmate@10.0.2': {}
- call-bind-apply-helpers@1.0.2:
- resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
- engines: {node: '>= 0.4'}
+ '@swc/helpers@0.5.23':
+ dependencies:
+ tslib: 2.8.1
- call-bind@1.0.7:
- resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
- engines: {node: '>= 0.4'}
+ '@ts-morph/common@0.28.1':
+ dependencies:
+ minimatch: 10.2.6
+ path-browserify: 1.0.1
+ tinyglobby: 0.2.17
- call-bound@1.0.4:
- resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
- engines: {node: '>= 0.4'}
+ '@tybys/wasm-util@0.10.3':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
- callsites@3.1.0:
- resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
- engines: {node: '>=6'}
+ '@types/d3-scale-chromatic@3.1.0': {}
- camel-case@4.1.2:
- resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
+ '@types/d3-scale@4.0.9':
+ dependencies:
+ '@types/d3-time': 3.0.4
- camelcase@6.3.0:
- resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
- engines: {node: '>=10'}
+ '@types/d3-time@3.0.4': {}
- camelcase@7.0.1:
- resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==}
- engines: {node: '>=14.16'}
+ '@types/debug@4.1.13':
+ dependencies:
+ '@types/ms': 2.1.0
- caniuse-api@3.0.0:
- resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
+ '@types/estree-jsx@1.0.5':
+ dependencies:
+ '@types/estree': 1.0.9
- caniuse-lite@1.0.30001673:
- resolution: {integrity: sha512-WTrjUCSMp3LYX0nE12ECkV0a+e6LC85E0Auz75555/qr78Oc8YWhEPNfDd6SHdtlCMSzqtuXY0uyEMNRcsKpKw==}
+ '@types/estree@1.0.9': {}
- caniuse-lite@1.0.30001761:
- resolution: {integrity: sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==}
+ '@types/hast@3.0.5':
+ dependencies:
+ '@types/unist': 3.0.3
- ccount@2.0.1:
- resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
+ '@types/mdast@3.0.15':
+ dependencies:
+ '@types/unist': 2.0.11
- chalk@2.4.2:
- resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
- engines: {node: '>=4'}
+ '@types/mdast@4.0.4':
+ dependencies:
+ '@types/unist': 3.0.3
- chalk@4.1.2:
- resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
- engines: {node: '>=10'}
+ '@types/mdx@2.0.14': {}
- chalk@5.3.0:
- resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
- engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+ '@types/ms@2.1.0': {}
- char-regex@1.0.2:
- resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
- engines: {node: '>=10'}
+ '@types/node@22.20.1':
+ dependencies:
+ undici-types: 6.21.0
- character-entities-html4@2.1.0:
- resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
+ '@types/node@25.9.5':
+ dependencies:
+ undici-types: 7.24.6
- character-entities-legacy@3.0.0:
- resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
+ '@types/react-dom@19.2.5(@types/react@19.2.18)':
+ dependencies:
+ '@types/react': 19.2.18
- character-entities@2.0.2:
- resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
+ '@types/react@19.2.18':
+ dependencies:
+ csstype: 3.2.3
- character-reference-invalid@2.0.1:
- resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==}
+ '@types/supports-color@8.1.3': {}
- cheerio-select@2.1.0:
- resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==}
+ '@types/trusted-types@2.0.7':
+ optional: true
- cheerio@1.0.0-rc.12:
- resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==}
- engines: {node: '>= 6'}
+ '@types/unist@2.0.11': {}
- chevrotain-allstar@0.3.1:
- resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==}
- peerDependencies:
- chevrotain: ^11.0.0
+ '@types/unist@3.0.3': {}
- chevrotain@11.0.3:
- resolution: {integrity: sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==}
+ '@ungap/structured-clone@1.3.3': {}
- chokidar@3.6.0:
- resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
- engines: {node: '>= 8.10.0'}
+ '@unhead/react@2.1.17(react@19.2.8)':
+ dependencies:
+ react: 19.2.8
+ unhead: 2.1.17
- chokidar@5.0.0:
- resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==}
- engines: {node: '>= 20.19.0'}
+ acorn-jsx@5.3.2(acorn@8.18.0):
+ dependencies:
+ acorn: 8.18.0
- chrome-trace-event@1.0.4:
- resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==}
- engines: {node: '>=6.0'}
+ acorn@8.18.0: {}
- ci-info@3.9.0:
- resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
- engines: {node: '>=8'}
+ ansi-regex@6.3.0: {}
- clean-css@5.3.3:
- resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==}
- engines: {node: '>= 10.0'}
+ astring@1.9.0: {}
- clean-stack@2.2.0:
- resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
- engines: {node: '>=6'}
+ bail@2.0.2: {}
- cli-boxes@3.0.0:
- resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
- engines: {node: '>=10'}
+ balanced-match@4.0.4: {}
- cli-table3@0.6.5:
- resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==}
- engines: {node: 10.* || >= 12.*}
+ big.js@5.2.2: {}
- clone-deep@4.0.1:
- resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==}
- engines: {node: '>=6'}
+ body-scroll-lock@4.0.0-beta.0: {}
- clsx@1.2.1:
- resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==}
- engines: {node: '>=6'}
+ brace-expansion@5.0.9:
+ dependencies:
+ balanced-match: 4.0.4
- clsx@2.1.1:
- resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
- engines: {node: '>=6'}
+ ccount@2.0.1: {}
- coa@2.0.2:
- resolution: {integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==}
- engines: {node: '>= 4.0'}
+ character-entities-html4@2.1.0: {}
- collapse-white-space@2.1.0:
- resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==}
+ character-entities-legacy@3.0.0: {}
- color-convert@1.9.3:
- resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+ character-entities@2.0.2: {}
- color-convert@2.0.1:
- resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
- engines: {node: '>=7.0.0'}
+ character-reference-invalid@2.0.1: {}
- color-name@1.1.3:
- resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+ chokidar@5.0.0:
+ dependencies:
+ readdirp: 5.1.1
+ optional: true
- color-name@1.1.4:
- resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ clsx@2.1.1: {}
- colord@2.9.3:
- resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
+ code-block-writer@13.0.3: {}
- colorette@2.0.20:
- resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
+ collapse-white-space@2.1.0: {}
- colorjs.io@0.7.1:
- resolution: {integrity: sha512-LY7OHnJZxHwT5UlzNa9bbhHHDbzB6yE5+3MIPwJEQKRvSCt/T4G7epsj+9j2BExUIIfXFIJGsIXUKdfrK9Q5tA==}
+ colorjs.io@0.7.1: {}
- combine-promises@1.2.0:
- resolution: {integrity: sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==}
- engines: {node: '>=10'}
+ comma-separated-tokens@2.0.3: {}
- comma-separated-tokens@2.0.3:
- resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
+ commander@7.2.0: {}
- commander@10.0.1:
- resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
- engines: {node: '>=14'}
+ commander@8.3.0: {}
- commander@2.20.3:
- resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+ compute-scroll-into-view@3.1.1: {}
- commander@5.1.0:
- resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==}
- engines: {node: '>= 6'}
+ cookie@1.1.1: {}
- commander@7.2.0:
- resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
- engines: {node: '>= 10'}
+ copy-to-clipboard@3.3.3:
+ dependencies:
+ toggle-selection: 1.0.6
- commander@8.3.0:
- resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
- engines: {node: '>= 12'}
+ cose-base@1.0.3:
+ dependencies:
+ layout-base: 1.0.2
- common-path-prefix@3.0.0:
- resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==}
+ csstype@3.2.3: {}
- compressible@2.0.18:
- resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==}
- engines: {node: '>= 0.6'}
+ cytoscape-cose-bilkent@4.1.0(cytoscape@3.34.1):
+ dependencies:
+ cose-base: 1.0.3
+ cytoscape: 3.34.1
- compression@1.7.4:
- resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==}
- engines: {node: '>= 0.8.0'}
+ cytoscape@3.34.1: {}
- concat-map@0.0.1:
- resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+ d3-array@2.12.1:
+ dependencies:
+ internmap: 1.0.1
- confbox@0.1.8:
- resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
+ d3-array@3.2.4:
+ dependencies:
+ internmap: 2.0.3
- config-chain@1.1.13:
- resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
+ d3-axis@3.0.0: {}
- configstore@6.0.0:
- resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==}
- engines: {node: '>=12'}
+ d3-brush@3.0.0:
+ dependencies:
+ d3-dispatch: 3.0.1
+ d3-drag: 3.0.0
+ d3-interpolate: 3.0.1
+ d3-selection: 3.0.0
+ d3-transition: 3.0.1(d3-selection@3.0.0)
- connect-history-api-fallback@2.0.0:
- resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==}
- engines: {node: '>=0.8'}
+ d3-chord@3.0.1:
+ dependencies:
+ d3-path: 3.1.0
- consola@3.2.3:
- resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==}
- engines: {node: ^14.18.0 || >=16.10.0}
+ d3-color@3.1.0: {}
- content-disposition@0.5.2:
- resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==}
- engines: {node: '>= 0.6'}
+ d3-contour@4.0.2:
+ dependencies:
+ d3-array: 3.2.4
- content-disposition@0.5.4:
- resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
- engines: {node: '>= 0.6'}
+ d3-delaunay@6.0.4:
+ dependencies:
+ delaunator: 5.1.0
- content-type@1.0.5:
- resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
- engines: {node: '>= 0.6'}
+ d3-dispatch@3.0.1: {}
- convert-source-map@2.0.0:
- resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+ d3-drag@3.0.0:
+ dependencies:
+ d3-dispatch: 3.0.1
+ d3-selection: 3.0.0
- cookie-signature@1.0.6:
- resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
+ d3-dsv@3.0.1:
+ dependencies:
+ commander: 7.2.0
+ iconv-lite: 0.6.3
+ rw: 1.3.3
- cookie@0.7.1:
- resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==}
- engines: {node: '>= 0.6'}
-
- copy-text-to-clipboard@3.2.2:
- resolution: {integrity: sha512-T6SqyLd1iLuqPA90J5N4cTalrtovCySh58iiZDGJ6FGznbclKh4UI+FGacQSgFzwKG77W7XT5gwbVEbd9cIH1A==}
- engines: {node: '>=12'}
-
- copy-webpack-plugin@11.0.0:
- resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==}
- engines: {node: '>= 14.15.0'}
- peerDependencies:
- webpack: ^5.1.0
-
- core-js-compat@3.38.1:
- resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==}
-
- core-js@3.39.0:
- resolution: {integrity: sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==}
-
- core-util-is@1.0.3:
- resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
-
- cose-base@1.0.3:
- resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==}
-
- cose-base@2.2.0:
- resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==}
-
- cosmiconfig@7.1.0:
- resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
- engines: {node: '>=10'}
-
- cosmiconfig@8.3.6:
- resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==}
- engines: {node: '>=14'}
- peerDependencies:
- typescript: '>=4.9.5'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
-
- crypto-random-string@4.0.0:
- resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==}
- engines: {node: '>=12'}
-
- css-blank-pseudo@7.0.1:
- resolution: {integrity: sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- css-declaration-sorter@7.2.0:
- resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==}
- engines: {node: ^14 || ^16 || >=18}
- peerDependencies:
- postcss: ^8.0.9
-
- css-has-pseudo@7.0.3:
- resolution: {integrity: sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- css-loader@6.11.0:
- resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==}
- engines: {node: '>= 12.13.0'}
- peerDependencies:
- '@rspack/core': 0.x || 1.x
- webpack: ^5.0.0
- peerDependenciesMeta:
- '@rspack/core':
- optional: true
- webpack:
- optional: true
-
- css-minimizer-webpack-plugin@5.0.1:
- resolution: {integrity: sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==}
- engines: {node: '>= 14.15.0'}
- peerDependencies:
- '@parcel/css': '*'
- '@swc/css': '*'
- clean-css: '*'
- csso: '*'
- esbuild: '*'
- lightningcss: '*'
- webpack: ^5.0.0
- peerDependenciesMeta:
- '@parcel/css':
- optional: true
- '@swc/css':
- optional: true
- clean-css:
- optional: true
- csso:
- optional: true
- esbuild:
- optional: true
- lightningcss:
- optional: true
-
- css-prefers-color-scheme@10.0.0:
- resolution: {integrity: sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- css-select-base-adapter@0.1.1:
- resolution: {integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==}
-
- css-select@2.1.0:
- resolution: {integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==}
-
- css-select@4.3.0:
- resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
-
- css-select@5.1.0:
- resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==}
-
- css-tree@1.0.0-alpha.37:
- resolution: {integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==}
- engines: {node: '>=8.0.0'}
-
- css-tree@1.1.3:
- resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==}
- engines: {node: '>=8.0.0'}
-
- css-tree@2.2.1:
- resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==}
- engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
-
- css-tree@2.3.1:
- resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
- engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
-
- css-what@3.4.2:
- resolution: {integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==}
- engines: {node: '>= 6'}
-
- css-what@6.1.0:
- resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
- engines: {node: '>= 6'}
-
- cssdb@8.5.2:
- resolution: {integrity: sha512-Pmoj9RmD8RIoIzA2EQWO4D4RMeDts0tgAH0VXdlNdxjuBGI3a9wMOIcUwaPNmD4r2qtIa06gqkIf7sECl+cBCg==}
-
- cssesc@3.0.0:
- resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
- engines: {node: '>=4'}
- hasBin: true
-
- cssnano-preset-advanced@6.1.2:
- resolution: {integrity: sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- cssnano-preset-default@6.1.2:
- resolution: {integrity: sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- cssnano-utils@4.0.2:
- resolution: {integrity: sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- cssnano@6.1.2:
- resolution: {integrity: sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- csso@4.2.0:
- resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==}
- engines: {node: '>=8.0.0'}
-
- csso@5.0.5:
- resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==}
- engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
-
- csstype@3.1.3:
- resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
-
- cytoscape-cose-bilkent@4.1.0:
- resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==}
- peerDependencies:
- cytoscape: ^3.2.0
-
- cytoscape-fcose@2.2.0:
- resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==}
- peerDependencies:
- cytoscape: ^3.2.0
-
- cytoscape@3.30.2:
- resolution: {integrity: sha512-oICxQsjW8uSaRmn4UK/jkczKOqTrVqt5/1WL0POiJUT2EKNc9STM4hYFHv917yu55aTBMFNRzymlJhVAiWPCxw==}
- engines: {node: '>=0.10'}
-
- d3-array@2.12.1:
- resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==}
-
- d3-array@3.2.4:
- resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==}
- engines: {node: '>=12'}
-
- d3-axis@3.0.0:
- resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==}
- engines: {node: '>=12'}
-
- d3-brush@3.0.0:
- resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==}
- engines: {node: '>=12'}
-
- d3-chord@3.0.1:
- resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==}
- engines: {node: '>=12'}
-
- d3-color@3.1.0:
- resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==}
- engines: {node: '>=12'}
-
- d3-contour@4.0.2:
- resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==}
- engines: {node: '>=12'}
-
- d3-delaunay@6.0.4:
- resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==}
- engines: {node: '>=12'}
-
- d3-dispatch@3.0.1:
- resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==}
- engines: {node: '>=12'}
-
- d3-drag@3.0.0:
- resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==}
- engines: {node: '>=12'}
-
- d3-dsv@3.0.1:
- resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==}
- engines: {node: '>=12'}
- hasBin: true
-
- d3-ease@3.0.1:
- resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==}
- engines: {node: '>=12'}
-
- d3-fetch@3.0.1:
- resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==}
- engines: {node: '>=12'}
-
- d3-force@3.0.0:
- resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==}
- engines: {node: '>=12'}
-
- d3-format@3.1.0:
- resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==}
- engines: {node: '>=12'}
-
- d3-geo@3.1.1:
- resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==}
- engines: {node: '>=12'}
-
- d3-hierarchy@3.1.2:
- resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==}
- engines: {node: '>=12'}
-
- d3-interpolate@3.0.1:
- resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==}
- engines: {node: '>=12'}
-
- d3-path@1.0.9:
- resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==}
-
- d3-path@3.1.0:
- resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==}
- engines: {node: '>=12'}
-
- d3-polygon@3.0.1:
- resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==}
- engines: {node: '>=12'}
-
- d3-quadtree@3.0.1:
- resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==}
- engines: {node: '>=12'}
-
- d3-random@3.0.1:
- resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==}
- engines: {node: '>=12'}
-
- d3-sankey@0.12.3:
- resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==}
-
- d3-scale-chromatic@3.1.0:
- resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==}
- engines: {node: '>=12'}
-
- d3-scale@4.0.2:
- resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==}
- engines: {node: '>=12'}
-
- d3-selection@3.0.0:
- resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==}
- engines: {node: '>=12'}
-
- d3-shape@1.3.7:
- resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==}
-
- d3-shape@3.2.0:
- resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==}
- engines: {node: '>=12'}
-
- d3-time-format@4.1.0:
- resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==}
- engines: {node: '>=12'}
-
- d3-time@3.1.0:
- resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==}
- engines: {node: '>=12'}
-
- d3-timer@3.0.1:
- resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==}
- engines: {node: '>=12'}
-
- d3-transition@3.0.1:
- resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==}
- engines: {node: '>=12'}
- peerDependencies:
- d3-selection: 2 - 3
-
- d3-zoom@3.0.0:
- resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==}
- engines: {node: '>=12'}
-
- d3@7.9.0:
- resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==}
- engines: {node: '>=12'}
-
- dagre-d3-es@7.0.11:
- resolution: {integrity: sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==}
-
- data-view-buffer@1.0.1:
- resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==}
- engines: {node: '>= 0.4'}
-
- data-view-byte-length@1.0.1:
- resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==}
- engines: {node: '>= 0.4'}
-
- data-view-byte-offset@1.0.0:
- resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==}
- engines: {node: '>= 0.4'}
-
- dayjs@1.11.13:
- resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==}
-
- debounce@1.2.1:
- resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==}
-
- debug@2.6.9:
- resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
- debug@4.3.7:
- resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
- decode-named-character-reference@1.0.2:
- resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==}
-
- decompress-response@6.0.0:
- resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
- engines: {node: '>=10'}
-
- deep-extend@0.6.0:
- resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
- engines: {node: '>=4.0.0'}
-
- deepmerge@4.3.1:
- resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
- engines: {node: '>=0.10.0'}
-
- default-browser-id@5.0.1:
- resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==}
- engines: {node: '>=18'}
-
- default-browser@5.4.0:
- resolution: {integrity: sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==}
- engines: {node: '>=18'}
-
- defer-to-connect@2.0.1:
- resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
- engines: {node: '>=10'}
-
- define-data-property@1.1.4:
- resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
- engines: {node: '>= 0.4'}
-
- define-lazy-prop@2.0.0:
- resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
- engines: {node: '>=8'}
-
- define-lazy-prop@3.0.0:
- resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
- engines: {node: '>=12'}
-
- define-properties@1.2.1:
- resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
- engines: {node: '>= 0.4'}
-
- delaunator@5.0.1:
- resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==}
-
- depd@1.1.2:
- resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==}
- engines: {node: '>= 0.6'}
-
- depd@2.0.0:
- resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
- engines: {node: '>= 0.8'}
-
- dequal@2.0.3:
- resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
- engines: {node: '>=6'}
-
- destroy@1.2.0:
- resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
- engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
-
- detect-libc@1.0.3:
- resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
- engines: {node: '>=0.10'}
- hasBin: true
-
- detect-node@2.1.0:
- resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
-
- detect-port@2.1.0:
- resolution: {integrity: sha512-epZuWb/6Q62L+nDHJc/hQAqf8pylsqgk3BpZXVBx1CDnr3nkrVNn73Uu1rXcFzkNcc+hkP3whuOg7JZYaQB65Q==}
- engines: {node: '>= 16.0.0'}
- hasBin: true
-
- devlop@1.1.0:
- resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
-
- dir-glob@3.0.1:
- resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
- engines: {node: '>=8'}
-
- dns-packet@5.6.1:
- resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==}
- engines: {node: '>=6'}
-
- docusaurus-plugin-image-zoom@3.0.1:
- resolution: {integrity: sha512-mQrqA99VpoMQJNbi02qkWAMVNC4+kwc6zLLMNzraHAJlwn+HrlUmZSEDcTwgn+H4herYNxHKxveE2WsYy73eGw==}
- peerDependencies:
- '@docusaurus/theme-classic': '>=3.0.0'
-
- docusaurus-plugin-sass@0.2.6:
- resolution: {integrity: sha512-2hKQQDkrufMong9upKoG/kSHJhuwd+FA3iAe/qzS/BmWpbIpe7XKmq5wlz4J5CJaOPu4x+iDJbgAxZqcoQf0kg==}
- peerDependencies:
- '@docusaurus/core': ^2.0.0-beta || ^3.0.0-alpha
- sass: ^1.30.0
-
- dom-converter@0.2.0:
- resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==}
-
- dom-serializer@0.2.2:
- resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==}
-
- dom-serializer@1.4.1:
- resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
-
- dom-serializer@2.0.0:
- resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
-
- domelementtype@1.3.1:
- resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==}
-
- domelementtype@2.3.0:
- resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
-
- domhandler@4.3.1:
- resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
- engines: {node: '>= 4'}
-
- domhandler@5.0.3:
- resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
- engines: {node: '>= 4'}
-
- dompurify@3.2.6:
- resolution: {integrity: sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==}
-
- domutils@1.7.0:
- resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==}
-
- domutils@2.8.0:
- resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
-
- domutils@3.1.0:
- resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==}
-
- dot-case@3.0.4:
- resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
-
- dot-prop@6.0.1:
- resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==}
- engines: {node: '>=10'}
-
- dunder-proto@1.0.1:
- resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
- engines: {node: '>= 0.4'}
-
- duplexer@0.1.2:
- resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
-
- eastasianwidth@0.2.0:
- resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
-
- ee-first@1.1.1:
- resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
-
- electron-to-chromium@1.5.267:
- resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==}
-
- electron-to-chromium@1.5.47:
- resolution: {integrity: sha512-zS5Yer0MOYw4rtK2iq43cJagHZ8sXN0jDHDKzB+86gSBSAI4v07S97mcq+Gs2vclAxSh1j7vOAHxSVgduiiuVQ==}
-
- emoji-regex@8.0.0:
- resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
-
- emoji-regex@9.2.2:
- resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
-
- emojilib@2.4.0:
- resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==}
-
- emojis-list@3.0.0:
- resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
- engines: {node: '>= 4'}
-
- emoticon@4.1.0:
- resolution: {integrity: sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==}
-
- encodeurl@1.0.2:
- resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
- engines: {node: '>= 0.8'}
-
- encodeurl@2.0.0:
- resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
- engines: {node: '>= 0.8'}
-
- enhanced-resolve@5.17.1:
- resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==}
- engines: {node: '>=10.13.0'}
-
- entities@2.1.0:
- resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==}
-
- entities@2.2.0:
- resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
-
- entities@4.5.0:
- resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
- engines: {node: '>=0.12'}
-
- error-ex@1.3.2:
- resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
-
- es-abstract@1.23.3:
- resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==}
- engines: {node: '>= 0.4'}
-
- es-array-method-boxes-properly@1.0.0:
- resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==}
-
- es-define-property@1.0.0:
- resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
- engines: {node: '>= 0.4'}
-
- es-define-property@1.0.1:
- resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
- engines: {node: '>= 0.4'}
-
- es-errors@1.3.0:
- resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
- engines: {node: '>= 0.4'}
-
- es-module-lexer@1.5.4:
- resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==}
-
- es-object-atoms@1.0.0:
- resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
- engines: {node: '>= 0.4'}
-
- es-object-atoms@1.1.1:
- resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
- engines: {node: '>= 0.4'}
-
- es-set-tostringtag@2.0.3:
- resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==}
- engines: {node: '>= 0.4'}
-
- es-to-primitive@1.2.1:
- resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
- engines: {node: '>= 0.4'}
-
- esast-util-from-estree@2.0.0:
- resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==}
-
- esast-util-from-js@2.0.1:
- resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==}
-
- escalade@3.2.0:
- resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
- engines: {node: '>=6'}
-
- escape-goat@4.0.0:
- resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==}
- engines: {node: '>=12'}
-
- escape-html@1.0.3:
- resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
-
- escape-string-regexp@1.0.5:
- resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
- engines: {node: '>=0.8.0'}
-
- escape-string-regexp@4.0.0:
- resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
- engines: {node: '>=10'}
-
- escape-string-regexp@5.0.0:
- resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
- engines: {node: '>=12'}
-
- eslint-scope@5.1.1:
- resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
- engines: {node: '>=8.0.0'}
-
- esprima@4.0.1:
- resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
- engines: {node: '>=4'}
- hasBin: true
-
- esrecurse@4.3.0:
- resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
- engines: {node: '>=4.0'}
-
- estraverse@4.3.0:
- resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
- engines: {node: '>=4.0'}
-
- estraverse@5.3.0:
- resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
- engines: {node: '>=4.0'}
-
- estree-util-attach-comments@3.0.0:
- resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==}
-
- estree-util-build-jsx@3.0.1:
- resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==}
-
- estree-util-is-identifier-name@3.0.0:
- resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==}
-
- estree-util-scope@1.0.0:
- resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==}
-
- estree-util-to-js@2.0.0:
- resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==}
-
- estree-util-value-to-estree@3.1.2:
- resolution: {integrity: sha512-S0gW2+XZkmsx00tU2uJ4L9hUT7IFabbml9pHh2WQqFmAbxit++YGZne0sKJbNwkj9Wvg9E4uqWl4nCIFQMmfag==}
-
- estree-util-visit@2.0.0:
- resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==}
-
- estree-walker@3.0.3:
- resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
-
- esutils@2.0.3:
- resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
- engines: {node: '>=0.10.0'}
-
- eta@2.2.0:
- resolution: {integrity: sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==}
- engines: {node: '>=6.0.0'}
-
- etag@1.8.1:
- resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
- engines: {node: '>= 0.6'}
-
- eval@0.1.8:
- resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==}
- engines: {node: '>= 0.8'}
-
- eventemitter3@4.0.7:
- resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
-
- events@3.3.0:
- resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
- engines: {node: '>=0.8.x'}
-
- execa@5.1.1:
- resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
- engines: {node: '>=10'}
-
- express@4.22.1:
- resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==}
- engines: {node: '>= 0.10.0'}
-
- extend-shallow@2.0.1:
- resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
- engines: {node: '>=0.10.0'}
-
- extend@3.0.2:
- resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
-
- fast-deep-equal@3.1.3:
- resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
-
- fast-glob@3.3.2:
- resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
- engines: {node: '>=8.6.0'}
-
- fast-json-stable-stringify@2.1.0:
- resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
-
- fast-uri@3.0.3:
- resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==}
-
- fastq@1.17.1:
- resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
-
- fault@2.0.1:
- resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==}
-
- faye-websocket@0.11.4:
- resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==}
- engines: {node: '>=0.8.0'}
-
- feed@4.2.2:
- resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==}
- engines: {node: '>=0.4.0'}
-
- file-loader@6.2.0:
- resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==}
- engines: {node: '>= 10.13.0'}
- peerDependencies:
- webpack: ^4.0.0 || ^5.0.0
-
- fill-range@7.1.1:
- resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
- engines: {node: '>=8'}
-
- finalhandler@1.3.1:
- resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==}
- engines: {node: '>= 0.8'}
-
- find-cache-dir@4.0.0:
- resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==}
- engines: {node: '>=14.16'}
-
- find-up@6.3.0:
- resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- flat@5.0.2:
- resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==}
- hasBin: true
-
- follow-redirects@1.15.9:
- resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==}
- engines: {node: '>=4.0'}
- peerDependencies:
- debug: '*'
- peerDependenciesMeta:
- debug:
- optional: true
-
- for-each@0.3.3:
- resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
-
- form-data-encoder@2.1.4:
- resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==}
- engines: {node: '>= 14.17'}
-
- format@0.2.2:
- resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
- engines: {node: '>=0.4.x'}
-
- forwarded@0.2.0:
- resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
- engines: {node: '>= 0.6'}
-
- fraction.js@5.3.4:
- resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==}
-
- fresh@0.5.2:
- resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
- engines: {node: '>= 0.6'}
-
- fs-extra@11.2.0:
- resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==}
- engines: {node: '>=14.14'}
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- function-bind@1.1.2:
- resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
-
- function.prototype.name@1.1.6:
- resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
- engines: {node: '>= 0.4'}
-
- functions-have-names@1.2.3:
- resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
-
- gensync@1.0.0-beta.2:
- resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
- engines: {node: '>=6.9.0'}
-
- get-intrinsic@1.2.4:
- resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
- engines: {node: '>= 0.4'}
-
- get-intrinsic@1.3.0:
- resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
- engines: {node: '>= 0.4'}
-
- get-own-enumerable-property-symbols@3.0.2:
- resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==}
-
- get-proto@1.0.1:
- resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
- engines: {node: '>= 0.4'}
-
- get-stream@6.0.1:
- resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
- engines: {node: '>=10'}
-
- get-symbol-description@1.0.2:
- resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
- engines: {node: '>= 0.4'}
-
- github-slugger@1.5.0:
- resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==}
-
- glob-parent@5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
-
- glob-parent@6.0.2:
- resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
- engines: {node: '>=10.13.0'}
-
- glob-to-regex.js@1.2.0:
- resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==}
- engines: {node: '>=10.0'}
- peerDependencies:
- tslib: '2'
-
- glob-to-regexp@0.4.1:
- resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
-
- global-dirs@3.0.1:
- resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==}
- engines: {node: '>=10'}
-
- globals@11.12.0:
- resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
- engines: {node: '>=4'}
-
- globalthis@1.0.4:
- resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
- engines: {node: '>= 0.4'}
-
- globby@11.1.0:
- resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
- engines: {node: '>=10'}
-
- globby@12.1.0:
- resolution: {integrity: sha512-YULDaNwsoUZkRy9TWSY/M7Obh0abamTKoKzTfOI3uU+hfpX2FZqOq8LFDxsjYheF1RH7ITdArgbQnsNBFgcdBA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- globby@13.2.2:
- resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- gopd@1.0.1:
- resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
-
- gopd@1.2.0:
- resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
- engines: {node: '>= 0.4'}
-
- got@12.6.1:
- resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==}
- engines: {node: '>=14.16'}
-
- graceful-fs@4.2.10:
- resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
-
- graceful-fs@4.2.11:
- resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
-
- gzip-size@6.0.0:
- resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==}
- engines: {node: '>=10'}
-
- hachure-fill@0.5.2:
- resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==}
-
- handle-thing@2.0.1:
- resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==}
-
- has-bigints@1.0.2:
- resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
-
- has-flag@3.0.0:
- resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
- engines: {node: '>=4'}
-
- has-flag@4.0.0:
- resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
- engines: {node: '>=8'}
-
- has-property-descriptors@1.0.2:
- resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
-
- has-proto@1.0.3:
- resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
- engines: {node: '>= 0.4'}
-
- has-symbols@1.0.3:
- resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
- engines: {node: '>= 0.4'}
-
- has-symbols@1.1.0:
- resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
- engines: {node: '>= 0.4'}
-
- has-tostringtag@1.0.2:
- resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
- engines: {node: '>= 0.4'}
-
- has-yarn@3.0.0:
- resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- hasown@2.0.2:
- resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
- engines: {node: '>= 0.4'}
-
- hast-util-from-parse5@8.0.1:
- resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==}
-
- hast-util-is-element@1.1.0:
- resolution: {integrity: sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==}
-
- hast-util-parse-selector@4.0.0:
- resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==}
-
- hast-util-raw@9.0.4:
- resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==}
-
- hast-util-to-estree@3.1.0:
- resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==}
-
- hast-util-to-html@9.0.5:
- resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==}
-
- hast-util-to-jsx-runtime@2.3.2:
- resolution: {integrity: sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==}
-
- hast-util-to-parse5@8.0.0:
- resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==}
-
- hast-util-to-string@3.0.1:
- resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==}
-
- hast-util-whitespace@3.0.0:
- resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
-
- hastscript@8.0.0:
- resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==}
-
- he@1.2.0:
- resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
- hasBin: true
-
- history@4.10.1:
- resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==}
-
- hoist-non-react-statics@3.3.2:
- resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
-
- hpack.js@2.1.6:
- resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==}
-
- html-escaper@2.0.2:
- resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
-
- html-minifier-terser@6.1.0:
- resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==}
- engines: {node: '>=12'}
- hasBin: true
-
- html-minifier-terser@7.2.0:
- resolution: {integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==}
- engines: {node: ^14.13.1 || >=16.0.0}
- hasBin: true
-
- html-tags@3.3.1:
- resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
- engines: {node: '>=8'}
-
- html-void-elements@3.0.0:
- resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
-
- html-webpack-plugin@5.6.3:
- resolution: {integrity: sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==}
- engines: {node: '>=10.13.0'}
- peerDependencies:
- '@rspack/core': 0.x || 1.x
- webpack: ^5.20.0
- peerDependenciesMeta:
- '@rspack/core':
- optional: true
- webpack:
- optional: true
-
- htmlparser2@6.1.0:
- resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==}
-
- htmlparser2@8.0.2:
- resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==}
-
- http-cache-semantics@4.1.1:
- resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
-
- http-deceiver@1.2.7:
- resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==}
-
- http-errors@1.6.3:
- resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==}
- engines: {node: '>= 0.6'}
-
- http-errors@2.0.0:
- resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
- engines: {node: '>= 0.8'}
-
- http-parser-js@0.5.8:
- resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==}
-
- http-proxy-middleware@2.0.9:
- resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==}
- engines: {node: '>=12.0.0'}
- peerDependencies:
- '@types/express': ^4.17.13
- peerDependenciesMeta:
- '@types/express':
- optional: true
-
- http-proxy@1.18.1:
- resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==}
- engines: {node: '>=8.0.0'}
-
- http2-wrapper@2.2.1:
- resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==}
- engines: {node: '>=10.19.0'}
-
- human-signals@2.1.0:
- resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
- engines: {node: '>=10.17.0'}
-
- husky@7.0.4:
- resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==}
- engines: {node: '>=12'}
- hasBin: true
-
- hyperdyperid@1.2.0:
- resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==}
- engines: {node: '>=10.18'}
-
- iconv-lite@0.4.24:
- resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
- engines: {node: '>=0.10.0'}
-
- iconv-lite@0.6.3:
- resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
- engines: {node: '>=0.10.0'}
-
- icss-utils@5.1.0:
- resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==}
- engines: {node: ^10 || ^12 || >= 14}
- peerDependencies:
- postcss: ^8.1.0
-
- ignore@5.3.2:
- resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
- engines: {node: '>= 4'}
-
- image-size@2.0.2:
- resolution: {integrity: sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==}
- engines: {node: '>=16.x'}
- hasBin: true
-
- immutable@5.1.5:
- resolution: {integrity: sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==}
-
- import-fresh@3.3.0:
- resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
- engines: {node: '>=6'}
-
- import-lazy@4.0.0:
- resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==}
- engines: {node: '>=8'}
-
- imurmurhash@0.1.4:
- resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
- engines: {node: '>=0.8.19'}
-
- indent-string@4.0.0:
- resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
- engines: {node: '>=8'}
-
- infima@0.2.0-alpha.45:
- resolution: {integrity: sha512-uyH0zfr1erU1OohLk0fT4Rrb94AOhguWNOcD9uGrSpRvNB+6gZXUoJX5J0NtvzBO10YZ9PgvA4NFgt+fYg8ojw==}
- engines: {node: '>=12'}
-
- inherits@2.0.3:
- resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==}
-
- inherits@2.0.4:
- resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
-
- ini@1.3.8:
- resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
-
- ini@2.0.0:
- resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==}
- engines: {node: '>=10'}
-
- inline-style-parser@0.1.1:
- resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==}
-
- inline-style-parser@0.2.4:
- resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==}
-
- internal-slot@1.0.7:
- resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
- engines: {node: '>= 0.4'}
-
- internmap@1.0.1:
- resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==}
-
- internmap@2.0.3:
- resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==}
- engines: {node: '>=12'}
-
- invariant@2.2.4:
- resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
-
- ipaddr.js@1.9.1:
- resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
- engines: {node: '>= 0.10'}
-
- ipaddr.js@2.2.0:
- resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==}
- engines: {node: '>= 10'}
-
- is-alphabetical@2.0.1:
- resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
-
- is-alphanumerical@2.0.1:
- resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
-
- is-array-buffer@3.0.4:
- resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
- engines: {node: '>= 0.4'}
-
- is-arrayish@0.2.1:
- resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
-
- is-bigint@1.0.4:
- resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
-
- is-binary-path@2.1.0:
- resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
- engines: {node: '>=8'}
-
- is-boolean-object@1.1.2:
- resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
- engines: {node: '>= 0.4'}
-
- is-callable@1.2.7:
- resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
- engines: {node: '>= 0.4'}
-
- is-ci@3.0.1:
- resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==}
- hasBin: true
-
- is-core-module@2.15.1:
- resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==}
- engines: {node: '>= 0.4'}
-
- is-data-view@1.0.1:
- resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==}
- engines: {node: '>= 0.4'}
-
- is-date-object@1.0.5:
- resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
- engines: {node: '>= 0.4'}
-
- is-decimal@2.0.1:
- resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
-
- is-docker@2.2.1:
- resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
- engines: {node: '>=8'}
- hasBin: true
-
- is-docker@3.0.0:
- resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- hasBin: true
-
- 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-fullwidth-code-point@3.0.0:
- resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
- engines: {node: '>=8'}
-
- is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
-
- is-hexadecimal@2.0.1:
- resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
-
- is-inside-container@1.0.0:
- resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
- engines: {node: '>=14.16'}
- hasBin: true
-
- is-installed-globally@0.4.0:
- resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==}
- engines: {node: '>=10'}
-
- is-negative-zero@2.0.3:
- resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
- engines: {node: '>= 0.4'}
-
- is-network-error@1.3.0:
- resolution: {integrity: sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==}
- engines: {node: '>=16'}
-
- is-npm@6.0.0:
- resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- is-number-object@1.0.7:
- resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
- engines: {node: '>= 0.4'}
-
- is-number@7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
-
- is-obj@1.0.1:
- resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==}
- engines: {node: '>=0.10.0'}
-
- is-obj@2.0.0:
- resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
- engines: {node: '>=8'}
-
- is-path-inside@3.0.3:
- resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
- engines: {node: '>=8'}
-
- is-plain-obj@3.0.0:
- resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==}
- engines: {node: '>=10'}
-
- is-plain-obj@4.1.0:
- resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
- engines: {node: '>=12'}
-
- is-plain-object@2.0.4:
- resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
- engines: {node: '>=0.10.0'}
-
- is-regex@1.1.4:
- resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
- engines: {node: '>= 0.4'}
-
- is-regexp@1.0.0:
- resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==}
- engines: {node: '>=0.10.0'}
-
- is-shared-array-buffer@1.0.3:
- resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
- engines: {node: '>= 0.4'}
-
- is-stream@2.0.1:
- resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
- engines: {node: '>=8'}
-
- is-string@1.0.7:
- resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
- engines: {node: '>= 0.4'}
-
- is-symbol@1.0.4:
- resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
- engines: {node: '>= 0.4'}
-
- is-typed-array@1.1.13:
- resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==}
- engines: {node: '>= 0.4'}
-
- is-typedarray@1.0.0:
- resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
-
- is-weakref@1.0.2:
- resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
-
- is-wsl@2.2.0:
- resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
- engines: {node: '>=8'}
-
- is-wsl@3.1.0:
- resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==}
- engines: {node: '>=16'}
-
- is-yarn-global@0.4.1:
- resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==}
- engines: {node: '>=12'}
-
- isarray@0.0.1:
- resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==}
-
- isarray@1.0.0:
- resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
-
- isarray@2.0.5:
- resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
-
- isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
- isobject@3.0.1:
- resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
- engines: {node: '>=0.10.0'}
-
- jest-util@29.7.0:
- resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
-
- jest-worker@27.5.1:
- resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
- engines: {node: '>= 10.13.0'}
-
- jest-worker@29.7.0:
- resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
-
- jiti@1.21.6:
- resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
- hasBin: true
-
- joi@17.13.3:
- resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==}
-
- js-tokens@4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
-
- js-yaml@3.14.1:
- resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
- hasBin: true
-
- js-yaml@4.1.0:
- resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
- hasBin: true
-
- jsesc@3.0.2:
- resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
- engines: {node: '>=6'}
- hasBin: true
-
- json-buffer@3.0.1:
- resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
-
- json-parse-even-better-errors@2.3.1:
- resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
-
- json-schema-traverse@0.4.1:
- resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
-
- json-schema-traverse@1.0.0:
- resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
-
- json5@2.2.3:
- resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
- engines: {node: '>=6'}
- hasBin: true
-
- jsonfile@6.1.0:
- resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
-
- katex@0.16.11:
- resolution: {integrity: sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==}
- hasBin: true
-
- keyv@4.5.4:
- resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
-
- khroma@2.1.0:
- resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==}
-
- kind-of@6.0.3:
- resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
- engines: {node: '>=0.10.0'}
-
- kleur@3.0.3:
- resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
- engines: {node: '>=6'}
-
- kolorist@1.8.0:
- resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
-
- langium@3.3.1:
- resolution: {integrity: sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==}
- engines: {node: '>=16.0.0'}
-
- latest-version@7.0.0:
- resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==}
- engines: {node: '>=14.16'}
-
- launch-editor@2.9.1:
- resolution: {integrity: sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==}
-
- layout-base@1.0.2:
- resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==}
-
- layout-base@2.0.1:
- resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==}
-
- leven@3.1.0:
- resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
- engines: {node: '>=6'}
-
- lightningcss-darwin-arm64@1.27.0:
- resolution: {integrity: sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [darwin]
-
- lightningcss-darwin-x64@1.27.0:
- resolution: {integrity: sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [darwin]
-
- lightningcss-freebsd-x64@1.27.0:
- resolution: {integrity: sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [freebsd]
-
- lightningcss-linux-arm-gnueabihf@1.27.0:
- resolution: {integrity: sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm]
- os: [linux]
-
- lightningcss-linux-arm64-gnu@1.27.0:
- resolution: {integrity: sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
-
- lightningcss-linux-arm64-musl@1.27.0:
- resolution: {integrity: sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
-
- lightningcss-linux-x64-gnu@1.27.0:
- resolution: {integrity: sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
-
- lightningcss-linux-x64-musl@1.27.0:
- resolution: {integrity: sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [linux]
- libc: [musl]
-
- lightningcss-win32-arm64-msvc@1.27.0:
- resolution: {integrity: sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [win32]
-
- lightningcss-win32-x64-msvc@1.27.0:
- resolution: {integrity: sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [win32]
-
- lightningcss@1.27.0:
- resolution: {integrity: sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==}
- engines: {node: '>= 12.0.0'}
-
- lilconfig@3.1.2:
- resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==}
- engines: {node: '>=14'}
-
- lines-and-columns@1.2.4:
- resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
-
- linkify-it@3.0.3:
- resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==}
-
- loader-runner@4.3.0:
- resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==}
- engines: {node: '>=6.11.5'}
-
- loader-utils@2.0.4:
- resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==}
- engines: {node: '>=8.9.0'}
-
- local-pkg@0.5.0:
- resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==}
- engines: {node: '>=14'}
-
- locate-path@7.2.0:
- resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- lodash-es@4.17.21:
- resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
-
- lodash.debounce@4.0.8:
- resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
-
- lodash.memoize@4.1.2:
- resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
-
- lodash.uniq@4.5.0:
- resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==}
-
- lodash@4.17.21:
- resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
-
- longest-streak@3.1.0:
- resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
-
- loose-envify@1.4.0:
- resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
- hasBin: true
-
- lower-case@2.0.2:
- resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
-
- lowercase-keys@3.0.0:
- resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- lru-cache@5.1.1:
- resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
-
- markdown-extensions@2.0.0:
- resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==}
- engines: {node: '>=16'}
-
- markdown-it@12.3.2:
- resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==}
- hasBin: true
-
- markdown-table@3.0.3:
- resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
-
- markdownlint-cli2-formatter-default@0.0.3:
- resolution: {integrity: sha512-QEAJitT5eqX1SNboOD+SO/LNBpu4P4je8JlR02ug2cLQAqmIhh8IJnSK7AcaHBHhNADqdGydnPpQOpsNcEEqCw==}
- peerDependencies:
- markdownlint-cli2: '>=0.0.4'
-
- markdownlint-cli2@0.4.0:
- resolution: {integrity: sha512-EcwP5tAbyzzL3ACI0L16LqbNctmh8wNX56T+aVvIxWyTAkwbYNx2V7IheRkXS3mE7R/pnaApZ/RSXcXuzRVPjg==}
- engines: {node: '>=12'}
- hasBin: true
-
- markdownlint-rule-helpers@0.16.0:
- resolution: {integrity: sha512-oEacRUVeTJ5D5hW1UYd2qExYI0oELdYK72k1TKGvIeYJIbqQWAz476NAc7LNixSySUhcNl++d02DvX0ccDk9/w==}
-
- markdownlint@0.25.1:
- resolution: {integrity: sha512-AG7UkLzNa1fxiOv5B+owPsPhtM4D6DoODhsJgiaNg1xowXovrYgOnLqAgOOFQpWOlHFVQUzjMY5ypNNTeov92g==}
- engines: {node: '>=12'}
-
- marked@15.0.12:
- resolution: {integrity: sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==}
- engines: {node: '>= 18'}
- hasBin: true
-
- math-intrinsics@1.1.0:
- resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
- engines: {node: '>= 0.4'}
-
- mdast-util-directive@3.0.0:
- resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==}
-
- mdast-util-find-and-replace@3.0.1:
- resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==}
-
- mdast-util-from-markdown@2.0.1:
- resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==}
-
- mdast-util-frontmatter@2.0.1:
- resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==}
-
- mdast-util-gfm-autolink-literal@2.0.1:
- resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==}
-
- mdast-util-gfm-footnote@2.0.0:
- resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==}
-
- mdast-util-gfm-strikethrough@2.0.0:
- resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==}
-
- mdast-util-gfm-table@2.0.0:
- resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==}
-
- mdast-util-gfm-task-list-item@2.0.0:
- resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==}
-
- mdast-util-gfm@3.0.0:
- resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==}
-
- mdast-util-mdx-expression@2.0.1:
- resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==}
-
- mdast-util-mdx-jsx@3.1.3:
- resolution: {integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==}
-
- mdast-util-mdx@3.0.0:
- resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==}
-
- mdast-util-mdxjs-esm@2.0.1:
- resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==}
-
- mdast-util-phrasing@4.1.0:
- resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
-
- mdast-util-to-hast@13.2.0:
- resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==}
-
- mdast-util-to-markdown@2.1.0:
- resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==}
-
- mdast-util-to-string@4.0.0:
- resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
-
- mdn-data@2.0.14:
- resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
-
- mdn-data@2.0.28:
- resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==}
-
- mdn-data@2.0.30:
- resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
-
- mdn-data@2.0.4:
- resolution: {integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==}
-
- mdurl@1.0.1:
- resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==}
-
- media-typer@0.3.0:
- resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
- engines: {node: '>= 0.6'}
-
- medium-zoom@1.1.0:
- resolution: {integrity: sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==}
-
- meilisearch-docsearch@0.8.0:
- resolution: {integrity: sha512-I0sd0z7CRSyn83ACDKbDD4PQNFCe/oZxN4pWgJbqLgLwOEICQMZLMlFVmQPQzzSb9ZkvjjJnaNPxVpZ4yi7upw==}
-
- meilisearch@0.50.0:
- resolution: {integrity: sha512-9IzIkobvnuS18Eg4dq/eJB9W+eXqeLZjNRgq/kKMswSmVYYSQsXqGgSuCA0JkF+o5RwJlwIsieQee6rh313VhA==}
-
- memfs@4.51.1:
- resolution: {integrity: sha512-Eyt3XrufitN2ZL9c/uIRMyDwXanLI88h/L3MoWqNY747ha3dMR9dWqp8cRT5ntjZ0U1TNuq4U91ZXK0sMBjYOQ==}
-
- merge-descriptors@1.0.3:
- resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
-
- merge-stream@2.0.0:
- resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
-
- merge2@1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
-
- mermaid@11.6.0:
- resolution: {integrity: sha512-PE8hGUy1LDlWIHWBP05SFdqUHGmRcCcK4IzpOKPE35eOw+G9zZgcnMpyunJVUEOgb//KBORPjysKndw8bFLuRg==}
-
- methods@1.1.2:
- resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
- engines: {node: '>= 0.6'}
-
- micromark-core-commonmark@2.0.1:
- resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==}
-
- micromark-extension-directive@3.0.2:
- resolution: {integrity: sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==}
-
- micromark-extension-frontmatter@2.0.0:
- resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==}
-
- micromark-extension-gfm-autolink-literal@2.1.0:
- resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==}
-
- micromark-extension-gfm-footnote@2.1.0:
- resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==}
-
- micromark-extension-gfm-strikethrough@2.1.0:
- resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==}
-
- micromark-extension-gfm-table@2.1.0:
- resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==}
-
- micromark-extension-gfm-tagfilter@2.0.0:
- resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==}
-
- micromark-extension-gfm-task-list-item@2.1.0:
- resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==}
-
- micromark-extension-gfm@3.0.0:
- resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==}
-
- micromark-extension-mdx-expression@3.0.0:
- resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==}
-
- micromark-extension-mdx-jsx@3.0.1:
- resolution: {integrity: sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==}
-
- micromark-extension-mdx-md@2.0.0:
- resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==}
-
- micromark-extension-mdxjs-esm@3.0.0:
- resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==}
-
- micromark-extension-mdxjs@3.0.0:
- resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==}
-
- micromark-factory-destination@2.0.0:
- resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==}
-
- micromark-factory-label@2.0.0:
- resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==}
-
- micromark-factory-mdx-expression@2.0.2:
- resolution: {integrity: sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==}
-
- micromark-factory-space@1.1.0:
- resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==}
-
- micromark-factory-space@2.0.0:
- resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==}
-
- micromark-factory-title@2.0.0:
- resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==}
-
- micromark-factory-whitespace@2.0.0:
- resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==}
-
- micromark-util-character@1.2.0:
- resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==}
-
- micromark-util-character@2.1.0:
- resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==}
-
- micromark-util-chunked@2.0.0:
- resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==}
-
- micromark-util-classify-character@2.0.0:
- resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==}
-
- micromark-util-combine-extensions@2.0.0:
- resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==}
-
- micromark-util-decode-numeric-character-reference@2.0.1:
- resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==}
-
- micromark-util-decode-string@2.0.0:
- resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==}
-
- micromark-util-encode@2.0.0:
- resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==}
-
- micromark-util-events-to-acorn@2.0.2:
- resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==}
-
- micromark-util-html-tag-name@2.0.0:
- resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==}
-
- micromark-util-normalize-identifier@2.0.0:
- resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==}
-
- micromark-util-resolve-all@2.0.0:
- resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==}
-
- micromark-util-sanitize-uri@2.0.0:
- resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==}
-
- micromark-util-subtokenize@2.0.1:
- resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==}
-
- micromark-util-symbol@1.1.0:
- resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==}
-
- micromark-util-symbol@2.0.0:
- resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==}
-
- micromark-util-types@1.1.0:
- resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==}
-
- micromark-util-types@2.0.0:
- resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==}
-
- micromark@4.0.0:
- resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==}
-
- micromatch@4.0.4:
- resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==}
- engines: {node: '>=8.6'}
-
- micromatch@4.0.8:
- resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
- engines: {node: '>=8.6'}
-
- mime-db@1.33.0:
- resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==}
- engines: {node: '>= 0.6'}
-
- mime-db@1.52.0:
- resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
- engines: {node: '>= 0.6'}
-
- mime-db@1.54.0:
- resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==}
- engines: {node: '>= 0.6'}
-
- mime-types@2.1.18:
- resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==}
- engines: {node: '>= 0.6'}
-
- mime-types@2.1.35:
- resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
- engines: {node: '>= 0.6'}
-
- mime-types@3.0.2:
- resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==}
- engines: {node: '>=18'}
-
- mime@1.6.0:
- resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
- engines: {node: '>=4'}
- hasBin: true
-
- mimic-fn@2.1.0:
- resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
- engines: {node: '>=6'}
-
- mimic-response@3.1.0:
- resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
- engines: {node: '>=10'}
-
- mimic-response@4.0.0:
- resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- mini-css-extract-plugin@2.9.4:
- resolution: {integrity: sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==}
- engines: {node: '>= 12.13.0'}
- peerDependencies:
- webpack: ^5.0.0
-
- minimalistic-assert@1.0.1:
- resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
-
- minimatch@3.1.5:
- resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==}
-
- minimist@1.2.8:
- resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
-
- mkdirp@0.5.6:
- resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
- hasBin: true
-
- mlly@1.7.2:
- resolution: {integrity: sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==}
-
- mrmime@2.0.0:
- resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
- engines: {node: '>=10'}
-
- ms@2.0.0:
- resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
-
- ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
-
- multicast-dns@7.2.5:
- resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==}
- hasBin: true
-
- nanoid@3.3.11:
- resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
- negotiator@0.6.3:
- resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
- engines: {node: '>= 0.6'}
-
- neo-async@2.6.2:
- resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
-
- no-case@3.0.4:
- resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
-
- node-addon-api@7.1.1:
- resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
-
- node-emoji@2.1.3:
- resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==}
- engines: {node: '>=18'}
-
- node-forge@1.3.1:
- resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
- engines: {node: '>= 6.13.0'}
-
- node-releases@2.0.18:
- resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
-
- node-releases@2.0.27:
- resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
-
- normalize-path@3.0.0:
- resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
- engines: {node: '>=0.10.0'}
-
- normalize-url@8.0.1:
- resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==}
- engines: {node: '>=14.16'}
-
- npm-run-path@4.0.1:
- resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
- engines: {node: '>=8'}
-
- nprogress@0.2.0:
- resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==}
-
- nth-check@1.0.2:
- resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==}
-
- nth-check@2.1.1:
- resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
-
- null-loader@4.0.1:
- resolution: {integrity: sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==}
- engines: {node: '>= 10.13.0'}
- peerDependencies:
- webpack: ^4.0.0 || ^5.0.0
-
- object-assign@4.1.1:
- resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
- engines: {node: '>=0.10.0'}
-
- object-inspect@1.13.2:
- resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
- engines: {node: '>= 0.4'}
-
- object-inspect@1.13.4:
- resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
- engines: {node: '>= 0.4'}
-
- object-keys@1.1.1:
- resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
- engines: {node: '>= 0.4'}
-
- object.assign@4.1.5:
- resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
- engines: {node: '>= 0.4'}
-
- object.getownpropertydescriptors@2.1.8:
- resolution: {integrity: sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==}
- engines: {node: '>= 0.8'}
-
- object.values@1.2.0:
- resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==}
- engines: {node: '>= 0.4'}
-
- obuf@1.1.2:
- resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==}
-
- on-finished@2.4.1:
- resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
- engines: {node: '>= 0.8'}
-
- on-headers@1.0.2:
- resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==}
- engines: {node: '>= 0.8'}
-
- onetime@5.1.2:
- resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
- engines: {node: '>=6'}
-
- oniguruma-parser@0.12.2:
- resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==}
-
- oniguruma-to-es@4.3.6:
- resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==}
-
- open@10.2.0:
- resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==}
- engines: {node: '>=18'}
-
- open@8.4.2:
- resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
- engines: {node: '>=12'}
-
- opener@1.5.2:
- resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==}
- hasBin: true
-
- p-cancelable@3.0.0:
- resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==}
- engines: {node: '>=12.20'}
-
- p-finally@1.0.0:
- resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
- engines: {node: '>=4'}
-
- p-limit@4.0.0:
- resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- p-locate@6.0.0:
- resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- p-map@4.0.0:
- resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
- engines: {node: '>=10'}
-
- p-queue@6.6.2:
- resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==}
- engines: {node: '>=8'}
-
- p-retry@6.2.1:
- resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==}
- engines: {node: '>=16.17'}
-
- p-timeout@3.2.0:
- resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==}
- engines: {node: '>=8'}
-
- package-json@8.1.1:
- resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==}
- engines: {node: '>=14.16'}
-
- package-manager-detector@0.2.2:
- resolution: {integrity: sha512-VgXbyrSNsml4eHWIvxxG/nTL4wgybMTXCV2Un/+yEc3aDKKU6nQBZjbeP3Pl3qm9Qg92X/1ng4ffvCeD/zwHgg==}
-
- param-case@3.0.4:
- resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==}
-
- parent-module@1.0.1:
- resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
- engines: {node: '>=6'}
-
- parse-entities@4.0.1:
- resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==}
-
- parse-json@5.2.0:
- resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
- engines: {node: '>=8'}
-
- parse-numeric-range@1.3.0:
- resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==}
-
- parse5-htmlparser2-tree-adapter@7.1.0:
- resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==}
-
- parse5@7.2.0:
- resolution: {integrity: sha512-ZkDsAOcxsUMZ4Lz5fVciOehNcJ+Gb8gTzcA4yl3wnc273BAybYWrQ+Ks/OjCjSEpjvQkDSeZbybK9qj2VHHdGA==}
-
- parseurl@1.3.3:
- resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
- engines: {node: '>= 0.8'}
-
- pascal-case@3.1.2:
- resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
-
- path-data-parser@0.1.0:
- resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==}
-
- path-exists@5.0.0:
- resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- path-is-inside@1.0.2:
- resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==}
-
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- path-parse@1.0.7:
- resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
-
- path-root-regex@0.1.2:
- resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==}
- engines: {node: '>=0.10.0'}
-
- path-root@0.1.1:
- resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==}
- engines: {node: '>=0.10.0'}
-
- path-to-regexp@0.1.12:
- resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==}
-
- path-to-regexp@1.9.0:
- resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==}
-
- path-to-regexp@3.3.0:
- resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==}
-
- path-type@4.0.0:
- resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
- engines: {node: '>=8'}
-
- pathe@1.1.2:
- resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
-
- picocolors@1.1.1:
- resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
-
- picomatch@2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
-
- pkg-dir@7.0.0:
- resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==}
- engines: {node: '>=14.16'}
-
- pkg-types@1.2.1:
- resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==}
-
- points-on-curve@0.2.0:
- resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==}
-
- points-on-path@0.2.1:
- resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==}
-
- possible-typed-array-names@1.0.0:
- resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
- engines: {node: '>= 0.4'}
-
- postcss-attribute-case-insensitive@7.0.1:
- resolution: {integrity: sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-calc@9.0.1:
- resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.2.2
-
- postcss-clamp@4.1.0:
- resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==}
- engines: {node: '>=7.6.0'}
- peerDependencies:
- postcss: ^8.4.6
-
- postcss-color-functional-notation@7.0.12:
- resolution: {integrity: sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-color-hex-alpha@10.0.0:
- resolution: {integrity: sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-color-rebeccapurple@10.0.0:
- resolution: {integrity: sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-colormin@6.1.0:
- resolution: {integrity: sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-convert-values@6.1.0:
- resolution: {integrity: sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-custom-media@11.0.6:
- resolution: {integrity: sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-custom-properties@14.0.6:
- resolution: {integrity: sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-custom-selectors@8.0.5:
- resolution: {integrity: sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-dir-pseudo-class@9.0.1:
- resolution: {integrity: sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-discard-comments@6.0.2:
- resolution: {integrity: sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-discard-duplicates@6.0.3:
- resolution: {integrity: sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-discard-empty@6.0.3:
- resolution: {integrity: sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-discard-overridden@6.0.2:
- resolution: {integrity: sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-discard-unused@6.0.5:
- resolution: {integrity: sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-double-position-gradients@6.0.4:
- resolution: {integrity: sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-focus-visible@10.0.1:
- resolution: {integrity: sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-focus-within@9.0.1:
- resolution: {integrity: sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-font-variant@5.0.0:
- resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==}
- peerDependencies:
- postcss: ^8.1.0
-
- postcss-gap-properties@6.0.0:
- resolution: {integrity: sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-image-set-function@7.0.0:
- resolution: {integrity: sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-lab-function@7.0.12:
- resolution: {integrity: sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-loader@7.3.4:
- resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==}
- engines: {node: '>= 14.15.0'}
- peerDependencies:
- postcss: ^7.0.0 || ^8.0.1
- webpack: ^5.0.0
-
- postcss-logical@8.1.0:
- resolution: {integrity: sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-merge-idents@6.0.3:
- resolution: {integrity: sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-merge-longhand@6.0.5:
- resolution: {integrity: sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-merge-rules@6.1.1:
- resolution: {integrity: sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-minify-font-values@6.1.0:
- resolution: {integrity: sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-minify-gradients@6.0.3:
- resolution: {integrity: sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-minify-params@6.1.0:
- resolution: {integrity: sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-minify-selectors@6.0.4:
- resolution: {integrity: sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-modules-extract-imports@3.1.0:
- resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==}
- engines: {node: ^10 || ^12 || >= 14}
- peerDependencies:
- postcss: ^8.1.0
-
- postcss-modules-local-by-default@4.0.5:
- resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==}
- engines: {node: ^10 || ^12 || >= 14}
- peerDependencies:
- postcss: ^8.1.0
-
- postcss-modules-scope@3.2.0:
- resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==}
- engines: {node: ^10 || ^12 || >= 14}
- peerDependencies:
- postcss: ^8.1.0
-
- postcss-modules-values@4.0.0:
- resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==}
- engines: {node: ^10 || ^12 || >= 14}
- peerDependencies:
- postcss: ^8.1.0
-
- postcss-nesting@13.0.2:
- resolution: {integrity: sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-normalize-charset@6.0.2:
- resolution: {integrity: sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-normalize-display-values@6.0.2:
- resolution: {integrity: sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-normalize-positions@6.0.2:
- resolution: {integrity: sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-normalize-repeat-style@6.0.2:
- resolution: {integrity: sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-normalize-string@6.0.2:
- resolution: {integrity: sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-normalize-timing-functions@6.0.2:
- resolution: {integrity: sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-normalize-unicode@6.1.0:
- resolution: {integrity: sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-normalize-url@6.0.2:
- resolution: {integrity: sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-normalize-whitespace@6.0.2:
- resolution: {integrity: sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-opacity-percentage@3.0.0:
- resolution: {integrity: sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-ordered-values@6.0.2:
- resolution: {integrity: sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-overflow-shorthand@6.0.0:
- resolution: {integrity: sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-page-break@3.0.4:
- resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==}
- peerDependencies:
- postcss: ^8
-
- postcss-place@10.0.0:
- resolution: {integrity: sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-preset-env@10.5.0:
- resolution: {integrity: sha512-xgxFQPAPxeWmsgy8cR7GM1PGAL/smA5E9qU7K//D4vucS01es3M0fDujhDJn3kY8Ip7/vVYcecbe1yY+vBo3qQ==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-pseudo-class-any-link@10.0.1:
- resolution: {integrity: sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-reduce-idents@6.0.3:
- resolution: {integrity: sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-reduce-initial@6.1.0:
- resolution: {integrity: sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-reduce-transforms@6.0.2:
- resolution: {integrity: sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-replace-overflow-wrap@4.0.0:
- resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==}
- peerDependencies:
- postcss: ^8.0.3
-
- postcss-selector-not@8.0.1:
- resolution: {integrity: sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-selector-parser@6.1.2:
- resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
- engines: {node: '>=4'}
-
- postcss-selector-parser@7.0.0:
- resolution: {integrity: sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==}
- engines: {node: '>=4'}
-
- postcss-sort-media-queries@5.2.0:
- resolution: {integrity: sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- postcss: ^8.4.23
-
- postcss-svgo@6.0.3:
- resolution: {integrity: sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==}
- engines: {node: ^14 || ^16 || >= 18}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-unique-selectors@6.0.4:
- resolution: {integrity: sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-value-parser@4.2.0:
- resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
-
- postcss-zindex@6.0.2:
- resolution: {integrity: sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss@8.5.6:
- resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
- engines: {node: ^10 || ^12 || >=14}
-
- pretty-error@4.0.0:
- resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==}
-
- pretty-time@1.1.0:
- resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==}
- engines: {node: '>=4'}
-
- prism-react-renderer@2.4.1:
- resolution: {integrity: sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==}
- peerDependencies:
- react: '>=16.0.0'
-
- prismjs@1.29.0:
- resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==}
- engines: {node: '>=6'}
-
- process-nextick-args@2.0.1:
- resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
-
- prompts@2.4.2:
- resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
- engines: {node: '>= 6'}
-
- prop-types@15.8.1:
- resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
-
- property-information@6.5.0:
- resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
-
- property-information@7.1.0:
- resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
-
- proto-list@1.2.4:
- resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
-
- proxy-addr@2.0.7:
- resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
- engines: {node: '>= 0.10'}
-
- punycode@2.3.1:
- resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
- engines: {node: '>=6'}
-
- pupa@3.1.0:
- resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==}
- engines: {node: '>=12.20'}
-
- q@1.5.1:
- resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==}
- engines: {node: '>=0.6.0', teleport: '>=0.2.0'}
- deprecated: |-
- You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.
-
- (For a CapTP with native promises, see @endo/eventual-send and @endo/captp)
-
- qs@6.13.0:
- resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==}
- engines: {node: '>=0.6'}
-
- qs@6.14.0:
- resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
- engines: {node: '>=0.6'}
-
- queue-microtask@1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
-
- quick-lru@5.1.1:
- resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
- engines: {node: '>=10'}
-
- randombytes@2.1.0:
- resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
-
- range-parser@1.2.0:
- resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==}
- engines: {node: '>= 0.6'}
-
- range-parser@1.2.1:
- resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
- engines: {node: '>= 0.6'}
-
- raw-body@2.5.2:
- resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
- engines: {node: '>= 0.8'}
-
- rc@1.2.8:
- resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
- hasBin: true
-
- react-dom@19.2.8:
- resolution: {integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==}
- peerDependencies:
- react: ^19.2.8
-
- react-fast-compare@3.2.2:
- resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==}
-
- react-is@16.13.1:
- resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
-
- react-json-view-lite@2.4.1:
- resolution: {integrity: sha512-fwFYknRIBxjbFm0kBDrzgBy1xa5tDg2LyXXBepC5f1b+MY3BUClMCsvanMPn089JbV1Eg3nZcrp0VCuH43aXnA==}
- engines: {node: '>=18'}
- peerDependencies:
- react: ^18.0.0 || ^19.0.0
-
- react-loadable-ssr-addon-v5-slorber@1.0.3:
- resolution: {integrity: sha512-GXfh9VLwB5ERaCsU6RULh7tkemeX15aNh6wuMEBtfdyMa7fFG8TXrhXlx1SoEK2Ty/l6XIkzzYIQmyaWW3JgdQ==}
- engines: {node: '>=10.13.0'}
- peerDependencies:
- react-loadable: '*'
- webpack: '>=4.41.1 || 5.x'
-
- react-router-config@5.1.1:
- resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==}
- peerDependencies:
- react: '>=15'
- react-router: '>=5'
-
- react-router-dom@5.3.4:
- resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==}
- peerDependencies:
- react: '>=15'
-
- react-router@5.3.4:
- resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==}
- peerDependencies:
- react: '>=15'
-
- react@19.2.8:
- resolution: {integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==}
- engines: {node: '>=0.10.0'}
-
- readable-stream@2.3.8:
- resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
-
- readable-stream@3.6.2:
- resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
- engines: {node: '>= 6'}
-
- readdirp@3.6.0:
- resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
- engines: {node: '>=8.10.0'}
-
- readdirp@5.1.1:
- resolution: {integrity: sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==}
- engines: {node: '>= 20.19.0'}
-
- recma-build-jsx@1.0.0:
- resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==}
-
- recma-jsx@1.0.0:
- resolution: {integrity: sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==}
-
- recma-parse@1.0.0:
- resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==}
-
- recma-stringify@1.0.0:
- resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==}
-
- regenerate-unicode-properties@10.2.0:
- resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==}
- engines: {node: '>=4'}
-
- regenerate@1.4.2:
- resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==}
-
- regenerator-runtime@0.14.1:
- resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
-
- regenerator-transform@0.15.2:
- resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==}
-
- regex-recursion@6.0.2:
- resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==}
-
- regex-utilities@2.3.0:
- resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==}
-
- regex@6.1.0:
- resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==}
-
- regexp.prototype.flags@1.5.3:
- resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==}
- engines: {node: '>= 0.4'}
-
- regexpu-core@6.1.1:
- resolution: {integrity: sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==}
- engines: {node: '>=4'}
-
- registry-auth-token@5.0.2:
- resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==}
- engines: {node: '>=14'}
-
- registry-url@6.0.1:
- resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==}
- engines: {node: '>=12'}
-
- regjsgen@0.8.0:
- resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==}
-
- regjsparser@0.11.1:
- resolution: {integrity: sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ==}
- hasBin: true
-
- rehype-raw@7.0.0:
- resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==}
-
- rehype-recma@1.0.0:
- resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==}
-
- relateurl@0.2.7:
- resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==}
- engines: {node: '>= 0.10'}
-
- remark-directive@3.0.0:
- resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==}
-
- remark-emoji@4.0.1:
- resolution: {integrity: sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- remark-frontmatter@5.0.0:
- resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==}
-
- remark-gfm@4.0.0:
- resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==}
-
- remark-mdx@3.0.1:
- resolution: {integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==}
-
- remark-parse@11.0.0:
- resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==}
-
- remark-rehype@11.1.1:
- resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==}
-
- remark-stringify@11.0.0:
- resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==}
-
- renderkid@3.0.0:
- resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==}
-
- require-from-string@2.0.2:
- resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
- engines: {node: '>=0.10.0'}
-
- require-like@0.1.2:
- resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==}
-
- requires-port@1.0.0:
- resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
-
- resolve-alpn@1.2.1:
- resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
-
- resolve-from@4.0.0:
- resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
- engines: {node: '>=4'}
-
- resolve-package-path@4.0.3:
- resolution: {integrity: sha512-SRpNAPW4kewOaNUt8VPqhJ0UMxawMwzJD8V7m1cJfdSTK9ieZwS6K7Dabsm4bmLFM96Z5Y/UznrpG5kt1im8yA==}
- engines: {node: '>= 12'}
-
- resolve-pathname@3.0.0:
- resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==}
-
- resolve@1.22.8:
- resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
- hasBin: true
-
- responselike@3.0.0:
- resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==}
- engines: {node: '>=14.16'}
-
- retry@0.13.1:
- resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==}
- engines: {node: '>= 4'}
-
- reusify@1.0.4:
- resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
-
- robust-predicates@3.0.2:
- resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==}
-
- roughjs@4.6.6:
- resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==}
-
- rtlcss@4.3.0:
- resolution: {integrity: sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==}
- engines: {node: '>=12.0.0'}
- hasBin: true
-
- run-applescript@7.1.0:
- resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==}
- engines: {node: '>=18'}
-
- run-parallel@1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
-
- rw@1.3.3:
- resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==}
-
- rxjs@7.8.2:
- resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
-
- safe-array-concat@1.1.2:
- resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==}
- engines: {node: '>=0.4'}
-
- safe-buffer@5.1.2:
- resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
-
- safe-buffer@5.2.1:
- resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
-
- safe-regex-test@1.0.3:
- resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
- engines: {node: '>= 0.4'}
-
- safer-buffer@2.1.2:
- resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
-
- sass-embedded-all-unknown@1.102.0:
- resolution: {integrity: sha512-BpaRCODYILywdCOI8++Q63+/ptsnWdwYuKyD5gMH0cJblXj85EePdeTTOM7Hl2PP6d4dIojg8GS9fIZhD2x8qA==}
- cpu: ['!arm', '!arm64', '!riscv64', '!x64']
-
- sass-embedded-android-arm64@1.102.0:
- resolution: {integrity: sha512-p34iJl04ksTA/6/NZNKv4Bda710hvpoUNUK6vgHKe53tTGhL5XOfYyTjX95lpKPSvGm4BlPEVSSo6CBhyNSDpw==}
- engines: {node: '>=14.0.0'}
- cpu: [arm64]
- os: [android]
-
- sass-embedded-android-arm@1.102.0:
- resolution: {integrity: sha512-QM6sPMUtUvFopVR15qXWdobSTYW/sPrXJLxa7eaIbqr/0EtNBZirEXdiOFdDNcsFIEFX3NeZjDq8ZkBAQrxR1w==}
- engines: {node: '>=14.0.0'}
- cpu: [arm]
- os: [android]
-
- sass-embedded-android-riscv64@1.102.0:
- resolution: {integrity: sha512-wcT5N3B6fIwCKCicDcUP6Jol+e1R3WxHMGU7Swp9Ds9VV8di7HYOKIFcasT25dKJv4l17SA7x5Oum0FlRnMPkg==}
- engines: {node: '>=14.0.0'}
- cpu: [riscv64]
- os: [android]
-
- sass-embedded-android-x64@1.102.0:
- resolution: {integrity: sha512-IF4eJmoM4uzOborahHp8D4PlCIvumr6IGEbe1XkedwE57qRdk/GENiYZjGwYUQP0uy+pfb+WfvTNhMxkD2VhJg==}
- engines: {node: '>=14.0.0'}
- cpu: [x64]
- os: [android]
-
- sass-embedded-darwin-arm64@1.102.0:
- resolution: {integrity: sha512-txaURnQp3L/5mGgSkg6zFrI/H1BgwPxH+7fv/HMuFT1fTXGi7i5++OJNCFVPL7gFB50WFmpf02bCvgec3/gxMA==}
- engines: {node: '>=14.0.0'}
- cpu: [arm64]
- os: [darwin]
-
- sass-embedded-darwin-x64@1.102.0:
- resolution: {integrity: sha512-KXs/y/bCVTxRy6NbgC2kK2JwmYnu4+EcDu+DVpHHIfiRgClTca++jYEqcxkthqK9ufkCgwMmrhb3tllyw5l1dw==}
- engines: {node: '>=14.0.0'}
- cpu: [x64]
- os: [darwin]
-
- sass-embedded-linux-arm64@1.102.0:
- resolution: {integrity: sha512-Yg3Ga1deV+igVqjyK5gHMKbC6fdtKkVYBnzkPVbn/W2/DeActR2JFBfMwVtZJdLpNneMye3dRzOVO2QFegsTbQ==}
- engines: {node: '>=14.0.0'}
- cpu: [arm64]
- os: [linux]
- libc: glibc
-
- sass-embedded-linux-arm@1.102.0:
- resolution: {integrity: sha512-1nqC2lrn91fjEsf6gSr/KigU15FrhUSDGWdSWowLXvNG8KbYUNRKjfypn+8u4P0SrL+R/v4VSVZguZiVVTI94A==}
- engines: {node: '>=14.0.0'}
- cpu: [arm]
- os: [linux]
- libc: glibc
-
- sass-embedded-linux-musl-arm64@1.102.0:
- resolution: {integrity: sha512-UFvRNJcYFOqo0X525vXG3Buue+waoqiG58xx7J6tMHSj5K/38t+9YbbgppKGLRoKoAwZTIdW8pxPA8qBSzQC6Q==}
- engines: {node: '>=14.0.0'}
- cpu: [arm64]
- os: [linux]
- libc: musl
-
- sass-embedded-linux-musl-arm@1.102.0:
- resolution: {integrity: sha512-WULwlrLbhHsJzGBcfztoXK47VyJugcWDmLXF893+yrMj6dF4/zJP6JqootT3EmAx9JAUdAppXI6ma7aGlnV8jw==}
- engines: {node: '>=14.0.0'}
- cpu: [arm]
- os: [linux]
- libc: musl
-
- sass-embedded-linux-musl-riscv64@1.102.0:
- resolution: {integrity: sha512-7EmAMt5cX0SEN/qTNHD4VBHyjJXmFMAGuNR9R4YJR/SWGj/OZJw9VWryMfzEnMgNbG6HykiIttGfr9CyNKmZbA==}
- engines: {node: '>=14.0.0'}
- cpu: [riscv64]
- os: [linux]
- libc: musl
-
- sass-embedded-linux-musl-x64@1.102.0:
- resolution: {integrity: sha512-HHzU5/g/MT1edbHfDzZleKcX19l6LMGk0KhZFLy66cxQl1iRLUaL22jfGstmHOdRUmVzWF3VevjSflSGvAjr4Q==}
- engines: {node: '>=14.0.0'}
- cpu: [x64]
- os: [linux]
- libc: musl
-
- sass-embedded-linux-riscv64@1.102.0:
- resolution: {integrity: sha512-AUc4wHQ7IUo9/0mcZQn7Xkl1t1+NZlTF+v5i3GX93HNoQUGIFic7q6qjSERLkdwQ0dLnWrMqe8KhV98V8v0ZoA==}
- engines: {node: '>=14.0.0'}
- cpu: [riscv64]
- os: [linux]
- libc: glibc
-
- sass-embedded-linux-x64@1.102.0:
- resolution: {integrity: sha512-CxfhMwwbQFBCTjGysByvOw4PIOCYZ/jtz9uBU0UR5sfHtQvqqnsNyb1fVCIUsZ7piimxQAwcLV5H3Skj96QiVg==}
- engines: {node: '>=14.0.0'}
- cpu: [x64]
- os: [linux]
- libc: glibc
-
- sass-embedded-unknown-all@1.102.0:
- resolution: {integrity: sha512-qhqfvFD/7X0c6e5rwvzABkGlaYJju1G+hDPCiB0HdK+S7JF+YDDb9XpRYJ9+tGIopWzEHhoNnJDPtPs9IX1lOQ==}
- os: ['!android', '!darwin', '!linux', '!win32']
-
- sass-embedded-win32-arm64@1.102.0:
- resolution: {integrity: sha512-EQOTKStMf7ervyhe3AX10Pa6F7CQMN3IgmpBkfgjy9HQG4Iyt34zCl/4vNJLVBWLW03b7/KJacy2I9SRz26X9g==}
- engines: {node: '>=14.0.0'}
- cpu: [arm64]
- os: [win32]
-
- sass-embedded-win32-x64@1.102.0:
- resolution: {integrity: sha512-e+26mgR+O4g/m7r+WGuvygsjgZEsfgWntIOgaNhkSa9b7vVas70l2RB/SipUM4zGXQk1jX06aOEz0w0Pq1pprQ==}
- engines: {node: '>=14.0.0'}
- cpu: [x64]
- os: [win32]
-
- sass-embedded@1.102.0:
- resolution: {integrity: sha512-7xZ7jbsGTpA+oRIJ3HKeiYy+RIrwHltIjKMdnRTAZiPpqvKzwy80zZqR532yk5bpHn1lTqWdZ6Fh4KI+GWSsKA==}
- engines: {node: '>=20.19.0'}
- hasBin: true
-
- sass-loader@16.0.6:
- resolution: {integrity: sha512-sglGzId5gmlfxNs4gK2U3h7HlVRfx278YK6Ono5lwzuvi1jxig80YiuHkaDBVsYIKFhx8wN7XSCI0M2IDS/3qA==}
- engines: {node: '>= 18.12.0'}
- peerDependencies:
- '@rspack/core': 0.x || 1.x
- node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0
- sass: ^1.3.0
- sass-embedded: '*'
- webpack: ^5.0.0
- peerDependenciesMeta:
- '@rspack/core':
- optional: true
- node-sass:
- optional: true
- sass:
- optional: true
- sass-embedded:
- optional: true
- webpack:
- optional: true
-
- sass@1.102.0:
- resolution: {integrity: sha512-NSOyTnaQF7rTAEOtI2fwb386vL+akyiQLBZu8Na7hXCb+umJy0GAqlcMIaqACZ6Z1VgTBS4K9PG6B3IdjHGJsw==}
- engines: {node: '>=20.19.0'}
- hasBin: true
-
- sax@1.2.4:
- resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
-
- sax@1.4.1:
- resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
-
- scheduler@0.27.0:
- resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
-
- schema-dts@1.1.5:
- resolution: {integrity: sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg==}
-
- schema-utils@3.3.0:
- resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==}
- engines: {node: '>= 10.13.0'}
-
- schema-utils@4.2.0:
- resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==}
- engines: {node: '>= 12.13.0'}
-
- search-insights@2.17.1:
- resolution: {integrity: sha512-HHFjYH/0AqXacETlIbe9EYc3UNlQYGNNTY0fZ/sWl6SweX+GDxq9NB5+RVoPLgEFuOtCz7M9dhYxqDnhbbF0eQ==}
-
- section-matter@1.0.0:
- resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
- engines: {node: '>=4'}
-
- select-hose@2.0.0:
- resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==}
-
- selfsigned@2.4.1:
- resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==}
- engines: {node: '>=10'}
-
- semver-diff@4.0.0:
- resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==}
- engines: {node: '>=12'}
-
- semver@6.3.1:
- resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
- hasBin: true
-
- semver@7.6.3:
- resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
- engines: {node: '>=10'}
- hasBin: true
-
- send@0.19.0:
- resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==}
- engines: {node: '>= 0.8.0'}
-
- serialize-javascript@6.0.2:
- resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==}
-
- seroval-plugins@1.1.1:
- resolution: {integrity: sha512-qNSy1+nUj7hsCOon7AO4wdAIo9P0jrzAMp18XhiOzA6/uO5TKtP7ScozVJ8T293oRIvi5wyCHSM4TrJo/c/GJA==}
- engines: {node: '>=10'}
- peerDependencies:
- seroval: ^1.0
-
- seroval@1.1.1:
- resolution: {integrity: sha512-rqEO6FZk8mv7Hyv4UCj3FD3b6Waqft605TLfsCe/BiaylRpyyMC0b+uA5TJKawX3KzMrdi3wsLbCaLplrQmBvQ==}
- engines: {node: '>=10'}
-
- serve-handler@6.1.7:
- resolution: {integrity: sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==}
-
- serve-index@1.9.1:
- resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==}
- engines: {node: '>= 0.8.0'}
-
- serve-static@1.16.2:
- resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==}
- engines: {node: '>= 0.8.0'}
-
- set-function-length@1.2.2:
- resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
- engines: {node: '>= 0.4'}
-
- set-function-name@2.0.2:
- resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
- engines: {node: '>= 0.4'}
-
- setprototypeof@1.1.0:
- resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==}
-
- setprototypeof@1.2.0:
- resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
-
- shallow-clone@3.0.1:
- resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==}
- engines: {node: '>=8'}
-
- shallowequal@1.1.0:
- resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==}
-
- 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'}
-
- shell-quote@1.8.1:
- resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
-
- shiki@4.4.3:
- resolution: {integrity: sha512-Mb/GvXPHBAXdgGIcnfU5L3ldpn1XcxrGkPHwqgRx17/I2XRfqlFKk2vGkHWINn1kdXvzJZeuO3is6I9KLPFm0g==}
- engines: {node: '>=20'}
-
- side-channel-list@1.0.0:
- resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
- engines: {node: '>= 0.4'}
-
- side-channel-map@1.0.1:
- resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
- engines: {node: '>= 0.4'}
-
- side-channel-weakmap@1.0.2:
- resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
- engines: {node: '>= 0.4'}
-
- side-channel@1.0.6:
- resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
- engines: {node: '>= 0.4'}
-
- side-channel@1.1.0:
- resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
- engines: {node: '>= 0.4'}
-
- signal-exit@3.0.7:
- resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
-
- sirv@2.0.4:
- resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==}
- engines: {node: '>= 10'}
-
- sisteransi@1.0.5:
- resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
-
- sitemap@7.1.2:
- resolution: {integrity: sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==}
- engines: {node: '>=12.0.0', npm: '>=5.6.0'}
- hasBin: true
-
- skin-tone@2.0.0:
- resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==}
- engines: {node: '>=8'}
-
- slash@3.0.0:
- resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
- engines: {node: '>=8'}
-
- slash@4.0.0:
- resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
- engines: {node: '>=12'}
-
- snake-case@3.0.4:
- resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==}
-
- sockjs@0.3.24:
- resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==}
-
- solid-js@1.9.5:
- resolution: {integrity: sha512-ogI3DaFcyn6UhYhrgcyRAMbu/buBJitYQASZz5WzfQVPP10RD2AbCoRZ517psnezrasyCbWzIxZ6kVqet768xw==}
-
- sort-css-media-queries@2.2.0:
- resolution: {integrity: sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==}
- engines: {node: '>= 6.3.0'}
-
- source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
- engines: {node: '>=0.10.0'}
-
- source-map-support@0.5.21:
- resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
-
- source-map@0.6.1:
- resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
- engines: {node: '>=0.10.0'}
-
- source-map@0.7.4:
- resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
- engines: {node: '>= 8'}
-
- space-separated-tokens@2.0.2:
- resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
-
- spdy-transport@3.0.0:
- resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==}
-
- spdy@4.0.2:
- resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==}
- engines: {node: '>=6.0.0'}
-
- sprintf-js@1.0.3:
- resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
-
- srcset@4.0.0:
- resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==}
- engines: {node: '>=12'}
-
- stable@0.1.8:
- resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
- deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
-
- statuses@1.5.0:
- resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
- engines: {node: '>= 0.6'}
-
- statuses@2.0.1:
- resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
- engines: {node: '>= 0.8'}
-
- std-env@3.7.0:
- resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==}
-
- string-width@4.2.3:
- resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
- engines: {node: '>=8'}
-
- string-width@5.1.2:
- resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
- engines: {node: '>=12'}
-
- string.prototype.trim@1.2.9:
- resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==}
- engines: {node: '>= 0.4'}
-
- string.prototype.trimend@1.0.8:
- resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==}
-
- string.prototype.trimstart@1.0.8:
- resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
- engines: {node: '>= 0.4'}
-
- string_decoder@1.1.1:
- resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
-
- string_decoder@1.3.0:
- resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
-
- stringify-entities@4.0.4:
- resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
-
- stringify-object@3.3.0:
- resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==}
- engines: {node: '>=4'}
-
- strip-ansi@6.0.1:
- resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
- engines: {node: '>=8'}
-
- strip-ansi@7.1.0:
- resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
- engines: {node: '>=12'}
-
- strip-bom-string@1.0.0:
- resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==}
- engines: {node: '>=0.10.0'}
-
- strip-final-newline@2.0.0:
- resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
- engines: {node: '>=6'}
-
- strip-json-comments@2.0.1:
- resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
- engines: {node: '>=0.10.0'}
-
- strip-json-comments@3.1.1:
- resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
- engines: {node: '>=8'}
-
- strip-json-comments@4.0.0:
- resolution: {integrity: sha512-LzWcbfMbAsEDTRmhjWIioe8GcDRl0fa35YMXFoJKDdiD/quGFmjJjdgPjFJJNwCMaLyQqFIDqCdHD2V4HfLgYA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- style-to-object@0.4.4:
- resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==}
-
- style-to-object@1.0.8:
- resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==}
-
- stylehacks@6.1.1:
- resolution: {integrity: sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==}
- engines: {node: ^14 || ^16 || >=18.0}
- peerDependencies:
- postcss: ^8.4.31
-
- stylis@4.3.6:
- resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==}
-
- supports-color@5.5.0:
- resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
- engines: {node: '>=4'}
-
- supports-color@7.2.0:
- resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
- engines: {node: '>=8'}
-
- supports-color@8.1.1:
- resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
- engines: {node: '>=10'}
-
- supports-preserve-symlinks-flag@1.0.0:
- resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
- engines: {node: '>= 0.4'}
-
- svg-parser@2.0.4:
- resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==}
-
- svgo@1.3.2:
- resolution: {integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==}
- engines: {node: '>=4.0.0'}
- deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x.
- hasBin: true
-
- svgo@3.3.2:
- resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==}
- engines: {node: '>=14.0.0'}
- hasBin: true
-
- swc-loader@0.2.6:
- resolution: {integrity: sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==}
- peerDependencies:
- '@swc/core': ^1.2.147
- webpack: '>=2'
-
- sync-child-process@1.0.2:
- resolution: {integrity: sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==}
- engines: {node: '>=16.0.0'}
-
- sync-message-port@1.1.3:
- resolution: {integrity: sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==}
- engines: {node: '>=16.0.0'}
-
- tapable@2.2.1:
- resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
- engines: {node: '>=6'}
-
- terser-webpack-plugin@5.3.10:
- resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==}
- engines: {node: '>= 10.13.0'}
- peerDependencies:
- '@swc/core': '*'
- esbuild: '*'
- uglify-js: '*'
- webpack: ^5.1.0
- peerDependenciesMeta:
- '@swc/core':
- optional: true
- esbuild:
- optional: true
- uglify-js:
- optional: true
-
- terser@5.36.0:
- resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==}
- engines: {node: '>=10'}
- hasBin: true
-
- thingies@2.5.0:
- resolution: {integrity: sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==}
- engines: {node: '>=10.18'}
- peerDependencies:
- tslib: ^2
-
- thunky@1.1.0:
- resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==}
-
- tiny-invariant@1.3.3:
- resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
-
- tiny-warning@1.0.3:
- resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==}
-
- tinyexec@0.3.1:
- resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==}
-
- tinypool@1.0.2:
- resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==}
- engines: {node: ^18.0.0 || >=20.0.0}
-
- to-regex-range@5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
-
- toidentifier@1.0.1:
- resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
- engines: {node: '>=0.6'}
-
- totalist@3.0.1:
- resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
- engines: {node: '>=6'}
-
- tree-dump@1.1.0:
- resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==}
- engines: {node: '>=10.0'}
- peerDependencies:
- tslib: '2'
-
- trim-lines@3.0.1:
- resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
-
- trough@2.2.0:
- resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
-
- ts-dedent@2.2.0:
- resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==}
- engines: {node: '>=6.10'}
-
- tslib@2.8.0:
- resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==}
-
- type-fest@1.4.0:
- resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==}
- engines: {node: '>=10'}
-
- type-fest@2.19.0:
- resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
- engines: {node: '>=12.20'}
-
- type-is@1.6.18:
- resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
- engines: {node: '>= 0.6'}
-
- typed-array-buffer@1.0.2:
- resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==}
- engines: {node: '>= 0.4'}
-
- typed-array-byte-length@1.0.1:
- resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==}
- engines: {node: '>= 0.4'}
-
- typed-array-byte-offset@1.0.2:
- resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==}
- engines: {node: '>= 0.4'}
-
- typed-array-length@1.0.6:
- resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
- engines: {node: '>= 0.4'}
-
- typedarray-to-buffer@3.1.5:
- resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
-
- typescript@5.6.3:
- resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==}
- engines: {node: '>=14.17'}
- hasBin: true
-
- uc.micro@1.0.6:
- resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==}
-
- ufo@1.5.4:
- resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
-
- unbox-primitive@1.0.2:
- resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
-
- undici-types@6.19.8:
- resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
-
- unicode-canonical-property-names-ecmascript@2.0.0:
- resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==}
- engines: {node: '>=4'}
-
- unicode-emoji-modifier-base@1.0.0:
- resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==}
- engines: {node: '>=4'}
-
- unicode-match-property-ecmascript@2.0.0:
- resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==}
- engines: {node: '>=4'}
-
- unicode-match-property-value-ecmascript@2.2.0:
- resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==}
- engines: {node: '>=4'}
-
- unicode-property-aliases-ecmascript@2.1.0:
- resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==}
- engines: {node: '>=4'}
-
- unified@11.0.5:
- resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
-
- unique-string@3.0.0:
- resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==}
- engines: {node: '>=12'}
-
- unist-util-is@6.0.0:
- resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
-
- unist-util-position-from-estree@2.0.0:
- resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==}
-
- unist-util-position@5.0.0:
- resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
-
- unist-util-stringify-position@4.0.0:
- resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
-
- unist-util-visit-parents@6.0.1:
- resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
-
- unist-util-visit@5.1.0:
- resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==}
-
- universalify@2.0.1:
- resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
- engines: {node: '>= 10.0.0'}
-
- unpipe@1.0.0:
- resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
- engines: {node: '>= 0.8'}
-
- unquote@1.1.1:
- resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==}
-
- update-browserslist-db@1.1.1:
- resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==}
- hasBin: true
- peerDependencies:
- browserslist: '>= 4.21.0'
-
- update-browserslist-db@1.2.3:
- resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
- hasBin: true
- peerDependencies:
- browserslist: '>= 4.21.0'
-
- update-notifier@6.0.2:
- resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==}
- engines: {node: '>=14.16'}
-
- uri-js@4.4.1:
- resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
-
- url-loader@4.1.1:
- resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==}
- engines: {node: '>= 10.13.0'}
- peerDependencies:
- file-loader: '*'
- webpack: ^4.0.0 || ^5.0.0
- peerDependenciesMeta:
- file-loader:
- optional: true
-
- util-deprecate@1.0.2:
- resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
-
- util.promisify@1.0.1:
- resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==}
-
- utila@0.4.0:
- resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==}
-
- utility-types@3.11.0:
- resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==}
- engines: {node: '>= 4'}
-
- utils-merge@1.0.1:
- resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
- engines: {node: '>= 0.4.0'}
-
- uuid@11.1.0:
- resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==}
- hasBin: true
-
- uuid@8.3.2:
- resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
- deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).
- hasBin: true
-
- validate-peer-dependencies@2.2.0:
- resolution: {integrity: sha512-8X1OWlERjiUY6P6tdeU9E0EwO8RA3bahoOVG7ulOZT5MqgNDUO/BQoVjYiHPcNe+v8glsboZRIw9iToMAA2zAA==}
- engines: {node: '>= 12'}
-
- value-equal@1.0.1:
- resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==}
-
- varint@6.0.0:
- resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==}
-
- vary@1.1.2:
- resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
- engines: {node: '>= 0.8'}
-
- vfile-location@5.0.3:
- resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==}
-
- vfile-message@4.0.2:
- resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==}
-
- vfile@6.0.3:
- resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
-
- vscode-jsonrpc@8.2.0:
- resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==}
- engines: {node: '>=14.0.0'}
-
- vscode-languageserver-protocol@3.17.5:
- resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==}
-
- vscode-languageserver-textdocument@1.0.12:
- resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==}
-
- vscode-languageserver-types@3.17.5:
- resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==}
-
- vscode-languageserver@9.0.1:
- resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==}
- hasBin: true
-
- vscode-uri@3.0.8:
- resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==}
-
- watchpack@2.4.2:
- resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==}
- engines: {node: '>=10.13.0'}
-
- wbuf@1.7.3:
- resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==}
-
- web-namespaces@2.0.1:
- resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
-
- webpack-bundle-analyzer@4.10.2:
- resolution: {integrity: sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==}
- engines: {node: '>= 10.13.0'}
- hasBin: true
-
- webpack-dev-middleware@7.4.5:
- resolution: {integrity: sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==}
- engines: {node: '>= 18.12.0'}
- peerDependencies:
- webpack: ^5.0.0
- peerDependenciesMeta:
- webpack:
- optional: true
-
- webpack-dev-server@5.2.2:
- resolution: {integrity: sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==}
- engines: {node: '>= 18.12.0'}
- hasBin: true
- peerDependencies:
- webpack: ^5.0.0
- webpack-cli: '*'
- peerDependenciesMeta:
- webpack:
- optional: true
- webpack-cli:
- optional: true
-
- webpack-merge@5.10.0:
- resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==}
- engines: {node: '>=10.0.0'}
-
- webpack-merge@6.0.1:
- resolution: {integrity: sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==}
- engines: {node: '>=18.0.0'}
-
- webpack-sources@3.2.3:
- resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
- engines: {node: '>=10.13.0'}
-
- webpack@5.95.0:
- resolution: {integrity: sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==}
- engines: {node: '>=10.13.0'}
- hasBin: true
- peerDependencies:
- webpack-cli: '*'
- peerDependenciesMeta:
- webpack-cli:
- optional: true
-
- webpackbar@7.0.0:
- resolution: {integrity: sha512-aS9soqSO2iCHgqHoCrj4LbfGQUboDCYJPSFOAchEK+9psIjNrfSWW4Y0YEz67MKURNvMmfo0ycOg9d/+OOf9/Q==}
- engines: {node: '>=14.21.3'}
- peerDependencies:
- '@rspack/core': '*'
- webpack: 3 || 4 || 5
- peerDependenciesMeta:
- '@rspack/core':
- optional: true
- webpack:
- optional: true
-
- websocket-driver@0.7.4:
- resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==}
- engines: {node: '>=0.8.0'}
-
- websocket-extensions@0.1.4:
- resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==}
- engines: {node: '>=0.8.0'}
-
- which-boxed-primitive@1.0.2:
- resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
-
- which-typed-array@1.1.15:
- resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==}
- engines: {node: '>= 0.4'}
-
- which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
-
- widest-line@4.0.1:
- resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==}
- engines: {node: '>=12'}
-
- wildcard@2.0.1:
- resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==}
-
- wrap-ansi@8.1.0:
- resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
- engines: {node: '>=12'}
-
- write-file-atomic@3.0.3:
- resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==}
-
- ws@7.5.10:
- resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==}
- engines: {node: '>=8.3.0'}
- peerDependencies:
- bufferutil: ^4.0.1
- utf-8-validate: ^5.0.2
- peerDependenciesMeta:
- bufferutil:
- optional: true
- utf-8-validate:
- optional: true
-
- ws@8.18.0:
- resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
- engines: {node: '>=10.0.0'}
- peerDependencies:
- bufferutil: ^4.0.1
- utf-8-validate: '>=5.0.2'
- peerDependenciesMeta:
- bufferutil:
- optional: true
- utf-8-validate:
- optional: true
-
- wsl-utils@0.1.0:
- resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==}
- engines: {node: '>=18'}
-
- xdg-basedir@5.1.0:
- resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==}
- engines: {node: '>=12'}
-
- xml-js@1.6.11:
- resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==}
- hasBin: true
-
- yallist@3.1.1:
- resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
-
- yaml@1.10.2:
- resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
- engines: {node: '>= 6'}
-
- yocto-queue@1.1.1:
- resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==}
- engines: {node: '>=12.20'}
-
- zwitch@2.0.4:
- resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
-
-snapshots:
-
- '@11ty/gray-matter@1.0.0':
- dependencies:
- js-yaml: 4.1.0
- kind-of: 6.0.3
- section-matter: 1.0.0
- strip-bom-string: 1.0.0
-
- '@algolia/abtesting@1.12.2':
- dependencies:
- '@algolia/client-common': 5.46.2
- '@algolia/requester-browser-xhr': 5.46.2
- '@algolia/requester-fetch': 5.46.2
- '@algolia/requester-node-http': 5.46.2
-
- '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)(search-insights@2.17.1)':
- dependencies:
- '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)(search-insights@2.17.1)
- '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)
- transitivePeerDependencies:
- - '@algolia/client-search'
- - algoliasearch
- - search-insights
-
- '@algolia/autocomplete-core@1.19.8(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)(search-insights@2.17.1)':
- dependencies:
- '@algolia/autocomplete-plugin-algolia-insights': 1.19.8(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)(search-insights@2.17.1)
- '@algolia/autocomplete-shared': 1.19.8(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)
- transitivePeerDependencies:
- - '@algolia/client-search'
- - algoliasearch
- - search-insights
-
- '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)(search-insights@2.17.1)':
- dependencies:
- '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)
- search-insights: 2.17.1
- transitivePeerDependencies:
- - '@algolia/client-search'
- - algoliasearch
-
- '@algolia/autocomplete-plugin-algolia-insights@1.19.8(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)(search-insights@2.17.1)':
- dependencies:
- '@algolia/autocomplete-shared': 1.19.8(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)
- search-insights: 2.17.1
- transitivePeerDependencies:
- - '@algolia/client-search'
- - algoliasearch
-
- '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)':
- dependencies:
- '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)
- '@algolia/client-search': 5.46.2
- algoliasearch: 5.46.2
-
- '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)':
- dependencies:
- '@algolia/client-search': 5.46.2
- algoliasearch: 5.46.2
-
- '@algolia/autocomplete-shared@1.19.8(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)':
- dependencies:
- '@algolia/client-search': 5.46.2
- algoliasearch: 5.46.2
-
- '@algolia/client-abtesting@5.46.2':
- dependencies:
- '@algolia/client-common': 5.46.2
- '@algolia/requester-browser-xhr': 5.46.2
- '@algolia/requester-fetch': 5.46.2
- '@algolia/requester-node-http': 5.46.2
-
- '@algolia/client-analytics@5.46.2':
- dependencies:
- '@algolia/client-common': 5.46.2
- '@algolia/requester-browser-xhr': 5.46.2
- '@algolia/requester-fetch': 5.46.2
- '@algolia/requester-node-http': 5.46.2
-
- '@algolia/client-common@5.46.2': {}
-
- '@algolia/client-insights@5.46.2':
- dependencies:
- '@algolia/client-common': 5.46.2
- '@algolia/requester-browser-xhr': 5.46.2
- '@algolia/requester-fetch': 5.46.2
- '@algolia/requester-node-http': 5.46.2
-
- '@algolia/client-personalization@5.46.2':
- dependencies:
- '@algolia/client-common': 5.46.2
- '@algolia/requester-browser-xhr': 5.46.2
- '@algolia/requester-fetch': 5.46.2
- '@algolia/requester-node-http': 5.46.2
-
- '@algolia/client-query-suggestions@5.46.2':
- dependencies:
- '@algolia/client-common': 5.46.2
- '@algolia/requester-browser-xhr': 5.46.2
- '@algolia/requester-fetch': 5.46.2
- '@algolia/requester-node-http': 5.46.2
-
- '@algolia/client-search@5.46.2':
- dependencies:
- '@algolia/client-common': 5.46.2
- '@algolia/requester-browser-xhr': 5.46.2
- '@algolia/requester-fetch': 5.46.2
- '@algolia/requester-node-http': 5.46.2
-
- '@algolia/events@4.0.1': {}
-
- '@algolia/ingestion@1.46.2':
- dependencies:
- '@algolia/client-common': 5.46.2
- '@algolia/requester-browser-xhr': 5.46.2
- '@algolia/requester-fetch': 5.46.2
- '@algolia/requester-node-http': 5.46.2
-
- '@algolia/monitoring@1.46.2':
- dependencies:
- '@algolia/client-common': 5.46.2
- '@algolia/requester-browser-xhr': 5.46.2
- '@algolia/requester-fetch': 5.46.2
- '@algolia/requester-node-http': 5.46.2
-
- '@algolia/recommend@5.46.2':
- dependencies:
- '@algolia/client-common': 5.46.2
- '@algolia/requester-browser-xhr': 5.46.2
- '@algolia/requester-fetch': 5.46.2
- '@algolia/requester-node-http': 5.46.2
-
- '@algolia/requester-browser-xhr@5.46.2':
- dependencies:
- '@algolia/client-common': 5.46.2
-
- '@algolia/requester-fetch@5.46.2':
- dependencies:
- '@algolia/client-common': 5.46.2
-
- '@algolia/requester-node-http@5.46.2':
- dependencies:
- '@algolia/client-common': 5.46.2
-
- '@ampproject/remapping@2.3.0':
- dependencies:
- '@jridgewell/gen-mapping': 0.3.5
- '@jridgewell/trace-mapping': 0.3.25
-
- '@antfu/install-pkg@0.4.1':
- dependencies:
- package-manager-detector: 0.2.2
- tinyexec: 0.3.1
-
- '@antfu/utils@0.7.10': {}
-
- '@babel/code-frame@7.26.0':
- dependencies:
- '@babel/helper-validator-identifier': 7.25.9
- js-tokens: 4.0.0
- picocolors: 1.1.1
-
- '@babel/compat-data@7.26.0': {}
-
- '@babel/core@7.26.0':
- dependencies:
- '@ampproject/remapping': 2.3.0
- '@babel/code-frame': 7.26.0
- '@babel/generator': 7.26.0
- '@babel/helper-compilation-targets': 7.25.9
- '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)
- '@babel/helpers': 7.26.0
- '@babel/parser': 7.26.1
- '@babel/template': 7.25.9
- '@babel/traverse': 7.25.9
- '@babel/types': 7.26.0
- convert-source-map: 2.0.0
- debug: 4.3.7
- gensync: 1.0.0-beta.2
- json5: 2.2.3
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
-
- '@babel/generator@7.26.0':
- dependencies:
- '@babel/parser': 7.26.1
- '@babel/types': 7.26.0
- '@jridgewell/gen-mapping': 0.3.5
- '@jridgewell/trace-mapping': 0.3.25
- jsesc: 3.0.2
-
- '@babel/helper-annotate-as-pure@7.25.9':
- dependencies:
- '@babel/types': 7.26.0
-
- '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9':
- dependencies:
- '@babel/traverse': 7.25.9
- '@babel/types': 7.26.0
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-compilation-targets@7.25.9':
- dependencies:
- '@babel/compat-data': 7.26.0
- '@babel/helper-validator-option': 7.25.9
- browserslist: 4.24.2
- lru-cache: 5.1.1
- semver: 6.3.1
-
- '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-annotate-as-pure': 7.25.9
- '@babel/helper-member-expression-to-functions': 7.25.9
- '@babel/helper-optimise-call-expression': 7.25.9
- '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0)
- '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
- '@babel/traverse': 7.25.9
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-create-regexp-features-plugin@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-annotate-as-pure': 7.25.9
- regexpu-core: 6.1.1
- semver: 6.3.1
-
- '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-compilation-targets': 7.25.9
- '@babel/helper-plugin-utils': 7.25.9
- debug: 4.3.7
- lodash.debounce: 4.0.8
- resolve: 1.22.8
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-member-expression-to-functions@7.25.9':
- dependencies:
- '@babel/traverse': 7.25.9
- '@babel/types': 7.26.0
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-module-imports@7.25.9':
- dependencies:
- '@babel/traverse': 7.25.9
- '@babel/types': 7.26.0
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-module-imports': 7.25.9
- '@babel/helper-validator-identifier': 7.25.9
- '@babel/traverse': 7.25.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-optimise-call-expression@7.25.9':
- dependencies:
- '@babel/types': 7.26.0
-
- '@babel/helper-plugin-utils@7.25.9': {}
-
- '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-annotate-as-pure': 7.25.9
- '@babel/helper-wrap-function': 7.25.9
- '@babel/traverse': 7.25.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-member-expression-to-functions': 7.25.9
- '@babel/helper-optimise-call-expression': 7.25.9
- '@babel/traverse': 7.25.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-simple-access@7.25.9':
- dependencies:
- '@babel/traverse': 7.25.9
- '@babel/types': 7.26.0
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-skip-transparent-expression-wrappers@7.25.9':
- dependencies:
- '@babel/traverse': 7.25.9
- '@babel/types': 7.26.0
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-string-parser@7.25.9': {}
-
- '@babel/helper-validator-identifier@7.25.9': {}
-
- '@babel/helper-validator-option@7.25.9': {}
-
- '@babel/helper-wrap-function@7.25.9':
- dependencies:
- '@babel/template': 7.25.9
- '@babel/traverse': 7.25.9
- '@babel/types': 7.26.0
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helpers@7.26.0':
- dependencies:
- '@babel/template': 7.25.9
- '@babel/types': 7.26.0
-
- '@babel/parser@7.26.1':
- dependencies:
- '@babel/types': 7.26.0
-
- '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/traverse': 7.25.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
- '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0)
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/traverse': 7.25.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
-
- '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-syntax-import-assertions@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-syntax-import-attributes@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0)
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0)
- '@babel/traverse': 7.25.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-module-imports': 7.25.9
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0)
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
- '@babel/helper-plugin-utils': 7.25.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-class-static-block@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
- '@babel/helper-plugin-utils': 7.25.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-annotate-as-pure': 7.25.9
- '@babel/helper-compilation-targets': 7.25.9
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0)
- '@babel/traverse': 7.25.9
- globals: 11.12.0
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/template': 7.25.9
-
- '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0)
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0)
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-exponentiation-operator@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.9
- '@babel/helper-plugin-utils': 7.25.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-compilation-targets': 7.25.9
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/traverse': 7.25.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)
- '@babel/helper-plugin-utils': 7.25.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/helper-simple-access': 7.25.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/helper-validator-identifier': 7.25.9
- '@babel/traverse': 7.25.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)
- '@babel/helper-plugin-utils': 7.25.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0)
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-compilation-targets': 7.25.9
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0)
-
- '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0)
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
- '@babel/helper-plugin-utils': 7.25.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-annotate-as-pure': 7.25.9
- '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
- '@babel/helper-plugin-utils': 7.25.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-react-constant-elements@7.25.7(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-react-jsx-development@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0)
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-annotate-as-pure': 7.25.9
- '@babel/helper-module-imports': 7.25.9
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0)
- '@babel/types': 7.26.0
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-react-pure-annotations@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-annotate-as-pure': 7.25.9
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
- regenerator-transform: 0.15.2
-
- '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-runtime@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-module-imports': 7.25.9
- '@babel/helper-plugin-utils': 7.25.9
- babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0)
- babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0)
- babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0)
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-typescript@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-annotate-as-pure': 7.25.9
- '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
- '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0)
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0)
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0)
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0)
- '@babel/helper-plugin-utils': 7.25.9
-
- '@babel/preset-env@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/compat-data': 7.26.0
- '@babel/core': 7.26.0
- '@babel/helper-compilation-targets': 7.25.9
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/helper-validator-option': 7.25.9
- '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)
- '@babel/plugin-syntax-import-assertions': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-syntax-import-attributes': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0)
- '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-class-static-block': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-exponentiation-operator': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.0)
- '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0)
- babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0)
- babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0)
- babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0)
- core-js-compat: 3.38.1
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
-
- '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/types': 7.26.0
- esutils: 2.0.3
-
- '@babel/preset-react@7.25.9(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/helper-validator-option': 7.25.9
- '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-react-jsx-development': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-react-pure-annotations': 7.25.9(@babel/core@7.26.0)
- transitivePeerDependencies:
- - supports-color
-
- '@babel/preset-typescript@7.26.0(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-plugin-utils': 7.25.9
- '@babel/helper-validator-option': 7.25.9
- '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0)
- '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0)
- transitivePeerDependencies:
- - supports-color
-
- '@babel/runtime@7.26.0':
- dependencies:
- regenerator-runtime: 0.14.1
-
- '@babel/template@7.25.9':
- dependencies:
- '@babel/code-frame': 7.26.0
- '@babel/parser': 7.26.1
- '@babel/types': 7.26.0
-
- '@babel/traverse@7.25.9':
- dependencies:
- '@babel/code-frame': 7.26.0
- '@babel/generator': 7.26.0
- '@babel/parser': 7.26.1
- '@babel/template': 7.25.9
- '@babel/types': 7.26.0
- debug: 4.3.7
- globals: 11.12.0
- transitivePeerDependencies:
- - supports-color
-
- '@babel/types@7.26.0':
- dependencies:
- '@babel/helper-string-parser': 7.25.9
- '@babel/helper-validator-identifier': 7.25.9
-
- '@braintree/sanitize-url@7.1.0': {}
-
- '@bufbuild/protobuf@2.10.2': {}
-
- '@chevrotain/cst-dts-gen@11.0.3':
- dependencies:
- '@chevrotain/gast': 11.0.3
- '@chevrotain/types': 11.0.3
- lodash-es: 4.17.21
-
- '@chevrotain/gast@11.0.3':
- dependencies:
- '@chevrotain/types': 11.0.3
- lodash-es: 4.17.21
-
- '@chevrotain/regexp-to-ast@11.0.3': {}
-
- '@chevrotain/types@11.0.3': {}
-
- '@chevrotain/utils@11.0.3': {}
-
- '@colors/colors@1.5.0':
- optional: true
-
- '@csstools/cascade-layer-name-parser@2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)':
- dependencies:
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
-
- '@csstools/color-helpers@5.1.0': {}
-
- '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)':
- dependencies:
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
-
- '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)':
- dependencies:
- '@csstools/color-helpers': 5.1.0
- '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
-
- '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)':
- dependencies:
- '@csstools/css-tokenizer': 3.0.4
-
- '@csstools/css-tokenizer@3.0.4': {}
-
- '@csstools/media-query-list-parser@4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)':
- dependencies:
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
-
- '@csstools/postcss-alpha-function@1.0.1(postcss@8.5.6)':
- dependencies:
- '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6)
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
-
- '@csstools/postcss-cascade-layers@5.0.2(postcss@8.5.6)':
- dependencies:
- '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.0.0)
- postcss: 8.5.6
- postcss-selector-parser: 7.0.0
-
- '@csstools/postcss-color-function-display-p3-linear@1.0.1(postcss@8.5.6)':
- dependencies:
- '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6)
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
-
- '@csstools/postcss-color-function@4.0.12(postcss@8.5.6)':
- dependencies:
- '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6)
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
-
- '@csstools/postcss-color-mix-function@3.0.12(postcss@8.5.6)':
- dependencies:
- '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6)
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
-
- '@csstools/postcss-color-mix-variadic-function-arguments@1.0.2(postcss@8.5.6)':
- dependencies:
- '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6)
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
-
- '@csstools/postcss-content-alt-text@2.0.8(postcss@8.5.6)':
- dependencies:
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6)
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
-
- '@csstools/postcss-contrast-color-function@2.0.12(postcss@8.5.6)':
- dependencies:
- '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6)
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
-
- '@csstools/postcss-exponential-functions@2.0.9(postcss@8.5.6)':
- dependencies:
- '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- postcss: 8.5.6
-
- '@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.6)':
- dependencies:
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- '@csstools/postcss-gamut-mapping@2.0.11(postcss@8.5.6)':
- dependencies:
- '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- postcss: 8.5.6
-
- '@csstools/postcss-gradients-interpolation-method@5.0.12(postcss@8.5.6)':
- dependencies:
- '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6)
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
-
- '@csstools/postcss-hwb-function@4.0.12(postcss@8.5.6)':
- dependencies:
- '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6)
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
-
- '@csstools/postcss-ic-unit@4.0.4(postcss@8.5.6)':
- dependencies:
- '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6)
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- '@csstools/postcss-initial@2.0.1(postcss@8.5.6)':
- dependencies:
- postcss: 8.5.6
-
- '@csstools/postcss-is-pseudo-class@5.0.3(postcss@8.5.6)':
- dependencies:
- '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.0.0)
- postcss: 8.5.6
- postcss-selector-parser: 7.0.0
-
- '@csstools/postcss-light-dark-function@2.0.11(postcss@8.5.6)':
- dependencies:
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6)
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
-
- '@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.5.6)':
- dependencies:
- postcss: 8.5.6
-
- '@csstools/postcss-logical-overflow@2.0.0(postcss@8.5.6)':
- dependencies:
- postcss: 8.5.6
-
- '@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.5.6)':
- dependencies:
- postcss: 8.5.6
-
- '@csstools/postcss-logical-resize@3.0.0(postcss@8.5.6)':
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- '@csstools/postcss-logical-viewport-units@3.0.4(postcss@8.5.6)':
- dependencies:
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
-
- '@csstools/postcss-media-minmax@2.0.9(postcss@8.5.6)':
- dependencies:
- '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- postcss: 8.5.6
-
- '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.5(postcss@8.5.6)':
- dependencies:
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- postcss: 8.5.6
-
- '@csstools/postcss-nested-calc@4.0.0(postcss@8.5.6)':
- dependencies:
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- '@csstools/postcss-normalize-display-values@4.0.0(postcss@8.5.6)':
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- '@csstools/postcss-oklab-function@4.0.12(postcss@8.5.6)':
- dependencies:
- '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6)
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
-
- '@csstools/postcss-position-area-property@1.0.0(postcss@8.5.6)':
- dependencies:
- postcss: 8.5.6
-
- '@csstools/postcss-progressive-custom-properties@4.2.1(postcss@8.5.6)':
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- '@csstools/postcss-random-function@2.0.1(postcss@8.5.6)':
- dependencies:
- '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- postcss: 8.5.6
-
- '@csstools/postcss-relative-color-syntax@3.0.12(postcss@8.5.6)':
- dependencies:
- '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6)
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
-
- '@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.6)':
- dependencies:
- postcss: 8.5.6
- postcss-selector-parser: 7.0.0
-
- '@csstools/postcss-sign-functions@1.1.4(postcss@8.5.6)':
- dependencies:
- '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- postcss: 8.5.6
-
- '@csstools/postcss-stepped-value-functions@4.0.9(postcss@8.5.6)':
- dependencies:
- '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- postcss: 8.5.6
-
- '@csstools/postcss-system-ui-font-family@1.0.0(postcss@8.5.6)':
- dependencies:
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- postcss: 8.5.6
-
- '@csstools/postcss-text-decoration-shorthand@4.0.3(postcss@8.5.6)':
- dependencies:
- '@csstools/color-helpers': 5.1.0
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- '@csstools/postcss-trigonometric-functions@4.0.9(postcss@8.5.6)':
- dependencies:
- '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- postcss: 8.5.6
-
- '@csstools/postcss-unset-value@4.0.0(postcss@8.5.6)':
- dependencies:
- postcss: 8.5.6
-
- '@csstools/selector-resolve-nested@3.1.0(postcss-selector-parser@7.0.0)':
- dependencies:
- postcss-selector-parser: 7.0.0
-
- '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.0.0)':
- dependencies:
- postcss-selector-parser: 7.0.0
-
- '@csstools/utilities@2.0.0(postcss@8.5.6)':
- dependencies:
- postcss: 8.5.6
-
- '@discoveryjs/json-ext@0.5.7': {}
-
- '@docsearch/css@3.9.0': {}
-
- '@docsearch/react@3.9.0(@algolia/client-search@5.46.2)(@types/react@18.3.12)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(search-insights@2.17.1)':
- dependencies:
- '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)(search-insights@2.17.1)
- '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)
- '@docsearch/css': 3.9.0
- algoliasearch: 5.46.2
- optionalDependencies:
- '@types/react': 18.3.12
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- search-insights: 2.17.1
- transitivePeerDependencies:
- - '@algolia/client-search'
-
- '@docusaurus/babel@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/generator': 7.26.0
- '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0)
- '@babel/plugin-transform-runtime': 7.25.9(@babel/core@7.26.0)
- '@babel/preset-env': 7.25.9(@babel/core@7.26.0)
- '@babel/preset-react': 7.25.9(@babel/core@7.26.0)
- '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0)
- '@babel/runtime': 7.26.0
- '@babel/traverse': 7.25.9
- '@docusaurus/logger': 3.10.2
- '@docusaurus/utils': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- babel-plugin-dynamic-import-node: 2.3.3
- fs-extra: 11.2.0
- tslib: 2.8.0
- transitivePeerDependencies:
- - '@swc/core'
- - acorn
- - esbuild
- - react
- - react-dom
- - supports-color
- - uglify-js
- - webpack-cli
-
- '@docusaurus/bundler@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)':
- dependencies:
- '@babel/core': 7.26.0
- '@docusaurus/babel': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/cssnano-preset': 3.10.2
- '@docusaurus/logger': 3.10.2
- '@docusaurus/types': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.95.0(@swc/core@1.16.0))
- clean-css: 5.3.3
- copy-webpack-plugin: 11.0.0(webpack@5.95.0(@swc/core@1.16.0))
- css-loader: 6.11.0(@rspack/core@1.7.11)(webpack@5.95.0(@swc/core@1.16.0))
- css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.95.0(@swc/core@1.16.0))
- cssnano: 6.1.2(postcss@8.5.6)
- file-loader: 6.2.0(webpack@5.95.0(@swc/core@1.16.0))
- html-minifier-terser: 7.2.0
- mini-css-extract-plugin: 2.9.4(webpack@5.95.0(@swc/core@1.16.0))
- null-loader: 4.0.1(webpack@5.95.0(@swc/core@1.16.0))
- postcss: 8.5.6
- postcss-loader: 7.3.4(postcss@8.5.6)(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.16.0))
- postcss-preset-env: 10.5.0(postcss@8.5.6)
- terser-webpack-plugin: 5.3.10(@swc/core@1.16.0)(webpack@5.95.0(@swc/core@1.16.0))
- tslib: 2.8.0
- url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0(@swc/core@1.16.0)))(webpack@5.95.0(@swc/core@1.16.0))
- webpack: 5.95.0(@swc/core@1.16.0)
- webpackbar: 7.0.0(@rspack/core@1.7.11)(webpack@5.95.0(@swc/core@1.16.0))
- optionalDependencies:
- '@docusaurus/faster': 3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))
- transitivePeerDependencies:
- - '@parcel/css'
- - '@rspack/core'
- - '@swc/core'
- - '@swc/css'
- - acorn
- - csso
- - esbuild
- - lightningcss
- - react
- - react-dom
- - supports-color
- - typescript
- - uglify-js
- - webpack-cli
-
- '@docusaurus/core@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)':
- dependencies:
- '@docusaurus/babel': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/bundler': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/logger': 3.10.2
- '@docusaurus/mdx-loader': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-common': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-validation': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@mdx-js/react': 3.1.1(@types/react@18.3.12)(react@19.2.8)
- boxen: 6.2.1
- chalk: 4.1.2
- chokidar: 3.6.0
- cli-table3: 0.6.5
- combine-promises: 1.2.0
- commander: 5.1.0
- core-js: 3.39.0
- detect-port: 2.1.0
- escape-html: 1.0.3
- eta: 2.2.0
- eval: 0.1.8
- execa: 5.1.1
- fs-extra: 11.2.0
- html-tags: 3.3.1
- html-webpack-plugin: 5.6.3(@rspack/core@1.7.11)(webpack@5.95.0(@swc/core@1.16.0))
- leven: 3.1.0
- lodash: 4.17.21
- open: 8.4.2
- p-map: 4.0.0
- prompts: 2.4.2
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)'
- react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.8)'
- react-loadable-ssr-addon-v5-slorber: 1.0.3(@docusaurus/react-loadable@6.0.0(react@19.2.8))(webpack@5.95.0(@swc/core@1.16.0))
- react-router: 5.3.4(react@19.2.8)
- react-router-config: 5.1.1(react-router@5.3.4(react@19.2.8))(react@19.2.8)
- react-router-dom: 5.3.4(react@19.2.8)
- semver: 7.6.3
- serve-handler: 6.1.7
- tinypool: 1.0.2
- tslib: 2.8.0
- update-notifier: 6.0.2
- webpack: 5.95.0(@swc/core@1.16.0)
- webpack-bundle-analyzer: 4.10.2
- webpack-dev-server: 5.2.2(webpack@5.95.0(@swc/core@1.16.0))
- webpack-merge: 6.0.1
- optionalDependencies:
- '@docusaurus/faster': 3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))
- transitivePeerDependencies:
- - '@parcel/css'
- - '@rspack/core'
- - '@swc/core'
- - '@swc/css'
- - acorn
- - bufferutil
- - csso
- - debug
- - esbuild
- - lightningcss
- - supports-color
- - typescript
- - uglify-js
- - utf-8-validate
- - webpack-cli
-
- '@docusaurus/cssnano-preset@3.10.2':
- dependencies:
- cssnano-preset-advanced: 6.1.2(postcss@8.5.6)
- postcss: 8.5.6
- postcss-sort-media-queries: 5.2.0(postcss@8.5.6)
- tslib: 2.8.0
-
- '@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))':
- dependencies:
- '@docusaurus/types': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@rspack/core': 1.7.11
- '@swc/core': 1.16.0
- '@swc/html': 1.16.0
- browserslist: 4.28.1
- lightningcss: 1.27.0
- semver: 7.6.3
- swc-loader: 0.2.6(@swc/core@1.16.0)(webpack@5.95.0(@swc/core@1.16.0))
- tslib: 2.8.0
- webpack: 5.95.0(@swc/core@1.16.0)
- transitivePeerDependencies:
- - '@swc/helpers'
- - esbuild
- - uglify-js
- - webpack-cli
-
- '@docusaurus/logger@3.10.2':
- dependencies:
- chalk: 4.1.2
- tslib: 2.8.0
-
- '@docusaurus/mdx-loader@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
- dependencies:
- '@docusaurus/logger': 3.10.2
- '@docusaurus/utils': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-validation': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@mdx-js/mdx': 3.1.0(acorn@8.14.0)
- '@slorber/remark-comment': 1.0.0
- escape-html: 1.0.3
- estree-util-value-to-estree: 3.1.2
- file-loader: 6.2.0(webpack@5.95.0(@swc/core@1.16.0))
- fs-extra: 11.2.0
- image-size: 2.0.2
- mdast-util-mdx: 3.0.0
- mdast-util-to-string: 4.0.0
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- rehype-raw: 7.0.0
- remark-directive: 3.0.0
- remark-emoji: 4.0.1
- remark-frontmatter: 5.0.0
- remark-gfm: 4.0.0
- stringify-object: 3.3.0
- tslib: 2.8.0
- unified: 11.0.5
- unist-util-visit: 5.1.0
- url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0(@swc/core@1.16.0)))(webpack@5.95.0(@swc/core@1.16.0))
- vfile: 6.0.3
- webpack: 5.95.0(@swc/core@1.16.0)
- transitivePeerDependencies:
- - '@swc/core'
- - acorn
- - esbuild
- - supports-color
- - uglify-js
- - webpack-cli
-
- '@docusaurus/module-type-aliases@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
- dependencies:
- '@docusaurus/types': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@types/history': 4.7.11
- '@types/react': 18.3.12
- '@types/react-router-config': 5.0.11
- '@types/react-router-dom': 5.3.3
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)'
- react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.8)'
- transitivePeerDependencies:
- - '@swc/core'
- - acorn
- - esbuild
- - supports-color
- - uglify-js
- - webpack-cli
-
- '@docusaurus/plugin-client-redirects@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)':
- dependencies:
- '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/logger': 3.10.2
- '@docusaurus/utils': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-common': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-validation': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- eta: 2.2.0
- fs-extra: 11.2.0
- lodash: 4.17.21
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- tslib: 2.8.0
- transitivePeerDependencies:
- - '@docusaurus/faster'
- - '@mdx-js/react'
- - '@parcel/css'
- - '@rspack/core'
- - '@swc/core'
- - '@swc/css'
- - acorn
- - bufferutil
- - csso
- - debug
- - esbuild
- - lightningcss
- - supports-color
- - typescript
- - uglify-js
- - utf-8-validate
- - webpack-cli
-
- '@docusaurus/plugin-content-blog@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@docusaurus/plugin-content-docs@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)':
- dependencies:
- '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/logger': 3.10.2
- '@docusaurus/mdx-loader': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/plugin-content-docs': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/theme-common': 3.10.2(@docusaurus/plugin-content-docs@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3))(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/types': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-common': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-validation': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- cheerio: 1.0.0-rc.12
- combine-promises: 1.2.0
- feed: 4.2.2
- fs-extra: 11.2.0
- lodash: 4.17.21
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- schema-dts: 1.1.5
- srcset: 4.0.0
- tslib: 2.8.0
- unist-util-visit: 5.1.0
- utility-types: 3.11.0
- webpack: 5.95.0(@swc/core@1.16.0)
- transitivePeerDependencies:
- - '@docusaurus/faster'
- - '@mdx-js/react'
- - '@parcel/css'
- - '@rspack/core'
- - '@swc/core'
- - '@swc/css'
- - acorn
- - bufferutil
- - csso
- - debug
- - esbuild
- - lightningcss
- - supports-color
- - typescript
- - uglify-js
- - utf-8-validate
- - webpack-cli
-
- '@docusaurus/plugin-content-docs@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)':
- dependencies:
- '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/logger': 3.10.2
- '@docusaurus/mdx-loader': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/module-type-aliases': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/theme-common': 3.10.2(@docusaurus/plugin-content-docs@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3))(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/types': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-common': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-validation': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@types/react-router-config': 5.0.11
- combine-promises: 1.2.0
- fs-extra: 11.2.0
- js-yaml: 4.1.0
- lodash: 4.17.21
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- schema-dts: 1.1.5
- tslib: 2.8.0
- utility-types: 3.11.0
- webpack: 5.95.0(@swc/core@1.16.0)
- transitivePeerDependencies:
- - '@docusaurus/faster'
- - '@mdx-js/react'
- - '@parcel/css'
- - '@rspack/core'
- - '@swc/core'
- - '@swc/css'
- - acorn
- - bufferutil
- - csso
- - debug
- - esbuild
- - lightningcss
- - supports-color
- - typescript
- - uglify-js
- - utf-8-validate
- - webpack-cli
-
- '@docusaurus/plugin-content-pages@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)':
- dependencies:
- '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/mdx-loader': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/types': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-validation': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- fs-extra: 11.2.0
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- tslib: 2.8.0
- webpack: 5.95.0(@swc/core@1.16.0)
- transitivePeerDependencies:
- - '@docusaurus/faster'
- - '@mdx-js/react'
- - '@parcel/css'
- - '@rspack/core'
- - '@swc/core'
- - '@swc/css'
- - acorn
- - bufferutil
- - csso
- - debug
- - esbuild
- - lightningcss
- - supports-color
- - typescript
- - uglify-js
- - utf-8-validate
- - webpack-cli
-
- '@docusaurus/plugin-css-cascade-layers@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)':
- dependencies:
- '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/types': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-validation': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- tslib: 2.8.0
- transitivePeerDependencies:
- - '@docusaurus/faster'
- - '@mdx-js/react'
- - '@parcel/css'
- - '@rspack/core'
- - '@swc/core'
- - '@swc/css'
- - acorn
- - bufferutil
- - csso
- - debug
- - esbuild
- - lightningcss
- - react
- - react-dom
- - supports-color
- - typescript
- - uglify-js
- - utf-8-validate
- - webpack-cli
-
- '@docusaurus/plugin-debug@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)':
- dependencies:
- '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/types': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- fs-extra: 11.2.0
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- react-json-view-lite: 2.4.1(react@19.2.8)
- tslib: 2.8.0
- transitivePeerDependencies:
- - '@docusaurus/faster'
- - '@mdx-js/react'
- - '@parcel/css'
- - '@rspack/core'
- - '@swc/core'
- - '@swc/css'
- - acorn
- - bufferutil
- - csso
- - debug
- - esbuild
- - lightningcss
- - supports-color
- - typescript
- - uglify-js
- - utf-8-validate
- - webpack-cli
-
- '@docusaurus/plugin-google-analytics@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)':
- dependencies:
- '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/types': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-validation': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- tslib: 2.8.0
- transitivePeerDependencies:
- - '@docusaurus/faster'
- - '@mdx-js/react'
- - '@parcel/css'
- - '@rspack/core'
- - '@swc/core'
- - '@swc/css'
- - acorn
- - bufferutil
- - csso
- - debug
- - esbuild
- - lightningcss
- - supports-color
- - typescript
- - uglify-js
- - utf-8-validate
- - webpack-cli
-
- '@docusaurus/plugin-google-gtag@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)':
- dependencies:
- '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/types': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-validation': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- tslib: 2.8.0
- transitivePeerDependencies:
- - '@docusaurus/faster'
- - '@mdx-js/react'
- - '@parcel/css'
- - '@rspack/core'
- - '@swc/core'
- - '@swc/css'
- - acorn
- - bufferutil
- - csso
- - debug
- - esbuild
- - lightningcss
- - supports-color
- - typescript
- - uglify-js
- - utf-8-validate
- - webpack-cli
-
- '@docusaurus/plugin-google-tag-manager@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)':
- dependencies:
- '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/types': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-validation': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- tslib: 2.8.0
- transitivePeerDependencies:
- - '@docusaurus/faster'
- - '@mdx-js/react'
- - '@parcel/css'
- - '@rspack/core'
- - '@swc/core'
- - '@swc/css'
- - acorn
- - bufferutil
- - csso
- - debug
- - esbuild
- - lightningcss
- - supports-color
- - typescript
- - uglify-js
- - utf-8-validate
- - webpack-cli
-
- '@docusaurus/plugin-sitemap@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)':
- dependencies:
- '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/logger': 3.10.2
- '@docusaurus/types': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-common': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-validation': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- fs-extra: 11.2.0
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- sitemap: 7.1.2
- tslib: 2.8.0
- transitivePeerDependencies:
- - '@docusaurus/faster'
- - '@mdx-js/react'
- - '@parcel/css'
- - '@rspack/core'
- - '@swc/core'
- - '@swc/css'
- - acorn
- - bufferutil
- - csso
- - debug
- - esbuild
- - lightningcss
- - supports-color
- - typescript
- - uglify-js
- - utf-8-validate
- - webpack-cli
-
- '@docusaurus/plugin-svgr@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)':
- dependencies:
- '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/types': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-validation': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@svgr/core': 8.1.0(typescript@5.6.3)
- '@svgr/webpack': 8.1.0(typescript@5.6.3)
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- tslib: 2.8.0
- webpack: 5.95.0(@swc/core@1.16.0)
- transitivePeerDependencies:
- - '@docusaurus/faster'
- - '@mdx-js/react'
- - '@parcel/css'
- - '@rspack/core'
- - '@swc/core'
- - '@swc/css'
- - acorn
- - bufferutil
- - csso
- - debug
- - esbuild
- - lightningcss
- - supports-color
- - typescript
- - uglify-js
- - utf-8-validate
- - webpack-cli
-
- '@docusaurus/preset-classic@3.10.2(@algolia/client-search@5.46.2)(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(@types/react@18.3.12)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(search-insights@2.17.1)(typescript@5.6.3)':
- dependencies:
- '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/plugin-content-blog': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@docusaurus/plugin-content-docs@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/plugin-content-docs': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/plugin-content-pages': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/plugin-css-cascade-layers': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/plugin-debug': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/plugin-google-analytics': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/plugin-google-gtag': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/plugin-google-tag-manager': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/plugin-sitemap': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/plugin-svgr': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/theme-classic': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@rspack/core@1.7.11)(@swc/core@1.16.0)(@types/react@18.3.12)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/theme-common': 3.10.2(@docusaurus/plugin-content-docs@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3))(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/theme-search-algolia': 3.10.2(@algolia/client-search@5.46.2)(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(@types/react@18.3.12)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(search-insights@2.17.1)(typescript@5.6.3)
- '@docusaurus/types': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- transitivePeerDependencies:
- - '@algolia/client-search'
- - '@docusaurus/faster'
- - '@mdx-js/react'
- - '@parcel/css'
- - '@rspack/core'
- - '@swc/core'
- - '@swc/css'
- - '@types/react'
- - acorn
- - bufferutil
- - csso
- - debug
- - esbuild
- - lightningcss
- - search-insights
- - supports-color
- - typescript
- - uglify-js
- - utf-8-validate
- - webpack-cli
-
- '@docusaurus/react-loadable@6.0.0(react@19.2.8)':
- dependencies:
- '@types/react': 18.3.12
- react: 19.2.8
-
- '@docusaurus/theme-classic@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@rspack/core@1.7.11)(@swc/core@1.16.0)(@types/react@18.3.12)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)':
- dependencies:
- '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/logger': 3.10.2
- '@docusaurus/mdx-loader': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/module-type-aliases': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/plugin-content-blog': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@docusaurus/plugin-content-docs@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/plugin-content-docs': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/plugin-content-pages': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/theme-common': 3.10.2(@docusaurus/plugin-content-docs@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3))(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/theme-translations': 3.10.2
- '@docusaurus/types': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-common': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-validation': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@mdx-js/react': 3.1.1(@types/react@18.3.12)(react@19.2.8)
- clsx: 2.1.1
- copy-text-to-clipboard: 3.2.2
- infima: 0.2.0-alpha.45
- lodash: 4.17.21
- nprogress: 0.2.0
- postcss: 8.5.6
- prism-react-renderer: 2.4.1(react@19.2.8)
- prismjs: 1.29.0
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- react-router-dom: 5.3.4(react@19.2.8)
- rtlcss: 4.3.0
- tslib: 2.8.0
- utility-types: 3.11.0
- transitivePeerDependencies:
- - '@docusaurus/faster'
- - '@parcel/css'
- - '@rspack/core'
- - '@swc/core'
- - '@swc/css'
- - '@types/react'
- - acorn
- - bufferutil
- - csso
- - debug
- - esbuild
- - lightningcss
- - supports-color
- - typescript
- - uglify-js
- - utf-8-validate
- - webpack-cli
-
- '@docusaurus/theme-common@3.10.2(@docusaurus/plugin-content-docs@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3))(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
- dependencies:
- '@docusaurus/mdx-loader': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/module-type-aliases': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/plugin-content-docs': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/utils': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-common': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@types/history': 4.7.11
- '@types/react': 18.3.12
- '@types/react-router-config': 5.0.11
- clsx: 2.1.1
- parse-numeric-range: 1.3.0
- prism-react-renderer: 2.4.1(react@19.2.8)
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- tslib: 2.8.0
- utility-types: 3.11.0
- transitivePeerDependencies:
- - '@swc/core'
- - acorn
- - esbuild
- - supports-color
- - uglify-js
- - webpack-cli
-
- '@docusaurus/theme-mermaid@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@docusaurus/plugin-content-docs@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)':
- dependencies:
- '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/module-type-aliases': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/theme-common': 3.10.2(@docusaurus/plugin-content-docs@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3))(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/types': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-validation': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- mermaid: 11.6.0
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- tslib: 2.8.0
- transitivePeerDependencies:
- - '@docusaurus/faster'
- - '@docusaurus/plugin-content-docs'
- - '@mdx-js/react'
- - '@parcel/css'
- - '@rspack/core'
- - '@swc/core'
- - '@swc/css'
- - acorn
- - bufferutil
- - csso
- - debug
- - esbuild
- - lightningcss
- - supports-color
- - typescript
- - uglify-js
- - utf-8-validate
- - webpack-cli
-
- '@docusaurus/theme-search-algolia@3.10.2(@algolia/client-search@5.46.2)(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(@types/react@18.3.12)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(search-insights@2.17.1)(typescript@5.6.3)':
- dependencies:
- '@algolia/autocomplete-core': 1.19.8(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)(search-insights@2.17.1)
- '@docsearch/react': 3.9.0(@algolia/client-search@5.46.2)(@types/react@18.3.12)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(search-insights@2.17.1)
- '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/logger': 3.10.2
- '@docusaurus/plugin-content-docs': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- '@docusaurus/theme-common': 3.10.2(@docusaurus/plugin-content-docs@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3))(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/theme-translations': 3.10.2
- '@docusaurus/utils': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-validation': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- algoliasearch: 5.46.2
- algoliasearch-helper: 3.26.1(algoliasearch@5.46.2)
- clsx: 2.1.1
- eta: 2.2.0
- fs-extra: 11.2.0
- lodash: 4.17.21
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- tslib: 2.8.0
- utility-types: 3.11.0
- transitivePeerDependencies:
- - '@algolia/client-search'
- - '@docusaurus/faster'
- - '@mdx-js/react'
- - '@parcel/css'
- - '@rspack/core'
- - '@swc/core'
- - '@swc/css'
- - '@types/react'
- - acorn
- - bufferutil
- - csso
- - debug
- - esbuild
- - lightningcss
- - search-insights
- - supports-color
- - typescript
- - uglify-js
- - utf-8-validate
- - webpack-cli
-
- '@docusaurus/theme-translations@3.10.2':
- dependencies:
- fs-extra: 11.2.0
- tslib: 2.8.0
-
- '@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
- dependencies:
- '@mdx-js/mdx': 3.1.0(acorn@8.14.0)
- '@types/history': 4.7.11
- '@types/mdast': 4.0.4
- '@types/react': 18.3.12
- commander: 5.1.0
- joi: 17.13.3
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)'
- utility-types: 3.11.0
- webpack: 5.95.0(@swc/core@1.16.0)
- webpack-merge: 5.10.0
- transitivePeerDependencies:
- - '@swc/core'
- - acorn
- - esbuild
- - supports-color
- - uglify-js
- - webpack-cli
-
- '@docusaurus/utils-common@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
- dependencies:
- '@docusaurus/types': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- tslib: 2.8.0
- transitivePeerDependencies:
- - '@swc/core'
- - acorn
- - esbuild
- - react
- - react-dom
- - supports-color
- - uglify-js
- - webpack-cli
-
- '@docusaurus/utils-validation@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
- dependencies:
- '@docusaurus/logger': 3.10.2
- '@docusaurus/utils': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-common': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- fs-extra: 11.2.0
- joi: 17.13.3
- js-yaml: 4.1.0
- lodash: 4.17.21
- tslib: 2.8.0
- transitivePeerDependencies:
- - '@swc/core'
- - acorn
- - esbuild
- - react
- - react-dom
- - supports-color
- - uglify-js
- - webpack-cli
-
- '@docusaurus/utils@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
- dependencies:
- '@11ty/gray-matter': 1.0.0
- '@docusaurus/logger': 3.10.2
- '@docusaurus/types': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@docusaurus/utils-common': 3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- escape-string-regexp: 4.0.0
- execa: 5.1.1
- file-loader: 6.2.0(webpack@5.95.0(@swc/core@1.16.0))
- fs-extra: 11.2.0
- github-slugger: 1.5.0
- globby: 11.1.0
- jiti: 1.21.6
- js-yaml: 4.1.0
- lodash: 4.17.21
- micromatch: 4.0.8
- p-queue: 6.6.2
- prompts: 2.4.2
- resolve-pathname: 3.0.0
- tslib: 2.8.0
- url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0(@swc/core@1.16.0)))(webpack@5.95.0(@swc/core@1.16.0))
- utility-types: 3.11.0
- webpack: 5.95.0(@swc/core@1.16.0)
- transitivePeerDependencies:
- - '@swc/core'
- - acorn
- - esbuild
- - react
- - react-dom
- - supports-color
- - uglify-js
- - webpack-cli
-
- '@emnapi/core@1.7.1':
- dependencies:
- '@emnapi/wasi-threads': 1.1.0
- tslib: 2.8.0
- optional: true
-
- '@emnapi/runtime@1.7.1':
- dependencies:
- tslib: 2.8.0
- optional: true
-
- '@emnapi/wasi-threads@1.1.0':
- dependencies:
- tslib: 2.8.0
- optional: true
-
- '@hapi/hoek@9.3.0': {}
-
- '@hapi/topo@5.1.0':
- dependencies:
- '@hapi/hoek': 9.3.0
-
- '@iconify/types@2.0.0': {}
-
- '@iconify/utils@2.1.33':
- dependencies:
- '@antfu/install-pkg': 0.4.1
- '@antfu/utils': 0.7.10
- '@iconify/types': 2.0.0
- debug: 4.3.7
- kolorist: 1.8.0
- local-pkg: 0.5.0
- mlly: 1.7.2
- transitivePeerDependencies:
- - supports-color
-
- '@jest/schemas@29.6.3':
- dependencies:
- '@sinclair/typebox': 0.27.8
-
- '@jest/types@29.6.3':
- dependencies:
- '@jest/schemas': 29.6.3
- '@types/istanbul-lib-coverage': 2.0.6
- '@types/istanbul-reports': 3.0.4
- '@types/node': 22.8.1
- '@types/yargs': 17.0.33
- chalk: 4.1.2
-
- '@jridgewell/gen-mapping@0.3.5':
- 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/source-map@0.3.6':
- dependencies:
- '@jridgewell/gen-mapping': 0.3.5
- '@jridgewell/trace-mapping': 0.3.25
-
- '@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
-
- '@jsonjoy.com/base64@1.1.2(tslib@2.8.0)':
- dependencies:
- tslib: 2.8.0
-
- '@jsonjoy.com/buffers@1.2.1(tslib@2.8.0)':
- dependencies:
- tslib: 2.8.0
-
- '@jsonjoy.com/codegen@1.0.0(tslib@2.8.0)':
- dependencies:
- tslib: 2.8.0
-
- '@jsonjoy.com/json-pack@1.21.0(tslib@2.8.0)':
- dependencies:
- '@jsonjoy.com/base64': 1.1.2(tslib@2.8.0)
- '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.0)
- '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.0)
- '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.0)
- '@jsonjoy.com/util': 1.9.0(tslib@2.8.0)
- hyperdyperid: 1.2.0
- thingies: 2.5.0(tslib@2.8.0)
- tree-dump: 1.1.0(tslib@2.8.0)
- tslib: 2.8.0
-
- '@jsonjoy.com/json-pointer@1.0.2(tslib@2.8.0)':
- dependencies:
- '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.0)
- '@jsonjoy.com/util': 1.9.0(tslib@2.8.0)
- tslib: 2.8.0
-
- '@jsonjoy.com/util@1.9.0(tslib@2.8.0)':
- dependencies:
- '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.0)
- '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.0)
- tslib: 2.8.0
-
- '@leichtgewicht/ip-codec@2.0.5': {}
-
- '@mdx-js/mdx@3.1.0(acorn@8.14.0)':
- dependencies:
- '@types/estree': 1.0.6
- '@types/estree-jsx': 1.0.5
- '@types/hast': 3.0.4
- '@types/mdx': 2.0.13
- collapse-white-space: 2.1.0
- devlop: 1.1.0
- estree-util-is-identifier-name: 3.0.0
- estree-util-scope: 1.0.0
- estree-walker: 3.0.3
- hast-util-to-jsx-runtime: 2.3.2
- markdown-extensions: 2.0.0
- recma-build-jsx: 1.0.0
- recma-jsx: 1.0.0(acorn@8.14.0)
- recma-stringify: 1.0.0
- rehype-recma: 1.0.0
- remark-mdx: 3.0.1
- remark-parse: 11.0.0
- remark-rehype: 11.1.1
- source-map: 0.7.4
- unified: 11.0.5
- unist-util-position-from-estree: 2.0.0
- unist-util-stringify-position: 4.0.0
- unist-util-visit: 5.1.0
- vfile: 6.0.3
- transitivePeerDependencies:
- - acorn
- - supports-color
-
- '@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8)':
- dependencies:
- '@types/mdx': 2.0.13
- '@types/react': 18.3.12
- react: 19.2.8
-
- '@mermaid-js/parser@0.4.0':
- dependencies:
- langium: 3.3.1
-
- '@module-federation/error-codes@0.22.0': {}
-
- '@module-federation/runtime-core@0.22.0':
- dependencies:
- '@module-federation/error-codes': 0.22.0
- '@module-federation/sdk': 0.22.0
-
- '@module-federation/runtime-tools@0.22.0':
- dependencies:
- '@module-federation/runtime': 0.22.0
- '@module-federation/webpack-bundler-runtime': 0.22.0
-
- '@module-federation/runtime@0.22.0':
- dependencies:
- '@module-federation/error-codes': 0.22.0
- '@module-federation/runtime-core': 0.22.0
- '@module-federation/sdk': 0.22.0
-
- '@module-federation/sdk@0.22.0': {}
-
- '@module-federation/webpack-bundler-runtime@0.22.0':
- dependencies:
- '@module-federation/runtime': 0.22.0
- '@module-federation/sdk': 0.22.0
-
- '@napi-rs/wasm-runtime@1.0.7':
- dependencies:
- '@emnapi/core': 1.7.1
- '@emnapi/runtime': 1.7.1
- '@tybys/wasm-util': 0.10.1
- optional: true
-
- '@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.17.1
-
- '@parcel/watcher-android-arm64@2.5.1':
- optional: true
-
- '@parcel/watcher-darwin-arm64@2.5.1':
- optional: true
-
- '@parcel/watcher-darwin-x64@2.5.1':
- optional: true
-
- '@parcel/watcher-freebsd-x64@2.5.1':
- optional: true
-
- '@parcel/watcher-linux-arm-glibc@2.5.1':
- optional: true
-
- '@parcel/watcher-linux-arm-musl@2.5.1':
- optional: true
-
- '@parcel/watcher-linux-arm64-glibc@2.5.1':
- optional: true
-
- '@parcel/watcher-linux-arm64-musl@2.5.1':
- optional: true
-
- '@parcel/watcher-linux-x64-glibc@2.5.1':
- optional: true
-
- '@parcel/watcher-linux-x64-musl@2.5.1':
- optional: true
-
- '@parcel/watcher-win32-arm64@2.5.1':
- optional: true
-
- '@parcel/watcher-win32-ia32@2.5.1':
- optional: true
-
- '@parcel/watcher-win32-x64@2.5.1':
- optional: true
-
- '@parcel/watcher@2.5.1':
- dependencies:
- detect-libc: 1.0.3
- is-glob: 4.0.3
- micromatch: 4.0.8
- node-addon-api: 7.1.1
- optionalDependencies:
- '@parcel/watcher-android-arm64': 2.5.1
- '@parcel/watcher-darwin-arm64': 2.5.1
- '@parcel/watcher-darwin-x64': 2.5.1
- '@parcel/watcher-freebsd-x64': 2.5.1
- '@parcel/watcher-linux-arm-glibc': 2.5.1
- '@parcel/watcher-linux-arm-musl': 2.5.1
- '@parcel/watcher-linux-arm64-glibc': 2.5.1
- '@parcel/watcher-linux-arm64-musl': 2.5.1
- '@parcel/watcher-linux-x64-glibc': 2.5.1
- '@parcel/watcher-linux-x64-musl': 2.5.1
- '@parcel/watcher-win32-arm64': 2.5.1
- '@parcel/watcher-win32-ia32': 2.5.1
- '@parcel/watcher-win32-x64': 2.5.1
- optional: true
-
- '@pnpm/config.env-replace@1.1.0': {}
-
- '@pnpm/network.ca-file@1.0.2':
- dependencies:
- graceful-fs: 4.2.10
-
- '@pnpm/npm-conf@2.3.1':
- dependencies:
- '@pnpm/config.env-replace': 1.1.0
- '@pnpm/network.ca-file': 1.0.2
- config-chain: 1.1.13
-
- '@polka/url@1.0.0-next.28': {}
-
- '@rspack/binding-darwin-arm64@1.7.11':
- optional: true
-
- '@rspack/binding-darwin-x64@1.7.11':
- optional: true
-
- '@rspack/binding-linux-arm64-gnu@1.7.11':
- optional: true
-
- '@rspack/binding-linux-arm64-musl@1.7.11':
- optional: true
-
- '@rspack/binding-linux-x64-gnu@1.7.11':
- optional: true
-
- '@rspack/binding-linux-x64-musl@1.7.11':
- optional: true
-
- '@rspack/binding-wasm32-wasi@1.7.11':
- dependencies:
- '@napi-rs/wasm-runtime': 1.0.7
- optional: true
-
- '@rspack/binding-win32-arm64-msvc@1.7.11':
- optional: true
-
- '@rspack/binding-win32-ia32-msvc@1.7.11':
- optional: true
-
- '@rspack/binding-win32-x64-msvc@1.7.11':
- optional: true
-
- '@rspack/binding@1.7.11':
- optionalDependencies:
- '@rspack/binding-darwin-arm64': 1.7.11
- '@rspack/binding-darwin-x64': 1.7.11
- '@rspack/binding-linux-arm64-gnu': 1.7.11
- '@rspack/binding-linux-arm64-musl': 1.7.11
- '@rspack/binding-linux-x64-gnu': 1.7.11
- '@rspack/binding-linux-x64-musl': 1.7.11
- '@rspack/binding-wasm32-wasi': 1.7.11
- '@rspack/binding-win32-arm64-msvc': 1.7.11
- '@rspack/binding-win32-ia32-msvc': 1.7.11
- '@rspack/binding-win32-x64-msvc': 1.7.11
-
- '@rspack/core@1.7.11':
- dependencies:
- '@module-federation/runtime-tools': 0.22.0
- '@rspack/binding': 1.7.11
- '@rspack/lite-tapable': 1.1.0
-
- '@rspack/lite-tapable@1.1.0': {}
-
- '@shikijs/core@4.4.3':
- dependencies:
- '@shikijs/primitive': 4.4.3
- '@shikijs/types': 4.4.3
- '@shikijs/vscode-textmate': 10.0.2
- '@types/hast': 3.0.5
- hast-util-to-html: 9.0.5
-
- '@shikijs/engine-javascript@4.4.3':
- dependencies:
- '@shikijs/types': 4.4.3
- '@shikijs/vscode-textmate': 10.0.2
- oniguruma-to-es: 4.3.6
-
- '@shikijs/engine-oniguruma@4.4.3':
- dependencies:
- '@shikijs/types': 4.4.3
- '@shikijs/vscode-textmate': 10.0.2
-
- '@shikijs/langs@4.4.3':
- dependencies:
- '@shikijs/types': 4.4.3
-
- '@shikijs/primitive@4.4.3':
- dependencies:
- '@shikijs/types': 4.4.3
- '@shikijs/vscode-textmate': 10.0.2
- '@types/hast': 3.0.5
-
- '@shikijs/rehype@4.4.3':
- dependencies:
- '@shikijs/types': 4.4.3
- '@types/hast': 3.0.5
- hast-util-to-string: 3.0.1
- shiki: 4.4.3
- unified: 11.0.5
- unist-util-visit: 5.1.0
-
- '@shikijs/themes@4.4.3':
- dependencies:
- '@shikijs/types': 4.4.3
-
- '@shikijs/transformers@4.4.3':
- dependencies:
- '@shikijs/core': 4.4.3
- '@shikijs/types': 4.4.3
-
- '@shikijs/types@4.4.3':
- dependencies:
- '@shikijs/vscode-textmate': 10.0.2
- '@types/hast': 3.0.5
-
- '@shikijs/vscode-textmate@10.0.2': {}
-
- '@sideway/address@4.1.5':
- dependencies:
- '@hapi/hoek': 9.3.0
-
- '@sideway/formula@3.0.1': {}
-
- '@sideway/pinpoint@2.0.0': {}
-
- '@sinclair/typebox@0.27.8': {}
-
- '@sindresorhus/is@4.6.0': {}
-
- '@sindresorhus/is@5.6.0': {}
-
- '@slorber/react-helmet-async@1.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
- dependencies:
- '@babel/runtime': 7.26.0
- invariant: 2.2.4
- prop-types: 15.8.1
- react: 19.2.8
- react-dom: 19.2.8(react@19.2.8)
- react-fast-compare: 3.2.2
- shallowequal: 1.1.0
-
- '@slorber/remark-comment@1.0.0':
- dependencies:
- micromark-factory-space: 1.1.0
- micromark-util-character: 1.2.0
- micromark-util-symbol: 1.1.0
-
- '@svgr/babel-plugin-add-jsx-attribute@5.4.0': {}
-
- '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
-
- '@svgr/babel-plugin-remove-jsx-attribute@5.4.0': {}
-
- '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
-
- '@svgr/babel-plugin-remove-jsx-empty-expression@5.0.1': {}
-
- '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
-
- '@svgr/babel-plugin-replace-jsx-attribute-value@5.0.1': {}
-
- '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
-
- '@svgr/babel-plugin-svg-dynamic-title@5.4.0': {}
-
- '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
-
- '@svgr/babel-plugin-svg-em-dimensions@5.4.0': {}
-
- '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
-
- '@svgr/babel-plugin-transform-react-native-svg@5.4.0': {}
-
- '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
-
- '@svgr/babel-plugin-transform-svg-component@5.5.0': {}
-
- '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
-
- '@svgr/babel-preset@5.5.0':
- dependencies:
- '@svgr/babel-plugin-add-jsx-attribute': 5.4.0
- '@svgr/babel-plugin-remove-jsx-attribute': 5.4.0
- '@svgr/babel-plugin-remove-jsx-empty-expression': 5.0.1
- '@svgr/babel-plugin-replace-jsx-attribute-value': 5.0.1
- '@svgr/babel-plugin-svg-dynamic-title': 5.4.0
- '@svgr/babel-plugin-svg-em-dimensions': 5.4.0
- '@svgr/babel-plugin-transform-react-native-svg': 5.4.0
- '@svgr/babel-plugin-transform-svg-component': 5.5.0
-
- '@svgr/babel-preset@8.1.0(@babel/core@7.26.0)':
- dependencies:
- '@babel/core': 7.26.0
- '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.26.0)
- '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.26.0)
- '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.26.0)
- '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.26.0)
- '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.26.0)
- '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.26.0)
- '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.26.0)
- '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.26.0)
-
- '@svgr/core@5.5.0':
- dependencies:
- '@svgr/plugin-jsx': 5.5.0
- camelcase: 6.3.0
- cosmiconfig: 7.1.0
- transitivePeerDependencies:
- - supports-color
-
- '@svgr/core@8.1.0(typescript@5.6.3)':
- dependencies:
- '@babel/core': 7.26.0
- '@svgr/babel-preset': 8.1.0(@babel/core@7.26.0)
- camelcase: 6.3.0
- cosmiconfig: 8.3.6(typescript@5.6.3)
- snake-case: 3.0.4
- transitivePeerDependencies:
- - supports-color
- - typescript
-
- '@svgr/hast-util-to-babel-ast@5.5.0':
- dependencies:
- '@babel/types': 7.26.0
-
- '@svgr/hast-util-to-babel-ast@8.0.0':
- dependencies:
- '@babel/types': 7.26.0
- entities: 4.5.0
-
- '@svgr/plugin-jsx@5.5.0':
- dependencies:
- '@babel/core': 7.26.0
- '@svgr/babel-preset': 5.5.0
- '@svgr/hast-util-to-babel-ast': 5.5.0
- svg-parser: 2.0.4
- transitivePeerDependencies:
- - supports-color
-
- '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.6.3))':
- dependencies:
- '@babel/core': 7.26.0
- '@svgr/babel-preset': 8.1.0(@babel/core@7.26.0)
- '@svgr/core': 8.1.0(typescript@5.6.3)
- '@svgr/hast-util-to-babel-ast': 8.0.0
- svg-parser: 2.0.4
- transitivePeerDependencies:
- - supports-color
-
- '@svgr/plugin-svgo@5.5.0':
- dependencies:
- cosmiconfig: 7.1.0
- deepmerge: 4.3.1
- svgo: 1.3.2
-
- '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.6.3))(typescript@5.6.3)':
- dependencies:
- '@svgr/core': 8.1.0(typescript@5.6.3)
- cosmiconfig: 8.3.6(typescript@5.6.3)
- deepmerge: 4.3.1
- svgo: 3.3.2
- transitivePeerDependencies:
- - typescript
-
- '@svgr/webpack@5.5.0':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/plugin-transform-react-constant-elements': 7.25.7(@babel/core@7.26.0)
- '@babel/preset-env': 7.25.9(@babel/core@7.26.0)
- '@babel/preset-react': 7.25.9(@babel/core@7.26.0)
- '@svgr/core': 5.5.0
- '@svgr/plugin-jsx': 5.5.0
- '@svgr/plugin-svgo': 5.5.0
- loader-utils: 2.0.4
- transitivePeerDependencies:
- - supports-color
-
- '@svgr/webpack@8.1.0(typescript@5.6.3)':
- dependencies:
- '@babel/core': 7.26.0
- '@babel/plugin-transform-react-constant-elements': 7.25.7(@babel/core@7.26.0)
- '@babel/preset-env': 7.25.9(@babel/core@7.26.0)
- '@babel/preset-react': 7.25.9(@babel/core@7.26.0)
- '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0)
- '@svgr/core': 8.1.0(typescript@5.6.3)
- '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.6.3))
- '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.6.3))(typescript@5.6.3)
- transitivePeerDependencies:
- - supports-color
- - typescript
-
- '@swc/core-darwin-arm64@1.16.0':
- optional: true
-
- '@swc/core-darwin-x64@1.16.0':
- optional: true
-
- '@swc/core-linux-arm-gnueabihf@1.16.0':
- optional: true
-
- '@swc/core-linux-arm64-gnu@1.16.0':
- optional: true
-
- '@swc/core-linux-arm64-musl@1.16.0':
- optional: true
-
- '@swc/core-linux-ppc64-gnu@1.16.0':
- optional: true
-
- '@swc/core-linux-s390x-gnu@1.16.0':
- optional: true
-
- '@swc/core-linux-x64-gnu@1.16.0':
- optional: true
-
- '@swc/core-linux-x64-musl@1.16.0':
- optional: true
-
- '@swc/core-win32-arm64-msvc@1.16.0':
- optional: true
-
- '@swc/core-win32-ia32-msvc@1.16.0':
- optional: true
-
- '@swc/core-win32-x64-msvc@1.16.0':
- optional: true
-
- '@swc/core@1.16.0':
- dependencies:
- '@swc/counter': 0.1.3
- '@swc/types': 0.1.28
- optionalDependencies:
- '@swc/core-darwin-arm64': 1.16.0
- '@swc/core-darwin-x64': 1.16.0
- '@swc/core-linux-arm-gnueabihf': 1.16.0
- '@swc/core-linux-arm64-gnu': 1.16.0
- '@swc/core-linux-arm64-musl': 1.16.0
- '@swc/core-linux-ppc64-gnu': 1.16.0
- '@swc/core-linux-s390x-gnu': 1.16.0
- '@swc/core-linux-x64-gnu': 1.16.0
- '@swc/core-linux-x64-musl': 1.16.0
- '@swc/core-win32-arm64-msvc': 1.16.0
- '@swc/core-win32-ia32-msvc': 1.16.0
- '@swc/core-win32-x64-msvc': 1.16.0
-
- '@swc/counter@0.1.3': {}
-
- '@swc/html-darwin-arm64@1.16.0':
- optional: true
-
- '@swc/html-darwin-x64@1.16.0':
- optional: true
-
- '@swc/html-linux-arm-gnueabihf@1.16.0':
- optional: true
-
- '@swc/html-linux-arm64-gnu@1.16.0':
- optional: true
-
- '@swc/html-linux-arm64-musl@1.16.0':
- optional: true
-
- '@swc/html-linux-ppc64-gnu@1.16.0':
- optional: true
-
- '@swc/html-linux-s390x-gnu@1.16.0':
- optional: true
-
- '@swc/html-linux-x64-gnu@1.16.0':
- optional: true
-
- '@swc/html-linux-x64-musl@1.16.0':
- optional: true
-
- '@swc/html-win32-arm64-msvc@1.16.0':
- optional: true
-
- '@swc/html-win32-ia32-msvc@1.16.0':
- optional: true
-
- '@swc/html-win32-x64-msvc@1.16.0':
- optional: true
-
- '@swc/html@1.16.0':
- dependencies:
- '@swc/counter': 0.1.3
- optionalDependencies:
- '@swc/html-darwin-arm64': 1.16.0
- '@swc/html-darwin-x64': 1.16.0
- '@swc/html-linux-arm-gnueabihf': 1.16.0
- '@swc/html-linux-arm64-gnu': 1.16.0
- '@swc/html-linux-arm64-musl': 1.16.0
- '@swc/html-linux-ppc64-gnu': 1.16.0
- '@swc/html-linux-s390x-gnu': 1.16.0
- '@swc/html-linux-x64-gnu': 1.16.0
- '@swc/html-linux-x64-musl': 1.16.0
- '@swc/html-win32-arm64-msvc': 1.16.0
- '@swc/html-win32-ia32-msvc': 1.16.0
- '@swc/html-win32-x64-msvc': 1.16.0
-
- '@swc/types@0.1.28':
- dependencies:
- '@swc/counter': 0.1.3
-
- '@szmarczak/http-timer@5.0.1':
- dependencies:
- defer-to-connect: 2.0.1
-
- '@trysound/sax@0.2.0': {}
-
- '@tybys/wasm-util@0.10.1':
- dependencies:
- tslib: 2.8.0
- optional: true
-
- '@types/acorn@4.0.6':
- dependencies:
- '@types/estree': 1.0.6
-
- '@types/body-parser@1.19.5':
- dependencies:
- '@types/connect': 3.4.38
- '@types/node': 22.8.1
-
- '@types/bonjour@3.5.13':
- dependencies:
- '@types/node': 22.8.1
-
- '@types/connect-history-api-fallback@1.5.4':
- dependencies:
- '@types/express-serve-static-core': 5.0.0
- '@types/node': 22.8.1
-
- '@types/connect@3.4.38':
- dependencies:
- '@types/node': 22.8.1
-
- '@types/d3-array@3.2.1': {}
-
- '@types/d3-axis@3.0.6':
- dependencies:
- '@types/d3-selection': 3.0.11
-
- '@types/d3-brush@3.0.6':
- dependencies:
- '@types/d3-selection': 3.0.11
-
- '@types/d3-chord@3.0.6': {}
-
- '@types/d3-color@3.1.3': {}
-
- '@types/d3-contour@3.0.6':
- dependencies:
- '@types/d3-array': 3.2.1
- '@types/geojson': 7946.0.14
-
- '@types/d3-delaunay@6.0.4': {}
-
- '@types/d3-dispatch@3.0.6': {}
-
- '@types/d3-drag@3.0.7':
- dependencies:
- '@types/d3-selection': 3.0.11
-
- '@types/d3-dsv@3.0.7': {}
-
- '@types/d3-ease@3.0.2': {}
-
- '@types/d3-fetch@3.0.7':
- dependencies:
- '@types/d3-dsv': 3.0.7
-
- '@types/d3-force@3.0.10': {}
-
- '@types/d3-format@3.0.4': {}
-
- '@types/d3-geo@3.1.0':
- dependencies:
- '@types/geojson': 7946.0.14
-
- '@types/d3-hierarchy@3.1.7': {}
-
- '@types/d3-interpolate@3.0.4':
- dependencies:
- '@types/d3-color': 3.1.3
-
- '@types/d3-path@3.1.0': {}
-
- '@types/d3-polygon@3.0.2': {}
-
- '@types/d3-quadtree@3.0.6': {}
-
- '@types/d3-random@3.0.3': {}
-
- '@types/d3-scale-chromatic@3.0.3': {}
-
- '@types/d3-scale@4.0.8':
- dependencies:
- '@types/d3-time': 3.0.3
-
- '@types/d3-selection@3.0.11': {}
-
- '@types/d3-shape@3.1.6':
- dependencies:
- '@types/d3-path': 3.1.0
-
- '@types/d3-time-format@4.0.3': {}
-
- '@types/d3-time@3.0.3': {}
-
- '@types/d3-timer@3.0.2': {}
-
- '@types/d3-transition@3.0.9':
- dependencies:
- '@types/d3-selection': 3.0.11
-
- '@types/d3-zoom@3.0.8':
- dependencies:
- '@types/d3-interpolate': 3.0.4
- '@types/d3-selection': 3.0.11
-
- '@types/d3@7.4.3':
- dependencies:
- '@types/d3-array': 3.2.1
- '@types/d3-axis': 3.0.6
- '@types/d3-brush': 3.0.6
- '@types/d3-chord': 3.0.6
- '@types/d3-color': 3.1.3
- '@types/d3-contour': 3.0.6
- '@types/d3-delaunay': 6.0.4
- '@types/d3-dispatch': 3.0.6
- '@types/d3-drag': 3.0.7
- '@types/d3-dsv': 3.0.7
- '@types/d3-ease': 3.0.2
- '@types/d3-fetch': 3.0.7
- '@types/d3-force': 3.0.10
- '@types/d3-format': 3.0.4
- '@types/d3-geo': 3.1.0
- '@types/d3-hierarchy': 3.1.7
- '@types/d3-interpolate': 3.0.4
- '@types/d3-path': 3.1.0
- '@types/d3-polygon': 3.0.2
- '@types/d3-quadtree': 3.0.6
- '@types/d3-random': 3.0.3
- '@types/d3-scale': 4.0.8
- '@types/d3-scale-chromatic': 3.0.3
- '@types/d3-selection': 3.0.11
- '@types/d3-shape': 3.1.6
- '@types/d3-time': 3.0.3
- '@types/d3-time-format': 4.0.3
- '@types/d3-timer': 3.0.2
- '@types/d3-transition': 3.0.9
- '@types/d3-zoom': 3.0.8
-
- '@types/debug@4.1.12':
- dependencies:
- '@types/ms': 0.7.34
-
- '@types/estree-jsx@1.0.5':
- dependencies:
- '@types/estree': 1.0.6
-
- '@types/estree@1.0.6': {}
-
- '@types/express-serve-static-core@4.19.6':
- dependencies:
- '@types/node': 22.8.1
- '@types/qs': 6.9.16
- '@types/range-parser': 1.2.7
- '@types/send': 0.17.4
-
- '@types/express-serve-static-core@5.0.0':
- dependencies:
- '@types/node': 22.8.1
- '@types/qs': 6.9.16
- '@types/range-parser': 1.2.7
- '@types/send': 0.17.4
-
- '@types/express@4.17.21':
- dependencies:
- '@types/body-parser': 1.19.5
- '@types/express-serve-static-core': 4.19.6
- '@types/qs': 6.9.16
- '@types/serve-static': 1.15.7
-
- '@types/geojson@7946.0.14': {}
-
- '@types/hast@3.0.4':
- dependencies:
- '@types/unist': 3.0.3
-
- '@types/hast@3.0.5':
- dependencies:
- '@types/unist': 3.0.3
-
- '@types/history@4.7.11': {}
-
- '@types/html-minifier-terser@6.1.0': {}
-
- '@types/http-cache-semantics@4.0.4': {}
-
- '@types/http-errors@2.0.4': {}
-
- '@types/http-proxy@1.17.15':
- dependencies:
- '@types/node': 22.8.1
-
- '@types/istanbul-lib-coverage@2.0.6': {}
-
- '@types/istanbul-lib-report@3.0.3':
- dependencies:
- '@types/istanbul-lib-coverage': 2.0.6
-
- '@types/istanbul-reports@3.0.4':
- dependencies:
- '@types/istanbul-lib-report': 3.0.3
-
- '@types/json-schema@7.0.15': {}
-
- '@types/mdast@4.0.4':
- dependencies:
- '@types/unist': 3.0.3
-
- '@types/mdx@2.0.13': {}
-
- '@types/mime@1.3.5': {}
-
- '@types/ms@0.7.34': {}
-
- '@types/node-forge@1.3.11':
- dependencies:
- '@types/node': 22.8.1
-
- '@types/node@17.0.45': {}
-
- '@types/node@22.8.1':
- dependencies:
- undici-types: 6.19.8
-
- '@types/parse-json@4.0.2': {}
-
- '@types/prismjs@1.26.4': {}
-
- '@types/prop-types@15.7.13': {}
-
- '@types/q@1.5.8': {}
-
- '@types/qs@6.9.16': {}
-
- '@types/range-parser@1.2.7': {}
-
- '@types/react-router-config@5.0.11':
- dependencies:
- '@types/history': 4.7.11
- '@types/react': 18.3.12
- '@types/react-router': 5.1.20
-
- '@types/react-router-dom@5.3.3':
- dependencies:
- '@types/history': 4.7.11
- '@types/react': 18.3.12
- '@types/react-router': 5.1.20
-
- '@types/react-router@5.1.20':
- dependencies:
- '@types/history': 4.7.11
- '@types/react': 18.3.12
-
- '@types/react@18.3.12':
- dependencies:
- '@types/prop-types': 15.7.13
- csstype: 3.1.3
-
- '@types/retry@0.12.2': {}
-
- '@types/sax@1.2.7':
- dependencies:
- '@types/node': 22.8.1
-
- '@types/send@0.17.4':
- dependencies:
- '@types/mime': 1.3.5
- '@types/node': 22.8.1
-
- '@types/serve-index@1.9.4':
- dependencies:
- '@types/express': 4.17.21
-
- '@types/serve-static@1.15.7':
- dependencies:
- '@types/http-errors': 2.0.4
- '@types/node': 22.8.1
- '@types/send': 0.17.4
-
- '@types/sockjs@0.3.36':
- dependencies:
- '@types/node': 22.8.1
-
- '@types/trusted-types@2.0.7':
- optional: true
-
- '@types/unist@2.0.11': {}
-
- '@types/unist@3.0.3': {}
-
- '@types/ws@8.5.12':
- dependencies:
- '@types/node': 22.8.1
-
- '@types/yargs-parser@21.0.3': {}
-
- '@types/yargs@17.0.33':
- dependencies:
- '@types/yargs-parser': 21.0.3
-
- '@ungap/structured-clone@1.2.0': {}
-
- '@webassemblyjs/ast@1.12.1':
- dependencies:
- '@webassemblyjs/helper-numbers': 1.11.6
- '@webassemblyjs/helper-wasm-bytecode': 1.11.6
-
- '@webassemblyjs/floating-point-hex-parser@1.11.6': {}
-
- '@webassemblyjs/helper-api-error@1.11.6': {}
-
- '@webassemblyjs/helper-buffer@1.12.1': {}
-
- '@webassemblyjs/helper-numbers@1.11.6':
- dependencies:
- '@webassemblyjs/floating-point-hex-parser': 1.11.6
- '@webassemblyjs/helper-api-error': 1.11.6
- '@xtuc/long': 4.2.2
-
- '@webassemblyjs/helper-wasm-bytecode@1.11.6': {}
-
- '@webassemblyjs/helper-wasm-section@1.12.1':
- dependencies:
- '@webassemblyjs/ast': 1.12.1
- '@webassemblyjs/helper-buffer': 1.12.1
- '@webassemblyjs/helper-wasm-bytecode': 1.11.6
- '@webassemblyjs/wasm-gen': 1.12.1
-
- '@webassemblyjs/ieee754@1.11.6':
- dependencies:
- '@xtuc/ieee754': 1.2.0
-
- '@webassemblyjs/leb128@1.11.6':
- dependencies:
- '@xtuc/long': 4.2.2
-
- '@webassemblyjs/utf8@1.11.6': {}
-
- '@webassemblyjs/wasm-edit@1.12.1':
- dependencies:
- '@webassemblyjs/ast': 1.12.1
- '@webassemblyjs/helper-buffer': 1.12.1
- '@webassemblyjs/helper-wasm-bytecode': 1.11.6
- '@webassemblyjs/helper-wasm-section': 1.12.1
- '@webassemblyjs/wasm-gen': 1.12.1
- '@webassemblyjs/wasm-opt': 1.12.1
- '@webassemblyjs/wasm-parser': 1.12.1
- '@webassemblyjs/wast-printer': 1.12.1
-
- '@webassemblyjs/wasm-gen@1.12.1':
- dependencies:
- '@webassemblyjs/ast': 1.12.1
- '@webassemblyjs/helper-wasm-bytecode': 1.11.6
- '@webassemblyjs/ieee754': 1.11.6
- '@webassemblyjs/leb128': 1.11.6
- '@webassemblyjs/utf8': 1.11.6
-
- '@webassemblyjs/wasm-opt@1.12.1':
- dependencies:
- '@webassemblyjs/ast': 1.12.1
- '@webassemblyjs/helper-buffer': 1.12.1
- '@webassemblyjs/wasm-gen': 1.12.1
- '@webassemblyjs/wasm-parser': 1.12.1
-
- '@webassemblyjs/wasm-parser@1.12.1':
- dependencies:
- '@webassemblyjs/ast': 1.12.1
- '@webassemblyjs/helper-api-error': 1.11.6
- '@webassemblyjs/helper-wasm-bytecode': 1.11.6
- '@webassemblyjs/ieee754': 1.11.6
- '@webassemblyjs/leb128': 1.11.6
- '@webassemblyjs/utf8': 1.11.6
-
- '@webassemblyjs/wast-printer@1.12.1':
- dependencies:
- '@webassemblyjs/ast': 1.12.1
- '@xtuc/long': 4.2.2
-
- '@xtuc/ieee754@1.2.0': {}
-
- '@xtuc/long@4.2.2': {}
-
- accepts@1.3.8:
- dependencies:
- mime-types: 2.1.35
- negotiator: 0.6.3
-
- acorn-import-attributes@1.9.5(acorn@8.14.0):
- dependencies:
- acorn: 8.14.0
-
- acorn-jsx@5.3.2(acorn@8.14.0):
- dependencies:
- acorn: 8.14.0
-
- acorn-walk@8.3.4:
- dependencies:
- acorn: 8.14.0
-
- acorn@8.14.0: {}
-
- address@2.0.3: {}
-
- aggregate-error@3.1.0:
- dependencies:
- clean-stack: 2.2.0
- indent-string: 4.0.0
-
- ajv-formats@2.1.1(ajv@8.17.1):
- optionalDependencies:
- ajv: 8.17.1
-
- ajv-keywords@3.5.2(ajv@6.12.6):
- dependencies:
- ajv: 6.12.6
-
- ajv-keywords@5.1.0(ajv@8.17.1):
- dependencies:
- ajv: 8.17.1
- fast-deep-equal: 3.1.3
-
- ajv@6.12.6:
- dependencies:
- fast-deep-equal: 3.1.3
- fast-json-stable-stringify: 2.1.0
- json-schema-traverse: 0.4.1
- uri-js: 4.4.1
-
- ajv@8.17.1:
- dependencies:
- fast-deep-equal: 3.1.3
- fast-uri: 3.0.3
- json-schema-traverse: 1.0.0
- require-from-string: 2.0.2
-
- algoliasearch-helper@3.26.1(algoliasearch@5.46.2):
- dependencies:
- '@algolia/events': 4.0.1
- algoliasearch: 5.46.2
-
- algoliasearch@5.46.2:
- dependencies:
- '@algolia/abtesting': 1.12.2
- '@algolia/client-abtesting': 5.46.2
- '@algolia/client-analytics': 5.46.2
- '@algolia/client-common': 5.46.2
- '@algolia/client-insights': 5.46.2
- '@algolia/client-personalization': 5.46.2
- '@algolia/client-query-suggestions': 5.46.2
- '@algolia/client-search': 5.46.2
- '@algolia/ingestion': 1.46.2
- '@algolia/monitoring': 1.46.2
- '@algolia/recommend': 5.46.2
- '@algolia/requester-browser-xhr': 5.46.2
- '@algolia/requester-fetch': 5.46.2
- '@algolia/requester-node-http': 5.46.2
-
- ansi-align@3.0.1:
- dependencies:
- string-width: 4.2.3
-
- ansi-html-community@0.0.8: {}
-
- ansi-regex@5.0.1: {}
-
- ansi-regex@6.1.0: {}
-
- ansi-styles@3.2.1:
- dependencies:
- color-convert: 1.9.3
-
- ansi-styles@4.3.0:
- dependencies:
- color-convert: 2.0.1
-
- ansi-styles@6.2.1: {}
-
- ansis@3.17.0: {}
-
- anymatch@3.1.3:
- dependencies:
- normalize-path: 3.0.0
- picomatch: 2.3.1
-
- arg@5.0.2: {}
-
- argparse@1.0.10:
- dependencies:
- sprintf-js: 1.0.3
-
- argparse@2.0.1: {}
-
- array-buffer-byte-length@1.0.1:
- dependencies:
- call-bind: 1.0.7
- is-array-buffer: 3.0.4
-
- array-flatten@1.1.1: {}
-
- array-union@2.1.0: {}
-
- array-union@3.0.1: {}
-
- array.prototype.reduce@1.0.7:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- es-array-method-boxes-properly: 1.0.0
- es-errors: 1.3.0
- es-object-atoms: 1.0.0
- is-string: 1.0.7
-
- arraybuffer.prototype.slice@1.0.3:
- dependencies:
- array-buffer-byte-length: 1.0.1
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- es-errors: 1.3.0
- get-intrinsic: 1.2.4
- is-array-buffer: 3.0.4
- is-shared-array-buffer: 1.0.3
-
- astring@1.9.0: {}
-
- autoprefixer@10.4.23(postcss@8.5.6):
- dependencies:
- browserslist: 4.28.1
- caniuse-lite: 1.0.30001761
- fraction.js: 5.3.4
- picocolors: 1.1.1
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- available-typed-arrays@1.0.7:
- dependencies:
- possible-typed-array-names: 1.0.0
-
- babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.95.0(@swc/core@1.16.0)):
- dependencies:
- '@babel/core': 7.26.0
- find-cache-dir: 4.0.0
- schema-utils: 4.2.0
- webpack: 5.95.0(@swc/core@1.16.0)
-
- babel-plugin-dynamic-import-node@2.3.3:
- dependencies:
- object.assign: 4.1.5
-
- babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.26.0):
- dependencies:
- '@babel/compat-data': 7.26.0
- '@babel/core': 7.26.0
- '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0)
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
-
- babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0):
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0)
- core-js-compat: 3.38.1
- transitivePeerDependencies:
- - supports-color
-
- babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.26.0):
- dependencies:
- '@babel/core': 7.26.0
- '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0)
- transitivePeerDependencies:
- - supports-color
-
- bail@2.0.2: {}
-
- balanced-match@1.0.2: {}
-
- baseline-browser-mapping@2.9.11: {}
-
- batch@0.6.1: {}
-
- big.js@5.2.2: {}
-
- binary-extensions@2.3.0: {}
-
- body-parser@1.20.3:
- dependencies:
- bytes: 3.1.2
- content-type: 1.0.5
- debug: 2.6.9
- depd: 2.0.0
- destroy: 1.2.0
- http-errors: 2.0.0
- iconv-lite: 0.4.24
- on-finished: 2.4.1
- qs: 6.13.0
- raw-body: 2.5.2
- type-is: 1.6.18
- unpipe: 1.0.0
- transitivePeerDependencies:
- - supports-color
-
- bonjour-service@1.2.1:
- dependencies:
- fast-deep-equal: 3.1.3
- multicast-dns: 7.2.5
-
- boolbase@1.0.0: {}
-
- boxen@6.2.1:
- dependencies:
- ansi-align: 3.0.1
- camelcase: 6.3.0
- chalk: 4.1.2
- cli-boxes: 3.0.0
- string-width: 5.1.2
- type-fest: 2.19.0
- widest-line: 4.0.1
- wrap-ansi: 8.1.0
-
- boxen@7.1.1:
- dependencies:
- ansi-align: 3.0.1
- camelcase: 7.0.1
- chalk: 5.3.0
- cli-boxes: 3.0.0
- string-width: 5.1.2
- type-fest: 2.19.0
- widest-line: 4.0.1
- wrap-ansi: 8.1.0
-
- brace-expansion@1.1.11:
- dependencies:
- balanced-match: 1.0.2
- concat-map: 0.0.1
-
- braces@3.0.3:
- dependencies:
- fill-range: 7.1.1
-
- browserslist@4.24.2:
- dependencies:
- caniuse-lite: 1.0.30001673
- electron-to-chromium: 1.5.47
- node-releases: 2.0.18
- update-browserslist-db: 1.1.1(browserslist@4.24.2)
-
- browserslist@4.28.1:
- dependencies:
- baseline-browser-mapping: 2.9.11
- caniuse-lite: 1.0.30001761
- electron-to-chromium: 1.5.267
- node-releases: 2.0.27
- update-browserslist-db: 1.2.3(browserslist@4.28.1)
-
- buffer-from@1.1.2: {}
-
- bundle-name@4.1.0:
- dependencies:
- run-applescript: 7.1.0
-
- bytes@3.0.0: {}
-
- bytes@3.1.2: {}
-
- cacheable-lookup@7.0.0: {}
-
- cacheable-request@10.2.14:
- dependencies:
- '@types/http-cache-semantics': 4.0.4
- get-stream: 6.0.1
- http-cache-semantics: 4.1.1
- keyv: 4.5.4
- mimic-response: 4.0.0
- normalize-url: 8.0.1
- responselike: 3.0.0
-
- call-bind-apply-helpers@1.0.2:
- dependencies:
- es-errors: 1.3.0
- function-bind: 1.1.2
-
- call-bind@1.0.7:
- dependencies:
- es-define-property: 1.0.0
- es-errors: 1.3.0
- function-bind: 1.1.2
- get-intrinsic: 1.2.4
- set-function-length: 1.2.2
-
- call-bound@1.0.4:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- get-intrinsic: 1.3.0
-
- callsites@3.1.0: {}
-
- camel-case@4.1.2:
- dependencies:
- pascal-case: 3.1.2
- tslib: 2.8.0
-
- camelcase@6.3.0: {}
-
- camelcase@7.0.1: {}
-
- caniuse-api@3.0.0:
- dependencies:
- browserslist: 4.28.1
- caniuse-lite: 1.0.30001761
- lodash.memoize: 4.1.2
- lodash.uniq: 4.5.0
-
- caniuse-lite@1.0.30001673: {}
-
- caniuse-lite@1.0.30001761: {}
-
- ccount@2.0.1: {}
-
- chalk@2.4.2:
- dependencies:
- ansi-styles: 3.2.1
- escape-string-regexp: 1.0.5
- supports-color: 5.5.0
-
- chalk@4.1.2:
- dependencies:
- ansi-styles: 4.3.0
- supports-color: 7.2.0
-
- chalk@5.3.0: {}
-
- char-regex@1.0.2: {}
-
- character-entities-html4@2.1.0: {}
-
- character-entities-legacy@3.0.0: {}
-
- character-entities@2.0.2: {}
-
- character-reference-invalid@2.0.1: {}
-
- cheerio-select@2.1.0:
- dependencies:
- boolbase: 1.0.0
- css-select: 5.1.0
- css-what: 6.1.0
- domelementtype: 2.3.0
- domhandler: 5.0.3
- domutils: 3.1.0
-
- cheerio@1.0.0-rc.12:
- dependencies:
- cheerio-select: 2.1.0
- dom-serializer: 2.0.0
- domhandler: 5.0.3
- domutils: 3.1.0
- htmlparser2: 8.0.2
- parse5: 7.2.0
- parse5-htmlparser2-tree-adapter: 7.1.0
-
- chevrotain-allstar@0.3.1(chevrotain@11.0.3):
- dependencies:
- chevrotain: 11.0.3
- lodash-es: 4.17.21
-
- chevrotain@11.0.3:
- dependencies:
- '@chevrotain/cst-dts-gen': 11.0.3
- '@chevrotain/gast': 11.0.3
- '@chevrotain/regexp-to-ast': 11.0.3
- '@chevrotain/types': 11.0.3
- '@chevrotain/utils': 11.0.3
- lodash-es: 4.17.21
-
- 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
-
- chokidar@5.0.0:
- dependencies:
- readdirp: 5.1.1
-
- chrome-trace-event@1.0.4: {}
-
- ci-info@3.9.0: {}
-
- clean-css@5.3.3:
- dependencies:
- source-map: 0.6.1
-
- clean-stack@2.2.0: {}
-
- cli-boxes@3.0.0: {}
-
- cli-table3@0.6.5:
- dependencies:
- string-width: 4.2.3
- optionalDependencies:
- '@colors/colors': 1.5.0
-
- clone-deep@4.0.1:
- dependencies:
- is-plain-object: 2.0.4
- kind-of: 6.0.3
- shallow-clone: 3.0.1
-
- clsx@1.2.1: {}
-
- clsx@2.1.1: {}
-
- coa@2.0.2:
- dependencies:
- '@types/q': 1.5.8
- chalk: 2.4.2
- q: 1.5.1
-
- collapse-white-space@2.1.0: {}
-
- color-convert@1.9.3:
- dependencies:
- color-name: 1.1.3
-
- color-convert@2.0.1:
- dependencies:
- color-name: 1.1.4
-
- color-name@1.1.3: {}
-
- color-name@1.1.4: {}
-
- colord@2.9.3: {}
-
- colorette@2.0.20: {}
-
- colorjs.io@0.7.1: {}
-
- combine-promises@1.2.0: {}
-
- comma-separated-tokens@2.0.3: {}
-
- commander@10.0.1: {}
-
- commander@2.20.3: {}
-
- commander@5.1.0: {}
-
- commander@7.2.0: {}
-
- commander@8.3.0: {}
-
- common-path-prefix@3.0.0: {}
-
- compressible@2.0.18:
- dependencies:
- mime-db: 1.54.0
-
- compression@1.7.4:
- dependencies:
- accepts: 1.3.8
- bytes: 3.0.0
- compressible: 2.0.18
- debug: 2.6.9
- on-headers: 1.0.2
- safe-buffer: 5.1.2
- vary: 1.1.2
- transitivePeerDependencies:
- - supports-color
-
- concat-map@0.0.1: {}
-
- confbox@0.1.8: {}
-
- config-chain@1.1.13:
- dependencies:
- ini: 1.3.8
- proto-list: 1.2.4
-
- configstore@6.0.0:
- dependencies:
- dot-prop: 6.0.1
- graceful-fs: 4.2.11
- unique-string: 3.0.0
- write-file-atomic: 3.0.3
- xdg-basedir: 5.1.0
-
- connect-history-api-fallback@2.0.0: {}
-
- consola@3.2.3: {}
-
- content-disposition@0.5.2: {}
-
- content-disposition@0.5.4:
- dependencies:
- safe-buffer: 5.2.1
-
- content-type@1.0.5: {}
-
- convert-source-map@2.0.0: {}
-
- cookie-signature@1.0.6: {}
-
- cookie@0.7.1: {}
-
- copy-text-to-clipboard@3.2.2: {}
-
- copy-webpack-plugin@11.0.0(webpack@5.95.0(@swc/core@1.16.0)):
- dependencies:
- fast-glob: 3.3.2
- glob-parent: 6.0.2
- globby: 13.2.2
- normalize-path: 3.0.0
- schema-utils: 4.2.0
- serialize-javascript: 6.0.2
- webpack: 5.95.0(@swc/core@1.16.0)
-
- core-js-compat@3.38.1:
- dependencies:
- browserslist: 4.24.2
-
- core-js@3.39.0: {}
-
- core-util-is@1.0.3: {}
-
- cose-base@1.0.3:
- dependencies:
- layout-base: 1.0.2
-
- cose-base@2.2.0:
- dependencies:
- layout-base: 2.0.1
-
- cosmiconfig@7.1.0:
- dependencies:
- '@types/parse-json': 4.0.2
- import-fresh: 3.3.0
- parse-json: 5.2.0
- path-type: 4.0.0
- yaml: 1.10.2
-
- cosmiconfig@8.3.6(typescript@5.6.3):
- dependencies:
- import-fresh: 3.3.0
- js-yaml: 4.1.0
- parse-json: 5.2.0
- path-type: 4.0.0
- optionalDependencies:
- typescript: 5.6.3
-
- cross-spawn@7.0.3:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
- crypto-random-string@4.0.0:
- dependencies:
- type-fest: 1.4.0
-
- css-blank-pseudo@7.0.1(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-selector-parser: 7.0.0
-
- css-declaration-sorter@7.2.0(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
-
- css-has-pseudo@7.0.3(postcss@8.5.6):
- dependencies:
- '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.0.0)
- postcss: 8.5.6
- postcss-selector-parser: 7.0.0
- postcss-value-parser: 4.2.0
-
- css-loader@6.11.0(@rspack/core@1.7.11)(webpack@5.95.0(@swc/core@1.16.0)):
- dependencies:
- icss-utils: 5.1.0(postcss@8.5.6)
- postcss: 8.5.6
- postcss-modules-extract-imports: 3.1.0(postcss@8.5.6)
- postcss-modules-local-by-default: 4.0.5(postcss@8.5.6)
- postcss-modules-scope: 3.2.0(postcss@8.5.6)
- postcss-modules-values: 4.0.0(postcss@8.5.6)
- postcss-value-parser: 4.2.0
- semver: 7.6.3
- optionalDependencies:
- '@rspack/core': 1.7.11
- webpack: 5.95.0(@swc/core@1.16.0)
-
- css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.95.0(@swc/core@1.16.0)):
- dependencies:
- '@jridgewell/trace-mapping': 0.3.25
- cssnano: 6.1.2(postcss@8.5.6)
- jest-worker: 29.7.0
- postcss: 8.5.6
- schema-utils: 4.2.0
- serialize-javascript: 6.0.2
- webpack: 5.95.0(@swc/core@1.16.0)
- optionalDependencies:
- clean-css: 5.3.3
-
- css-prefers-color-scheme@10.0.0(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
-
- css-select-base-adapter@0.1.1: {}
-
- css-select@2.1.0:
- dependencies:
- boolbase: 1.0.0
- css-what: 3.4.2
- domutils: 1.7.0
- nth-check: 1.0.2
-
- css-select@4.3.0:
- dependencies:
- boolbase: 1.0.0
- css-what: 6.1.0
- domhandler: 4.3.1
- domutils: 2.8.0
- nth-check: 2.1.1
-
- css-select@5.1.0:
- dependencies:
- boolbase: 1.0.0
- css-what: 6.1.0
- domhandler: 5.0.3
- domutils: 3.1.0
- nth-check: 2.1.1
-
- css-tree@1.0.0-alpha.37:
- dependencies:
- mdn-data: 2.0.4
- source-map: 0.6.1
-
- css-tree@1.1.3:
- dependencies:
- mdn-data: 2.0.14
- source-map: 0.6.1
-
- css-tree@2.2.1:
- dependencies:
- mdn-data: 2.0.28
- source-map-js: 1.2.1
-
- css-tree@2.3.1:
- dependencies:
- mdn-data: 2.0.30
- source-map-js: 1.2.1
-
- css-what@3.4.2: {}
-
- css-what@6.1.0: {}
-
- cssdb@8.5.2: {}
-
- cssesc@3.0.0: {}
-
- cssnano-preset-advanced@6.1.2(postcss@8.5.6):
- dependencies:
- autoprefixer: 10.4.23(postcss@8.5.6)
- browserslist: 4.28.1
- cssnano-preset-default: 6.1.2(postcss@8.5.6)
- postcss: 8.5.6
- postcss-discard-unused: 6.0.5(postcss@8.5.6)
- postcss-merge-idents: 6.0.3(postcss@8.5.6)
- postcss-reduce-idents: 6.0.3(postcss@8.5.6)
- postcss-zindex: 6.0.2(postcss@8.5.6)
-
- cssnano-preset-default@6.1.2(postcss@8.5.6):
- dependencies:
- browserslist: 4.28.1
- css-declaration-sorter: 7.2.0(postcss@8.5.6)
- cssnano-utils: 4.0.2(postcss@8.5.6)
- postcss: 8.5.6
- postcss-calc: 9.0.1(postcss@8.5.6)
- postcss-colormin: 6.1.0(postcss@8.5.6)
- postcss-convert-values: 6.1.0(postcss@8.5.6)
- postcss-discard-comments: 6.0.2(postcss@8.5.6)
- postcss-discard-duplicates: 6.0.3(postcss@8.5.6)
- postcss-discard-empty: 6.0.3(postcss@8.5.6)
- postcss-discard-overridden: 6.0.2(postcss@8.5.6)
- postcss-merge-longhand: 6.0.5(postcss@8.5.6)
- postcss-merge-rules: 6.1.1(postcss@8.5.6)
- postcss-minify-font-values: 6.1.0(postcss@8.5.6)
- postcss-minify-gradients: 6.0.3(postcss@8.5.6)
- postcss-minify-params: 6.1.0(postcss@8.5.6)
- postcss-minify-selectors: 6.0.4(postcss@8.5.6)
- postcss-normalize-charset: 6.0.2(postcss@8.5.6)
- postcss-normalize-display-values: 6.0.2(postcss@8.5.6)
- postcss-normalize-positions: 6.0.2(postcss@8.5.6)
- postcss-normalize-repeat-style: 6.0.2(postcss@8.5.6)
- postcss-normalize-string: 6.0.2(postcss@8.5.6)
- postcss-normalize-timing-functions: 6.0.2(postcss@8.5.6)
- postcss-normalize-unicode: 6.1.0(postcss@8.5.6)
- postcss-normalize-url: 6.0.2(postcss@8.5.6)
- postcss-normalize-whitespace: 6.0.2(postcss@8.5.6)
- postcss-ordered-values: 6.0.2(postcss@8.5.6)
- postcss-reduce-initial: 6.1.0(postcss@8.5.6)
- postcss-reduce-transforms: 6.0.2(postcss@8.5.6)
- postcss-svgo: 6.0.3(postcss@8.5.6)
- postcss-unique-selectors: 6.0.4(postcss@8.5.6)
-
- cssnano-utils@4.0.2(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
-
- cssnano@6.1.2(postcss@8.5.6):
- dependencies:
- cssnano-preset-default: 6.1.2(postcss@8.5.6)
- lilconfig: 3.1.2
- postcss: 8.5.6
-
- csso@4.2.0:
- dependencies:
- css-tree: 1.1.3
-
- csso@5.0.5:
- dependencies:
- css-tree: 2.2.1
-
- csstype@3.1.3: {}
-
- cytoscape-cose-bilkent@4.1.0(cytoscape@3.30.2):
- dependencies:
- cose-base: 1.0.3
- cytoscape: 3.30.2
-
- cytoscape-fcose@2.2.0(cytoscape@3.30.2):
- dependencies:
- cose-base: 2.2.0
- cytoscape: 3.30.2
-
- cytoscape@3.30.2: {}
-
- d3-array@2.12.1:
- dependencies:
- internmap: 1.0.1
-
- d3-array@3.2.4:
- dependencies:
- internmap: 2.0.3
-
- d3-axis@3.0.0: {}
-
- d3-brush@3.0.0:
- dependencies:
- d3-dispatch: 3.0.1
- d3-drag: 3.0.0
- d3-interpolate: 3.0.1
- d3-selection: 3.0.0
- d3-transition: 3.0.1(d3-selection@3.0.0)
-
- d3-chord@3.0.1:
- dependencies:
- d3-path: 3.1.0
-
- d3-color@3.1.0: {}
-
- d3-contour@4.0.2:
- dependencies:
- d3-array: 3.2.4
-
- d3-delaunay@6.0.4:
- dependencies:
- delaunator: 5.0.1
-
- d3-dispatch@3.0.1: {}
-
- d3-drag@3.0.0:
- dependencies:
- d3-dispatch: 3.0.1
- d3-selection: 3.0.0
-
- d3-dsv@3.0.1:
- dependencies:
- commander: 7.2.0
- iconv-lite: 0.6.3
- rw: 1.3.3
-
- d3-ease@3.0.1: {}
-
- d3-fetch@3.0.1:
- dependencies:
- d3-dsv: 3.0.1
-
- d3-force@3.0.0:
- dependencies:
- d3-dispatch: 3.0.1
- d3-quadtree: 3.0.1
- d3-timer: 3.0.1
-
- d3-format@3.1.0: {}
-
- d3-geo@3.1.1:
- dependencies:
- d3-array: 3.2.4
-
- d3-hierarchy@3.1.2: {}
-
- d3-interpolate@3.0.1:
- dependencies:
- d3-color: 3.1.0
-
- d3-path@1.0.9: {}
-
- d3-path@3.1.0: {}
-
- d3-polygon@3.0.1: {}
-
- d3-quadtree@3.0.1: {}
-
- d3-random@3.0.1: {}
-
- d3-sankey@0.12.3:
- dependencies:
- d3-array: 2.12.1
- d3-shape: 1.3.7
-
- d3-scale-chromatic@3.1.0:
- dependencies:
- d3-color: 3.1.0
- d3-interpolate: 3.0.1
-
- d3-scale@4.0.2:
- dependencies:
- d3-array: 3.2.4
- d3-format: 3.1.0
- d3-interpolate: 3.0.1
- d3-time: 3.1.0
- d3-time-format: 4.1.0
-
- d3-selection@3.0.0: {}
-
- d3-shape@1.3.7:
- dependencies:
- d3-path: 1.0.9
-
- d3-shape@3.2.0:
- dependencies:
- d3-path: 3.1.0
-
- d3-time-format@4.1.0:
- dependencies:
- d3-time: 3.1.0
-
- d3-time@3.1.0:
- dependencies:
- d3-array: 3.2.4
-
- d3-timer@3.0.1: {}
-
- d3-transition@3.0.1(d3-selection@3.0.0):
- dependencies:
- d3-color: 3.1.0
- d3-dispatch: 3.0.1
- d3-ease: 3.0.1
- d3-interpolate: 3.0.1
- d3-selection: 3.0.0
- d3-timer: 3.0.1
-
- d3-zoom@3.0.0:
- dependencies:
- d3-dispatch: 3.0.1
- d3-drag: 3.0.0
- d3-interpolate: 3.0.1
- d3-selection: 3.0.0
- d3-transition: 3.0.1(d3-selection@3.0.0)
-
- d3@7.9.0:
- dependencies:
- d3-array: 3.2.4
- d3-axis: 3.0.0
- d3-brush: 3.0.0
- d3-chord: 3.0.1
- d3-color: 3.1.0
- d3-contour: 4.0.2
- d3-delaunay: 6.0.4
- d3-dispatch: 3.0.1
- d3-drag: 3.0.0
- d3-dsv: 3.0.1
- d3-ease: 3.0.1
- d3-fetch: 3.0.1
- d3-force: 3.0.0
- d3-format: 3.1.0
- d3-geo: 3.1.1
- d3-hierarchy: 3.1.2
- d3-interpolate: 3.0.1
- d3-path: 3.1.0
- d3-polygon: 3.0.1
- d3-quadtree: 3.0.1
- d3-random: 3.0.1
- d3-scale: 4.0.2
- d3-scale-chromatic: 3.1.0
- d3-selection: 3.0.0
- d3-shape: 3.2.0
- d3-time: 3.1.0
- d3-time-format: 4.1.0
- d3-timer: 3.0.1
- d3-transition: 3.0.1(d3-selection@3.0.0)
- d3-zoom: 3.0.0
-
- dagre-d3-es@7.0.11:
- dependencies:
- d3: 7.9.0
- lodash-es: 4.17.21
-
- data-view-buffer@1.0.1:
- dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- is-data-view: 1.0.1
-
- data-view-byte-length@1.0.1:
- dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- is-data-view: 1.0.1
-
- data-view-byte-offset@1.0.0:
- dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- is-data-view: 1.0.1
-
- dayjs@1.11.13: {}
-
- debounce@1.2.1: {}
-
- debug@2.6.9:
- dependencies:
- ms: 2.0.0
-
- debug@4.3.7:
- dependencies:
- ms: 2.1.3
-
- decode-named-character-reference@1.0.2:
- dependencies:
- character-entities: 2.0.2
-
- decompress-response@6.0.0:
- dependencies:
- mimic-response: 3.1.0
-
- deep-extend@0.6.0: {}
-
- deepmerge@4.3.1: {}
-
- default-browser-id@5.0.1: {}
-
- default-browser@5.4.0:
- dependencies:
- bundle-name: 4.1.0
- default-browser-id: 5.0.1
-
- defer-to-connect@2.0.1: {}
-
- define-data-property@1.1.4:
- dependencies:
- es-define-property: 1.0.0
- es-errors: 1.3.0
- gopd: 1.0.1
-
- define-lazy-prop@2.0.0: {}
-
- define-lazy-prop@3.0.0: {}
-
- define-properties@1.2.1:
- dependencies:
- define-data-property: 1.1.4
- has-property-descriptors: 1.0.2
- object-keys: 1.1.1
-
- delaunator@5.0.1:
- dependencies:
- robust-predicates: 3.0.2
-
- depd@1.1.2: {}
-
- depd@2.0.0: {}
-
- dequal@2.0.3: {}
-
- destroy@1.2.0: {}
-
- detect-libc@1.0.3: {}
-
- detect-node@2.1.0: {}
-
- detect-port@2.1.0:
- dependencies:
- address: 2.0.3
-
- devlop@1.1.0:
- dependencies:
- dequal: 2.0.3
-
- dir-glob@3.0.1:
- dependencies:
- path-type: 4.0.0
-
- dns-packet@5.6.1:
- dependencies:
- '@leichtgewicht/ip-codec': 2.0.5
-
- docusaurus-plugin-image-zoom@3.0.1(@docusaurus/theme-classic@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@rspack/core@1.7.11)(@swc/core@1.16.0)(@types/react@18.3.12)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)):
- dependencies:
- '@docusaurus/theme-classic': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@rspack/core@1.7.11)(@swc/core@1.16.0)(@types/react@18.3.12)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- medium-zoom: 1.1.0
- validate-peer-dependencies: 2.2.0
-
- docusaurus-plugin-sass@0.2.6(@docusaurus/core@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3))(@rspack/core@1.7.11)(sass-embedded@1.102.0)(sass@1.102.0)(webpack@5.95.0(@swc/core@1.16.0)):
- dependencies:
- '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)))(@mdx-js/react@3.1.1(@types/react@18.3.12)(react@19.2.8))(@rspack/core@1.7.11)(@swc/core@1.16.0)(acorn@8.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.6.3)
- sass: 1.102.0
- sass-loader: 16.0.6(@rspack/core@1.7.11)(sass-embedded@1.102.0)(sass@1.102.0)(webpack@5.95.0(@swc/core@1.16.0))
- transitivePeerDependencies:
- - '@rspack/core'
- - node-sass
- - sass-embedded
- - webpack
-
- dom-converter@0.2.0:
- dependencies:
- utila: 0.4.0
-
- dom-serializer@0.2.2:
- dependencies:
- domelementtype: 2.3.0
- entities: 2.2.0
-
- dom-serializer@1.4.1:
- dependencies:
- domelementtype: 2.3.0
- domhandler: 4.3.1
- entities: 2.2.0
-
- dom-serializer@2.0.0:
- dependencies:
- domelementtype: 2.3.0
- domhandler: 5.0.3
- entities: 4.5.0
-
- domelementtype@1.3.1: {}
-
- domelementtype@2.3.0: {}
-
- domhandler@4.3.1:
- dependencies:
- domelementtype: 2.3.0
-
- domhandler@5.0.3:
- dependencies:
- domelementtype: 2.3.0
-
- dompurify@3.2.6:
- optionalDependencies:
- '@types/trusted-types': 2.0.7
-
- domutils@1.7.0:
- dependencies:
- dom-serializer: 0.2.2
- domelementtype: 1.3.1
-
- domutils@2.8.0:
- dependencies:
- dom-serializer: 1.4.1
- domelementtype: 2.3.0
- domhandler: 4.3.1
-
- domutils@3.1.0:
- dependencies:
- dom-serializer: 2.0.0
- domelementtype: 2.3.0
- domhandler: 5.0.3
-
- dot-case@3.0.4:
- dependencies:
- no-case: 3.0.4
- tslib: 2.8.0
-
- dot-prop@6.0.1:
- dependencies:
- is-obj: 2.0.0
-
- dunder-proto@1.0.1:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- es-errors: 1.3.0
- gopd: 1.2.0
-
- duplexer@0.1.2: {}
-
- eastasianwidth@0.2.0: {}
-
- ee-first@1.1.1: {}
-
- electron-to-chromium@1.5.267: {}
-
- electron-to-chromium@1.5.47: {}
-
- emoji-regex@8.0.0: {}
-
- emoji-regex@9.2.2: {}
-
- emojilib@2.4.0: {}
-
- emojis-list@3.0.0: {}
-
- emoticon@4.1.0: {}
-
- encodeurl@1.0.2: {}
-
- encodeurl@2.0.0: {}
-
- enhanced-resolve@5.17.1:
- dependencies:
- graceful-fs: 4.2.11
- tapable: 2.2.1
-
- entities@2.1.0: {}
-
- entities@2.2.0: {}
-
- entities@4.5.0: {}
-
- error-ex@1.3.2:
- dependencies:
- is-arrayish: 0.2.1
-
- es-abstract@1.23.3:
- dependencies:
- array-buffer-byte-length: 1.0.1
- arraybuffer.prototype.slice: 1.0.3
- available-typed-arrays: 1.0.7
- call-bind: 1.0.7
- data-view-buffer: 1.0.1
- data-view-byte-length: 1.0.1
- data-view-byte-offset: 1.0.0
- es-define-property: 1.0.0
- es-errors: 1.3.0
- es-object-atoms: 1.0.0
- es-set-tostringtag: 2.0.3
- es-to-primitive: 1.2.1
- function.prototype.name: 1.1.6
- get-intrinsic: 1.2.4
- get-symbol-description: 1.0.2
- globalthis: 1.0.4
- gopd: 1.0.1
- has-property-descriptors: 1.0.2
- has-proto: 1.0.3
- has-symbols: 1.0.3
- hasown: 2.0.2
- internal-slot: 1.0.7
- is-array-buffer: 3.0.4
- is-callable: 1.2.7
- is-data-view: 1.0.1
- is-negative-zero: 2.0.3
- is-regex: 1.1.4
- is-shared-array-buffer: 1.0.3
- is-string: 1.0.7
- is-typed-array: 1.1.13
- is-weakref: 1.0.2
- object-inspect: 1.13.2
- object-keys: 1.1.1
- object.assign: 4.1.5
- regexp.prototype.flags: 1.5.3
- safe-array-concat: 1.1.2
- safe-regex-test: 1.0.3
- string.prototype.trim: 1.2.9
- string.prototype.trimend: 1.0.8
- string.prototype.trimstart: 1.0.8
- typed-array-buffer: 1.0.2
- typed-array-byte-length: 1.0.1
- typed-array-byte-offset: 1.0.2
- typed-array-length: 1.0.6
- unbox-primitive: 1.0.2
- which-typed-array: 1.1.15
-
- es-array-method-boxes-properly@1.0.0: {}
-
- es-define-property@1.0.0:
- dependencies:
- get-intrinsic: 1.2.4
-
- es-define-property@1.0.1: {}
-
- es-errors@1.3.0: {}
-
- es-module-lexer@1.5.4: {}
-
- es-object-atoms@1.0.0:
- dependencies:
- es-errors: 1.3.0
-
- es-object-atoms@1.1.1:
- dependencies:
- es-errors: 1.3.0
-
- es-set-tostringtag@2.0.3:
- dependencies:
- get-intrinsic: 1.2.4
- has-tostringtag: 1.0.2
- hasown: 2.0.2
-
- es-to-primitive@1.2.1:
- dependencies:
- is-callable: 1.2.7
- is-date-object: 1.0.5
- is-symbol: 1.0.4
-
- esast-util-from-estree@2.0.0:
- dependencies:
- '@types/estree-jsx': 1.0.5
- devlop: 1.1.0
- estree-util-visit: 2.0.0
- unist-util-position-from-estree: 2.0.0
-
- esast-util-from-js@2.0.1:
- dependencies:
- '@types/estree-jsx': 1.0.5
- acorn: 8.14.0
- esast-util-from-estree: 2.0.0
- vfile-message: 4.0.2
-
- escalade@3.2.0: {}
-
- escape-goat@4.0.0: {}
-
- escape-html@1.0.3: {}
-
- escape-string-regexp@1.0.5: {}
-
- escape-string-regexp@4.0.0: {}
-
- escape-string-regexp@5.0.0: {}
-
- eslint-scope@5.1.1:
- dependencies:
- esrecurse: 4.3.0
- estraverse: 4.3.0
-
- esprima@4.0.1: {}
-
- esrecurse@4.3.0:
- dependencies:
- estraverse: 5.3.0
-
- estraverse@4.3.0: {}
-
- estraverse@5.3.0: {}
-
- estree-util-attach-comments@3.0.0:
- dependencies:
- '@types/estree': 1.0.6
-
- estree-util-build-jsx@3.0.1:
- dependencies:
- '@types/estree-jsx': 1.0.5
- devlop: 1.1.0
- estree-util-is-identifier-name: 3.0.0
- estree-walker: 3.0.3
-
- estree-util-is-identifier-name@3.0.0: {}
-
- estree-util-scope@1.0.0:
- dependencies:
- '@types/estree': 1.0.6
- devlop: 1.1.0
-
- estree-util-to-js@2.0.0:
- dependencies:
- '@types/estree-jsx': 1.0.5
- astring: 1.9.0
- source-map: 0.7.4
-
- estree-util-value-to-estree@3.1.2:
- dependencies:
- '@types/estree': 1.0.6
-
- estree-util-visit@2.0.0:
- dependencies:
- '@types/estree-jsx': 1.0.5
- '@types/unist': 3.0.3
-
- estree-walker@3.0.3:
- dependencies:
- '@types/estree': 1.0.6
-
- esutils@2.0.3: {}
-
- eta@2.2.0: {}
-
- etag@1.8.1: {}
-
- eval@0.1.8:
- dependencies:
- '@types/node': 22.8.1
- require-like: 0.1.2
-
- eventemitter3@4.0.7: {}
-
- events@3.3.0: {}
-
- execa@5.1.1:
- dependencies:
- cross-spawn: 7.0.3
- get-stream: 6.0.1
- human-signals: 2.1.0
- is-stream: 2.0.1
- merge-stream: 2.0.0
- npm-run-path: 4.0.1
- onetime: 5.1.2
- signal-exit: 3.0.7
- strip-final-newline: 2.0.0
-
- express@4.22.1:
- dependencies:
- accepts: 1.3.8
- array-flatten: 1.1.1
- body-parser: 1.20.3
- content-disposition: 0.5.4
- content-type: 1.0.5
- cookie: 0.7.1
- cookie-signature: 1.0.6
- debug: 2.6.9
- depd: 2.0.0
- encodeurl: 2.0.0
- escape-html: 1.0.3
- etag: 1.8.1
- finalhandler: 1.3.1
- fresh: 0.5.2
- http-errors: 2.0.0
- merge-descriptors: 1.0.3
- methods: 1.1.2
- on-finished: 2.4.1
- parseurl: 1.3.3
- path-to-regexp: 0.1.12
- proxy-addr: 2.0.7
- qs: 6.14.0
- range-parser: 1.2.1
- safe-buffer: 5.2.1
- send: 0.19.0
- serve-static: 1.16.2
- setprototypeof: 1.2.0
- statuses: 2.0.1
- type-is: 1.6.18
- utils-merge: 1.0.1
- vary: 1.1.2
- transitivePeerDependencies:
- - supports-color
-
- extend-shallow@2.0.1:
- dependencies:
- is-extendable: 0.1.1
-
- extend@3.0.2: {}
-
- fast-deep-equal@3.1.3: {}
-
- fast-glob@3.3.2:
- 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
-
- fast-json-stable-stringify@2.1.0: {}
-
- fast-uri@3.0.3: {}
-
- fastq@1.17.1:
- dependencies:
- reusify: 1.0.4
-
- fault@2.0.1:
- dependencies:
- format: 0.2.2
-
- faye-websocket@0.11.4:
- dependencies:
- websocket-driver: 0.7.4
-
- feed@4.2.2:
- dependencies:
- xml-js: 1.6.11
-
- file-loader@6.2.0(webpack@5.95.0(@swc/core@1.16.0)):
- dependencies:
- loader-utils: 2.0.4
- schema-utils: 3.3.0
- webpack: 5.95.0(@swc/core@1.16.0)
-
- fill-range@7.1.1:
- dependencies:
- to-regex-range: 5.0.1
-
- finalhandler@1.3.1:
- dependencies:
- debug: 2.6.9
- encodeurl: 2.0.0
- escape-html: 1.0.3
- on-finished: 2.4.1
- parseurl: 1.3.3
- statuses: 2.0.1
- unpipe: 1.0.0
- transitivePeerDependencies:
- - supports-color
-
- find-cache-dir@4.0.0:
- dependencies:
- common-path-prefix: 3.0.0
- pkg-dir: 7.0.0
-
- find-up@6.3.0:
- dependencies:
- locate-path: 7.2.0
- path-exists: 5.0.0
-
- flat@5.0.2: {}
-
- follow-redirects@1.15.9: {}
-
- for-each@0.3.3:
- dependencies:
- is-callable: 1.2.7
-
- form-data-encoder@2.1.4: {}
-
- format@0.2.2: {}
-
- forwarded@0.2.0: {}
-
- fraction.js@5.3.4: {}
-
- fresh@0.5.2: {}
-
- fs-extra@11.2.0:
- dependencies:
- graceful-fs: 4.2.11
- jsonfile: 6.1.0
- universalify: 2.0.1
-
- fsevents@2.3.3:
- optional: true
-
- function-bind@1.1.2: {}
-
- function.prototype.name@1.1.6:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- functions-have-names: 1.2.3
-
- functions-have-names@1.2.3: {}
-
- gensync@1.0.0-beta.2: {}
-
- get-intrinsic@1.2.4:
- dependencies:
- es-errors: 1.3.0
- function-bind: 1.1.2
- has-proto: 1.0.3
- has-symbols: 1.0.3
- hasown: 2.0.2
-
- get-intrinsic@1.3.0:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- es-define-property: 1.0.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- function-bind: 1.1.2
- get-proto: 1.0.1
- gopd: 1.2.0
- has-symbols: 1.1.0
- hasown: 2.0.2
- math-intrinsics: 1.1.0
-
- get-own-enumerable-property-symbols@3.0.2: {}
-
- get-proto@1.0.1:
- dependencies:
- dunder-proto: 1.0.1
- es-object-atoms: 1.1.1
-
- get-stream@6.0.1: {}
-
- get-symbol-description@1.0.2:
- dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- get-intrinsic: 1.2.4
-
- github-slugger@1.5.0: {}
-
- glob-parent@5.1.2:
- dependencies:
- is-glob: 4.0.3
-
- glob-parent@6.0.2:
- dependencies:
- is-glob: 4.0.3
-
- glob-to-regex.js@1.2.0(tslib@2.8.0):
- dependencies:
- tslib: 2.8.0
-
- glob-to-regexp@0.4.1: {}
-
- global-dirs@3.0.1:
- dependencies:
- ini: 2.0.0
-
- globals@11.12.0: {}
-
- globalthis@1.0.4:
- dependencies:
- define-properties: 1.2.1
- gopd: 1.0.1
-
- globby@11.1.0:
- dependencies:
- array-union: 2.1.0
- dir-glob: 3.0.1
- fast-glob: 3.3.2
- ignore: 5.3.2
- merge2: 1.4.1
- slash: 3.0.0
-
- globby@12.1.0:
- dependencies:
- array-union: 3.0.1
- dir-glob: 3.0.1
- fast-glob: 3.3.2
- ignore: 5.3.2
- merge2: 1.4.1
- slash: 4.0.0
-
- globby@13.2.2:
- dependencies:
- dir-glob: 3.0.1
- fast-glob: 3.3.2
- ignore: 5.3.2
- merge2: 1.4.1
- slash: 4.0.0
-
- gopd@1.0.1:
- dependencies:
- get-intrinsic: 1.2.4
-
- gopd@1.2.0: {}
-
- got@12.6.1:
- dependencies:
- '@sindresorhus/is': 5.6.0
- '@szmarczak/http-timer': 5.0.1
- cacheable-lookup: 7.0.0
- cacheable-request: 10.2.14
- decompress-response: 6.0.0
- form-data-encoder: 2.1.4
- get-stream: 6.0.1
- http2-wrapper: 2.2.1
- lowercase-keys: 3.0.0
- p-cancelable: 3.0.0
- responselike: 3.0.0
-
- graceful-fs@4.2.10: {}
-
- graceful-fs@4.2.11: {}
-
- gzip-size@6.0.0:
- dependencies:
- duplexer: 0.1.2
-
- hachure-fill@0.5.2: {}
-
- handle-thing@2.0.1: {}
-
- has-bigints@1.0.2: {}
-
- has-flag@3.0.0: {}
-
- has-flag@4.0.0: {}
-
- has-property-descriptors@1.0.2:
- dependencies:
- es-define-property: 1.0.0
-
- has-proto@1.0.3: {}
-
- has-symbols@1.0.3: {}
-
- has-symbols@1.1.0: {}
-
- has-tostringtag@1.0.2:
- dependencies:
- has-symbols: 1.0.3
-
- has-yarn@3.0.0: {}
-
- hasown@2.0.2:
- dependencies:
- function-bind: 1.1.2
-
- hast-util-from-parse5@8.0.1:
- dependencies:
- '@types/hast': 3.0.4
- '@types/unist': 3.0.3
- devlop: 1.1.0
- hastscript: 8.0.0
- property-information: 6.5.0
- vfile: 6.0.3
- vfile-location: 5.0.3
- web-namespaces: 2.0.1
-
- hast-util-is-element@1.1.0: {}
-
- hast-util-parse-selector@4.0.0:
- dependencies:
- '@types/hast': 3.0.4
-
- hast-util-raw@9.0.4:
- dependencies:
- '@types/hast': 3.0.4
- '@types/unist': 3.0.3
- '@ungap/structured-clone': 1.2.0
- hast-util-from-parse5: 8.0.1
- hast-util-to-parse5: 8.0.0
- html-void-elements: 3.0.0
- mdast-util-to-hast: 13.2.0
- parse5: 7.2.0
- unist-util-position: 5.0.0
- unist-util-visit: 5.1.0
- vfile: 6.0.3
- web-namespaces: 2.0.1
- zwitch: 2.0.4
-
- hast-util-to-estree@3.1.0:
- dependencies:
- '@types/estree': 1.0.6
- '@types/estree-jsx': 1.0.5
- '@types/hast': 3.0.4
- comma-separated-tokens: 2.0.3
- devlop: 1.1.0
- estree-util-attach-comments: 3.0.0
- estree-util-is-identifier-name: 3.0.0
- hast-util-whitespace: 3.0.0
- mdast-util-mdx-expression: 2.0.1
- mdast-util-mdx-jsx: 3.1.3
- mdast-util-mdxjs-esm: 2.0.1
- property-information: 6.5.0
- space-separated-tokens: 2.0.2
- style-to-object: 0.4.4
- unist-util-position: 5.0.0
- zwitch: 2.0.4
- transitivePeerDependencies:
- - supports-color
-
- hast-util-to-html@9.0.5:
- dependencies:
- '@types/hast': 3.0.5
- '@types/unist': 3.0.3
- ccount: 2.0.1
- comma-separated-tokens: 2.0.3
- hast-util-whitespace: 3.0.0
- html-void-elements: 3.0.0
- mdast-util-to-hast: 13.2.0
- property-information: 7.1.0
- space-separated-tokens: 2.0.2
- stringify-entities: 4.0.4
- zwitch: 2.0.4
-
- hast-util-to-jsx-runtime@2.3.2:
- dependencies:
- '@types/estree': 1.0.6
- '@types/hast': 3.0.4
- '@types/unist': 3.0.3
- comma-separated-tokens: 2.0.3
- devlop: 1.1.0
- estree-util-is-identifier-name: 3.0.0
- hast-util-whitespace: 3.0.0
- mdast-util-mdx-expression: 2.0.1
- mdast-util-mdx-jsx: 3.1.3
- mdast-util-mdxjs-esm: 2.0.1
- property-information: 6.5.0
- space-separated-tokens: 2.0.2
- style-to-object: 1.0.8
- unist-util-position: 5.0.0
- vfile-message: 4.0.2
- transitivePeerDependencies:
- - supports-color
-
- hast-util-to-parse5@8.0.0:
- dependencies:
- '@types/hast': 3.0.4
- comma-separated-tokens: 2.0.3
- devlop: 1.1.0
- property-information: 6.5.0
- space-separated-tokens: 2.0.2
- web-namespaces: 2.0.1
- zwitch: 2.0.4
-
- hast-util-to-string@3.0.1:
- dependencies:
- '@types/hast': 3.0.5
-
- hast-util-whitespace@3.0.0:
- dependencies:
- '@types/hast': 3.0.5
-
- hastscript@8.0.0:
- dependencies:
- '@types/hast': 3.0.4
- comma-separated-tokens: 2.0.3
- hast-util-parse-selector: 4.0.0
- property-information: 6.5.0
- space-separated-tokens: 2.0.2
-
- he@1.2.0: {}
-
- history@4.10.1:
- dependencies:
- '@babel/runtime': 7.26.0
- loose-envify: 1.4.0
- resolve-pathname: 3.0.0
- tiny-invariant: 1.3.3
- tiny-warning: 1.0.3
- value-equal: 1.0.1
-
- hoist-non-react-statics@3.3.2:
- dependencies:
- react-is: 16.13.1
-
- hpack.js@2.1.6:
- dependencies:
- inherits: 2.0.4
- obuf: 1.1.2
- readable-stream: 2.3.8
- wbuf: 1.7.3
-
- html-escaper@2.0.2: {}
-
- html-minifier-terser@6.1.0:
- dependencies:
- camel-case: 4.1.2
- clean-css: 5.3.3
- commander: 8.3.0
- he: 1.2.0
- param-case: 3.0.4
- relateurl: 0.2.7
- terser: 5.36.0
-
- html-minifier-terser@7.2.0:
- dependencies:
- camel-case: 4.1.2
- clean-css: 5.3.3
- commander: 10.0.1
- entities: 4.5.0
- param-case: 3.0.4
- relateurl: 0.2.7
- terser: 5.36.0
-
- html-tags@3.3.1: {}
-
- html-void-elements@3.0.0: {}
-
- html-webpack-plugin@5.6.3(@rspack/core@1.7.11)(webpack@5.95.0(@swc/core@1.16.0)):
- dependencies:
- '@types/html-minifier-terser': 6.1.0
- html-minifier-terser: 6.1.0
- lodash: 4.17.21
- pretty-error: 4.0.0
- tapable: 2.2.1
- optionalDependencies:
- '@rspack/core': 1.7.11
- webpack: 5.95.0(@swc/core@1.16.0)
-
- htmlparser2@6.1.0:
- dependencies:
- domelementtype: 2.3.0
- domhandler: 4.3.1
- domutils: 2.8.0
- entities: 2.2.0
-
- htmlparser2@8.0.2:
- dependencies:
- domelementtype: 2.3.0
- domhandler: 5.0.3
- domutils: 3.1.0
- entities: 4.5.0
-
- http-cache-semantics@4.1.1: {}
-
- http-deceiver@1.2.7: {}
-
- http-errors@1.6.3:
- dependencies:
- depd: 1.1.2
- inherits: 2.0.3
- setprototypeof: 1.1.0
- statuses: 1.5.0
-
- http-errors@2.0.0:
- dependencies:
- depd: 2.0.0
- inherits: 2.0.4
- setprototypeof: 1.2.0
- statuses: 2.0.1
- toidentifier: 1.0.1
-
- http-parser-js@0.5.8: {}
-
- http-proxy-middleware@2.0.9(@types/express@4.17.21):
- dependencies:
- '@types/http-proxy': 1.17.15
- http-proxy: 1.18.1
- is-glob: 4.0.3
- is-plain-obj: 3.0.0
- micromatch: 4.0.8
- optionalDependencies:
- '@types/express': 4.17.21
- transitivePeerDependencies:
- - debug
-
- http-proxy@1.18.1:
- dependencies:
- eventemitter3: 4.0.7
- follow-redirects: 1.15.9
- requires-port: 1.0.0
- transitivePeerDependencies:
- - debug
-
- http2-wrapper@2.2.1:
- dependencies:
- quick-lru: 5.1.1
- resolve-alpn: 1.2.1
-
- human-signals@2.1.0: {}
-
- husky@7.0.4: {}
-
- hyperdyperid@1.2.0: {}
-
- iconv-lite@0.4.24:
- dependencies:
- safer-buffer: 2.1.2
-
- iconv-lite@0.6.3:
- dependencies:
- safer-buffer: 2.1.2
-
- icss-utils@5.1.0(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
-
- ignore@5.3.2: {}
-
- image-size@2.0.2: {}
-
- immutable@5.1.5: {}
-
- import-fresh@3.3.0:
- dependencies:
- parent-module: 1.0.1
- resolve-from: 4.0.0
-
- import-lazy@4.0.0: {}
-
- imurmurhash@0.1.4: {}
-
- indent-string@4.0.0: {}
-
- infima@0.2.0-alpha.45: {}
-
- inherits@2.0.3: {}
-
- inherits@2.0.4: {}
-
- ini@1.3.8: {}
-
- ini@2.0.0: {}
-
- inline-style-parser@0.1.1: {}
-
- inline-style-parser@0.2.4: {}
-
- internal-slot@1.0.7:
- dependencies:
- es-errors: 1.3.0
- hasown: 2.0.2
- side-channel: 1.0.6
-
- internmap@1.0.1: {}
-
- internmap@2.0.3: {}
-
- invariant@2.2.4:
- dependencies:
- loose-envify: 1.4.0
-
- ipaddr.js@1.9.1: {}
-
- ipaddr.js@2.2.0: {}
-
- is-alphabetical@2.0.1: {}
-
- is-alphanumerical@2.0.1:
- dependencies:
- is-alphabetical: 2.0.1
- is-decimal: 2.0.1
-
- is-array-buffer@3.0.4:
- dependencies:
- call-bind: 1.0.7
- get-intrinsic: 1.2.4
-
- is-arrayish@0.2.1: {}
-
- is-bigint@1.0.4:
- dependencies:
- has-bigints: 1.0.2
-
- is-binary-path@2.1.0:
- dependencies:
- binary-extensions: 2.3.0
-
- is-boolean-object@1.1.2:
- dependencies:
- call-bind: 1.0.7
- has-tostringtag: 1.0.2
-
- is-callable@1.2.7: {}
-
- is-ci@3.0.1:
- dependencies:
- ci-info: 3.9.0
-
- is-core-module@2.15.1:
- dependencies:
- hasown: 2.0.2
-
- is-data-view@1.0.1:
- dependencies:
- is-typed-array: 1.1.13
-
- is-date-object@1.0.5:
- dependencies:
- has-tostringtag: 1.0.2
-
- is-decimal@2.0.1: {}
-
- is-docker@2.2.1: {}
-
- is-docker@3.0.0: {}
-
- is-extendable@0.1.1: {}
-
- is-extglob@2.1.1: {}
-
- is-fullwidth-code-point@3.0.0: {}
-
- is-glob@4.0.3:
- dependencies:
- is-extglob: 2.1.1
-
- is-hexadecimal@2.0.1: {}
-
- is-inside-container@1.0.0:
- dependencies:
- is-docker: 3.0.0
-
- is-installed-globally@0.4.0:
- dependencies:
- global-dirs: 3.0.1
- is-path-inside: 3.0.3
-
- is-negative-zero@2.0.3: {}
-
- is-network-error@1.3.0: {}
-
- is-npm@6.0.0: {}
-
- is-number-object@1.0.7:
- dependencies:
- has-tostringtag: 1.0.2
-
- is-number@7.0.0: {}
-
- is-obj@1.0.1: {}
-
- is-obj@2.0.0: {}
-
- is-path-inside@3.0.3: {}
-
- is-plain-obj@3.0.0: {}
-
- is-plain-obj@4.1.0: {}
-
- is-plain-object@2.0.4:
- dependencies:
- isobject: 3.0.1
-
- is-regex@1.1.4:
- dependencies:
- call-bind: 1.0.7
- has-tostringtag: 1.0.2
-
- is-regexp@1.0.0: {}
-
- is-shared-array-buffer@1.0.3:
- dependencies:
- call-bind: 1.0.7
-
- is-stream@2.0.1: {}
-
- is-string@1.0.7:
- dependencies:
- has-tostringtag: 1.0.2
-
- is-symbol@1.0.4:
- dependencies:
- has-symbols: 1.0.3
-
- is-typed-array@1.1.13:
- dependencies:
- which-typed-array: 1.1.15
-
- is-typedarray@1.0.0: {}
-
- is-weakref@1.0.2:
- dependencies:
- call-bind: 1.0.7
-
- is-wsl@2.2.0:
- dependencies:
- is-docker: 2.2.1
-
- is-wsl@3.1.0:
- dependencies:
- is-inside-container: 1.0.0
-
- is-yarn-global@0.4.1: {}
-
- isarray@0.0.1: {}
-
- isarray@1.0.0: {}
-
- isarray@2.0.5: {}
-
- isexe@2.0.0: {}
-
- isobject@3.0.1: {}
-
- jest-util@29.7.0:
- dependencies:
- '@jest/types': 29.6.3
- '@types/node': 22.8.1
- chalk: 4.1.2
- ci-info: 3.9.0
- graceful-fs: 4.2.11
- picomatch: 2.3.1
-
- jest-worker@27.5.1:
- dependencies:
- '@types/node': 22.8.1
- merge-stream: 2.0.0
- supports-color: 8.1.1
-
- jest-worker@29.7.0:
- dependencies:
- '@types/node': 22.8.1
- jest-util: 29.7.0
- merge-stream: 2.0.0
- supports-color: 8.1.1
-
- jiti@1.21.6: {}
-
- joi@17.13.3:
- dependencies:
- '@hapi/hoek': 9.3.0
- '@hapi/topo': 5.1.0
- '@sideway/address': 4.1.5
- '@sideway/formula': 3.0.1
- '@sideway/pinpoint': 2.0.0
-
- js-tokens@4.0.0: {}
-
- js-yaml@3.14.1:
- dependencies:
- argparse: 1.0.10
- esprima: 4.0.1
-
- js-yaml@4.1.0:
- dependencies:
- argparse: 2.0.1
-
- jsesc@3.0.2: {}
-
- json-buffer@3.0.1: {}
-
- json-parse-even-better-errors@2.3.1: {}
-
- json-schema-traverse@0.4.1: {}
-
- json-schema-traverse@1.0.0: {}
-
- json5@2.2.3: {}
-
- jsonfile@6.1.0:
- dependencies:
- universalify: 2.0.1
- optionalDependencies:
- graceful-fs: 4.2.11
-
- katex@0.16.11:
- dependencies:
- commander: 8.3.0
-
- keyv@4.5.4:
- dependencies:
- json-buffer: 3.0.1
-
- khroma@2.1.0: {}
-
- kind-of@6.0.3: {}
-
- kleur@3.0.3: {}
-
- kolorist@1.8.0: {}
-
- langium@3.3.1:
- dependencies:
- chevrotain: 11.0.3
- chevrotain-allstar: 0.3.1(chevrotain@11.0.3)
- vscode-languageserver: 9.0.1
- vscode-languageserver-textdocument: 1.0.12
- vscode-uri: 3.0.8
-
- latest-version@7.0.0:
- dependencies:
- package-json: 8.1.1
-
- launch-editor@2.9.1:
- dependencies:
- picocolors: 1.1.1
- shell-quote: 1.8.1
-
- layout-base@1.0.2: {}
-
- layout-base@2.0.1: {}
-
- leven@3.1.0: {}
-
- lightningcss-darwin-arm64@1.27.0:
- optional: true
-
- lightningcss-darwin-x64@1.27.0:
- optional: true
-
- lightningcss-freebsd-x64@1.27.0:
- optional: true
-
- lightningcss-linux-arm-gnueabihf@1.27.0:
- optional: true
-
- lightningcss-linux-arm64-gnu@1.27.0:
- optional: true
-
- lightningcss-linux-arm64-musl@1.27.0:
- optional: true
-
- lightningcss-linux-x64-gnu@1.27.0:
- optional: true
-
- lightningcss-linux-x64-musl@1.27.0:
- optional: true
-
- lightningcss-win32-arm64-msvc@1.27.0:
- optional: true
-
- lightningcss-win32-x64-msvc@1.27.0:
- optional: true
-
- lightningcss@1.27.0:
- dependencies:
- detect-libc: 1.0.3
- optionalDependencies:
- lightningcss-darwin-arm64: 1.27.0
- lightningcss-darwin-x64: 1.27.0
- lightningcss-freebsd-x64: 1.27.0
- lightningcss-linux-arm-gnueabihf: 1.27.0
- lightningcss-linux-arm64-gnu: 1.27.0
- lightningcss-linux-arm64-musl: 1.27.0
- lightningcss-linux-x64-gnu: 1.27.0
- lightningcss-linux-x64-musl: 1.27.0
- lightningcss-win32-arm64-msvc: 1.27.0
- lightningcss-win32-x64-msvc: 1.27.0
-
- lilconfig@3.1.2: {}
-
- lines-and-columns@1.2.4: {}
-
- linkify-it@3.0.3:
- dependencies:
- uc.micro: 1.0.6
-
- loader-runner@4.3.0: {}
-
- loader-utils@2.0.4:
- dependencies:
- big.js: 5.2.2
- emojis-list: 3.0.0
- json5: 2.2.3
-
- local-pkg@0.5.0:
- dependencies:
- mlly: 1.7.2
- pkg-types: 1.2.1
-
- locate-path@7.2.0:
- dependencies:
- p-locate: 6.0.0
-
- lodash-es@4.17.21: {}
-
- lodash.debounce@4.0.8: {}
-
- lodash.memoize@4.1.2: {}
-
- lodash.uniq@4.5.0: {}
-
- lodash@4.17.21: {}
-
- longest-streak@3.1.0: {}
-
- loose-envify@1.4.0:
- dependencies:
- js-tokens: 4.0.0
-
- lower-case@2.0.2:
- dependencies:
- tslib: 2.8.0
-
- lowercase-keys@3.0.0: {}
-
- lru-cache@5.1.1:
- dependencies:
- yallist: 3.1.1
-
- markdown-extensions@2.0.0: {}
-
- markdown-it@12.3.2:
- dependencies:
- argparse: 2.0.1
- entities: 2.1.0
- linkify-it: 3.0.3
- mdurl: 1.0.1
- uc.micro: 1.0.6
-
- markdown-table@3.0.3: {}
-
- markdownlint-cli2-formatter-default@0.0.3(markdownlint-cli2@0.4.0):
- dependencies:
- markdownlint-cli2: 0.4.0
-
- markdownlint-cli2@0.4.0:
- dependencies:
- globby: 12.1.0
- markdownlint: 0.25.1
- markdownlint-cli2-formatter-default: 0.0.3(markdownlint-cli2@0.4.0)
- markdownlint-rule-helpers: 0.16.0
- micromatch: 4.0.4
- strip-json-comments: 4.0.0
- yaml: 1.10.2
-
- markdownlint-rule-helpers@0.16.0: {}
-
- markdownlint@0.25.1:
- dependencies:
- markdown-it: 12.3.2
-
- marked@15.0.12: {}
-
- math-intrinsics@1.1.0: {}
-
- mdast-util-directive@3.0.0:
- dependencies:
- '@types/mdast': 4.0.4
- '@types/unist': 3.0.3
- devlop: 1.1.0
- mdast-util-from-markdown: 2.0.1
- mdast-util-to-markdown: 2.1.0
- parse-entities: 4.0.1
- stringify-entities: 4.0.4
- unist-util-visit-parents: 6.0.1
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-find-and-replace@3.0.1:
- dependencies:
- '@types/mdast': 4.0.4
- escape-string-regexp: 5.0.0
- unist-util-is: 6.0.0
- unist-util-visit-parents: 6.0.1
-
- mdast-util-from-markdown@2.0.1:
- dependencies:
- '@types/mdast': 4.0.4
- '@types/unist': 3.0.3
- decode-named-character-reference: 1.0.2
- devlop: 1.1.0
- mdast-util-to-string: 4.0.0
- micromark: 4.0.0
- micromark-util-decode-numeric-character-reference: 2.0.1
- micromark-util-decode-string: 2.0.0
- micromark-util-normalize-identifier: 2.0.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- unist-util-stringify-position: 4.0.0
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-frontmatter@2.0.1:
- dependencies:
- '@types/mdast': 4.0.4
- devlop: 1.1.0
- escape-string-regexp: 5.0.0
- mdast-util-from-markdown: 2.0.1
- mdast-util-to-markdown: 2.1.0
- micromark-extension-frontmatter: 2.0.0
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-gfm-autolink-literal@2.0.1:
- dependencies:
- '@types/mdast': 4.0.4
- ccount: 2.0.1
- devlop: 1.1.0
- mdast-util-find-and-replace: 3.0.1
- micromark-util-character: 2.1.0
-
- mdast-util-gfm-footnote@2.0.0:
- dependencies:
- '@types/mdast': 4.0.4
- devlop: 1.1.0
- mdast-util-from-markdown: 2.0.1
- mdast-util-to-markdown: 2.1.0
- micromark-util-normalize-identifier: 2.0.0
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-gfm-strikethrough@2.0.0:
- dependencies:
- '@types/mdast': 4.0.4
- mdast-util-from-markdown: 2.0.1
- mdast-util-to-markdown: 2.1.0
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-gfm-table@2.0.0:
- dependencies:
- '@types/mdast': 4.0.4
- devlop: 1.1.0
- markdown-table: 3.0.3
- mdast-util-from-markdown: 2.0.1
- mdast-util-to-markdown: 2.1.0
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-gfm-task-list-item@2.0.0:
- dependencies:
- '@types/mdast': 4.0.4
- devlop: 1.1.0
- mdast-util-from-markdown: 2.0.1
- mdast-util-to-markdown: 2.1.0
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-gfm@3.0.0:
- dependencies:
- mdast-util-from-markdown: 2.0.1
- mdast-util-gfm-autolink-literal: 2.0.1
- mdast-util-gfm-footnote: 2.0.0
- mdast-util-gfm-strikethrough: 2.0.0
- mdast-util-gfm-table: 2.0.0
- mdast-util-gfm-task-list-item: 2.0.0
- mdast-util-to-markdown: 2.1.0
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-mdx-expression@2.0.1:
- dependencies:
- '@types/estree-jsx': 1.0.5
- '@types/hast': 3.0.4
- '@types/mdast': 4.0.4
- devlop: 1.1.0
- mdast-util-from-markdown: 2.0.1
- mdast-util-to-markdown: 2.1.0
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-mdx-jsx@3.1.3:
- dependencies:
- '@types/estree-jsx': 1.0.5
- '@types/hast': 3.0.4
- '@types/mdast': 4.0.4
- '@types/unist': 3.0.3
- ccount: 2.0.1
- devlop: 1.1.0
- mdast-util-from-markdown: 2.0.1
- mdast-util-to-markdown: 2.1.0
- parse-entities: 4.0.1
- stringify-entities: 4.0.4
- unist-util-stringify-position: 4.0.0
- vfile-message: 4.0.2
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-mdx@3.0.0:
- dependencies:
- mdast-util-from-markdown: 2.0.1
- mdast-util-mdx-expression: 2.0.1
- mdast-util-mdx-jsx: 3.1.3
- mdast-util-mdxjs-esm: 2.0.1
- mdast-util-to-markdown: 2.1.0
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-mdxjs-esm@2.0.1:
- dependencies:
- '@types/estree-jsx': 1.0.5
- '@types/hast': 3.0.4
- '@types/mdast': 4.0.4
- devlop: 1.1.0
- mdast-util-from-markdown: 2.0.1
- mdast-util-to-markdown: 2.1.0
- transitivePeerDependencies:
- - supports-color
-
- mdast-util-phrasing@4.1.0:
- dependencies:
- '@types/mdast': 4.0.4
- unist-util-is: 6.0.0
-
- mdast-util-to-hast@13.2.0:
- dependencies:
- '@types/hast': 3.0.5
- '@types/mdast': 4.0.4
- '@ungap/structured-clone': 1.2.0
- devlop: 1.1.0
- micromark-util-sanitize-uri: 2.0.0
- trim-lines: 3.0.1
- unist-util-position: 5.0.0
- unist-util-visit: 5.1.0
- vfile: 6.0.3
-
- mdast-util-to-markdown@2.1.0:
- dependencies:
- '@types/mdast': 4.0.4
- '@types/unist': 3.0.3
- longest-streak: 3.1.0
- mdast-util-phrasing: 4.1.0
- mdast-util-to-string: 4.0.0
- micromark-util-decode-string: 2.0.0
- unist-util-visit: 5.1.0
- zwitch: 2.0.4
+ d3-ease@3.0.1: {}
- mdast-util-to-string@4.0.0:
+ d3-fetch@3.0.1:
dependencies:
- '@types/mdast': 4.0.4
-
- mdn-data@2.0.14: {}
-
- mdn-data@2.0.28: {}
-
- mdn-data@2.0.30: {}
-
- mdn-data@2.0.4: {}
-
- mdurl@1.0.1: {}
-
- media-typer@0.3.0: {}
-
- medium-zoom@1.1.0: {}
+ d3-dsv: 3.0.1
- meilisearch-docsearch@0.8.0:
+ d3-force@3.0.0:
dependencies:
- meilisearch: 0.50.0
- solid-js: 1.9.5
+ d3-dispatch: 3.0.1
+ d3-quadtree: 3.0.1
+ d3-timer: 3.0.1
- meilisearch@0.50.0: {}
+ d3-format@3.1.2: {}
- memfs@4.51.1:
+ d3-geo@3.1.1:
dependencies:
- '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.0)
- '@jsonjoy.com/util': 1.9.0(tslib@2.8.0)
- glob-to-regex.js: 1.2.0(tslib@2.8.0)
- thingies: 2.5.0(tslib@2.8.0)
- tree-dump: 1.1.0(tslib@2.8.0)
- tslib: 2.8.0
-
- merge-descriptors@1.0.3: {}
-
- merge-stream@2.0.0: {}
+ d3-array: 3.2.4
- merge2@1.4.1: {}
+ d3-hierarchy@3.1.2: {}
- mermaid@11.6.0:
+ d3-interpolate@3.0.1:
dependencies:
- '@braintree/sanitize-url': 7.1.0
- '@iconify/utils': 2.1.33
- '@mermaid-js/parser': 0.4.0
- '@types/d3': 7.4.3
- cytoscape: 3.30.2
- cytoscape-cose-bilkent: 4.1.0(cytoscape@3.30.2)
- cytoscape-fcose: 2.2.0(cytoscape@3.30.2)
- d3: 7.9.0
- d3-sankey: 0.12.3
- dagre-d3-es: 7.0.11
- dayjs: 1.11.13
- dompurify: 3.2.6
- katex: 0.16.11
- khroma: 2.1.0
- lodash-es: 4.17.21
- marked: 15.0.12
- roughjs: 4.6.6
- stylis: 4.3.6
- ts-dedent: 2.2.0
- uuid: 11.1.0
- transitivePeerDependencies:
- - supports-color
+ d3-color: 3.1.0
- methods@1.1.2: {}
+ d3-path@1.0.9: {}
- micromark-core-commonmark@2.0.1:
- dependencies:
- decode-named-character-reference: 1.0.2
- devlop: 1.1.0
- micromark-factory-destination: 2.0.0
- micromark-factory-label: 2.0.0
- micromark-factory-space: 2.0.0
- micromark-factory-title: 2.0.0
- micromark-factory-whitespace: 2.0.0
- micromark-util-character: 2.1.0
- micromark-util-chunked: 2.0.0
- micromark-util-classify-character: 2.0.0
- micromark-util-html-tag-name: 2.0.0
- micromark-util-normalize-identifier: 2.0.0
- micromark-util-resolve-all: 2.0.0
- micromark-util-subtokenize: 2.0.1
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
-
- micromark-extension-directive@3.0.2:
- dependencies:
- devlop: 1.1.0
- micromark-factory-space: 2.0.0
- micromark-factory-whitespace: 2.0.0
- micromark-util-character: 2.1.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- parse-entities: 4.0.1
+ d3-path@3.1.0: {}
- micromark-extension-frontmatter@2.0.0:
- dependencies:
- fault: 2.0.1
- micromark-util-character: 2.1.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
+ d3-polygon@3.0.1: {}
- micromark-extension-gfm-autolink-literal@2.1.0:
- dependencies:
- micromark-util-character: 2.1.0
- micromark-util-sanitize-uri: 2.0.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
+ d3-quadtree@3.0.1: {}
- micromark-extension-gfm-footnote@2.1.0:
- dependencies:
- devlop: 1.1.0
- micromark-core-commonmark: 2.0.1
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.1.0
- micromark-util-normalize-identifier: 2.0.0
- micromark-util-sanitize-uri: 2.0.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
+ d3-random@3.0.1: {}
- micromark-extension-gfm-strikethrough@2.1.0:
+ d3-sankey@0.12.3:
dependencies:
- devlop: 1.1.0
- micromark-util-chunked: 2.0.0
- micromark-util-classify-character: 2.0.0
- micromark-util-resolve-all: 2.0.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
+ d3-array: 2.12.1
+ d3-shape: 1.3.7
- micromark-extension-gfm-table@2.1.0:
+ d3-scale-chromatic@3.1.0:
dependencies:
- devlop: 1.1.0
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.1.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
+ d3-color: 3.1.0
+ d3-interpolate: 3.0.1
- micromark-extension-gfm-tagfilter@2.0.0:
+ d3-scale@4.0.2:
dependencies:
- micromark-util-types: 2.0.0
+ d3-array: 3.2.4
+ d3-format: 3.1.2
+ d3-interpolate: 3.0.1
+ d3-time: 3.1.0
+ d3-time-format: 4.1.0
- micromark-extension-gfm-task-list-item@2.1.0:
- dependencies:
- devlop: 1.1.0
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.1.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
+ d3-selection@3.0.0: {}
- micromark-extension-gfm@3.0.0:
+ d3-shape@1.3.7:
dependencies:
- micromark-extension-gfm-autolink-literal: 2.1.0
- micromark-extension-gfm-footnote: 2.1.0
- micromark-extension-gfm-strikethrough: 2.1.0
- micromark-extension-gfm-table: 2.1.0
- micromark-extension-gfm-tagfilter: 2.0.0
- micromark-extension-gfm-task-list-item: 2.1.0
- micromark-util-combine-extensions: 2.0.0
- micromark-util-types: 2.0.0
+ d3-path: 1.0.9
- micromark-extension-mdx-expression@3.0.0:
+ d3-shape@3.2.0:
dependencies:
- '@types/estree': 1.0.6
- devlop: 1.1.0
- micromark-factory-mdx-expression: 2.0.2
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.1.0
- micromark-util-events-to-acorn: 2.0.2
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
+ d3-path: 3.1.0
- micromark-extension-mdx-jsx@3.0.1:
+ d3-time-format@4.1.0:
dependencies:
- '@types/acorn': 4.0.6
- '@types/estree': 1.0.6
- devlop: 1.1.0
- estree-util-is-identifier-name: 3.0.0
- micromark-factory-mdx-expression: 2.0.2
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.1.0
- micromark-util-events-to-acorn: 2.0.2
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- vfile-message: 4.0.2
+ d3-time: 3.1.0
- micromark-extension-mdx-md@2.0.0:
+ d3-time@3.1.0:
dependencies:
- micromark-util-types: 2.0.0
+ d3-array: 3.2.4
- micromark-extension-mdxjs-esm@3.0.0:
- dependencies:
- '@types/estree': 1.0.6
- devlop: 1.1.0
- micromark-core-commonmark: 2.0.1
- micromark-util-character: 2.1.0
- micromark-util-events-to-acorn: 2.0.2
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- unist-util-position-from-estree: 2.0.0
- vfile-message: 4.0.2
+ d3-timer@3.0.1: {}
- micromark-extension-mdxjs@3.0.0:
+ d3-transition@3.0.1(d3-selection@3.0.0):
dependencies:
- acorn: 8.14.0
- acorn-jsx: 5.3.2(acorn@8.14.0)
- micromark-extension-mdx-expression: 3.0.0
- micromark-extension-mdx-jsx: 3.0.1
- micromark-extension-mdx-md: 2.0.0
- micromark-extension-mdxjs-esm: 3.0.0
- micromark-util-combine-extensions: 2.0.0
- micromark-util-types: 2.0.0
+ d3-color: 3.1.0
+ d3-dispatch: 3.0.1
+ d3-ease: 3.0.1
+ d3-interpolate: 3.0.1
+ d3-selection: 3.0.0
+ d3-timer: 3.0.1
- micromark-factory-destination@2.0.0:
+ d3-zoom@3.0.0:
dependencies:
- micromark-util-character: 2.1.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
+ d3-dispatch: 3.0.1
+ d3-drag: 3.0.0
+ d3-interpolate: 3.0.1
+ d3-selection: 3.0.0
+ d3-transition: 3.0.1(d3-selection@3.0.0)
- micromark-factory-label@2.0.0:
+ d3@7.9.0:
dependencies:
- devlop: 1.1.0
- micromark-util-character: 2.1.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
+ d3-array: 3.2.4
+ d3-axis: 3.0.0
+ d3-brush: 3.0.0
+ d3-chord: 3.0.1
+ d3-color: 3.1.0
+ d3-contour: 4.0.2
+ d3-delaunay: 6.0.4
+ d3-dispatch: 3.0.1
+ d3-drag: 3.0.0
+ d3-dsv: 3.0.1
+ d3-ease: 3.0.1
+ d3-fetch: 3.0.1
+ d3-force: 3.0.0
+ d3-format: 3.1.2
+ d3-geo: 3.1.1
+ d3-hierarchy: 3.1.2
+ d3-interpolate: 3.0.1
+ d3-path: 3.1.0
+ d3-polygon: 3.0.1
+ d3-quadtree: 3.0.1
+ d3-random: 3.0.1
+ d3-scale: 4.0.2
+ d3-scale-chromatic: 3.1.0
+ d3-selection: 3.0.0
+ d3-shape: 3.2.0
+ d3-time: 3.1.0
+ d3-time-format: 4.1.0
+ d3-timer: 3.0.1
+ d3-transition: 3.0.1(d3-selection@3.0.0)
+ d3-zoom: 3.0.0
- micromark-factory-mdx-expression@2.0.2:
+ dagre-d3-es@7.0.13:
dependencies:
- '@types/estree': 1.0.6
- devlop: 1.1.0
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.1.0
- micromark-util-events-to-acorn: 2.0.2
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- unist-util-position-from-estree: 2.0.0
- vfile-message: 4.0.2
+ d3: 7.9.0
+ lodash-es: 4.18.1
- micromark-factory-space@1.1.0:
- dependencies:
- micromark-util-character: 1.2.0
- micromark-util-types: 1.1.0
+ dayjs@1.11.23: {}
- micromark-factory-space@2.0.0:
+ debug@4.4.3(supports-color@9.4.0):
dependencies:
- micromark-util-character: 2.1.0
- micromark-util-types: 2.0.0
+ ms: 2.1.3
+ optionalDependencies:
+ supports-color: 9.4.0
- micromark-factory-title@2.0.0:
+ decode-named-character-reference@1.3.0:
dependencies:
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.1.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
+ character-entities: 2.0.2
- micromark-factory-whitespace@2.0.0:
- dependencies:
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.1.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
+ deepmerge@4.3.1: {}
- micromark-util-character@1.2.0:
+ delaunator@5.1.0:
dependencies:
- micromark-util-symbol: 1.1.0
- micromark-util-types: 1.1.0
+ robust-predicates: 3.0.3
- micromark-util-character@2.1.0:
- dependencies:
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
+ dequal@2.0.3: {}
- micromark-util-chunked@2.0.0:
- dependencies:
- micromark-util-symbol: 2.0.0
+ detect-libc@2.1.2:
+ optional: true
- micromark-util-classify-character@2.0.0:
+ devlop@1.1.0:
dependencies:
- micromark-util-character: 2.1.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
+ dequal: 2.0.3
- micromark-util-combine-extensions@2.0.0:
- dependencies:
- micromark-util-chunked: 2.0.0
- micromark-util-types: 2.0.0
+ diff@5.2.2: {}
- micromark-util-decode-numeric-character-reference@2.0.1:
- dependencies:
- micromark-util-symbol: 2.0.0
+ dompurify@3.4.14:
+ optionalDependencies:
+ '@types/trusted-types': 2.0.7
- micromark-util-decode-string@2.0.0:
- dependencies:
- decode-named-character-reference: 1.0.2
- micromark-util-character: 2.1.0
- micromark-util-decode-numeric-character-reference: 2.0.1
- micromark-util-symbol: 2.0.0
+ eastasianwidth@0.2.0: {}
+
+ elkjs@0.9.3: {}
+
+ emoji-regex@10.6.0: {}
+
+ emojis-list@3.0.0: {}
- micromark-util-encode@2.0.0: {}
+ entities@6.0.1: {}
- micromark-util-events-to-acorn@2.0.2:
+ esast-util-from-estree@2.0.0:
dependencies:
- '@types/acorn': 4.0.6
- '@types/estree': 1.0.6
- '@types/unist': 3.0.3
+ '@types/estree-jsx': 1.0.5
devlop: 1.1.0
estree-util-visit: 2.0.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- vfile-message: 4.0.2
-
- micromark-util-html-tag-name@2.0.0: {}
+ unist-util-position-from-estree: 2.0.0
- micromark-util-normalize-identifier@2.0.0:
+ esast-util-from-js@2.0.1:
dependencies:
- micromark-util-symbol: 2.0.0
+ '@types/estree-jsx': 1.0.5
+ acorn: 8.18.0
+ esast-util-from-estree: 2.0.0
+ vfile-message: 4.0.3
- micromark-util-resolve-all@2.0.0:
- dependencies:
- micromark-util-types: 2.0.0
+ escape-string-regexp@5.0.0: {}
- micromark-util-sanitize-uri@2.0.0:
+ estree-util-attach-comments@3.0.0:
dependencies:
- micromark-util-character: 2.1.0
- micromark-util-encode: 2.0.0
- micromark-util-symbol: 2.0.0
+ '@types/estree': 1.0.9
- micromark-util-subtokenize@2.0.1:
+ estree-util-build-jsx@3.0.1:
dependencies:
+ '@types/estree-jsx': 1.0.5
devlop: 1.1.0
- micromark-util-chunked: 2.0.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
-
- micromark-util-symbol@1.1.0: {}
-
- micromark-util-symbol@2.0.0: {}
-
- micromark-util-types@1.1.0: {}
+ estree-util-is-identifier-name: 3.0.0
+ estree-walker: 3.0.3
- micromark-util-types@2.0.0: {}
+ estree-util-is-identifier-name@3.0.0: {}
- micromark@4.0.0:
+ estree-util-scope@1.0.0:
dependencies:
- '@types/debug': 4.1.12
- debug: 4.3.7
- decode-named-character-reference: 1.0.2
+ '@types/estree': 1.0.9
devlop: 1.1.0
- micromark-core-commonmark: 2.0.1
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.1.0
- micromark-util-chunked: 2.0.0
- micromark-util-combine-extensions: 2.0.0
- micromark-util-decode-numeric-character-reference: 2.0.1
- micromark-util-encode: 2.0.0
- micromark-util-normalize-identifier: 2.0.0
- micromark-util-resolve-all: 2.0.0
- micromark-util-sanitize-uri: 2.0.0
- micromark-util-subtokenize: 2.0.1
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- transitivePeerDependencies:
- - supports-color
- micromatch@4.0.4:
+ estree-util-to-js@2.0.0:
dependencies:
- braces: 3.0.3
- picomatch: 2.3.1
+ '@types/estree-jsx': 1.0.5
+ astring: 1.9.0
+ source-map: 0.7.6
- micromatch@4.0.8:
+ estree-util-visit@2.0.0:
dependencies:
- braces: 3.0.3
- picomatch: 2.3.1
-
- mime-db@1.33.0: {}
-
- mime-db@1.52.0: {}
-
- mime-db@1.54.0: {}
+ '@types/estree-jsx': 1.0.5
+ '@types/unist': 3.0.3
- mime-types@2.1.18:
+ estree-walker@3.0.3:
dependencies:
- mime-db: 1.33.0
+ '@types/estree': 1.0.9
- mime-types@2.1.35:
- dependencies:
- mime-db: 1.52.0
+ extend@3.0.2: {}
- mime-types@3.0.2:
- dependencies:
- mime-db: 1.54.0
+ fdir@6.5.0(picomatch@4.0.7):
+ optionalDependencies:
+ picomatch: 4.0.7
- mime@1.6.0: {}
+ flat@6.0.1: {}
- mimic-fn@2.1.0: {}
+ flexsearch@0.8.212: {}
- mimic-response@3.1.0: {}
+ get-east-asian-width@1.6.0: {}
- mimic-response@4.0.0: {}
+ has-flag@4.0.0: {}
- mini-css-extract-plugin@2.9.4(webpack@5.95.0(@swc/core@1.16.0)):
+ hast-util-from-parse5@8.0.3:
dependencies:
- schema-utils: 4.2.0
- tapable: 2.2.1
- webpack: 5.95.0(@swc/core@1.16.0)
-
- minimalistic-assert@1.0.1: {}
+ '@types/hast': 3.0.5
+ '@types/unist': 3.0.3
+ devlop: 1.1.0
+ hastscript: 9.0.1
+ property-information: 7.2.0
+ vfile: 6.0.3
+ vfile-location: 5.0.3
+ web-namespaces: 2.0.1
- minimatch@3.1.5:
+ hast-util-heading-rank@3.0.0:
dependencies:
- brace-expansion: 1.1.11
-
- minimist@1.2.8: {}
+ '@types/hast': 3.0.5
- mkdirp@0.5.6:
+ hast-util-is-element@3.0.0:
dependencies:
- minimist: 1.2.8
+ '@types/hast': 3.0.5
- mlly@1.7.2:
+ hast-util-parse-selector@4.0.0:
dependencies:
- acorn: 8.14.0
- pathe: 1.1.2
- pkg-types: 1.2.1
- ufo: 1.5.4
-
- mrmime@2.0.0: {}
-
- ms@2.0.0: {}
+ '@types/hast': 3.0.5
- ms@2.1.3: {}
+ hast-util-raw@9.1.0:
+ dependencies:
+ '@types/hast': 3.0.5
+ '@types/unist': 3.0.3
+ '@ungap/structured-clone': 1.3.3
+ hast-util-from-parse5: 8.0.3
+ hast-util-to-parse5: 8.0.1
+ html-void-elements: 3.0.0
+ mdast-util-to-hast: 13.2.1
+ parse5: 7.3.0
+ unist-util-position: 5.0.0
+ unist-util-visit: 5.1.0
+ vfile: 6.0.3
+ web-namespaces: 2.0.1
+ zwitch: 2.0.4
- multicast-dns@7.2.5:
+ hast-util-to-estree@3.1.3(supports-color@9.4.0):
dependencies:
- dns-packet: 5.6.1
- thunky: 1.1.0
+ '@types/estree': 1.0.9
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.5
+ comma-separated-tokens: 2.0.3
+ devlop: 1.1.0
+ estree-util-attach-comments: 3.0.0
+ estree-util-is-identifier-name: 3.0.0
+ hast-util-whitespace: 3.0.0
+ mdast-util-mdx-expression: 2.0.1(supports-color@9.4.0)
+ mdast-util-mdx-jsx: 3.2.0(supports-color@9.4.0)
+ mdast-util-mdxjs-esm: 2.0.1(supports-color@9.4.0)
+ property-information: 7.2.0
+ space-separated-tokens: 2.0.2
+ style-to-js: 1.1.21
+ unist-util-position: 5.0.0
+ zwitch: 2.0.4
+ transitivePeerDependencies:
+ - supports-color
- nanoid@3.3.11: {}
+ hast-util-to-html@9.0.5:
+ dependencies:
+ '@types/hast': 3.0.5
+ '@types/unist': 3.0.3
+ ccount: 2.0.1
+ comma-separated-tokens: 2.0.3
+ hast-util-whitespace: 3.0.0
+ html-void-elements: 3.0.0
+ mdast-util-to-hast: 13.2.1
+ property-information: 7.2.0
+ space-separated-tokens: 2.0.2
+ stringify-entities: 4.0.4
+ zwitch: 2.0.4
- negotiator@0.6.3: {}
+ hast-util-to-jsx-runtime@2.3.6(supports-color@9.4.0):
+ dependencies:
+ '@types/estree': 1.0.9
+ '@types/hast': 3.0.5
+ '@types/unist': 3.0.3
+ comma-separated-tokens: 2.0.3
+ devlop: 1.1.0
+ estree-util-is-identifier-name: 3.0.0
+ hast-util-whitespace: 3.0.0
+ mdast-util-mdx-expression: 2.0.1(supports-color@9.4.0)
+ mdast-util-mdx-jsx: 3.2.0(supports-color@9.4.0)
+ mdast-util-mdxjs-esm: 2.0.1(supports-color@9.4.0)
+ property-information: 7.2.0
+ space-separated-tokens: 2.0.2
+ style-to-js: 1.1.21
+ unist-util-position: 5.0.0
+ vfile-message: 4.0.3
+ transitivePeerDependencies:
+ - supports-color
- neo-async@2.6.2: {}
+ hast-util-to-parse5@8.0.1:
+ dependencies:
+ '@types/hast': 3.0.5
+ comma-separated-tokens: 2.0.3
+ devlop: 1.1.0
+ property-information: 7.2.0
+ space-separated-tokens: 2.0.2
+ web-namespaces: 2.0.1
+ zwitch: 2.0.4
- no-case@3.0.4:
+ hast-util-to-string@3.0.1:
dependencies:
- lower-case: 2.0.2
- tslib: 2.8.0
+ '@types/hast': 3.0.5
- node-addon-api@7.1.1:
- optional: true
+ hast-util-whitespace@3.0.0:
+ dependencies:
+ '@types/hast': 3.0.5
- node-emoji@2.1.3:
+ hastscript@9.0.1:
dependencies:
- '@sindresorhus/is': 4.6.0
- char-regex: 1.0.2
- emojilib: 2.4.0
- skin-tone: 2.0.0
+ '@types/hast': 3.0.5
+ comma-separated-tokens: 2.0.3
+ hast-util-parse-selector: 4.0.0
+ property-information: 7.2.0
+ space-separated-tokens: 2.0.2
- node-forge@1.3.1: {}
+ hookable@6.1.1: {}
- node-releases@2.0.18: {}
+ html-void-elements@3.0.0: {}
- node-releases@2.0.27: {}
+ iconv-lite@0.6.3:
+ dependencies:
+ safer-buffer: 2.1.2
- normalize-path@3.0.0: {}
+ immutable@5.1.9: {}
- normalize-url@8.0.1: {}
+ inline-style-parser@0.2.7: {}
- npm-run-path@4.0.1:
- dependencies:
- path-key: 3.1.1
+ internmap@1.0.1: {}
- nprogress@0.2.0: {}
+ internmap@2.0.3: {}
- nth-check@1.0.2:
- dependencies:
- boolbase: 1.0.0
+ is-absolute-url@4.0.1: {}
- nth-check@2.1.1:
- dependencies:
- boolbase: 1.0.0
+ is-alphabetical@2.0.1: {}
- null-loader@4.0.1(webpack@5.95.0(@swc/core@1.16.0)):
+ is-alphanumerical@2.0.1:
dependencies:
- loader-utils: 2.0.4
- schema-utils: 3.3.0
- webpack: 5.95.0(@swc/core@1.16.0)
-
- object-assign@4.1.1: {}
-
- object-inspect@1.13.2: {}
+ is-alphabetical: 2.0.1
+ is-decimal: 2.0.1
- object-inspect@1.13.4: {}
+ is-decimal@2.0.1: {}
- object-keys@1.1.1: {}
+ is-extglob@2.1.1:
+ optional: true
- object.assign@4.1.5:
+ is-glob@4.0.3:
dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- has-symbols: 1.0.3
- object-keys: 1.1.1
+ is-extglob: 2.1.1
+ optional: true
- object.getownpropertydescriptors@2.1.8:
- dependencies:
- array.prototype.reduce: 1.0.7
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- es-object-atoms: 1.0.0
- gopd: 1.0.1
- safe-array-concat: 1.1.2
+ is-hexadecimal@2.0.1: {}
- object.values@1.2.0:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-object-atoms: 1.0.0
+ is-plain-obj@4.1.0: {}
- obuf@1.1.2: {}
+ json5@2.2.3: {}
- on-finished@2.4.1:
+ katex@0.16.47:
dependencies:
- ee-first: 1.1.1
-
- on-headers@1.0.2: {}
+ commander: 8.3.0
- onetime@5.1.2:
- dependencies:
- mimic-fn: 2.1.0
+ khroma@2.1.0: {}
- oniguruma-parser@0.12.2: {}
+ kleur@4.1.5: {}
- oniguruma-to-es@4.3.6:
- dependencies:
- oniguruma-parser: 0.12.2
- regex: 6.1.0
- regex-recursion: 6.0.2
+ layout-base@1.0.2: {}
- open@10.2.0:
+ loader-utils@2.0.4:
dependencies:
- default-browser: 5.4.0
- define-lazy-prop: 3.0.0
- is-inside-container: 1.0.0
- wsl-utils: 0.1.0
+ big.js: 5.2.2
+ emojis-list: 3.0.0
+ json5: 2.2.3
- open@8.4.2:
- dependencies:
- define-lazy-prop: 2.0.0
- is-docker: 2.2.1
- is-wsl: 2.2.0
+ lodash-es@4.18.1: {}
- opener@1.5.2: {}
+ longest-streak@3.1.0: {}
- p-cancelable@3.0.0: {}
+ markdown-extensions@2.0.0: {}
- p-finally@1.0.0: {}
+ markdown-table@3.0.4: {}
- p-limit@4.0.0:
+ mdast-util-find-and-replace@3.0.2:
dependencies:
- yocto-queue: 1.1.1
+ '@types/mdast': 4.0.4
+ escape-string-regexp: 5.0.0
+ unist-util-is: 6.0.1
+ unist-util-visit-parents: 6.0.2
- p-locate@6.0.0:
+ mdast-util-from-markdown@1.3.1(supports-color@9.4.0):
dependencies:
- p-limit: 4.0.0
+ '@types/mdast': 3.0.15
+ '@types/unist': 2.0.11
+ decode-named-character-reference: 1.3.0
+ mdast-util-to-string: 3.2.0
+ micromark: 3.2.0(supports-color@9.4.0)
+ micromark-util-decode-numeric-character-reference: 1.1.0
+ micromark-util-decode-string: 1.1.0
+ micromark-util-normalize-identifier: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ unist-util-stringify-position: 3.0.3
+ uvu: 0.5.6
+ transitivePeerDependencies:
+ - supports-color
- p-map@4.0.0:
+ mdast-util-from-markdown@2.0.3(supports-color@9.4.0):
dependencies:
- aggregate-error: 3.1.0
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ decode-named-character-reference: 1.3.0
+ devlop: 1.1.0
+ mdast-util-to-string: 4.0.0
+ micromark: 4.0.2(supports-color@9.4.0)
+ micromark-util-decode-numeric-character-reference: 2.0.2
+ micromark-util-decode-string: 2.0.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+ unist-util-stringify-position: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
- p-queue@6.6.2:
+ mdast-util-gfm-autolink-literal@2.0.1:
dependencies:
- eventemitter3: 4.0.7
- p-timeout: 3.2.0
+ '@types/mdast': 4.0.4
+ ccount: 2.0.1
+ devlop: 1.1.0
+ mdast-util-find-and-replace: 3.0.2
+ micromark-util-character: 2.1.1
- p-retry@6.2.1:
+ mdast-util-gfm-footnote@2.1.0(supports-color@9.4.0):
dependencies:
- '@types/retry': 0.12.2
- is-network-error: 1.3.0
- retry: 0.13.1
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.3(supports-color@9.4.0)
+ mdast-util-to-markdown: 2.1.2
+ micromark-util-normalize-identifier: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
- p-timeout@3.2.0:
+ mdast-util-gfm-strikethrough@2.0.0(supports-color@9.4.0):
dependencies:
- p-finally: 1.0.0
+ '@types/mdast': 4.0.4
+ mdast-util-from-markdown: 2.0.3(supports-color@9.4.0)
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
- package-json@8.1.1:
+ mdast-util-gfm-table@2.0.0(supports-color@9.4.0):
dependencies:
- got: 12.6.1
- registry-auth-token: 5.0.2
- registry-url: 6.0.1
- semver: 7.6.3
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ markdown-table: 3.0.4
+ mdast-util-from-markdown: 2.0.3(supports-color@9.4.0)
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
- package-manager-detector@0.2.2: {}
+ mdast-util-gfm-task-list-item@2.0.0(supports-color@9.4.0):
+ dependencies:
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.3(supports-color@9.4.0)
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
- param-case@3.0.4:
+ mdast-util-gfm@3.1.0(supports-color@9.4.0):
dependencies:
- dot-case: 3.0.4
- tslib: 2.8.0
+ mdast-util-from-markdown: 2.0.3(supports-color@9.4.0)
+ mdast-util-gfm-autolink-literal: 2.0.1
+ mdast-util-gfm-footnote: 2.1.0(supports-color@9.4.0)
+ mdast-util-gfm-strikethrough: 2.0.0(supports-color@9.4.0)
+ mdast-util-gfm-table: 2.0.0(supports-color@9.4.0)
+ mdast-util-gfm-task-list-item: 2.0.0(supports-color@9.4.0)
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
- parent-module@1.0.1:
+ mdast-util-mdx-expression@2.0.1(supports-color@9.4.0):
dependencies:
- callsites: 3.1.0
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.5
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.3(supports-color@9.4.0)
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
- parse-entities@4.0.1:
+ mdast-util-mdx-jsx@3.2.0(supports-color@9.4.0):
dependencies:
- '@types/unist': 2.0.11
- character-entities: 2.0.2
- character-entities-legacy: 3.0.0
- character-reference-invalid: 2.0.1
- decode-named-character-reference: 1.0.2
- is-alphanumerical: 2.0.1
- is-decimal: 2.0.1
- is-hexadecimal: 2.0.1
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.5
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ ccount: 2.0.1
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.3(supports-color@9.4.0)
+ mdast-util-to-markdown: 2.1.2
+ parse-entities: 4.0.2
+ stringify-entities: 4.0.4
+ unist-util-stringify-position: 4.0.0
+ vfile-message: 4.0.3
+ transitivePeerDependencies:
+ - supports-color
- parse-json@5.2.0:
+ mdast-util-mdx@3.0.0(supports-color@9.4.0):
dependencies:
- '@babel/code-frame': 7.26.0
- error-ex: 1.3.2
- json-parse-even-better-errors: 2.3.1
- lines-and-columns: 1.2.4
+ mdast-util-from-markdown: 2.0.3(supports-color@9.4.0)
+ mdast-util-mdx-expression: 2.0.1(supports-color@9.4.0)
+ mdast-util-mdx-jsx: 3.2.0(supports-color@9.4.0)
+ mdast-util-mdxjs-esm: 2.0.1(supports-color@9.4.0)
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
- parse-numeric-range@1.3.0: {}
+ mdast-util-mdxjs-esm@2.0.1(supports-color@9.4.0):
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.5
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.3(supports-color@9.4.0)
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
- parse5-htmlparser2-tree-adapter@7.1.0:
+ mdast-util-phrasing@4.1.0:
dependencies:
- domhandler: 5.0.3
- parse5: 7.2.0
+ '@types/mdast': 4.0.4
+ unist-util-is: 6.0.1
- parse5@7.2.0:
+ mdast-util-to-hast@13.2.1:
dependencies:
- entities: 4.5.0
-
- parseurl@1.3.3: {}
+ '@types/hast': 3.0.5
+ '@types/mdast': 4.0.4
+ '@ungap/structured-clone': 1.3.3
+ devlop: 1.1.0
+ micromark-util-sanitize-uri: 2.0.1
+ trim-lines: 3.0.1
+ unist-util-position: 5.0.0
+ unist-util-visit: 5.1.0
+ vfile: 6.0.3
- pascal-case@3.1.2:
+ mdast-util-to-markdown-cjk-friendly-gfm-strikethrough@1.0.0(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(supports-color@9.4.0):
dependencies:
- no-case: 3.0.4
- tslib: 2.8.0
-
- path-data-parser@0.1.0: {}
-
- path-exists@5.0.0: {}
-
- path-is-inside@1.0.2: {}
-
- path-key@3.1.1: {}
-
- path-parse@1.0.7: {}
-
- path-root-regex@0.1.2: {}
+ mdast-util-gfm-strikethrough: 2.0.0(supports-color@9.4.0)
+ mdast-util-to-markdown: 2.1.2
+ micromark-extension-cjk-friendly-util: 3.0.1(micromark-util-types@2.0.2)
+ micromark-util-symbol: 2.0.1
+ optionalDependencies:
+ '@types/mdast': 4.0.4
+ transitivePeerDependencies:
+ - micromark-util-types
+ - supports-color
- path-root@0.1.1:
+ mdast-util-to-markdown-cjk-friendly@1.0.0(@types/mdast@4.0.4)(micromark-util-types@2.0.2):
dependencies:
- path-root-regex: 0.1.2
-
- path-to-regexp@0.1.12: {}
+ mdast-util-to-markdown: 2.1.2
+ micromark-extension-cjk-friendly-util: 3.0.1(micromark-util-types@2.0.2)
+ micromark-util-symbol: 2.0.1
+ optionalDependencies:
+ '@types/mdast': 4.0.4
+ transitivePeerDependencies:
+ - micromark-util-types
- path-to-regexp@1.9.0:
+ mdast-util-to-markdown@2.1.2:
dependencies:
- isarray: 0.0.1
-
- path-to-regexp@3.3.0: {}
-
- path-type@4.0.0: {}
-
- pathe@1.1.2: {}
-
- picocolors@1.1.1: {}
-
- picomatch@2.3.1: {}
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ longest-streak: 3.1.0
+ mdast-util-phrasing: 4.1.0
+ mdast-util-to-string: 4.0.0
+ micromark-util-classify-character: 2.0.1
+ micromark-util-decode-string: 2.0.1
+ unist-util-visit: 5.1.0
+ zwitch: 2.0.4
- pkg-dir@7.0.0:
+ mdast-util-to-string@3.2.0:
dependencies:
- find-up: 6.3.0
+ '@types/mdast': 3.0.15
- pkg-types@1.2.1:
+ mdast-util-to-string@4.0.0:
dependencies:
- confbox: 0.1.8
- mlly: 1.7.2
- pathe: 1.1.2
+ '@types/mdast': 4.0.4
- points-on-curve@0.2.0: {}
+ medium-zoom@1.1.0: {}
- points-on-path@0.2.1:
+ mermaid@10.9.8(supports-color@9.4.0):
dependencies:
- path-data-parser: 0.1.0
- points-on-curve: 0.2.0
-
- possible-typed-array-names@1.0.0: {}
+ '@braintree/sanitize-url': 6.0.4
+ '@types/d3-scale': 4.0.9
+ '@types/d3-scale-chromatic': 3.1.0
+ cytoscape: 3.34.1
+ cytoscape-cose-bilkent: 4.1.0(cytoscape@3.34.1)
+ d3: 7.9.0
+ d3-sankey: 0.12.3
+ dagre-d3-es: 7.0.13
+ dayjs: 1.11.23
+ dompurify: 3.4.14
+ elkjs: 0.9.3
+ katex: 0.16.47
+ khroma: 2.1.0
+ lodash-es: 4.18.1
+ mdast-util-from-markdown: 1.3.1(supports-color@9.4.0)
+ non-layered-tidy-tree-layout: 2.0.2
+ stylis: 4.4.0
+ ts-dedent: 2.3.0
+ uuid: 14.0.2
+ web-worker: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
- postcss-attribute-case-insensitive@7.0.1(postcss@8.5.6):
+ micromark-core-commonmark@1.1.0:
dependencies:
- postcss: 8.5.6
- postcss-selector-parser: 7.0.0
+ decode-named-character-reference: 1.3.0
+ micromark-factory-destination: 1.1.0
+ micromark-factory-label: 1.1.0
+ micromark-factory-space: 1.1.0
+ micromark-factory-title: 1.1.0
+ micromark-factory-whitespace: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-chunked: 1.1.0
+ micromark-util-classify-character: 1.1.0
+ micromark-util-html-tag-name: 1.2.0
+ micromark-util-normalize-identifier: 1.1.0
+ micromark-util-resolve-all: 1.1.0
+ micromark-util-subtokenize: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
- postcss-calc@9.0.1(postcss@8.5.6):
+ micromark-core-commonmark@2.0.3:
dependencies:
- postcss: 8.5.6
- postcss-selector-parser: 6.1.2
- postcss-value-parser: 4.2.0
-
- postcss-clamp@4.1.0(postcss@8.5.6):
+ decode-named-character-reference: 1.3.0
+ devlop: 1.1.0
+ micromark-factory-destination: 2.0.1
+ micromark-factory-label: 2.0.1
+ micromark-factory-space: 2.0.1
+ micromark-factory-title: 2.0.1
+ micromark-factory-whitespace: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-chunked: 2.0.1
+ micromark-util-classify-character: 2.0.1
+ micromark-util-html-tag-name: 2.0.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-subtokenize: 2.1.0
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-cjk-friendly-gfm-strikethrough@2.0.1(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0)):
dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ devlop: 1.1.0
+ get-east-asian-width: 1.6.0
+ micromark: 4.0.2(supports-color@9.4.0)
+ micromark-extension-cjk-friendly-util: 3.0.1(micromark-util-types@2.0.2)
+ micromark-util-character: 2.1.1
+ micromark-util-chunked: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-symbol: 2.0.1
+ optionalDependencies:
+ micromark-util-types: 2.0.2
- postcss-color-functional-notation@7.0.12(postcss@8.5.6):
+ micromark-extension-cjk-friendly-util@3.0.1(micromark-util-types@2.0.2):
dependencies:
- '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6)
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
+ get-east-asian-width: 1.6.0
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ optionalDependencies:
+ micromark-util-types: 2.0.2
- postcss-color-hex-alpha@10.0.0(postcss@8.5.6):
+ micromark-extension-cjk-friendly@2.0.1(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0)):
dependencies:
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ devlop: 1.1.0
+ micromark: 4.0.2(supports-color@9.4.0)
+ micromark-extension-cjk-friendly-util: 3.0.1(micromark-util-types@2.0.2)
+ micromark-util-chunked: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-symbol: 2.0.1
+ optionalDependencies:
+ micromark-util-types: 2.0.2
- postcss-color-rebeccapurple@10.0.0(postcss@8.5.6):
+ micromark-extension-gfm-autolink-literal@2.1.0:
dependencies:
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ micromark-util-character: 2.1.1
+ micromark-util-sanitize-uri: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- postcss-colormin@6.1.0(postcss@8.5.6):
+ micromark-extension-gfm-footnote@2.1.0:
dependencies:
- browserslist: 4.28.1
- caniuse-api: 3.0.0
- colord: 2.9.3
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ devlop: 1.1.0
+ micromark-core-commonmark: 2.0.3
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-sanitize-uri: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- postcss-convert-values@6.1.0(postcss@8.5.6):
+ micromark-extension-gfm-strikethrough@2.1.0:
dependencies:
- browserslist: 4.28.1
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ devlop: 1.1.0
+ micromark-util-chunked: 2.0.1
+ micromark-util-classify-character: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- postcss-custom-media@11.0.6(postcss@8.5.6):
+ micromark-extension-gfm-table@2.1.1:
dependencies:
- '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- postcss: 8.5.6
+ devlop: 1.1.0
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- postcss-custom-properties@14.0.6(postcss@8.5.6):
+ micromark-extension-gfm-tagfilter@2.0.0:
dependencies:
- '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ micromark-util-types: 2.0.2
- postcss-custom-selectors@8.0.5(postcss@8.5.6):
+ micromark-extension-gfm-task-list-item@2.1.0:
dependencies:
- '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- postcss: 8.5.6
- postcss-selector-parser: 7.0.0
+ devlop: 1.1.0
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- postcss-dir-pseudo-class@9.0.1(postcss@8.5.6):
+ micromark-extension-gfm@3.0.0:
dependencies:
- postcss: 8.5.6
- postcss-selector-parser: 7.0.0
+ micromark-extension-gfm-autolink-literal: 2.1.0
+ micromark-extension-gfm-footnote: 2.1.0
+ micromark-extension-gfm-strikethrough: 2.1.0
+ micromark-extension-gfm-table: 2.1.1
+ micromark-extension-gfm-tagfilter: 2.0.0
+ micromark-extension-gfm-task-list-item: 2.1.0
+ micromark-util-combine-extensions: 2.0.1
+ micromark-util-types: 2.0.2
- postcss-discard-comments@6.0.2(postcss@8.5.6):
+ micromark-extension-mdx-expression@3.0.1:
dependencies:
- postcss: 8.5.6
+ '@types/estree': 1.0.9
+ devlop: 1.1.0
+ micromark-factory-mdx-expression: 2.0.3
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-events-to-acorn: 2.0.3
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- postcss-discard-duplicates@6.0.3(postcss@8.5.6):
+ micromark-extension-mdx-jsx@3.0.2:
dependencies:
- postcss: 8.5.6
+ '@types/estree': 1.0.9
+ devlop: 1.1.0
+ estree-util-is-identifier-name: 3.0.0
+ micromark-factory-mdx-expression: 2.0.3
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-events-to-acorn: 2.0.3
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+ vfile-message: 4.0.3
- postcss-discard-empty@6.0.3(postcss@8.5.6):
+ micromark-extension-mdx-md@2.0.0:
dependencies:
- postcss: 8.5.6
+ micromark-util-types: 2.0.2
- postcss-discard-overridden@6.0.2(postcss@8.5.6):
+ micromark-extension-mdxjs-esm@3.0.0:
dependencies:
- postcss: 8.5.6
+ '@types/estree': 1.0.9
+ devlop: 1.1.0
+ micromark-core-commonmark: 2.0.3
+ micromark-util-character: 2.1.1
+ micromark-util-events-to-acorn: 2.0.3
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+ unist-util-position-from-estree: 2.0.0
+ vfile-message: 4.0.3
- postcss-discard-unused@6.0.5(postcss@8.5.6):
+ micromark-extension-mdxjs@3.0.0:
dependencies:
- postcss: 8.5.6
- postcss-selector-parser: 6.1.2
+ acorn: 8.18.0
+ acorn-jsx: 5.3.2(acorn@8.18.0)
+ micromark-extension-mdx-expression: 3.0.1
+ micromark-extension-mdx-jsx: 3.0.2
+ micromark-extension-mdx-md: 2.0.0
+ micromark-extension-mdxjs-esm: 3.0.0
+ micromark-util-combine-extensions: 2.0.1
+ micromark-util-types: 2.0.2
- postcss-double-position-gradients@6.0.4(postcss@8.5.6):
+ micromark-factory-destination@1.1.0:
dependencies:
- '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6)
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
- postcss-focus-visible@10.0.1(postcss@8.5.6):
+ micromark-factory-destination@2.0.1:
dependencies:
- postcss: 8.5.6
- postcss-selector-parser: 7.0.0
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- postcss-focus-within@9.0.1(postcss@8.5.6):
+ micromark-factory-label@1.1.0:
dependencies:
- postcss: 8.5.6
- postcss-selector-parser: 7.0.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
- postcss-font-variant@5.0.0(postcss@8.5.6):
+ micromark-factory-label@2.0.1:
dependencies:
- postcss: 8.5.6
+ devlop: 1.1.0
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- postcss-gap-properties@6.0.0(postcss@8.5.6):
+ micromark-factory-mdx-expression@2.0.3:
dependencies:
- postcss: 8.5.6
+ '@types/estree': 1.0.9
+ devlop: 1.1.0
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-events-to-acorn: 2.0.3
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+ unist-util-position-from-estree: 2.0.0
+ vfile-message: 4.0.3
- postcss-image-set-function@7.0.0(postcss@8.5.6):
+ micromark-factory-space@1.1.0:
dependencies:
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ micromark-util-character: 1.2.0
+ micromark-util-types: 1.1.0
- postcss-lab-function@7.0.12(postcss@8.5.6):
+ micromark-factory-space@2.0.1:
dependencies:
- '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6)
- '@csstools/utilities': 2.0.0(postcss@8.5.6)
- postcss: 8.5.6
+ micromark-util-character: 2.1.1
+ micromark-util-types: 2.0.2
- postcss-loader@7.3.4(postcss@8.5.6)(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.16.0)):
+ micromark-factory-title@1.1.0:
dependencies:
- cosmiconfig: 8.3.6(typescript@5.6.3)
- jiti: 1.21.6
- postcss: 8.5.6
- semver: 7.6.3
- webpack: 5.95.0(@swc/core@1.16.0)
- transitivePeerDependencies:
- - typescript
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
- postcss-logical@8.1.0(postcss@8.5.6):
+ micromark-factory-title@2.0.1:
dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- postcss-merge-idents@6.0.3(postcss@8.5.6):
+ micromark-factory-whitespace@1.1.0:
dependencies:
- cssnano-utils: 4.0.2(postcss@8.5.6)
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
- postcss-merge-longhand@6.0.5(postcss@8.5.6):
+ micromark-factory-whitespace@2.0.1:
dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
- stylehacks: 6.1.1(postcss@8.5.6)
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- postcss-merge-rules@6.1.1(postcss@8.5.6):
+ micromark-util-character@1.2.0:
dependencies:
- browserslist: 4.28.1
- caniuse-api: 3.0.0
- cssnano-utils: 4.0.2(postcss@8.5.6)
- postcss: 8.5.6
- postcss-selector-parser: 6.1.2
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
- postcss-minify-font-values@6.1.0(postcss@8.5.6):
+ micromark-util-character@2.1.1:
dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- postcss-minify-gradients@6.0.3(postcss@8.5.6):
+ micromark-util-chunked@1.1.0:
dependencies:
- colord: 2.9.3
- cssnano-utils: 4.0.2(postcss@8.5.6)
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ micromark-util-symbol: 1.1.0
- postcss-minify-params@6.1.0(postcss@8.5.6):
+ micromark-util-chunked@2.0.1:
dependencies:
- browserslist: 4.28.1
- cssnano-utils: 4.0.2(postcss@8.5.6)
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ micromark-util-symbol: 2.0.1
- postcss-minify-selectors@6.0.4(postcss@8.5.6):
+ micromark-util-classify-character@1.1.0:
dependencies:
- postcss: 8.5.6
- postcss-selector-parser: 6.1.2
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
- postcss-modules-extract-imports@3.1.0(postcss@8.5.6):
+ micromark-util-classify-character@2.0.1:
dependencies:
- postcss: 8.5.6
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- postcss-modules-local-by-default@4.0.5(postcss@8.5.6):
+ micromark-util-combine-extensions@1.1.0:
dependencies:
- icss-utils: 5.1.0(postcss@8.5.6)
- postcss: 8.5.6
- postcss-selector-parser: 6.1.2
- postcss-value-parser: 4.2.0
+ micromark-util-chunked: 1.1.0
+ micromark-util-types: 1.1.0
- postcss-modules-scope@3.2.0(postcss@8.5.6):
+ micromark-util-combine-extensions@2.0.1:
dependencies:
- postcss: 8.5.6
- postcss-selector-parser: 6.1.2
+ micromark-util-chunked: 2.0.1
+ micromark-util-types: 2.0.2
- postcss-modules-values@4.0.0(postcss@8.5.6):
+ micromark-util-decode-numeric-character-reference@1.1.0:
dependencies:
- icss-utils: 5.1.0(postcss@8.5.6)
- postcss: 8.5.6
+ micromark-util-symbol: 1.1.0
- postcss-nesting@13.0.2(postcss@8.5.6):
+ micromark-util-decode-numeric-character-reference@2.0.2:
dependencies:
- '@csstools/selector-resolve-nested': 3.1.0(postcss-selector-parser@7.0.0)
- '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.0.0)
- postcss: 8.5.6
- postcss-selector-parser: 7.0.0
+ micromark-util-symbol: 2.0.1
- postcss-normalize-charset@6.0.2(postcss@8.5.6):
+ micromark-util-decode-string@1.1.0:
dependencies:
- postcss: 8.5.6
+ decode-named-character-reference: 1.3.0
+ micromark-util-character: 1.2.0
+ micromark-util-decode-numeric-character-reference: 1.1.0
+ micromark-util-symbol: 1.1.0
- postcss-normalize-display-values@6.0.2(postcss@8.5.6):
+ micromark-util-decode-string@2.0.1:
dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ decode-named-character-reference: 1.3.0
+ micromark-util-character: 2.1.1
+ micromark-util-decode-numeric-character-reference: 2.0.2
+ micromark-util-symbol: 2.0.1
- postcss-normalize-positions@6.0.2(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ micromark-util-encode@1.1.0: {}
- postcss-normalize-repeat-style@6.0.2(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ micromark-util-encode@2.0.1: {}
- postcss-normalize-string@6.0.2(postcss@8.5.6):
+ micromark-util-events-to-acorn@2.0.3:
dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ '@types/estree': 1.0.9
+ '@types/unist': 3.0.3
+ devlop: 1.1.0
+ estree-util-visit: 2.0.0
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+ vfile-message: 4.0.3
- postcss-normalize-timing-functions@6.0.2(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ micromark-util-html-tag-name@1.2.0: {}
- postcss-normalize-unicode@6.1.0(postcss@8.5.6):
- dependencies:
- browserslist: 4.28.1
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ micromark-util-html-tag-name@2.0.1: {}
- postcss-normalize-url@6.0.2(postcss@8.5.6):
+ micromark-util-normalize-identifier@1.1.0:
dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ micromark-util-symbol: 1.1.0
- postcss-normalize-whitespace@6.0.2(postcss@8.5.6):
+ micromark-util-normalize-identifier@2.0.1:
dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ micromark-util-symbol: 2.0.1
- postcss-opacity-percentage@3.0.0(postcss@8.5.6):
+ micromark-util-resolve-all@1.1.0:
dependencies:
- postcss: 8.5.6
+ micromark-util-types: 1.1.0
- postcss-ordered-values@6.0.2(postcss@8.5.6):
+ micromark-util-resolve-all@2.0.1:
dependencies:
- cssnano-utils: 4.0.2(postcss@8.5.6)
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ micromark-util-types: 2.0.2
- postcss-overflow-shorthand@6.0.0(postcss@8.5.6):
+ micromark-util-sanitize-uri@1.2.0:
dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ micromark-util-character: 1.2.0
+ micromark-util-encode: 1.1.0
+ micromark-util-symbol: 1.1.0
- postcss-page-break@3.0.4(postcss@8.5.6):
+ micromark-util-sanitize-uri@2.0.1:
dependencies:
- postcss: 8.5.6
+ micromark-util-character: 2.1.1
+ micromark-util-encode: 2.0.1
+ micromark-util-symbol: 2.0.1
- postcss-place@10.0.0(postcss@8.5.6):
+ micromark-util-subtokenize@1.1.0:
dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
+ micromark-util-chunked: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
- postcss-preset-env@10.5.0(postcss@8.5.6):
+ micromark-util-subtokenize@2.1.0:
dependencies:
- '@csstools/postcss-alpha-function': 1.0.1(postcss@8.5.6)
- '@csstools/postcss-cascade-layers': 5.0.2(postcss@8.5.6)
- '@csstools/postcss-color-function': 4.0.12(postcss@8.5.6)
- '@csstools/postcss-color-function-display-p3-linear': 1.0.1(postcss@8.5.6)
- '@csstools/postcss-color-mix-function': 3.0.12(postcss@8.5.6)
- '@csstools/postcss-color-mix-variadic-function-arguments': 1.0.2(postcss@8.5.6)
- '@csstools/postcss-content-alt-text': 2.0.8(postcss@8.5.6)
- '@csstools/postcss-contrast-color-function': 2.0.12(postcss@8.5.6)
- '@csstools/postcss-exponential-functions': 2.0.9(postcss@8.5.6)
- '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.5.6)
- '@csstools/postcss-gamut-mapping': 2.0.11(postcss@8.5.6)
- '@csstools/postcss-gradients-interpolation-method': 5.0.12(postcss@8.5.6)
- '@csstools/postcss-hwb-function': 4.0.12(postcss@8.5.6)
- '@csstools/postcss-ic-unit': 4.0.4(postcss@8.5.6)
- '@csstools/postcss-initial': 2.0.1(postcss@8.5.6)
- '@csstools/postcss-is-pseudo-class': 5.0.3(postcss@8.5.6)
- '@csstools/postcss-light-dark-function': 2.0.11(postcss@8.5.6)
- '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.5.6)
- '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.5.6)
- '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.5.6)
- '@csstools/postcss-logical-resize': 3.0.0(postcss@8.5.6)
- '@csstools/postcss-logical-viewport-units': 3.0.4(postcss@8.5.6)
- '@csstools/postcss-media-minmax': 2.0.9(postcss@8.5.6)
- '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.5(postcss@8.5.6)
- '@csstools/postcss-nested-calc': 4.0.0(postcss@8.5.6)
- '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.5.6)
- '@csstools/postcss-oklab-function': 4.0.12(postcss@8.5.6)
- '@csstools/postcss-position-area-property': 1.0.0(postcss@8.5.6)
- '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6)
- '@csstools/postcss-random-function': 2.0.1(postcss@8.5.6)
- '@csstools/postcss-relative-color-syntax': 3.0.12(postcss@8.5.6)
- '@csstools/postcss-scope-pseudo-class': 4.0.1(postcss@8.5.6)
- '@csstools/postcss-sign-functions': 1.1.4(postcss@8.5.6)
- '@csstools/postcss-stepped-value-functions': 4.0.9(postcss@8.5.6)
- '@csstools/postcss-system-ui-font-family': 1.0.0(postcss@8.5.6)
- '@csstools/postcss-text-decoration-shorthand': 4.0.3(postcss@8.5.6)
- '@csstools/postcss-trigonometric-functions': 4.0.9(postcss@8.5.6)
- '@csstools/postcss-unset-value': 4.0.0(postcss@8.5.6)
- autoprefixer: 10.4.23(postcss@8.5.6)
- browserslist: 4.28.1
- css-blank-pseudo: 7.0.1(postcss@8.5.6)
- css-has-pseudo: 7.0.3(postcss@8.5.6)
- css-prefers-color-scheme: 10.0.0(postcss@8.5.6)
- cssdb: 8.5.2
- postcss: 8.5.6
- postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.6)
- postcss-clamp: 4.1.0(postcss@8.5.6)
- postcss-color-functional-notation: 7.0.12(postcss@8.5.6)
- postcss-color-hex-alpha: 10.0.0(postcss@8.5.6)
- postcss-color-rebeccapurple: 10.0.0(postcss@8.5.6)
- postcss-custom-media: 11.0.6(postcss@8.5.6)
- postcss-custom-properties: 14.0.6(postcss@8.5.6)
- postcss-custom-selectors: 8.0.5(postcss@8.5.6)
- postcss-dir-pseudo-class: 9.0.1(postcss@8.5.6)
- postcss-double-position-gradients: 6.0.4(postcss@8.5.6)
- postcss-focus-visible: 10.0.1(postcss@8.5.6)
- postcss-focus-within: 9.0.1(postcss@8.5.6)
- postcss-font-variant: 5.0.0(postcss@8.5.6)
- postcss-gap-properties: 6.0.0(postcss@8.5.6)
- postcss-image-set-function: 7.0.0(postcss@8.5.6)
- postcss-lab-function: 7.0.12(postcss@8.5.6)
- postcss-logical: 8.1.0(postcss@8.5.6)
- postcss-nesting: 13.0.2(postcss@8.5.6)
- postcss-opacity-percentage: 3.0.0(postcss@8.5.6)
- postcss-overflow-shorthand: 6.0.0(postcss@8.5.6)
- postcss-page-break: 3.0.4(postcss@8.5.6)
- postcss-place: 10.0.0(postcss@8.5.6)
- postcss-pseudo-class-any-link: 10.0.1(postcss@8.5.6)
- postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.6)
- postcss-selector-not: 8.0.1(postcss@8.5.6)
-
- postcss-pseudo-class-any-link@10.0.1(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-selector-parser: 7.0.0
-
- postcss-reduce-idents@6.0.3(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- postcss-reduce-initial@6.1.0(postcss@8.5.6):
- dependencies:
- browserslist: 4.28.1
- caniuse-api: 3.0.0
- postcss: 8.5.6
-
- postcss-reduce-transforms@6.0.2(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
- postcss-replace-overflow-wrap@4.0.0(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
-
- postcss-selector-not@8.0.1(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-selector-parser: 7.0.0
-
- postcss-selector-parser@6.1.2:
- dependencies:
- cssesc: 3.0.0
- util-deprecate: 1.0.2
-
- postcss-selector-parser@7.0.0:
- dependencies:
- cssesc: 3.0.0
- util-deprecate: 1.0.2
-
- postcss-sort-media-queries@5.2.0(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- sort-css-media-queries: 2.2.0
-
- postcss-svgo@6.0.3(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
- svgo: 3.3.2
-
- postcss-unique-selectors@6.0.4(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-selector-parser: 6.1.2
-
- postcss-value-parser@4.2.0: {}
+ devlop: 1.1.0
+ micromark-util-chunked: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- postcss-zindex@6.0.2(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
+ micromark-util-symbol@1.1.0: {}
- postcss@8.5.6:
- dependencies:
- nanoid: 3.3.11
- picocolors: 1.1.1
- source-map-js: 1.2.1
+ micromark-util-symbol@2.0.1: {}
- pretty-error@4.0.0:
- dependencies:
- lodash: 4.17.21
- renderkid: 3.0.0
+ micromark-util-types@1.1.0: {}
- pretty-time@1.1.0: {}
+ micromark-util-types@2.0.2: {}
- prism-react-renderer@2.4.1(react@19.2.8):
+ micromark@3.2.0(supports-color@9.4.0):
dependencies:
- '@types/prismjs': 1.26.4
- clsx: 2.1.1
- react: 19.2.8
-
- prismjs@1.29.0: {}
-
- process-nextick-args@2.0.1: {}
+ '@types/debug': 4.1.13
+ debug: 4.4.3(supports-color@9.4.0)
+ decode-named-character-reference: 1.3.0
+ micromark-core-commonmark: 1.1.0
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-chunked: 1.1.0
+ micromark-util-combine-extensions: 1.1.0
+ micromark-util-decode-numeric-character-reference: 1.1.0
+ micromark-util-encode: 1.1.0
+ micromark-util-normalize-identifier: 1.1.0
+ micromark-util-resolve-all: 1.1.0
+ micromark-util-sanitize-uri: 1.2.0
+ micromark-util-subtokenize: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ transitivePeerDependencies:
+ - supports-color
- prompts@2.4.2:
+ micromark@4.0.2(supports-color@9.4.0):
dependencies:
- kleur: 3.0.3
- sisteransi: 1.0.5
+ '@types/debug': 4.1.13
+ debug: 4.4.3(supports-color@9.4.0)
+ decode-named-character-reference: 1.3.0
+ devlop: 1.1.0
+ micromark-core-commonmark: 2.0.3
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-chunked: 2.0.1
+ micromark-util-combine-extensions: 2.0.1
+ micromark-util-decode-numeric-character-reference: 2.0.2
+ micromark-util-encode: 2.0.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-sanitize-uri: 2.0.1
+ micromark-util-subtokenize: 2.1.0
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+ transitivePeerDependencies:
+ - supports-color
- prop-types@15.8.1:
+ minimatch@10.2.6:
dependencies:
- loose-envify: 1.4.0
- object-assign: 4.1.1
- react-is: 16.13.1
+ brace-expansion: 5.0.9
- property-information@6.5.0: {}
+ mri@1.2.0: {}
- property-information@7.1.0: {}
+ ms@2.1.3: {}
- proto-list@1.2.4: {}
+ nanoid@3.3.18: {}
- proxy-addr@2.0.7:
- dependencies:
- forwarded: 0.2.0
- ipaddr.js: 1.9.1
+ node-addon-api@7.1.1:
+ optional: true
- punycode@2.3.1: {}
+ non-layered-tidy-tree-layout@2.0.2: {}
- pupa@3.1.0:
- dependencies:
- escape-goat: 4.0.0
+ nprogress@0.2.0: {}
- q@1.5.1: {}
+ oniguruma-parser@0.12.2: {}
- qs@6.13.0:
+ oniguruma-to-es@4.3.6:
dependencies:
- side-channel: 1.1.0
+ oniguruma-parser: 0.12.2
+ regex: 6.1.0
+ regex-recursion: 6.0.2
- qs@6.14.0:
+ parse-entities@4.0.2:
dependencies:
- side-channel: 1.1.0
-
- queue-microtask@1.2.3: {}
-
- quick-lru@5.1.1: {}
+ '@types/unist': 2.0.11
+ character-entities-legacy: 3.0.0
+ character-reference-invalid: 2.0.1
+ decode-named-character-reference: 1.3.0
+ is-alphanumerical: 2.0.1
+ is-decimal: 2.0.1
+ is-hexadecimal: 2.0.1
- randombytes@2.1.0:
+ parse5@7.3.0:
dependencies:
- safe-buffer: 5.2.1
+ entities: 6.0.1
- range-parser@1.2.0: {}
+ path-browserify@1.0.1: {}
- range-parser@1.2.1: {}
+ picocolors@1.1.1: {}
- raw-body@2.5.2:
- dependencies:
- bytes: 3.1.2
- http-errors: 2.0.0
- iconv-lite: 0.4.24
- unpipe: 1.0.0
+ picomatch@4.0.7: {}
- rc@1.2.8:
+ postcss@8.5.26:
dependencies:
- deep-extend: 0.6.0
- ini: 1.3.8
- minimist: 1.2.8
- strip-json-comments: 2.0.1
+ nanoid: 3.3.18
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ property-information@7.2.0: {}
react-dom@19.2.8(react@19.2.8):
dependencies:
react: 19.2.8
scheduler: 0.27.0
- react-fast-compare@3.2.2: {}
-
- react-is@16.13.1: {}
+ react-lazy-with-preload@2.2.1: {}
- react-json-view-lite@2.4.1(react@19.2.8):
+ react-reconciler@0.33.0(react@19.2.8):
dependencies:
react: 19.2.8
+ scheduler: 0.27.0
- react-loadable-ssr-addon-v5-slorber@1.0.3(@docusaurus/react-loadable@6.0.0(react@19.2.8))(webpack@5.95.0(@swc/core@1.16.0)):
- dependencies:
- '@babel/runtime': 7.26.0
- react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.8)'
- webpack: 5.95.0(@swc/core@1.16.0)
+ react-refresh@0.18.0: {}
- react-router-config@5.1.1(react-router@5.3.4(react@19.2.8))(react@19.2.8):
+ react-render-to-markdown@19.1.0(react@19.2.8):
dependencies:
- '@babel/runtime': 7.26.0
react: 19.2.8
- react-router: 5.3.4(react@19.2.8)
+ react-reconciler: 0.33.0(react@19.2.8)
- react-router-dom@5.3.4(react@19.2.8):
+ react-router-dom@7.18.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8):
dependencies:
- '@babel/runtime': 7.26.0
- history: 4.10.1
- loose-envify: 1.4.0
- prop-types: 15.8.1
react: 19.2.8
- react-router: 5.3.4(react@19.2.8)
- tiny-invariant: 1.3.3
- tiny-warning: 1.0.3
-
- react-router@5.3.4(react@19.2.8):
- dependencies:
- '@babel/runtime': 7.26.0
- history: 4.10.1
- hoist-non-react-statics: 3.3.2
- loose-envify: 1.4.0
- path-to-regexp: 1.9.0
- prop-types: 15.8.1
- react: 19.2.8
- react-is: 16.13.1
- tiny-invariant: 1.3.3
- tiny-warning: 1.0.3
-
- react@19.2.8: {}
-
- readable-stream@2.3.8:
- dependencies:
- core-util-is: 1.0.3
- inherits: 2.0.4
- isarray: 1.0.0
- process-nextick-args: 2.0.1
- safe-buffer: 5.1.2
- string_decoder: 1.1.1
- util-deprecate: 1.0.2
+ react-dom: 19.2.8(react@19.2.8)
+ react-router: 7.18.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- readable-stream@3.6.2:
+ react-router@7.18.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8):
dependencies:
- inherits: 2.0.4
- string_decoder: 1.3.0
- util-deprecate: 1.0.2
+ cookie: 1.1.1
+ react: 19.2.8
+ set-cookie-parser: 2.7.2
+ optionalDependencies:
+ react-dom: 19.2.8(react@19.2.8)
- readdirp@3.6.0:
- dependencies:
- picomatch: 2.3.1
+ react@19.2.8: {}
- readdirp@5.1.1: {}
+ readdirp@5.1.1:
+ optional: true
recma-build-jsx@1.0.0:
dependencies:
- '@types/estree': 1.0.6
+ '@types/estree': 1.0.9
estree-util-build-jsx: 3.0.1
vfile: 6.0.3
- recma-jsx@1.0.0(acorn@8.14.0):
+ recma-jsx@1.0.1(acorn@8.18.0):
dependencies:
- acorn-jsx: 5.3.2(acorn@8.14.0)
+ acorn: 8.18.0
+ acorn-jsx: 5.3.2(acorn@8.18.0)
estree-util-to-js: 2.0.0
recma-parse: 1.0.0
recma-stringify: 1.0.0
unified: 11.0.5
- transitivePeerDependencies:
- - acorn
recma-parse@1.0.0:
dependencies:
- '@types/estree': 1.0.6
+ '@types/estree': 1.0.9
esast-util-from-js: 2.0.1
unified: 11.0.5
vfile: 6.0.3
recma-stringify@1.0.0:
dependencies:
- '@types/estree': 1.0.6
+ '@types/estree': 1.0.9
estree-util-to-js: 2.0.0
unified: 11.0.5
vfile: 6.0.3
- regenerate-unicode-properties@10.2.0:
- dependencies:
- regenerate: 1.4.2
-
- regenerate@1.4.2: {}
-
- regenerator-runtime@0.14.1: {}
-
- regenerator-transform@0.15.2:
- dependencies:
- '@babel/runtime': 7.26.0
+ reduce-configs@2.0.1: {}
regex-recursion@6.0.2:
dependencies:
@@ -13605,443 +3718,282 @@ snapshots:
dependencies:
regex-utilities: 2.3.0
- regexp.prototype.flags@1.5.3:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-errors: 1.3.0
- set-function-name: 2.0.2
-
- regexpu-core@6.1.1:
- dependencies:
- regenerate: 1.4.2
- regenerate-unicode-properties: 10.2.0
- regjsgen: 0.8.0
- regjsparser: 0.11.1
- unicode-match-property-ecmascript: 2.0.0
- unicode-match-property-value-ecmascript: 2.2.0
-
- registry-auth-token@5.0.2:
- dependencies:
- '@pnpm/npm-conf': 2.3.1
-
- registry-url@6.0.1:
- dependencies:
- rc: 1.2.8
-
- regjsgen@0.8.0: {}
-
- regjsparser@0.11.1:
+ rehype-external-links@3.0.0:
dependencies:
- jsesc: 3.0.2
+ '@types/hast': 3.0.5
+ '@ungap/structured-clone': 1.3.3
+ hast-util-is-element: 3.0.0
+ is-absolute-url: 4.0.1
+ space-separated-tokens: 2.0.2
+ unist-util-visit: 5.1.0
rehype-raw@7.0.0:
dependencies:
- '@types/hast': 3.0.4
- hast-util-raw: 9.0.4
+ '@types/hast': 3.0.5
+ hast-util-raw: 9.1.0
vfile: 6.0.3
- rehype-recma@1.0.0:
+ rehype-recma@1.0.0(supports-color@9.4.0):
dependencies:
- '@types/estree': 1.0.6
- '@types/hast': 3.0.4
- hast-util-to-estree: 3.1.0
+ '@types/estree': 1.0.9
+ '@types/hast': 3.0.5
+ hast-util-to-estree: 3.1.3(supports-color@9.4.0)
transitivePeerDependencies:
- supports-color
- relateurl@0.2.7: {}
-
- remark-directive@3.0.0:
+ remark-cjk-friendly-gfm-strikethrough@2.3.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0)(unified@11.0.5):
dependencies:
- '@types/mdast': 4.0.4
- mdast-util-directive: 3.0.0
- micromark-extension-directive: 3.0.2
+ mdast-util-to-markdown-cjk-friendly-gfm-strikethrough: 1.0.0(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(supports-color@9.4.0)
+ micromark-extension-cjk-friendly-gfm-strikethrough: 2.0.1(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))
unified: 11.0.5
+ optionalDependencies:
+ '@types/mdast': 4.0.4
transitivePeerDependencies:
+ - micromark
+ - micromark-util-types
- supports-color
- remark-emoji@4.0.1:
+ remark-cjk-friendly@2.3.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(unified@11.0.5):
dependencies:
- '@types/mdast': 4.0.4
- emoticon: 4.1.0
- mdast-util-find-and-replace: 3.0.1
- node-emoji: 2.1.3
+ mdast-util-to-markdown-cjk-friendly: 1.0.0(@types/mdast@4.0.4)(micromark-util-types@2.0.2)
+ micromark-extension-cjk-friendly: 2.0.1(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))
unified: 11.0.5
+ optionalDependencies:
+ '@types/mdast': 4.0.4
+ transitivePeerDependencies:
+ - micromark
+ - micromark-util-types
- remark-frontmatter@5.0.0:
+ remark-gfm@4.0.1(supports-color@9.4.0):
dependencies:
'@types/mdast': 4.0.4
- mdast-util-frontmatter: 2.0.1
- micromark-extension-frontmatter: 2.0.0
+ mdast-util-gfm: 3.1.0(supports-color@9.4.0)
+ micromark-extension-gfm: 3.0.0
+ remark-parse: 11.0.0(supports-color@9.4.0)
+ remark-stringify: 11.0.0
unified: 11.0.5
transitivePeerDependencies:
- supports-color
- remark-gfm@4.0.0:
+ remark-mdc@3.11.1(supports-color@9.4.0):
dependencies:
'@types/mdast': 4.0.4
- mdast-util-gfm: 3.0.0
- micromark-extension-gfm: 3.0.0
- remark-parse: 11.0.0
- remark-stringify: 11.0.0
+ '@types/unist': 3.0.3
+ flat: 6.0.1
+ mdast-util-from-markdown: 2.0.3(supports-color@9.4.0)
+ mdast-util-to-markdown: 2.1.2
+ micromark: 4.0.2(supports-color@9.4.0)
+ micromark-core-commonmark: 2.0.3
+ micromark-factory-space: 2.0.1
+ micromark-factory-whitespace: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-types: 2.0.2
+ parse-entities: 4.0.2
+ scule: 1.3.0
+ stringify-entities: 4.0.4
unified: 11.0.5
+ unist-util-visit: 5.1.0
+ unist-util-visit-parents: 6.0.2
+ yaml: 2.9.0
transitivePeerDependencies:
- supports-color
- remark-mdx@3.0.1:
+ remark-mdx@3.1.1(supports-color@9.4.0):
dependencies:
- mdast-util-mdx: 3.0.0
+ mdast-util-mdx: 3.0.0(supports-color@9.4.0)
micromark-extension-mdxjs: 3.0.0
transitivePeerDependencies:
- supports-color
- remark-parse@11.0.0:
+ remark-parse@11.0.0(supports-color@9.4.0):
dependencies:
'@types/mdast': 4.0.4
- mdast-util-from-markdown: 2.0.1
- micromark-util-types: 2.0.0
+ mdast-util-from-markdown: 2.0.3(supports-color@9.4.0)
+ micromark-util-types: 2.0.2
unified: 11.0.5
transitivePeerDependencies:
- supports-color
- remark-rehype@11.1.1:
+ remark-rehype@11.1.2:
dependencies:
- '@types/hast': 3.0.4
+ '@types/hast': 3.0.5
'@types/mdast': 4.0.4
- mdast-util-to-hast: 13.2.0
+ mdast-util-to-hast: 13.2.1
unified: 11.0.5
vfile: 6.0.3
remark-stringify@11.0.0:
dependencies:
'@types/mdast': 4.0.4
- mdast-util-to-markdown: 2.1.0
+ mdast-util-to-markdown: 2.1.2
unified: 11.0.5
- renderkid@3.0.0:
- dependencies:
- css-select: 4.3.0
- dom-converter: 0.2.0
- htmlparser2: 6.1.0
- lodash: 4.17.21
- strip-ansi: 6.0.1
-
- require-from-string@2.0.2: {}
-
- require-like@0.1.2: {}
-
- requires-port@1.0.0: {}
-
- resolve-alpn@1.2.1: {}
-
- resolve-from@4.0.0: {}
-
- resolve-package-path@4.0.3:
- dependencies:
- path-root: 0.1.1
-
- resolve-pathname@3.0.0: {}
-
- resolve@1.22.8:
- dependencies:
- is-core-module: 2.15.1
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
+ robust-predicates@3.0.3: {}
- responselike@3.0.0:
+ rspress-plugin-devkit@1.0.0(@rspress/core@2.0.20(@rspack/core@2.1.10(@swc/helpers@0.5.23))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0))(supports-color@9.4.0):
dependencies:
- lowercase-keys: 3.0.0
-
- retry@0.13.1: {}
-
- reusify@1.0.4: {}
-
- robust-predicates@3.0.2: {}
+ '@rspress/core': 2.0.20(@rspack/core@2.1.10(@swc/helpers@0.5.23))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0)
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.5
+ '@types/mdast': 4.0.4
+ '@types/node': 25.9.5
+ clsx: 2.1.1
+ lodash-es: 4.18.1
+ mdast-util-from-markdown: 2.0.3(supports-color@9.4.0)
+ mdast-util-mdx-jsx: 3.2.0(supports-color@9.4.0)
+ mdast-util-mdxjs-esm: 2.0.1(supports-color@9.4.0)
+ mdast-util-to-markdown: 2.1.2
+ mdast-util-to-string: 4.0.0
+ remark-mdc: 3.11.1(supports-color@9.4.0)
+ ts-morph: 27.0.2
+ unified: 11.0.5
+ unist-util-visit: 5.1.0
+ unist-util-visit-parents: 6.0.2
+ util-ts-types: 1.0.0
+ vfile: 6.0.3
+ vfile-reporter: 8.1.1
+ transitivePeerDependencies:
+ - supports-color
- roughjs@4.6.6:
+ rspress-plugin-file-tree@1.0.5(@rspress/core@2.0.20(@rspack/core@2.1.10(@swc/helpers@0.5.23))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0))(supports-color@9.4.0):
dependencies:
- hachure-fill: 0.5.2
- path-data-parser: 0.1.0
- points-on-curve: 0.2.0
- points-on-path: 0.2.1
+ '@rspress/core': 2.0.20(@rspack/core@2.1.10(@swc/helpers@0.5.23))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0)
+ rspress-plugin-devkit: 1.0.0(@rspress/core@2.0.20(@rspack/core@2.1.10(@swc/helpers@0.5.23))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0))(supports-color@9.4.0)
+ transitivePeerDependencies:
+ - supports-color
- rtlcss@4.3.0:
+ rspress-plugin-google-analytics@1.0.0(@rspress/core@2.0.20(@rspack/core@2.1.10(@swc/helpers@0.5.23))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0))(supports-color@9.4.0):
dependencies:
- escalade: 3.2.0
- picocolors: 1.1.1
- postcss: 8.5.6
- strip-json-comments: 3.1.1
-
- run-applescript@7.1.0: {}
+ '@rspress/core': 2.0.20(@rspack/core@2.1.10(@swc/helpers@0.5.23))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0)
+ rspress-plugin-devkit: 1.0.0(@rspress/core@2.0.20(@rspack/core@2.1.10(@swc/helpers@0.5.23))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0))(supports-color@9.4.0)
+ transitivePeerDependencies:
+ - supports-color
- run-parallel@1.2.0:
+ rspress-plugin-mermaid@1.0.1(@rspress/core@2.0.20(@rspack/core@2.1.10(@swc/helpers@0.5.23))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0))(supports-color@9.4.0):
dependencies:
- queue-microtask: 1.2.3
+ '@rspress/core': 2.0.20(@rspack/core@2.1.10(@swc/helpers@0.5.23))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0)
+ mermaid: 10.9.8(supports-color@9.4.0)
+ rspress-plugin-devkit: 1.0.0(@rspress/core@2.0.20(@rspack/core@2.1.10(@swc/helpers@0.5.23))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@9.4.0))(supports-color@9.4.0))(supports-color@9.4.0)
+ transitivePeerDependencies:
+ - supports-color
rw@1.3.3: {}
rxjs@7.8.2:
dependencies:
- tslib: 2.8.0
-
- safe-array-concat@1.1.2:
- dependencies:
- call-bind: 1.0.7
- get-intrinsic: 1.2.4
- has-symbols: 1.0.3
- isarray: 2.0.5
-
- safe-buffer@5.1.2: {}
+ tslib: 2.8.1
- safe-buffer@5.2.1: {}
-
- safe-regex-test@1.0.3:
+ sade@1.8.1:
dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- is-regex: 1.1.4
+ mri: 1.2.0
safer-buffer@2.1.2: {}
- sass-embedded-all-unknown@1.102.0:
+ sass-embedded-all-unknown@1.103.1:
dependencies:
- sass: 1.102.0
+ sass: 1.103.1
optional: true
- sass-embedded-android-arm64@1.102.0:
+ sass-embedded-android-arm64@1.103.1:
optional: true
- sass-embedded-android-arm@1.102.0:
+ sass-embedded-android-arm@1.103.1:
optional: true
- sass-embedded-android-riscv64@1.102.0:
+ sass-embedded-android-riscv64@1.103.1:
optional: true
- sass-embedded-android-x64@1.102.0:
+ sass-embedded-android-x64@1.103.1:
optional: true
- sass-embedded-darwin-arm64@1.102.0:
+ sass-embedded-darwin-arm64@1.103.1:
optional: true
- sass-embedded-darwin-x64@1.102.0:
+ sass-embedded-darwin-x64@1.103.1:
optional: true
- sass-embedded-linux-arm64@1.102.0:
+ sass-embedded-linux-arm64@1.103.1:
optional: true
- sass-embedded-linux-arm@1.102.0:
+ sass-embedded-linux-arm@1.103.1:
optional: true
- sass-embedded-linux-musl-arm64@1.102.0:
+ sass-embedded-linux-musl-arm64@1.103.1:
optional: true
- sass-embedded-linux-musl-arm@1.102.0:
+ sass-embedded-linux-musl-arm@1.103.1:
optional: true
- sass-embedded-linux-musl-riscv64@1.102.0:
+ sass-embedded-linux-musl-riscv64@1.103.1:
optional: true
- sass-embedded-linux-musl-x64@1.102.0:
+ sass-embedded-linux-musl-x64@1.103.1:
optional: true
- sass-embedded-linux-riscv64@1.102.0:
+ sass-embedded-linux-riscv64@1.103.1:
optional: true
- sass-embedded-linux-x64@1.102.0:
+ sass-embedded-linux-x64@1.103.1:
optional: true
- sass-embedded-unknown-all@1.102.0:
+ sass-embedded-unknown-all@1.103.1:
dependencies:
- sass: 1.102.0
+ sass: 1.103.1
optional: true
- sass-embedded-win32-arm64@1.102.0:
+ sass-embedded-win32-arm64@1.103.1:
optional: true
- sass-embedded-win32-x64@1.102.0:
+ sass-embedded-win32-x64@1.103.1:
optional: true
- sass-embedded@1.102.0:
+ sass-embedded@1.103.1:
dependencies:
- '@bufbuild/protobuf': 2.10.2
+ '@bufbuild/protobuf': 2.14.0
colorjs.io: 0.7.1
- immutable: 5.1.5
+ immutable: 5.1.9
rxjs: 7.8.2
supports-color: 8.1.1
sync-child-process: 1.0.2
varint: 6.0.0
optionalDependencies:
- sass-embedded-all-unknown: 1.102.0
- sass-embedded-android-arm: 1.102.0
- sass-embedded-android-arm64: 1.102.0
- sass-embedded-android-riscv64: 1.102.0
- sass-embedded-android-x64: 1.102.0
- sass-embedded-darwin-arm64: 1.102.0
- sass-embedded-darwin-x64: 1.102.0
- sass-embedded-linux-arm: 1.102.0
- sass-embedded-linux-arm64: 1.102.0
- sass-embedded-linux-musl-arm: 1.102.0
- sass-embedded-linux-musl-arm64: 1.102.0
- sass-embedded-linux-musl-riscv64: 1.102.0
- sass-embedded-linux-musl-x64: 1.102.0
- sass-embedded-linux-riscv64: 1.102.0
- sass-embedded-linux-x64: 1.102.0
- sass-embedded-unknown-all: 1.102.0
- sass-embedded-win32-arm64: 1.102.0
- sass-embedded-win32-x64: 1.102.0
-
- sass-loader@16.0.6(@rspack/core@1.7.11)(sass-embedded@1.102.0)(sass@1.102.0)(webpack@5.95.0(@swc/core@1.16.0)):
- dependencies:
- neo-async: 2.6.2
- optionalDependencies:
- '@rspack/core': 1.7.11
- sass: 1.102.0
- sass-embedded: 1.102.0
- webpack: 5.95.0(@swc/core@1.16.0)
-
- sass@1.102.0:
+ sass-embedded-all-unknown: 1.103.1
+ sass-embedded-android-arm: 1.103.1
+ sass-embedded-android-arm64: 1.103.1
+ sass-embedded-android-riscv64: 1.103.1
+ sass-embedded-android-x64: 1.103.1
+ sass-embedded-darwin-arm64: 1.103.1
+ sass-embedded-darwin-x64: 1.103.1
+ sass-embedded-linux-arm: 1.103.1
+ sass-embedded-linux-arm64: 1.103.1
+ sass-embedded-linux-musl-arm: 1.103.1
+ sass-embedded-linux-musl-arm64: 1.103.1
+ sass-embedded-linux-musl-riscv64: 1.103.1
+ sass-embedded-linux-musl-x64: 1.103.1
+ sass-embedded-linux-riscv64: 1.103.1
+ sass-embedded-linux-x64: 1.103.1
+ sass-embedded-unknown-all: 1.103.1
+ sass-embedded-win32-arm64: 1.103.1
+ sass-embedded-win32-x64: 1.103.1
+
+ sass@1.103.1:
dependencies:
chokidar: 5.0.0
- immutable: 5.1.5
+ immutable: 5.1.9
source-map-js: 1.2.1
optionalDependencies:
- '@parcel/watcher': 2.5.1
-
- sax@1.2.4: {}
-
- sax@1.4.1: {}
+ '@parcel/watcher': 2.6.0
+ optional: true
scheduler@0.27.0: {}
- schema-dts@1.1.5: {}
-
- schema-utils@3.3.0:
- dependencies:
- '@types/json-schema': 7.0.15
- ajv: 6.12.6
- ajv-keywords: 3.5.2(ajv@6.12.6)
-
- schema-utils@4.2.0:
- dependencies:
- '@types/json-schema': 7.0.15
- ajv: 8.17.1
- ajv-formats: 2.1.1(ajv@8.17.1)
- ajv-keywords: 5.1.0(ajv@8.17.1)
-
- search-insights@2.17.1: {}
-
- section-matter@1.0.0:
- dependencies:
- extend-shallow: 2.0.1
- kind-of: 6.0.3
-
- select-hose@2.0.0: {}
-
- selfsigned@2.4.1:
- dependencies:
- '@types/node-forge': 1.3.11
- node-forge: 1.3.1
-
- semver-diff@4.0.0:
- dependencies:
- semver: 7.6.3
-
- semver@6.3.1: {}
-
- semver@7.6.3: {}
-
- send@0.19.0:
- dependencies:
- debug: 2.6.9
- depd: 2.0.0
- destroy: 1.2.0
- encodeurl: 1.0.2
- escape-html: 1.0.3
- etag: 1.8.1
- fresh: 0.5.2
- http-errors: 2.0.0
- mime: 1.6.0
- ms: 2.1.3
- on-finished: 2.4.1
- range-parser: 1.2.1
- statuses: 2.0.1
- transitivePeerDependencies:
- - supports-color
-
- serialize-javascript@6.0.2:
- dependencies:
- randombytes: 2.1.0
-
- seroval-plugins@1.1.1(seroval@1.1.1):
+ scroll-into-view-if-needed@3.1.0:
dependencies:
- seroval: 1.1.1
+ compute-scroll-into-view: 3.1.1
- seroval@1.1.1: {}
+ scule@1.3.0: {}
- serve-handler@6.1.7:
- dependencies:
- bytes: 3.0.0
- content-disposition: 0.5.2
- mime-types: 2.1.18
- minimatch: 3.1.5
- path-is-inside: 1.0.2
- path-to-regexp: 3.3.0
- range-parser: 1.2.0
-
- serve-index@1.9.1:
- dependencies:
- accepts: 1.3.8
- batch: 0.6.1
- debug: 2.6.9
- escape-html: 1.0.3
- http-errors: 1.6.3
- mime-types: 2.1.35
- parseurl: 1.3.3
- transitivePeerDependencies:
- - supports-color
-
- serve-static@1.16.2:
- dependencies:
- encodeurl: 2.0.0
- escape-html: 1.0.3
- parseurl: 1.3.3
- send: 0.19.0
- transitivePeerDependencies:
- - supports-color
-
- set-function-length@1.2.2:
- dependencies:
- define-data-property: 1.1.4
- es-errors: 1.3.0
- function-bind: 1.1.2
- get-intrinsic: 1.2.4
- gopd: 1.0.1
- has-property-descriptors: 1.0.2
-
- set-function-name@2.0.2:
- dependencies:
- define-data-property: 1.1.4
- es-errors: 1.3.0
- functions-have-names: 1.2.3
- has-property-descriptors: 1.0.2
-
- setprototypeof@1.1.0: {}
-
- setprototypeof@1.2.0: {}
-
- shallow-clone@3.0.1:
- dependencies:
- kind-of: 6.0.3
-
- shallowequal@1.1.0: {}
-
- shebang-command@2.0.0:
- dependencies:
- shebang-regex: 3.0.0
-
- shebang-regex@3.0.0: {}
-
- shell-quote@1.8.1: {}
+ set-cookie-parser@2.7.2: {}
shiki@4.4.3:
dependencies:
@@ -14054,396 +4006,78 @@ snapshots:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.5
- side-channel-list@1.0.0:
- dependencies:
- es-errors: 1.3.0
- object-inspect: 1.13.4
-
- side-channel-map@1.0.1:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- object-inspect: 1.13.4
-
- side-channel-weakmap@1.0.2:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- object-inspect: 1.13.4
- side-channel-map: 1.0.1
-
- side-channel@1.0.6:
- dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- get-intrinsic: 1.2.4
- object-inspect: 1.13.2
-
- side-channel@1.1.0:
- dependencies:
- es-errors: 1.3.0
- object-inspect: 1.13.4
- side-channel-list: 1.0.0
- side-channel-map: 1.0.1
- side-channel-weakmap: 1.0.2
-
- signal-exit@3.0.7: {}
-
- sirv@2.0.4:
- dependencies:
- '@polka/url': 1.0.0-next.28
- mrmime: 2.0.0
- totalist: 3.0.1
-
- sisteransi@1.0.5: {}
-
- sitemap@7.1.2:
- dependencies:
- '@types/node': 17.0.45
- '@types/sax': 1.2.7
- arg: 5.0.2
- sax: 1.4.1
-
- skin-tone@2.0.0:
- dependencies:
- unicode-emoji-modifier-base: 1.0.0
-
- slash@3.0.0: {}
-
- slash@4.0.0: {}
-
- snake-case@3.0.4:
- dependencies:
- dot-case: 3.0.4
- tslib: 2.8.0
-
- sockjs@0.3.24:
- dependencies:
- faye-websocket: 0.11.4
- uuid: 8.3.2
- websocket-driver: 0.7.4
-
- solid-js@1.9.5:
- dependencies:
- csstype: 3.1.3
- seroval: 1.1.1
- seroval-plugins: 1.1.1(seroval@1.1.1)
-
- sort-css-media-queries@2.2.0: {}
-
source-map-js@1.2.1: {}
- source-map-support@0.5.21:
- dependencies:
- buffer-from: 1.1.2
- source-map: 0.6.1
-
- source-map@0.6.1: {}
-
- source-map@0.7.4: {}
+ source-map@0.7.6: {}
space-separated-tokens@2.0.2: {}
- spdy-transport@3.0.0:
- dependencies:
- debug: 4.3.7
- detect-node: 2.1.0
- hpack.js: 2.1.6
- obuf: 1.1.2
- readable-stream: 3.6.2
- wbuf: 1.7.3
- transitivePeerDependencies:
- - supports-color
-
- spdy@4.0.2:
- dependencies:
- debug: 4.3.7
- handle-thing: 2.0.1
- http-deceiver: 1.2.7
- select-hose: 2.0.0
- spdy-transport: 3.0.0
- transitivePeerDependencies:
- - supports-color
-
- sprintf-js@1.0.3: {}
-
- srcset@4.0.0: {}
-
- stable@0.1.8: {}
-
- statuses@1.5.0: {}
-
- statuses@2.0.1: {}
-
- std-env@3.7.0: {}
-
- string-width@4.2.3:
- dependencies:
- emoji-regex: 8.0.0
- is-fullwidth-code-point: 3.0.0
- strip-ansi: 6.0.1
-
- string-width@5.1.2:
+ string-width@6.1.0:
dependencies:
eastasianwidth: 0.2.0
- emoji-regex: 9.2.2
- strip-ansi: 7.1.0
-
- string.prototype.trim@1.2.9:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- es-object-atoms: 1.0.0
-
- string.prototype.trimend@1.0.8:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-object-atoms: 1.0.0
-
- string.prototype.trimstart@1.0.8:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-object-atoms: 1.0.0
-
- string_decoder@1.1.1:
- dependencies:
- safe-buffer: 5.1.2
-
- string_decoder@1.3.0:
- dependencies:
- safe-buffer: 5.2.1
+ emoji-regex: 10.6.0
+ strip-ansi: 7.2.0
stringify-entities@4.0.4:
dependencies:
character-entities-html4: 2.1.0
character-entities-legacy: 3.0.0
- stringify-object@3.3.0:
- dependencies:
- get-own-enumerable-property-symbols: 3.0.2
- is-obj: 1.0.1
- is-regexp: 1.0.0
-
- strip-ansi@6.0.1:
+ strip-ansi@7.2.0:
dependencies:
- ansi-regex: 5.0.1
+ ansi-regex: 6.3.0
- strip-ansi@7.1.0:
+ style-to-js@1.1.21:
dependencies:
- ansi-regex: 6.1.0
+ style-to-object: 1.0.14
- strip-bom-string@1.0.0: {}
-
- strip-final-newline@2.0.0: {}
-
- strip-json-comments@2.0.1: {}
-
- strip-json-comments@3.1.1: {}
-
- strip-json-comments@4.0.0: {}
-
- style-to-object@0.4.4:
- dependencies:
- inline-style-parser: 0.1.1
-
- style-to-object@1.0.8:
- dependencies:
- inline-style-parser: 0.2.4
-
- stylehacks@6.1.1(postcss@8.5.6):
- dependencies:
- browserslist: 4.28.1
- postcss: 8.5.6
- postcss-selector-parser: 6.1.2
-
- stylis@4.3.6: {}
-
- supports-color@5.5.0:
+ style-to-object@1.0.14:
dependencies:
- has-flag: 3.0.0
+ inline-style-parser: 0.2.7
- supports-color@7.2.0:
- dependencies:
- has-flag: 4.0.0
+ stylis@4.4.0: {}
supports-color@8.1.1:
dependencies:
has-flag: 4.0.0
- supports-preserve-symlinks-flag@1.0.0: {}
-
- svg-parser@2.0.4: {}
-
- svgo@1.3.2:
- dependencies:
- chalk: 2.4.2
- coa: 2.0.2
- css-select: 2.1.0
- css-select-base-adapter: 0.1.1
- css-tree: 1.0.0-alpha.37
- csso: 4.2.0
- js-yaml: 3.14.1
- mkdirp: 0.5.6
- object.values: 1.2.0
- sax: 1.2.4
- stable: 0.1.8
- unquote: 1.1.1
- util.promisify: 1.0.1
-
- svgo@3.3.2:
- dependencies:
- '@trysound/sax': 0.2.0
- commander: 7.2.0
- css-select: 5.1.0
- css-tree: 2.3.1
- css-what: 6.1.0
- csso: 5.0.5
- picocolors: 1.1.1
-
- swc-loader@0.2.6(@swc/core@1.16.0)(webpack@5.95.0(@swc/core@1.16.0)):
- dependencies:
- '@swc/core': 1.16.0
- '@swc/counter': 0.1.3
- webpack: 5.95.0(@swc/core@1.16.0)
+ supports-color@9.4.0: {}
sync-child-process@1.0.2:
dependencies:
- sync-message-port: 1.1.3
-
- sync-message-port@1.1.3: {}
-
- tapable@2.2.1: {}
-
- terser-webpack-plugin@5.3.10(@swc/core@1.16.0)(webpack@5.95.0(@swc/core@1.16.0)):
- dependencies:
- '@jridgewell/trace-mapping': 0.3.25
- jest-worker: 27.5.1
- schema-utils: 3.3.0
- serialize-javascript: 6.0.2
- terser: 5.36.0
- webpack: 5.95.0(@swc/core@1.16.0)
- optionalDependencies:
- '@swc/core': 1.16.0
-
- terser@5.36.0:
- dependencies:
- '@jridgewell/source-map': 0.3.6
- acorn: 8.14.0
- commander: 2.20.3
- source-map-support: 0.5.21
-
- thingies@2.5.0(tslib@2.8.0):
- dependencies:
- tslib: 2.8.0
+ sync-message-port: 1.2.0
- thunky@1.1.0: {}
+ sync-message-port@1.2.0: {}
- tiny-invariant@1.3.3: {}
-
- tiny-warning@1.0.3: {}
-
- tinyexec@0.3.1: {}
-
- tinypool@1.0.2: {}
-
- to-regex-range@5.0.1:
+ tinyglobby@0.2.17:
dependencies:
- is-number: 7.0.0
+ fdir: 6.5.0(picomatch@4.0.7)
+ picomatch: 4.0.7
- toidentifier@1.0.1: {}
-
- totalist@3.0.1: {}
-
- tree-dump@1.1.0(tslib@2.8.0):
- dependencies:
- tslib: 2.8.0
+ toggle-selection@1.0.6: {}
trim-lines@3.0.1: {}
trough@2.2.0: {}
- ts-dedent@2.2.0: {}
-
- tslib@2.8.0: {}
-
- type-fest@1.4.0: {}
-
- type-fest@2.19.0: {}
-
- type-is@1.6.18:
- dependencies:
- media-typer: 0.3.0
- mime-types: 2.1.35
-
- typed-array-buffer@1.0.2:
- dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- is-typed-array: 1.1.13
-
- typed-array-byte-length@1.0.1:
- dependencies:
- call-bind: 1.0.7
- for-each: 0.3.3
- gopd: 1.0.1
- has-proto: 1.0.3
- is-typed-array: 1.1.13
-
- typed-array-byte-offset@1.0.2:
- dependencies:
- available-typed-arrays: 1.0.7
- call-bind: 1.0.7
- for-each: 0.3.3
- gopd: 1.0.1
- has-proto: 1.0.3
- is-typed-array: 1.1.13
-
- typed-array-length@1.0.6:
- dependencies:
- call-bind: 1.0.7
- for-each: 0.3.3
- gopd: 1.0.1
- has-proto: 1.0.3
- is-typed-array: 1.1.13
- possible-typed-array-names: 1.0.0
+ ts-dedent@2.3.0: {}
- typedarray-to-buffer@3.1.5:
+ ts-morph@27.0.2:
dependencies:
- is-typedarray: 1.0.0
-
- typescript@5.6.3:
- optional: true
-
- uc.micro@1.0.6: {}
-
- ufo@1.5.4: {}
+ '@ts-morph/common': 0.28.1
+ code-block-writer: 13.0.3
- unbox-primitive@1.0.2:
- dependencies:
- call-bind: 1.0.7
- has-bigints: 1.0.2
- has-symbols: 1.0.3
- which-boxed-primitive: 1.0.2
+ tslib@2.8.1: {}
- undici-types@6.19.8: {}
+ typescript@6.0.3: {}
- unicode-canonical-property-names-ecmascript@2.0.0: {}
+ undici-types@6.21.0: {}
- unicode-emoji-modifier-base@1.0.0: {}
+ undici-types@7.24.6: {}
- unicode-match-property-ecmascript@2.0.0:
+ unhead@2.1.17:
dependencies:
- unicode-canonical-property-names-ecmascript: 2.0.0
- unicode-property-aliases-ecmascript: 2.1.0
-
- unicode-match-property-value-ecmascript@2.2.0: {}
-
- unicode-property-aliases-ecmascript@2.1.0: {}
+ hookable: 6.1.1
unified@11.0.5:
dependencies:
@@ -14455,11 +4089,7 @@ snapshots:
trough: 2.2.0
vfile: 6.0.3
- unique-string@3.0.0:
- dependencies:
- crypto-random-string: 4.0.0
-
- unist-util-is@6.0.0:
+ unist-util-is@6.0.1:
dependencies:
'@types/unist': 3.0.3
@@ -14471,328 +4101,82 @@ snapshots:
dependencies:
'@types/unist': 3.0.3
- unist-util-stringify-position@4.0.0:
+ unist-util-stringify-position@3.0.3:
dependencies:
- '@types/unist': 3.0.3
+ '@types/unist': 2.0.11
- unist-util-visit-parents@6.0.1:
+ unist-util-stringify-position@4.0.0:
dependencies:
'@types/unist': 3.0.3
- unist-util-is: 6.0.0
- unist-util-visit@5.1.0:
+ unist-util-visit-children@3.0.0:
dependencies:
'@types/unist': 3.0.3
- unist-util-is: 6.0.0
- unist-util-visit-parents: 6.0.1
-
- universalify@2.0.1: {}
-
- unpipe@1.0.0: {}
-
- unquote@1.1.1: {}
-
- update-browserslist-db@1.1.1(browserslist@4.24.2):
- dependencies:
- browserslist: 4.24.2
- escalade: 3.2.0
- picocolors: 1.1.1
- update-browserslist-db@1.2.3(browserslist@4.28.1):
+ unist-util-visit-parents@6.0.2:
dependencies:
- browserslist: 4.28.1
- escalade: 3.2.0
- picocolors: 1.1.1
-
- update-notifier@6.0.2:
- dependencies:
- boxen: 7.1.1
- chalk: 5.3.0
- configstore: 6.0.0
- has-yarn: 3.0.0
- import-lazy: 4.0.0
- is-ci: 3.0.1
- is-installed-globally: 0.4.0
- is-npm: 6.0.0
- is-yarn-global: 0.4.1
- latest-version: 7.0.0
- pupa: 3.1.0
- semver: 7.6.3
- semver-diff: 4.0.0
- xdg-basedir: 5.1.0
-
- uri-js@4.4.1:
- dependencies:
- punycode: 2.3.1
-
- url-loader@4.1.1(file-loader@6.2.0(webpack@5.95.0(@swc/core@1.16.0)))(webpack@5.95.0(@swc/core@1.16.0)):
- dependencies:
- loader-utils: 2.0.4
- mime-types: 2.1.35
- schema-utils: 3.3.0
- webpack: 5.95.0(@swc/core@1.16.0)
- optionalDependencies:
- file-loader: 6.2.0(webpack@5.95.0(@swc/core@1.16.0))
-
- util-deprecate@1.0.2: {}
+ '@types/unist': 3.0.3
+ unist-util-is: 6.0.1
- util.promisify@1.0.1:
+ unist-util-visit@5.1.0:
dependencies:
- define-properties: 1.2.1
- es-abstract: 1.23.3
- has-symbols: 1.0.3
- object.getownpropertydescriptors: 2.1.8
-
- utila@0.4.0: {}
-
- utility-types@3.11.0: {}
-
- utils-merge@1.0.1: {}
+ '@types/unist': 3.0.3
+ unist-util-is: 6.0.1
+ unist-util-visit-parents: 6.0.2
- uuid@11.1.0: {}
+ util-ts-types@1.0.0: {}
- uuid@8.3.2: {}
+ uuid@14.0.2: {}
- validate-peer-dependencies@2.2.0:
+ uvu@0.5.6:
dependencies:
- resolve-package-path: 4.0.3
- semver: 7.6.3
-
- value-equal@1.0.1: {}
+ dequal: 2.0.3
+ diff: 5.2.2
+ kleur: 4.1.5
+ sade: 1.8.1
varint@6.0.0: {}
- vary@1.1.2: {}
-
vfile-location@5.0.3:
dependencies:
'@types/unist': 3.0.3
vfile: 6.0.3
- vfile-message@4.0.2:
+ vfile-message@4.0.3:
dependencies:
'@types/unist': 3.0.3
unist-util-stringify-position: 4.0.0
- vfile@6.0.3:
- dependencies:
- '@types/unist': 3.0.3
- vfile-message: 4.0.2
-
- vscode-jsonrpc@8.2.0: {}
-
- vscode-languageserver-protocol@3.17.5:
+ vfile-reporter@8.1.1:
dependencies:
- vscode-jsonrpc: 8.2.0
- vscode-languageserver-types: 3.17.5
-
- vscode-languageserver-textdocument@1.0.12: {}
-
- vscode-languageserver-types@3.17.5: {}
+ '@types/supports-color': 8.1.3
+ string-width: 6.1.0
+ supports-color: 9.4.0
+ unist-util-stringify-position: 4.0.0
+ vfile: 6.0.3
+ vfile-message: 4.0.3
+ vfile-sort: 4.0.0
+ vfile-statistics: 3.0.0
- vscode-languageserver@9.0.1:
+ vfile-sort@4.0.0:
dependencies:
- vscode-languageserver-protocol: 3.17.5
-
- vscode-uri@3.0.8: {}
+ vfile: 6.0.3
+ vfile-message: 4.0.3
- watchpack@2.4.2:
+ vfile-statistics@3.0.0:
dependencies:
- glob-to-regexp: 0.4.1
- graceful-fs: 4.2.11
+ vfile: 6.0.3
+ vfile-message: 4.0.3
- wbuf@1.7.3:
+ vfile@6.0.3:
dependencies:
- minimalistic-assert: 1.0.1
+ '@types/unist': 3.0.3
+ vfile-message: 4.0.3
web-namespaces@2.0.1: {}
- webpack-bundle-analyzer@4.10.2:
- dependencies:
- '@discoveryjs/json-ext': 0.5.7
- acorn: 8.14.0
- acorn-walk: 8.3.4
- commander: 7.2.0
- debounce: 1.2.1
- escape-string-regexp: 4.0.0
- gzip-size: 6.0.0
- html-escaper: 2.0.2
- opener: 1.5.2
- picocolors: 1.1.1
- sirv: 2.0.4
- ws: 7.5.10
- transitivePeerDependencies:
- - bufferutil
- - utf-8-validate
-
- webpack-dev-middleware@7.4.5(webpack@5.95.0(@swc/core@1.16.0)):
- dependencies:
- colorette: 2.0.20
- memfs: 4.51.1
- mime-types: 3.0.2
- on-finished: 2.4.1
- range-parser: 1.2.1
- schema-utils: 4.2.0
- optionalDependencies:
- webpack: 5.95.0(@swc/core@1.16.0)
-
- webpack-dev-server@5.2.2(webpack@5.95.0(@swc/core@1.16.0)):
- dependencies:
- '@types/bonjour': 3.5.13
- '@types/connect-history-api-fallback': 1.5.4
- '@types/express': 4.17.21
- '@types/express-serve-static-core': 4.19.6
- '@types/serve-index': 1.9.4
- '@types/serve-static': 1.15.7
- '@types/sockjs': 0.3.36
- '@types/ws': 8.5.12
- ansi-html-community: 0.0.8
- bonjour-service: 1.2.1
- chokidar: 3.6.0
- colorette: 2.0.20
- compression: 1.7.4
- connect-history-api-fallback: 2.0.0
- express: 4.22.1
- graceful-fs: 4.2.11
- http-proxy-middleware: 2.0.9(@types/express@4.17.21)
- ipaddr.js: 2.2.0
- launch-editor: 2.9.1
- open: 10.2.0
- p-retry: 6.2.1
- schema-utils: 4.2.0
- selfsigned: 2.4.1
- serve-index: 1.9.1
- sockjs: 0.3.24
- spdy: 4.0.2
- webpack-dev-middleware: 7.4.5(webpack@5.95.0(@swc/core@1.16.0))
- ws: 8.18.0
- optionalDependencies:
- webpack: 5.95.0(@swc/core@1.16.0)
- transitivePeerDependencies:
- - bufferutil
- - debug
- - supports-color
- - utf-8-validate
-
- webpack-merge@5.10.0:
- dependencies:
- clone-deep: 4.0.1
- flat: 5.0.2
- wildcard: 2.0.1
-
- webpack-merge@6.0.1:
- dependencies:
- clone-deep: 4.0.1
- flat: 5.0.2
- wildcard: 2.0.1
-
- webpack-sources@3.2.3: {}
-
- webpack@5.95.0(@swc/core@1.16.0):
- dependencies:
- '@types/estree': 1.0.6
- '@webassemblyjs/ast': 1.12.1
- '@webassemblyjs/wasm-edit': 1.12.1
- '@webassemblyjs/wasm-parser': 1.12.1
- acorn: 8.14.0
- acorn-import-attributes: 1.9.5(acorn@8.14.0)
- browserslist: 4.28.1
- chrome-trace-event: 1.0.4
- enhanced-resolve: 5.17.1
- es-module-lexer: 1.5.4
- eslint-scope: 5.1.1
- events: 3.3.0
- glob-to-regexp: 0.4.1
- graceful-fs: 4.2.11
- json-parse-even-better-errors: 2.3.1
- loader-runner: 4.3.0
- mime-types: 2.1.35
- neo-async: 2.6.2
- schema-utils: 3.3.0
- tapable: 2.2.1
- terser-webpack-plugin: 5.3.10(@swc/core@1.16.0)(webpack@5.95.0(@swc/core@1.16.0))
- watchpack: 2.4.2
- webpack-sources: 3.2.3
- transitivePeerDependencies:
- - '@swc/core'
- - esbuild
- - uglify-js
-
- webpackbar@7.0.0(@rspack/core@1.7.11)(webpack@5.95.0(@swc/core@1.16.0)):
- dependencies:
- ansis: 3.17.0
- consola: 3.2.3
- pretty-time: 1.1.0
- std-env: 3.7.0
- optionalDependencies:
- '@rspack/core': 1.7.11
- webpack: 5.95.0(@swc/core@1.16.0)
-
- websocket-driver@0.7.4:
- dependencies:
- http-parser-js: 0.5.8
- safe-buffer: 5.2.1
- websocket-extensions: 0.1.4
-
- websocket-extensions@0.1.4: {}
-
- which-boxed-primitive@1.0.2:
- dependencies:
- is-bigint: 1.0.4
- is-boolean-object: 1.1.2
- is-number-object: 1.0.7
- is-string: 1.0.7
- is-symbol: 1.0.4
-
- which-typed-array@1.1.15:
- dependencies:
- available-typed-arrays: 1.0.7
- call-bind: 1.0.7
- for-each: 0.3.3
- gopd: 1.0.1
- has-tostringtag: 1.0.2
-
- which@2.0.2:
- dependencies:
- isexe: 2.0.0
-
- widest-line@4.0.1:
- dependencies:
- string-width: 5.1.2
-
- wildcard@2.0.1: {}
-
- wrap-ansi@8.1.0:
- dependencies:
- ansi-styles: 6.2.1
- string-width: 5.1.2
- strip-ansi: 7.1.0
-
- write-file-atomic@3.0.3:
- dependencies:
- imurmurhash: 0.1.4
- is-typedarray: 1.0.0
- signal-exit: 3.0.7
- typedarray-to-buffer: 3.1.5
-
- ws@7.5.10: {}
-
- ws@8.18.0: {}
-
- wsl-utils@0.1.0:
- dependencies:
- is-wsl: 3.1.0
-
- xdg-basedir@5.1.0: {}
-
- xml-js@1.6.11:
- dependencies:
- sax: 1.4.1
-
- yallist@3.1.1: {}
-
- yaml@1.10.2: {}
+ web-worker@1.5.0: {}
- yocto-queue@1.1.1: {}
+ yaml@2.9.0: {}
zwitch@2.0.4: {}
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 7a8db06f..2b218af0 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -1,5 +1,3 @@
-onlyBuiltDependencies:
- - '@parcel/watcher'
- - '@swc/core'
- - core-js
- - core-js-pure
+minimumReleaseAgeExclude:
+ - '@rspress/core@2.0.20'
+ - '@rspress/shared@2.0.20'
diff --git a/rspress.config.ts b/rspress.config.ts
new file mode 100644
index 00000000..95d4a947
--- /dev/null
+++ b/rspress.config.ts
@@ -0,0 +1,76 @@
+import * as path from 'node:path';
+import { pluginSass } from '@rsbuild/plugin-sass';
+import { defineConfig } from '@rspress/core';
+import { transformerCompatibleMetaHighlight } from '@rspress/core/shiki-transformers';
+import { pluginSitemap } from '@rspress/plugin-sitemap';
+import fileTree from 'rspress-plugin-file-tree';
+import ga from 'rspress-plugin-google-analytics';
+import mermaid from 'rspress-plugin-mermaid';
+
+const SITE_URL = 'https://docs.halo.run';
+
+export default defineConfig({
+ root: path.join(__dirname, 'docs'),
+ themeDir: path.join(__dirname, 'theme'),
+ lang: 'zh',
+ title: 'Halo 文档',
+ logoText: 'Halo 文档',
+ icon: '/img/favicon-96x96.png',
+ logo: 'https://www.halo.run/logo',
+ llms: true,
+ siteOrigin: SITE_URL,
+ globalStyles: path.join(__dirname, 'styles/index.scss'),
+ route: {
+ cleanUrls: true,
+ },
+ markdown: {
+ showLineNumbers: true,
+ link: {
+ checkDeadLinks: true,
+ },
+ shiki: {
+ theme: 'github-dark',
+ transformers: [transformerCompatibleMetaHighlight()],
+ },
+ },
+ outDir: 'build',
+ plugins: [
+ pluginSitemap({
+ siteUrl: SITE_URL,
+ }),
+ mermaid(),
+ ga({
+ id: 'UA-110780416-7',
+ }),
+ fileTree(),
+ ],
+ builderConfig: {
+ plugins: [pluginSass()],
+ html: {
+ tags: [
+ {
+ tag: 'script',
+ attrs: {
+ src: 'https://track.halo.run/api/script.js',
+ defer: true,
+ 'data-site-id': '3',
+ },
+ },
+ ],
+ },
+ },
+ themeConfig: {
+ lastUpdated: true,
+ enableScrollToTop: true,
+ editLink: {
+ docRepoBaseUrl: 'https://github.com/halo-dev/docs/tree/main/docs',
+ },
+ socialLinks: [
+ {
+ icon: 'github',
+ mode: 'github-stars',
+ content: 'https://github.com/halo-dev/halo',
+ },
+ ],
+ },
+});
diff --git a/sidebars.js b/sidebars.js
deleted file mode 100644
index 7348e7b2..00000000
--- a/sidebars.js
+++ /dev/null
@@ -1,473 +0,0 @@
-/**
- * Creating a sidebar enables you to:
- - create an ordered group of docs
- - render a sidebar for each doc of that group
- - provide next/previous navigation
-
- The sidebars can be generated from the filesystem, or explicitly defined here.
-
- Create as many sidebars as you want.
- */
-
-/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
-module.exports = {
- // By default, Docusaurus generates a sidebar from the docs folder structure
- // tutorialSidebar: [{type: 'autogenerated', dirName: '.'}],
-
- tutorial: [
- "intro",
- {
- type: "category",
- label: "入门",
- link: {
- type: "generated-index",
- },
- collapsed: false,
- items: [
- "getting-started/prepare",
- {
- type: "category",
- label: "安装指南",
- link: {
- type: "generated-index",
- },
- items: [
- "getting-started/install/docker-compose",
- "getting-started/install/docker",
- "getting-started/install/1panel",
- "getting-started/install/bt-panel",
- "getting-started/install/helm",
- "getting-started/install/podman",
- "getting-started/install/jar-file",
- "getting-started/install/offline",
- "getting-started/install/config",
- {
- type: "category",
- label: "云平台",
- link: {
- type: "generated-index",
- },
- items: [
- "getting-started/install/cloud/alibaba-cloud-market",
- "getting-started/install/cloud/tencent-cloud-lighthouse",
- "getting-started/install/cloud/alibaba-cloud-computenest",
- {
- type: "link",
- label: "Zeabur 一键部署",
- href: "https://zeabur.com/docs/zh-CN/marketplace/halo",
- description: "在 Zeabur 一键部署 Halo 服务",
- },
- {
- type: "link",
- label: "Rainbond 一键部署",
- href: "https://hub.grapps.cn/marketplace/apps/1255",
- description: "在 Rainbond 一键部署 Halo 服务",
- },
- ],
- },
- {
- type: "category",
- label: "其他指南",
- link: {
- type: "generated-index",
- },
- items: [
- "getting-started/install/other/nginxproxymanager",
- "getting-started/install/other/traefik",
- ],
- },
- ],
- },
- "getting-started/migrate-from-1.x",
- "getting-started/setup",
- "getting-started/first-post",
- // "getting-started/config",
- // "getting-started/upgrade",
- // "getting-started/downloads",
- ],
- },
- {
- type: "category",
- label: "用户指南",
- link: {
- type: "generated-index",
- },
- items: [
- "user-guide/common",
- "user-guide/activate",
- "user-guide/user-center",
- "user-guide/posts",
- "user-guide/pages",
- "user-guide/attachments",
- "user-guide/menus",
- "user-guide/themes",
- "user-guide/plugins",
- "user-guide/app-store",
- "user-guide/users",
- "user-guide/settings",
- "user-guide/backup",
- {
- type: "category",
- label: "商城",
- link: {
- type: "doc",
- id: "user-guide/shop/index",
- },
- items: [
- "user-guide/shop/prepare",
- "user-guide/shop/console-home",
- "user-guide/shop/payments",
- "user-guide/shop/sales-channels",
- "user-guide/shop/products",
- "user-guide/shop/orders",
- "user-guide/shop/virtual-delivery",
- "user-guide/shop/theme-dev",
- "user-guide/shop/mp",
- ],
- },
- "user-guide/faq",
- ],
- },
- {
- type: "category",
- label: "参与贡献",
- link: {
- type: "generated-index",
- },
- items: ["contribution/issue", "contribution/pr"],
- },
- "about",
- {
- type: "link",
- label: "更新日志",
- href: "https://releases.halo.run/changelog",
- description: "查看 Halo 的更新日志",
- }
- ],
-
- developer: [
- {
- type: "category",
- label: "系统开发",
- link: {
- type: "generated-index",
- },
- items: [
- // "developer-guide/core/structure",
- "developer-guide/core/prepare",
- "developer-guide/core/run",
- "developer-guide/core/build",
- "developer-guide/core/framework",
- // "developer-guide/core/code-style",
- ],
- },
- {
- type: "category",
- label: "插件开发",
- link: {
- type: "generated-index",
- },
- items: [
- "developer-guide/plugin/introduction",
- "developer-guide/plugin/prepare",
- "developer-guide/plugin/hello-world",
- {
- type: "category",
- label: "基础",
- link: {
- type: "generated-index",
- },
- items: [
- "developer-guide/plugin/basics/structure",
- "developer-guide/plugin/basics/manifest",
- "developer-guide/plugin/basics/devtools",
- {
- type: "category",
- label: "服务端",
- key: "basics-server",
- link: {
- type: "generated-index",
- },
- items: [
- "developer-guide/plugin/basics/server/lifecycle",
- "developer-guide/plugin/basics/server/object-management",
- ],
- },
- {
- type: "category",
- label: "UI",
- key: "basics-ui",
- link: {
- type: "generated-index",
- },
- items: [
- "developer-guide/plugin/basics/ui/intro",
- "developer-guide/plugin/basics/ui/entry",
- "developer-guide/plugin/basics/ui/build",
- ],
- },
- ],
- },
- {
- type: "category",
- label: "API 参考",
- link: {
- type: "generated-index",
- },
- items: [
- {
- type: "category",
- label: "服务端",
- key: "api-reference-server",
- link: {
- type: "generated-index",
- },
- items: [
- "developer-guide/plugin/api-reference/server/extension",
- "developer-guide/plugin/api-reference/server/reconciler",
- "developer-guide/plugin/api-reference/server/extension-client",
- "developer-guide/plugin/api-reference/server/setting-fetcher",
- "developer-guide/plugin/api-reference/server/reverseproxy",
- "developer-guide/plugin/api-reference/server/notification",
- "developer-guide/plugin/api-reference/server/finder-for-theme",
- "developer-guide/plugin/api-reference/server/template-for-theme",
- "developer-guide/plugin/api-reference/server/websocket",
- "developer-guide/plugin/api-reference/server/login-handler-enhancer",
- "developer-guide/plugin/api-reference/server/extension-getter",
- ],
- },
- {
- type: "category",
- label: "UI",
- key: "api-reference-ui",
- link: {
- type: "generated-index",
- },
- items: [
- "developer-guide/plugin/api-reference/ui/route",
- "developer-guide/plugin/api-reference/ui/api-request",
- "developer-guide/plugin/api-reference/ui/formkit",
- "developer-guide/plugin/api-reference/ui/shared",
- {
- type: "category",
- label: "组件",
- link: {
- type: "doc",
- id: "developer-guide/plugin/api-reference/ui/components/index",
- },
- items: [
- "developer-guide/plugin/api-reference/ui/components/uppy-upload",
- "developer-guide/plugin/api-reference/ui/components/filter-dropdown",
- "developer-guide/plugin/api-reference/ui/components/filter-clean-button",
- "developer-guide/plugin/api-reference/ui/components/annotations-form",
- "developer-guide/plugin/api-reference/ui/components/attachment-file-type-icon",
- "developer-guide/plugin/api-reference/ui/components/attachment-selector-modal",
- "developer-guide/plugin/api-reference/ui/components/has-permission",
- "developer-guide/plugin/api-reference/ui/components/search-input",
- "developer-guide/plugin/api-reference/ui/components/plugin-detail-modal",
- "developer-guide/plugin/api-reference/ui/components/v-codemirror",
- "developer-guide/plugin/api-reference/ui/components/v-tooltip",
- "developer-guide/plugin/api-reference/ui/components/v-permission",
- ],
- },
- ],
- },
- ],
- },
- {
- type: "category",
- label: "扩展点和定制化",
- link: {
- type: "doc",
- id: "developer-guide/plugin/extension-points/server/index",
- },
- items: [
- {
- type: "category",
- label: "服务端",
- key: "extension-points-server",
- link: {
- type: "doc",
- id: "developer-guide/plugin/extension-points/server/index",
- },
- items: [
- "developer-guide/plugin/extension-points/server/additional-webfilter",
- "developer-guide/plugin/extension-points/server/authentication-webfilter",
- "developer-guide/plugin/extension-points/server/attachment",
- "developer-guide/plugin/extension-points/server/comment-subject",
- "developer-guide/plugin/extension-points/server/comment-widget",
- "developer-guide/plugin/extension-points/server/element-tag-post-processor",
- "developer-guide/plugin/extension-points/server/excerpt-generator",
- "developer-guide/plugin/extension-points/server/halo-documents-provider",
- "developer-guide/plugin/extension-points/server/notifier",
- "developer-guide/plugin/extension-points/server/search-engine",
- "developer-guide/plugin/extension-points/server/template-head-processor",
- "developer-guide/plugin/extension-points/server/template-footer-processor",
- "developer-guide/plugin/extension-points/server/post-content",
- "developer-guide/plugin/extension-points/server/singlepage-content",
- "developer-guide/plugin/extension-points/server/user-creating-handler",
- "developer-guide/plugin/extension-points/server/username-password-authentication-manager",
- ],
- },
- {
- type: "category",
- label: "UI",
- key: "extension-points-ui",
- link: {
- type: "doc",
- id: "developer-guide/plugin/extension-points/ui/index",
- },
- items: [
- "developer-guide/plugin/extension-points/ui/attachment-selector-create",
- "developer-guide/plugin/extension-points/ui/editor-create",
- "developer-guide/plugin/extension-points/ui/plugin-self-tabs-create",
- "developer-guide/plugin/extension-points/ui/default-editor-extension-create",
- "developer-guide/plugin/extension-points/ui/comment-subject-ref-create",
- "developer-guide/plugin/extension-points/ui/backup-tabs-create",
- "developer-guide/plugin/extension-points/ui/plugin-installation-tabs-create",
- "developer-guide/plugin/extension-points/ui/theme-list-tabs-create",
- "developer-guide/plugin/extension-points/ui/post-list-item-operation-create",
- "developer-guide/plugin/extension-points/ui/single-page-list-item-operation-create",
- "developer-guide/plugin/extension-points/ui/comment-list-item-operation-create",
- "developer-guide/plugin/extension-points/ui/reply-list-item-operation-create",
- "developer-guide/plugin/extension-points/ui/plugin-list-item-operation-create",
- "developer-guide/plugin/extension-points/ui/backup-list-item-operation-create",
- "developer-guide/plugin/extension-points/ui/attachment-list-item-operation-create",
- "developer-guide/plugin/extension-points/ui/theme-list-item-operation-create",
- "developer-guide/plugin/extension-points/ui/plugin-list-item-field-create",
- "developer-guide/plugin/extension-points/ui/post-list-item-field-create",
- "developer-guide/plugin/extension-points/ui/single-page-list-item-field-create",
- "developer-guide/plugin/extension-points/ui/user-detail-tabs-create",
- "developer-guide/plugin/extension-points/ui/uc-user-profile-tabs-create",
- "developer-guide/plugin/extension-points/ui/dashboard-widgets",
- ],
- },
- ],
- },
- {
- type: "category",
- label: "与其他插件交互",
- link: {
- type: "doc",
- id: "developer-guide/plugin/interaction/dependency",
- },
- items: [
- "developer-guide/plugin/interaction/dependency",
- "developer-guide/plugin/interaction/shared-events",
- "developer-guide/plugin/interaction/making-plugin-extensible",
- ],
- },
- {
- type: "category",
- label: "安全和权限管理",
- link: {
- type: "doc",
- id: "developer-guide/plugin/security/role-template",
- },
- items: [
- "developer-guide/plugin/security/rbac",
- "developer-guide/plugin/security/role-template",
- "developer-guide/plugin/security/ui-permission",
- ],
- },
- {
- type: "category",
- label: "案例和最佳实践",
- link: {
- type: "generated-index",
- },
- items: ["developer-guide/plugin/examples/todolist"],
- },
- // "developer-guide/plugin/appendices",
- "developer-guide/plugin/api-changelog",
- ],
- },
- {
- type: "category",
- label: "主题开发",
- link: {
- type: "generated-index",
- },
- items: [
- "developer-guide/theme/prepare",
- "developer-guide/theme/config",
- "developer-guide/theme/structure",
- "developer-guide/theme/ui-plugin",
- "developer-guide/theme/page-layout",
- "developer-guide/theme/static-resources",
- "developer-guide/theme/settings",
- "developer-guide/theme/annotations",
- {
- type: "category",
- label: "模板编写",
- link: {
- type: "doc",
- id: "developer-guide/theme/template-variables",
- },
- items: [
- "developer-guide/theme/template-variables/index_",
- "developer-guide/theme/template-variables/post",
- "developer-guide/theme/template-variables/page",
- "developer-guide/theme/template-variables/archives",
- "developer-guide/theme/template-variables/tags",
- "developer-guide/theme/template-variables/tag",
- "developer-guide/theme/template-variables/categories",
- "developer-guide/theme/template-variables/category",
- "developer-guide/theme/template-variables/author",
- "developer-guide/theme/template-variables/auth",
- "developer-guide/theme/template-variables/error",
- ],
- },
- {
- type: "category",
- label: "Finder API",
- link: {
- type: "doc",
- id: "developer-guide/theme/finder-apis",
- },
- items: [
- "developer-guide/theme/finder-apis/category",
- "developer-guide/theme/finder-apis/tag",
- "developer-guide/theme/finder-apis/post",
- "developer-guide/theme/finder-apis/single-page",
- "developer-guide/theme/finder-apis/comment",
- "developer-guide/theme/finder-apis/contributor",
- "developer-guide/theme/finder-apis/menu",
- "developer-guide/theme/finder-apis/site-stats",
- "developer-guide/theme/finder-apis/theme",
- "developer-guide/theme/finder-apis/plugin",
- ],
- },
- "developer-guide/theme/image-optimization",
- "developer-guide/theme/global-variables",
- "developer-guide/theme/template-tag",
- "developer-guide/theme/code-snippets",
- "developer-guide/theme/api-changelog",
- ],
- },
- {
- type: "category",
- label: "RESTful API",
- link: {
- type: "generated-index",
- },
- items: [
- "developer-guide/restful-api/introduction",
- "developer-guide/restful-api/api-client",
- ],
- },
- {
- type: "category",
- label: "应用市场",
- link: {
- type: "generated-index",
- },
- items: [
- "developer-guide/app-store/publish-app",
- "developer-guide/app-store/app-review-guidelines",
- ],
- },
- "developer-guide/form-schema",
- "developer-guide/annotations-form",
- ],
-};
diff --git a/skills-lock.json b/skills-lock.json
new file mode 100644
index 00000000..2f8e650a
--- /dev/null
+++ b/skills-lock.json
@@ -0,0 +1,23 @@
+{
+ "version": 1,
+ "skills": {
+ "rspress-best-practices": {
+ "source": "rstackjs/agent-skills",
+ "sourceType": "github",
+ "skillPath": "skills/rspress-best-practices/SKILL.md",
+ "computedHash": "4e7ae99820cbe318bbaee92aa8b5ba115c41ea6727d4d109e1133e45a2b43368"
+ },
+ "rspress-custom-theme": {
+ "source": "rstackjs/agent-skills",
+ "sourceType": "github",
+ "skillPath": "skills/rspress-custom-theme/SKILL.md",
+ "computedHash": "1c756906de80e2e2ec24c5442482bf79bb08749b17ba0b0e44b4e00c6854b203"
+ },
+ "rspress-description-generator": {
+ "source": "rstackjs/agent-skills",
+ "sourceType": "github",
+ "skillPath": "skills/rspress-description-generator/SKILL.md",
+ "computedHash": "ca2693ca055d1b4e5903bdfacab522f46ca0e13cbc5db59e6c9589fdc8efc6ad"
+ }
+ }
+}
diff --git a/src/components/.gitkeep b/src/components/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/src/css/custom.css b/src/css/custom.css
deleted file mode 100644
index af54fa6b..00000000
--- a/src/css/custom.css
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * Any CSS included here will be global. The classic template
- * bundles Infima by default. Infima is a CSS framework designed to
- * work well for content-centric websites.
- */
-
-/* You can override the default Infima variables here. */
-:root {
- --ifm-color-primary: #25c2a0;
- --ifm-color-primary-dark: rgb(33, 175, 144);
- --ifm-color-primary-darker: rgb(31, 165, 136);
- --ifm-color-primary-darkest: rgb(26, 136, 112);
- --ifm-color-primary-light: rgb(70, 203, 174);
- --ifm-color-primary-lighter: rgb(102, 212, 189);
- --ifm-color-primary-lightest: rgb(146, 224, 208);
- --ifm-code-font-size: 95%;
-}
-
-.markdown h1:first-child {
- --ifm-h1-font-size: 2.3rem;
-}
-
-.docusaurus-highlight-code-line {
- background-color: rgba(0, 0, 0, 0.1);
- display: block;
- margin: 0 calc(-1 * var(--ifm-pre-padding));
- padding: 0 var(--ifm-pre-padding);
-}
-
-html[data-theme="dark"] .docusaurus-highlight-code-line {
- background-color: rgba(0, 0, 0, 0.3);
-}
-
-p > img {
- border-radius: 0.4rem;
- box-shadow: 2px 2px 0.4rem 2px rgba(0, 0, 0, 0.3);
- overflow: hidden;
-}
-
-.medium-zoom-overlay,
-.medium-zoom-image--opened {
- z-index: 999;
-}
-
-.dropdown-archived-versions {
- font-size: 0.875rem;
- padding: 0.2rem 0.5rem;
-}
-
-.dropdown-separator {
- margin: 0.3rem 0;
-}
diff --git a/src/css/shiki.scss b/src/css/shiki.scss
deleted file mode 100644
index 6de1369e..00000000
--- a/src/css/shiki.scss
+++ /dev/null
@@ -1,185 +0,0 @@
-.shiki-code-wrapper {
- overflow: hidden;
- margin-bottom: var(--ifm-leading);
- color-scheme: dark;
-
- .shiki-code-header {
- padding: 0.5rem 0.75rem;
- border-bottom: 1px solid var(--ifm-color-gray-700);
- font-size: var(--ifm-code-font-size);
- }
-
- .shiki-code-content {
- position: relative;
-
- pre {
- position: relative;
- padding: 0.75rem;
- margin: 0;
- border-radius: initial;
- code {
- z-index: 1;
- display: block;
- width: max-content;
- position: relative;
- min-width: 100%;
-
- counter-reset: step;
- counter-increment: step 0;
-
- .line {
- position: relative;
- }
-
- // line numbers start
- .line::before {
- content: counter(step);
- counter-increment: step;
- width: 0.6rem;
- margin-right: 1.1rem;
- display: inline-block;
- text-align: right;
- color: rgba(115, 138, 148, 0.5);
- user-select: none;
- }
-
- .line:last-child:empty::before {
- content: none;
- counter-increment: none;
- }
- // line numbers end
-
- // highlighted lines start
- .highlighted {
- width: 100%;
- display: inline-block;
- position: relative;
- }
-
- .highlighted::after {
- content: "";
- position: absolute;
- top: 0;
- bottom: 0;
- left: -0.75rem;
- right: -0.75rem;
- background: rgba(101, 117, 133, 0.16);
- border-left: 1px solid rgba(34, 197, 94, 0.8);
- z-index: 0;
- }
-
- .highlighted.error::after {
- background: rgba(244, 63, 94, 0.16) !important;
- }
-
- .highlighted.warning::after {
- background: rgba(234, 179, 8, 0.16) !important;
- }
- // highlighted lines end
- }
-
- // focus line start
- &.has-focused .line:not(.focused) {
- opacity: 0.7;
- filter: blur(0.095rem);
- transition: filter 0.35s, opacity 0.35s;
- }
-
- &.has-focused:hover .line:not(.focused) {
- opacity: 1;
- filter: blur(0);
- }
- // focus line end
-
- // diff start
- &.has-diff .diff {
- width: 100%;
- display: inline-block;
- position: relative;
- }
-
- &.has-diff .diff.remove::before {
- content: "-";
- }
-
- &.has-diff .diff.add::before {
- content: "+";
- }
-
- &.has-diff .diff.remove::after {
- content: "";
- position: absolute;
- top: 0;
- bottom: 0;
- left: -0.75rem;
- right: -0.75rem;
- background: rgb(239 68 68 / 0.15);
- border-left: 1px solid rgb(239 68 68 / 0.8);
- z-index: -1;
- }
-
- &.has-diff .diff.add::after {
- content: "";
- position: absolute;
- top: 0;
- bottom: 0;
- left: -0.75rem;
- right: -0.75rem;
- background: rgb(34 197 94 / 0.15);
- border-left: 1px solid rgb(34 197 94 / 0.8);
- z-index: -1;
- }
- // diff end
- }
-
- .shiki-code-copy-button {
- position: absolute;
- top: 0.5rem;
- right: 0.5rem;
- opacity: 0;
- z-index: 2;
- width: 2rem;
- height: 2rem;
- display: flex;
- align-items: center;
- justify-content: center;
- padding: 0.4rem;
- border: none;
- cursor: pointer;
- }
- }
-
- &:hover {
- .shiki-code-copy-button {
- opacity: 1;
- }
- }
-
- .tabler--copy {
- display: inline-block;
- width: 28px;
- height: 28px;
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M7 9.667A2.667 2.667 0 0 1 9.667 7h8.666A2.667 2.667 0 0 1 21 9.667v8.666A2.667 2.667 0 0 1 18.333 21H9.667A2.667 2.667 0 0 1 7 18.333z'/%3E%3Cpath d='M4.012 16.737A2 2 0 0 1 3 15V5c0-1.1.9-2 2-2h10c.75 0 1.158.385 1.5 1'/%3E%3C/g%3E%3C/svg%3E");
- background-color: currentColor;
- -webkit-mask-image: var(--svg);
- mask-image: var(--svg);
- -webkit-mask-repeat: no-repeat;
- mask-repeat: no-repeat;
- -webkit-mask-size: 100% 100%;
- mask-size: 100% 100%;
- }
-
- .tabler--check {
- display: inline-block;
- width: 28px;
- height: 28px;
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5 12l5 5L20 7'/%3E%3C/svg%3E");
- background-color: currentColor;
- -webkit-mask-image: var(--svg);
- mask-image: var(--svg);
- -webkit-mask-repeat: no-repeat;
- mask-repeat: no-repeat;
- -webkit-mask-size: 100% 100%;
- mask-size: 100% 100%;
- }
-}
diff --git a/src/images/pro-ad.png b/src/images/pro-ad.png
deleted file mode 100644
index 943c6e0e..00000000
Binary files a/src/images/pro-ad.png and /dev/null differ
diff --git a/src/pages/versions.tsx b/src/pages/versions.tsx
deleted file mode 100644
index b86abada..00000000
--- a/src/pages/versions.tsx
+++ /dev/null
@@ -1,143 +0,0 @@
-import React from "react";
-import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
-import Link from "@docusaurus/Link";
-import Layout from "@theme/Layout";
-import Translate from "@docusaurus/Translate";
-
-import {
- useLatestVersion,
- useVersions,
-} from "@docusaurus/plugin-content-docs/client";
-import VersionsArchived from "../../versionsArchived.json";
-
-function DocumentationLabel() {
- return (
- Documentation
- );
-}
-
-function ReleaseNotesLabel() {
- return (
-
- Release Notes
-
- );
-}
-
-function Version(): JSX.Element {
- const {
- siteConfig: { organizationName, projectName },
- } = useDocusaurusContext();
- const versions = useVersions();
- const latestVersion = useLatestVersion();
- const currentVersion = versions.find(
- (version) => version.name === "current"
- )!;
- const pastVersions = versions.filter(
- (version) => version !== latestVersion && version.name !== "current"
- );
- const repoUrl = `https://github.com/${organizationName}/${projectName}`;
-
- return (
-
-
- Halo documentation versions
-
- {latestVersion && (
-
- Current version (Stable)
-
- Here you can find the documentation for current released version.
-
-
-
-
- {latestVersion.label}
-
- Documentation
-
-
-
- Release Notes
-
-
-
-
-
-
- )}
-
- {currentVersion !== latestVersion && (
-
- Next version (Unreleased)
-
- Here you can find the documentation for work-in-process unreleased
- version.
-
-
-
-
- {currentVersion.label}
-
- Documentation
-
-
-
-
-
- )}
-
- {(pastVersions.length > 0 || VersionsArchivedList.length > 0) && (
-
- Past versions (Not maintained anymore)
-
- Here you can find documentation for previous versions of
- Docusaurus.
-
-
-
- {pastVersions.map((version) => (
-
- {version.label}
-
-
-
-
-
-
-
-
-
-
-
- ))}
- {Object.entries(VersionsArchived).map(
- ([versionName, versionUrl]) => (
-
- {versionName}
-
-
-
-
-
-
-
-
-
-
-
- )
- )}
-
-
-
- )}
-
-
- );
-}
-
-export default Version;
diff --git a/src/shiki/meta-transformer.js b/src/shiki/meta-transformer.js
deleted file mode 100644
index c2633d12..00000000
--- a/src/shiki/meta-transformer.js
+++ /dev/null
@@ -1,32 +0,0 @@
-function parseTitleFromMeta(meta) {
- if (!meta) {
- return "";
- }
- const kvList = meta.split(" ").filter(Boolean);
- for (const item of kvList) {
- const [k, v = ""] = item.split("=").filter(Boolean);
- if (k === "title" && v.length > 0) {
- return v.replace(/["'`]/g, "");
- }
- }
- return "";
-}
-
-/** @type {import('shiki').ShikiTransformer} */
-export function transformerAddMeta() {
- return {
- name: "shiki-transformer:add-meta",
- pre(pre) {
- const title = parseTitleFromMeta(this.options.meta?.__raw);
- const lang = this.options.lang;
- if (title.length > 0) {
- pre.properties = {
- ...pre.properties,
- "data-title": title,
- "data-lang": lang,
- };
- }
- return pre;
- },
- };
-}
diff --git a/src/theme/MDXComponents/Code.tsx b/src/theme/MDXComponents/Code.tsx
deleted file mode 100644
index a95afc3c..00000000
--- a/src/theme/MDXComponents/Code.tsx
+++ /dev/null
@@ -1,27 +0,0 @@
-import type { ComponentProps, ReactNode } from "react";
-import React from "react";
-import CodeInline from "@theme/CodeInline";
-import type { Props } from "@theme/MDXComponents/Code";
-
-function shouldBeInline(props: Props) {
- return (
- // empty code blocks have no props.children,
- // see https://github.com/facebook/docusaurus/pull/9704
- typeof props.children !== "undefined" &&
- React.Children.toArray(props.children).every(
- (el) => typeof el === "string" && !el.includes("\n")
- )
- );
-}
-
-function CodeBlock(props: ComponentProps<"code">): JSX.Element {
- return ;
-}
-
-export default function MDXCode(props: Props): ReactNode {
- return shouldBeInline(props) ? (
-
- ) : (
- )} />
- );
-}
diff --git a/src/theme/MDXComponents/Pre.tsx b/src/theme/MDXComponents/Pre.tsx
deleted file mode 100644
index 1ff9a10e..00000000
--- a/src/theme/MDXComponents/Pre.tsx
+++ /dev/null
@@ -1,71 +0,0 @@
-import React, { type ReactNode, useRef, useState } from "react";
-import type { Props } from "@theme/MDXComponents/Pre";
-
-type PreWithDataTitle = Props & { "data-title"?: string };
-
-export default function MDXPre(props: PreWithDataTitle): ReactNode | undefined {
- const title = props["data-title"];
- const preRef = useRef(null);
- const [copied, setCopied] = useState(false);
-
- const handleCopy = () => {
- const code = preRef.current?.innerText || preRef.current?.textContent || "";
-
- copyText(code, () => {
- setCopied(true);
- setTimeout(() => setCopied(false), 2000);
- });
- };
-
- return (
-
- {title && (
-
- {title}
-
- )}
-
-
-
-
-
- );
-}
-
-export function copyText(text: string, cb: () => void) {
- if (navigator.clipboard) {
- navigator.clipboard.writeText(text).then(() => {
- cb();
- });
- } else {
- const textArea = document.createElement("textarea");
- textArea.value = text;
- textArea.style.position = "fixed";
- textArea.style.opacity = "0";
- document.body.appendChild(textArea);
- textArea.focus();
- textArea.select();
- try {
- const successful = document.execCommand("copy");
- if (successful) {
- cb();
- }
- } catch (err) {
- console.error("Fallback: Oops, unable to copy", err);
- }
- document.body.removeChild(textArea);
- }
-}
diff --git a/src/theme/SearchBar.js b/src/theme/SearchBar.js
deleted file mode 100644
index 7a286893..00000000
--- a/src/theme/SearchBar.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import "meilisearch-docsearch/css";
-import React, { useEffect } from "react";
-
-export default function SearchBarWrapper(props) {
- useEffect(() => {
- const docsearch = require("meilisearch-docsearch").default;
-
- const destroy = docsearch({
- container: "#docsearch",
- host: "https://docsearch.halo.run",
- // Default Search API Key
- // Use it to search from the frontend
- apiKey:
- "883d046131979fa8bc9bbc7d006ccb13a353cb5ce847cca50a49fad4f35b3f77",
- indexUid: "docs",
- });
-
- return () => destroy();
- }, []);
- return (
- <>
-
- >
- );
-}
diff --git a/src/theme/TOC/index.tsx b/src/theme/TOC/index.tsx
deleted file mode 100644
index 78ae1dff..00000000
--- a/src/theme/TOC/index.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import React, {type ReactNode} from 'react';
-import clsx from 'clsx';
-import TOCItems from '@theme/TOCItems';
-import type {Props} from '@theme/TOC';
-
-import styles from './styles.module.css';
-
-// Using a custom className
-// This prevents TOCInline/TOCCollapsible getting highlighted by mistake
-const LINK_CLASS_NAME = 'table-of-contents__link toc-highlight';
-const LINK_ACTIVE_CLASS_NAME = 'table-of-contents__link--active';
-import proAd from '../../images/pro-ad.png';
-
-export default function TOC({className, ...props}: Props): ReactNode {
- return (
-
-
-
-
-
-
-
-
- );
-}
diff --git a/src/theme/TOC/styles.module.css b/src/theme/TOC/styles.module.css
deleted file mode 100644
index 4b5d9f46..00000000
--- a/src/theme/TOC/styles.module.css
+++ /dev/null
@@ -1,16 +0,0 @@
-.tableOfContents {
- max-height: calc(100vh - (var(--ifm-navbar-height) + 2rem));
- overflow-y: auto;
- position: sticky;
- top: calc(var(--ifm-navbar-height) + 1rem);
-}
-
-@media (max-width: 996px) {
- .tableOfContents {
- display: none;
- }
-
- .docItemContainer {
- padding: 0 0.3rem;
- }
-}
diff --git a/static/.nojekyll b/static/.nojekyll
deleted file mode 100644
index e69de29b..00000000
diff --git a/static/robots.txt b/static/robots.txt
deleted file mode 100644
index 7dfae8bf..00000000
--- a/static/robots.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-User-agent: *
-Allow: /
-Disallow: /next
-Disallow: /2.18
-Disallow: /2.19
-Disallow: /2.20
-Disallow: /2.21
-Disallow: /2.22
-Disallow: /2.23
-Disallow: /2.24
-
-
-Sitemap: https://docs.halo.run/sitemap.xml
\ No newline at end of file
diff --git a/styles/index.scss b/styles/index.scss
new file mode 100644
index 00000000..8af06034
--- /dev/null
+++ b/styles/index.scss
@@ -0,0 +1,502 @@
+// See https://github.com/web-infra-dev/rspress/pull/3629/changes
+.rp-nav {
+ &__left {
+ display: flex;
+ align-items: center;
+ height: 100%;
+ }
+}
+
+.rp-nav-menu {
+ &--left {
+ margin-left: 32px;
+
+ @media (max-width: 1279px) {
+ margin-left: 24px;
+ }
+ }
+}
+
+.docs-home {
+ --home-brand-soft: color-mix(in srgb, var(--rp-c-brand) 9%, var(--rp-c-bg));
+ --home-brand-border: color-mix(in srgb, var(--rp-c-brand) 28%, var(--rp-c-divider));
+ max-width: 1080px;
+ margin: 0 auto;
+ padding: 56px 28px 80px;
+ color: var(--rp-c-text-1);
+}
+
+.docs-home__header {
+ padding-bottom: 48px;
+ border-bottom: 1px solid var(--rp-c-divider-light);
+}
+
+.docs-home__header h1 {
+ margin: 0;
+ font-size: clamp(34px, 5vw, 44px);
+ font-weight: 720;
+ letter-spacing: -0.035em;
+ line-height: 1.15;
+ text-wrap: balance;
+}
+
+.docs-home__header > p {
+ margin: 10px 0 28px;
+ color: var(--rp-c-text-2);
+ font-size: 16px;
+ line-height: 1.7;
+}
+
+.docs-search {
+ display: flex;
+ width: min(100%, 680px);
+ min-height: 58px;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0 16px 0 20px;
+ border: 1px solid var(--home-brand-border);
+ border-radius: 14px;
+ background: var(--home-brand-soft);
+ color: var(--rp-c-text-2);
+ cursor: pointer;
+ font: inherit;
+ text-align: left;
+ transition:
+ border-color 180ms ease,
+ background 180ms ease,
+ transform 180ms ease;
+}
+
+.docs-search > svg {
+ margin-right: 12px;
+ flex: 0 0 auto;
+}
+
+.docs-search > span {
+ margin-right: auto;
+ font-size: 15px;
+}
+
+.docs-search kbd {
+ padding: 3px 8px;
+ border: 1px solid var(--rp-c-divider);
+ border-radius: 6px;
+ background: var(--rp-c-bg);
+ color: var(--rp-c-text-3);
+ font-family: inherit;
+ font-size: 12px;
+ line-height: 1.5;
+}
+
+.docs-search:hover {
+ border-color: var(--rp-c-brand);
+ background: color-mix(in srgb, var(--rp-c-brand) 13%, var(--rp-c-bg));
+}
+
+.docs-search:active {
+ transform: translateY(1px);
+}
+
+.docs-search:focus-visible,
+.docs-home a:focus-visible {
+ outline: 2px solid var(--rp-c-brand);
+ outline-offset: 3px;
+}
+
+.docs-section {
+ margin-top: 52px;
+}
+
+.docs-section__heading {
+ display: flex;
+ align-items: baseline;
+ justify-content: space-between;
+ gap: 20px;
+ margin-bottom: 18px;
+}
+
+.docs-section__heading h2 {
+ margin: 0;
+ font-size: 20px;
+ font-weight: 680;
+ letter-spacing: -0.015em;
+}
+
+.docs-section__heading > a {
+ color: var(--rp-c-text-2);
+ font-size: 13px;
+ text-decoration: none;
+}
+
+.docs-section__heading > a:hover {
+ color: var(--rp-c-brand);
+}
+
+.quick-start {
+ display: grid;
+ grid-template-columns: minmax(0, 1.35fr) minmax(260px, 0.65fr);
+ grid-template-rows: repeat(2, minmax(122px, auto));
+ gap: 14px;
+}
+
+.quick-start a {
+ color: inherit;
+ text-decoration: none;
+ transition:
+ background 180ms ease,
+ transform 180ms ease;
+}
+
+.quick-start__main {
+ display: flex;
+ grid-row: 1 / 3;
+ flex-direction: column;
+ justify-content: flex-end;
+ min-height: 268px;
+ padding: 30px;
+ overflow: hidden;
+ border-radius: 16px;
+ background:
+ radial-gradient(circle at 86% 10%, rgb(255 255 255 / 0.18), transparent 34%),
+ var(--rp-c-brand);
+ color: rgb(255 255 255 / 0.94) !important;
+}
+
+.quick-start__main > span {
+ margin-bottom: auto;
+ color: rgb(255 255 255 / 0.7);
+ font-size: 13px;
+ font-weight: 600;
+}
+
+.quick-start__main strong {
+ font-size: 28px;
+ font-weight: 700;
+ letter-spacing: -0.025em;
+}
+
+.quick-start__main p {
+ max-width: 500px;
+ margin: 9px 0 22px;
+ color: rgb(255 255 255 / 0.78);
+ font-size: 14px;
+ line-height: 1.65;
+}
+
+.quick-start__main b {
+ font-size: 14px;
+ font-weight: 650;
+}
+
+.quick-start__main b span {
+ display: inline-block;
+ margin-left: 5px;
+ transition: transform 180ms ease;
+}
+
+.quick-start__main:hover {
+ transform: translateY(-2px);
+}
+
+.quick-start__main:hover b span {
+ transform: translateX(3px);
+}
+
+.quick-start__item {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ padding: 24px 52px 24px 24px;
+ border-radius: 16px;
+ background: var(--rp-c-bg-soft);
+}
+
+.quick-start__item strong {
+ font-size: 16px;
+ font-weight: 650;
+}
+
+.quick-start__item p {
+ margin: 6px 0 0;
+ color: var(--rp-c-text-3);
+ font-size: 13px;
+ line-height: 1.55;
+}
+
+.quick-start__item > span {
+ position: absolute;
+ top: 50%;
+ right: 24px;
+ color: var(--rp-c-text-3);
+ transform: translateY(-50%);
+ transition:
+ color 180ms ease,
+ transform 180ms ease;
+}
+
+.quick-start__item:hover {
+ background: var(--home-brand-soft);
+ transform: translateY(-2px);
+}
+
+.quick-start__item:hover > span {
+ color: var(--rp-c-brand);
+ transform: translate(3px, -50%);
+}
+
+.topic-groups {
+ display: grid;
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ gap: 16px;
+}
+
+.topic-group {
+ display: flex;
+ flex-direction: column;
+ padding: 28px;
+ border-radius: 16px;
+ background: var(--rp-c-bg-soft);
+}
+
+.topic-group header h3 {
+ margin: 0;
+ font-size: 19px;
+ font-weight: 680;
+ letter-spacing: -0.015em;
+}
+
+.topic-group header p {
+ margin: 7px 0 22px;
+ color: var(--rp-c-text-3);
+ font-size: 13px;
+ line-height: 1.6;
+}
+
+.topic-group nav {
+ display: grid;
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ gap: 6px;
+}
+
+.topic-group nav a {
+ display: flex;
+ min-height: 42px;
+ align-items: center;
+ justify-content: space-between;
+ gap: 10px;
+ padding: 0 12px;
+ border-radius: 9px;
+ color: var(--rp-c-text-2);
+ font-size: 13px;
+ text-decoration: none;
+ transition:
+ background 160ms ease,
+ color 160ms ease;
+}
+
+.topic-group nav a:hover {
+ background: var(--rp-c-bg);
+ color: var(--rp-c-brand);
+}
+
+.topic-group nav a span:last-child {
+ color: var(--rp-c-text-3);
+ transition: transform 160ms ease;
+}
+
+.topic-group nav a:hover span:last-child {
+ transform: translateX(2px);
+}
+
+.topic-group__all {
+ align-self: flex-start;
+ margin-top: 22px;
+ color: var(--rp-c-brand);
+ font-size: 13px;
+ font-weight: 650;
+ text-decoration: none;
+}
+
+.topic-group__all:hover {
+ text-decoration: underline;
+ text-underline-offset: 3px;
+}
+
+.docs-help {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 28px;
+ margin-top: 52px;
+ padding-top: 24px;
+ border-top: 1px solid var(--rp-c-divider-light);
+}
+
+.docs-help > div {
+ display: grid;
+ gap: 4px;
+}
+
+.docs-help strong {
+ font-size: 14px;
+ font-weight: 650;
+}
+
+.docs-help > div span {
+ color: var(--rp-c-text-3);
+ font-size: 13px;
+}
+
+.docs-help nav {
+ display: flex;
+ flex: 0 0 auto;
+ gap: 20px;
+}
+
+.docs-help a {
+ color: var(--rp-c-text-2);
+ font-size: 13px;
+ text-decoration: none;
+}
+
+.docs-help a:hover {
+ color: var(--rp-c-brand);
+}
+
+@media (max-width: 760px) {
+ .docs-home {
+ padding: 36px 20px 56px;
+ }
+
+ .docs-home__header {
+ padding-bottom: 36px;
+ }
+
+ .docs-home__header h1 {
+ font-size: 34px;
+ }
+
+ .docs-home__header > p {
+ margin-bottom: 22px;
+ font-size: 15px;
+ }
+
+ .docs-section {
+ margin-top: 40px;
+ }
+
+ .quick-start,
+ .topic-groups {
+ grid-template-columns: 1fr;
+ }
+
+ .quick-start {
+ grid-template-rows: auto;
+ }
+
+ .quick-start__main {
+ grid-row: auto;
+ min-height: 230px;
+ padding: 24px;
+ }
+
+ .quick-start__item {
+ min-height: 108px;
+ }
+
+ .docs-help {
+ align-items: flex-start;
+ flex-direction: column;
+ gap: 18px;
+ }
+}
+
+@media (max-width: 420px) {
+ .topic-group {
+ padding: 22px;
+ }
+
+ .topic-group nav {
+ grid-template-columns: 1fr;
+ }
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .docs-search,
+ .quick-start a,
+ .quick-start__main b span,
+ .quick-start__item > span,
+ .topic-group nav a,
+ .topic-group nav a span:last-child {
+ transition: none;
+ }
+}
+
+.site-footer {
+ border-top: 1px solid var(--rp-c-divider-light);
+}
+
+.site-footer__columns {
+ display: grid;
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+ gap: 32px;
+ max-width: 1080px;
+ margin: 0 auto;
+ padding: 48px 28px 32px;
+}
+
+.site-footer__column h4 {
+ margin: 0 0 14px;
+ color: var(--rp-c-text-1);
+ font-size: 14px;
+ font-weight: 650;
+}
+
+.site-footer__column ul {
+ display: grid;
+ gap: 10px;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+
+.site-footer__column a {
+ color: var(--rp-c-text-2);
+ font-size: 13px;
+ text-decoration: none;
+ transition: color 160ms ease;
+}
+
+.site-footer__column a:hover {
+ color: var(--rp-c-brand);
+}
+
+.site-footer__copyright {
+ padding: 0 28px 32px;
+ color: var(--rp-c-text-3);
+ font-size: 13px;
+ text-align: center;
+}
+
+.site-footer__copyright a {
+ margin-left: 8px;
+ color: inherit;
+ text-decoration: none;
+ transition: color 160ms ease;
+}
+
+.site-footer__copyright a:hover {
+ color: var(--rp-c-brand);
+}
+
+@media (max-width: 760px) {
+ .site-footer__columns {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ padding: 36px 20px 24px;
+ }
+
+ .site-footer__copyright {
+ padding: 0 20px 24px;
+ }
+}
diff --git a/theme/FooterColumns.tsx b/theme/FooterColumns.tsx
new file mode 100644
index 00000000..f7619501
--- /dev/null
+++ b/theme/FooterColumns.tsx
@@ -0,0 +1,154 @@
+import { Link } from '@rspress/core/theme-original';
+
+interface FooterItem {
+ text: string;
+ link: string;
+ external?: boolean;
+}
+
+const columns: { title: string; items: FooterItem[] }[] = [
+ {
+ title: '关于',
+ items: [
+ { text: '关于我们', link: 'https://www.halo.run/about', external: true },
+ { text: '应用市场', link: 'https://www.halo.run/store', external: true },
+ {
+ text: 'GitHub 组织',
+ link: 'https://github.com/halo-dev',
+ external: true,
+ },
+ {
+ text: 'Gitee 组织',
+ link: 'https://gitee.com/halo-dev',
+ external: true,
+ },
+ {
+ text: 'GitCode 仓库',
+ link: 'https://gitcode.com/feizhiyun/halo',
+ external: true,
+ },
+ { text: '版本发布', link: 'https://releases.halo.run', external: true },
+ {
+ text: 'Server Status',
+ link: 'https://status.halo.run',
+ external: true,
+ },
+ ],
+ },
+ {
+ title: '文档',
+ items: [
+ { text: '安装指南', link: '/guide/install/' },
+ { text: '用户指南', link: '/guide/use/' },
+ { text: '开发者指南', link: '/developer-guide/' },
+ { text: '参与贡献', link: '/guide/contribution/' },
+ { text: '应用文档', link: 'https://www.halo.run/docs', external: true },
+ {
+ text: '知识库',
+ link: 'https://www.halo.run/categories/kb',
+ external: true,
+ },
+ ],
+ },
+ {
+ title: '社区',
+ items: [
+ { text: '官方论坛', link: 'https://bbs.halo.run', external: true },
+ {
+ text: '官方资讯群',
+ link: 'https://www.halo.run/upload/store-resources/autoHalonews.jpg',
+ external: true,
+ },
+ {
+ text: 'GitHub Issues',
+ link: 'https://github.com/halo-dev/halo/issues',
+ external: true,
+ },
+ {
+ text: 'GitHub Discussions',
+ link: 'https://github.com/halo-dev/halo/discussions',
+ external: true,
+ },
+ {
+ text: 'Telegram Channel',
+ link: 'https://t.me/halo_dev',
+ external: true,
+ },
+ { text: 'Telegram Group', link: 'https://t.me/HaloBlog', external: true },
+ ],
+ },
+ {
+ title: '友情链接',
+ items: [
+ {
+ text: 'FIT2CLOUD 飞致云',
+ link: 'https://www.fit2cloud.com/',
+ external: true,
+ },
+ { text: '凌霞软件', link: 'https://www.lxware.cn/', external: true },
+ {
+ text: '1Panel - 开源 Linux 面板(中国站)',
+ link: 'https://1panel.cn/',
+ external: true,
+ },
+ {
+ text: '1Panel - VPS Control Panel (International)',
+ link: 'https://1panel.pro/',
+ external: true,
+ },
+ {
+ text: 'JumpServer - 开源堡垒机(中国站)',
+ link: 'https://www.jumpserver.org/',
+ external: true,
+ },
+ {
+ text: 'JumpServer - Open-Source PAM (International)',
+ link: 'https://www.jumpserver.com/',
+ external: true,
+ },
+ {
+ text: 'MaxKB AI 知识库问答系统',
+ link: 'https://maxkb.cn',
+ external: true,
+ },
+ ],
+ },
+];
+
+function FooterLink({ item }: { item: FooterItem }) {
+ if (item.external) {
+ return (
+
+ {item.text}
+
+ );
+ }
+ return {item.text};
+}
+
+export function FooterColumns() {
+ return (
+
+ );
+}
diff --git a/theme/index.tsx b/theme/index.tsx
new file mode 100644
index 00000000..7e18a6d5
--- /dev/null
+++ b/theme/index.tsx
@@ -0,0 +1,8 @@
+import { Layout as BasicLayout } from '@rspress/core/theme-original';
+import { FooterColumns } from './FooterColumns';
+import './override.css';
+
+const Layout = () => } />;
+
+export * from '@rspress/core/theme-original';
+export { Layout };
diff --git a/theme/override.css b/theme/override.css
new file mode 100644
index 00000000..01cb2baa
--- /dev/null
+++ b/theme/override.css
@@ -0,0 +1,5 @@
+:root {
+ --rp-content-max-width: 900px;
+ --rp-content-padding-y: 24px;
+ --rp-content-padding-x: 40px;
+}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 00000000..b853b843
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,28 @@
+{
+ "compilerOptions": {
+ "lib": ["DOM", "ES2023"],
+ "jsx": "react-jsx",
+ "target": "ES2023",
+ "noEmit": true,
+ "skipLibCheck": true,
+ "useDefineForClassFields": true,
+
+ /* modules */
+ "module": "ESNext",
+ "moduleDetection": "force",
+ "moduleResolution": "bundler",
+ "verbatimModuleSyntax": true,
+ "resolveJsonModule": true,
+ "allowImportingTsExtensions": true,
+ "isolatedModules": true,
+
+ /* type checking */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true
+ },
+ "include": ["docs", "theme", "rspress.config.ts"],
+ "mdx": {
+ "checkMdx": true
+ }
+}
diff --git a/versioned_docs/version-2.22/about.md b/versioned_docs/version-2.22/about.md
deleted file mode 100644
index d0eb7313..00000000
--- a/versioned_docs/version-2.22/about.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: 关于文档
-description: 关于本文档站点的一些说明
----
-
-:::note
-此文档使用 [Docusaurus](https://docusaurus.io/) 搭建,感谢 [Docusaurus](https://github.com/facebook/docusaurus) 社区所做的贡献。
-:::
-
-## 参与贡献
-
-:::tip
-如果你发现文档中有不正确或者需要添加的内容,非常欢迎参与到文档编辑当中。
-:::
-
-当前文档的仓库地址为 [halo-dev/docs](https://github.com/halo-dev/docs) ,所以你可以 fork 此仓库,修改之后提交 `Pull request` 等待我们合并即可。
diff --git a/versioned_docs/version-2.22/contribution/issue.md b/versioned_docs/version-2.22/contribution/issue.md
deleted file mode 100644
index 26d52fb1..00000000
--- a/versioned_docs/version-2.22/contribution/issue.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: 问题反馈
-description: 问题反馈渠道及指南
----
-
-:::info
-如果您在使用过程中遇到了什么问题,您可以通过下面的方式反馈,但请尽量按照要求提出反馈。
-:::
-
-## GitHub
-
-- [https://github.com/halo-dev/halo/issues](https://github.com/halo-dev/halo/issues)
-- [https://github.com/orgs/lxware-dev/discussions](https://github.com/orgs/lxware-dev/discussions):Halo 付费版或者付费应用的问题可以在这里进行反馈。
-
-如果你在使用过程中,遇到了一些 bug 或者需要添加某些新特性,请尽量在 GitHub 进行反馈,这非常有助于我们跟踪解决此问题,您也可以很方便的接收到处理状态。
-
-建议步骤:
-
-1. 在 GitHub 搜索相关问题,看看是否有其他人已经提到了此问题。
-2. 如果当前还没有人遇到您类似的问题,可以创建新的 Issue 或者 Discussion。
-3. 选择正确的反馈类型。
-4. 请尽可能详细的按照模板填写内容。
-5. 提交反馈。
-
-## Halo 官方社区
-
-链接:[https://bbs.halo.run](https://bbs.halo.run)
-
-此平台主要目的用于与其他 Halo 用户进行交流。但如果您对 GitHub 不是很熟悉或者没有账号,您也可以在此平台进行反馈。
diff --git a/versioned_docs/version-2.22/contribution/pr.md b/versioned_docs/version-2.22/contribution/pr.md
deleted file mode 100644
index 5f3b7e8a..00000000
--- a/versioned_docs/version-2.22/contribution/pr.md
+++ /dev/null
@@ -1,110 +0,0 @@
----
-title: 代码贡献
-description: 代码贡献指南
----
-
-欢迎关注并有想法参与 Halo 的开发,以下是关于如何参与到 Halo 项目的指南,仅供参考。
-
-## 发现 Issue
-
-所有的代码尽可能都有依据(Issue),不是凭空产生。
-
-### 寻找一个 Good First Issue
-
-> 这个步骤非常适合首次贡献者。
-
-在 [halo-dev](https://github.com/halo-dev) 和 [halo-sigs](https://github.com/halo-sigs) 组织下,有非常多的仓库。每个仓库下都有可能包含一些“首次贡献者”友好的 Issue,主要是为了给贡献者提供一个友好的体验。该类 Issue
-一般会用 `good-first-issue` 标签标记。标签 `good-first-issue` 表示该 Issue 不需要对 Halo 有深入的理解也能够参与。
-
-请点击:[good-first-issue](https://github.com/issues?q=org%3Ahalo-dev+is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22+no%3Aassignee+)
-查看关于 Halo 的 Good First Issue。
-
-### 认领 Issue
-
-若对任何一个 Issue 感兴趣,请尝试在 Issue 进行回复,讨论解决 Issue 的思路。确定后可直接通过 `/assign` 或者 `/assign @GitHub 用户名` 认领这个
-Issue。这样可避免两位贡献者在同一个问题上花时间。
-
-## 代码贡献步骤
-
-1. Fork 此仓库
-
- 点击 Halo 仓库主页右上角的 `Fork` 按钮即可。
-
-2. Clone 仓库到本地
-
- ```bash
- git clone https://github.com/{YOUR_USERNAME}/halo --recursive
- # 或者 git clone git@github.com:{YOUR_USERNAME}/halo.git --recursive
- ```
-
-3. 添加主仓库
-
- 添加主仓库方便未来同步主仓库最新的 commits 以及创建新的分支。
-
- ```bash
- git remote add upstream https://github.com/halo-dev/halo.git
- # 或者 git remote add upstream git@github.com:halo-dev/halo.git
- git fetch upstream main
- ```
-
-4. 创建新的开发分支
-
- 我们需要从主仓库的主分支创建一个新的开发分支。
-
- ```bash
- git checkout upstream/main
- git checkout -b {BRANCH_NAME}
- ```
-
-5. 提交代码
-
- ```bash
- git add .
- git commit -s -m "Fix a bug king"
- git push origin {BRANCH_NAME}
- ```
-
-6. 合并主分支
-
- 在提交 Pull Request 之前,尽量保证当前分支和主分支的代码尽可能同步,这时需要我们手动操作。示例:
-
- ```bash
- git fetch upstream/main
- git merge upstream/main
- git push origin {BRANCH_NAME}
- ```
-
-## Pull Request
-
-进入此阶段说明已经完成了代码的编写,测试和自测,并且准备好接受 Code Review。
-
-### 创建 Pull Request
-
-回到自己的仓库页面,选择 `New pull request` 按钮,创建 `Pull request` 到原仓库的 `main` 分支。
-然后等待我们 Review 即可,如有 `Change Request`,再本地修改之后再次提交即可。
-
-提交 Pull Request 的注意事项:
-
-- 提交 Pull Request 请充分自测。
-- 每个 Pull Request 尽量只解决一个 Issue,特殊情况除外。
-- 应尽可能多的添加单元测试,其他测试(集成测试和 E2E 测试)可看情况添加。
-- 不论需要解决的 Issue 发生在哪个版本,提交 Pull Request 的时候,请将主仓库的主分支设置为 `main`。例如:即使某个 Bug 于 Halo 2.0.x 被发现,但是提交 Pull Request 仍只针对
- `main` 分支,等待 Pull Request 合并之后,我们会通过 `/cherrypick release-2.0` 或者 `/cherry-pick release-2.1` 指令将此 Pull Request
- 的修改应用到 `release-2.0` 和 `release-2.1` 分支上。
-
-### 更新 commits
-
-Code Review 阶段可能需要 Pull Request 作者重新修改代码,请直接在当前分支 commit 并 push 即可,无需关闭并重新提交 Pull Request。示例:
-
-```bash
-git add .
-git commit -s -m "Refactor some code according code review"
-git push origin bug/king
-```
-
-同时,若已经进入 Code Review 阶段,请不要强制推送 commits 到当前分支。否则 Reviewers 需要从头开始 Code Review。
-
-### 开发规范
-
-请参考 [https://docs.halo.run/developer-guide/core/code-style](https://docs.halo.run/developer-guide/core/code-style)
-,请确保所有代码格式化之后再提交。
diff --git a/versioned_docs/version-2.22/developer-guide/annotations-form.md b/versioned_docs/version-2.22/developer-guide/annotations-form.md
deleted file mode 100644
index 89899eaa..00000000
--- a/versioned_docs/version-2.22/developer-guide/annotations-form.md
+++ /dev/null
@@ -1,89 +0,0 @@
----
-title: 元数据表单定义
----
-
-在 Halo 2.0,所有的模型都包含了 `metadata.annotations` 字段,用于存储元数据信息。元数据信息可以用于存储一些自定义的信息,可以等同于扩展字段。此文档主要介绍如何在 Halo 中为具体的模型定义元数据编辑表单,至于如何在插件或者主题模板中使用,请看插件或者主题的文档。
-
-定义元数据编辑表单同样使用 `FormKit Schema`,但和主题或插件的定义方式稍有不同,其中输入组件类型可参考 [表单定义](./form-schema.md)。
-
-:::info[提示]
-因为 `metadata.annotations` 是一个键值都为字符串类型的对象,所以表单项的值必须为字符串类型。这就意味着,FormKit 的 `number`、`group`、`repeater` 等类型的输入组件都不能使用。`checkbox` 类型的输入组件应通过 `on-value` 和 `off-value` 指定字符串值,以替代默认的布尔值。
-:::
-
-## AnnotationSetting 资源定义方式
-
-```yaml title="annotation-setting.yaml"
-apiVersion: v1alpha1
-kind: AnnotationSetting
-metadata:
- name: my-annotation-setting
-spec:
- targetRef:
- group: content.halo.run
- kind: Post
- formSchema:
- - $formkit: "text"
- name: "download"
- label: "下载地址"
- - $formkit: "text"
- name: "version"
- label: "版本"
-```
-
-以上定义为文章模型添加了两个元数据字段,分别为 `download` 和 `version`,分别对应了下载地址和版本号,最终效果:
-
-
-
-字段说明:
-
-1. `metadata.name`:唯一标识,命名规范可参考 [metadata name](./plugin/api-reference/server/extension.md#naming-spec-for-metadata-name),为了尽可能避免冲突,建议自定义前缀以及追加随机字符串,如:`theme-earth-post-wanfs5`。
-2. `spec.targetRef`:模型的关联,即为哪个模型添加元数据表单,目前支持的模型可查看下方的列表。
-3. `spec.formSchema`:表单的定义,使用 FormKit Schema 来定义。虽然我们使用的 YAML,但与 FormKit Schema 完全一致。
-
-targetRef 支持列表:
-
-| 对应模型 | group | kind |
-| ---------- | ---------------- | ---------- |
-| 文章 | content.halo.run | Post |
-| 自定义页面 | content.halo.run | SinglePage |
-| 文章分类 | content.halo.run | Category |
-| 文章标签 | content.halo.run | Tag |
-| 菜单项 | `""` | MenuItem |
-| 用户 | `""` | User |
-
-## 为多个模型定义表单
-
-考虑到某些情况可能会同时为多个模型添加元数据表单,推荐在一个 `yaml` 文件中使用 `---` 来分割多个资源定义,如下:
-
-```yaml title="annotation-setting.yaml"
-apiVersion: v1alpha1
-kind: AnnotationSetting
-metadata:
- name: my-annotation-setting
-spec:
- targetRef:
- group: content.halo.run
- kind: Post
- formSchema:
- - $formkit: "text"
- name: "download"
- label: "下载地址"
- - $formkit: "text"
- name: "version"
- label: "版本"
-
----
-
-apiVersion: v1alpha1
-kind: AnnotationSetting
-metadata:
- name: my-annotation-setting
-spec:
- targetRef:
- group: ""
- kind: MenuItem
- formSchema:
- - $formkit: "text"
- name: "icon"
- label: "图标"
-```
diff --git a/versioned_docs/version-2.22/developer-guide/appendix/publish-app.md b/versioned_docs/version-2.22/developer-guide/appendix/publish-app.md
deleted file mode 100644
index 904ebbcf..00000000
--- a/versioned_docs/version-2.22/developer-guide/appendix/publish-app.md
+++ /dev/null
@@ -1,136 +0,0 @@
----
-title: 发布应用
-description: 了解如何与我们的社区分享你的主题和插件
----
-
-了解如何与我们的社区分享你的主题和插件,下文以应用统称主题和插件。
-
-## GitHub 托管
-
-如果你的应用是一个开源应用,那么我们推荐将其托管在 GitHub 上,可以获得以下好处:
-
-1. 可以利用 GitHub 的 CI/CD 功能,实现自动构建和版本发布。
-2. 可以通过 GitHub 的 Issues 功能跟踪用户反馈。
-3. 可以获得更多用户关注和贡献。
-
-除此之外,我们推荐为 GitHub 仓库添加与 Halo 相关的 [Topics](https://github.com/topics),以便让更多用户找到你的应用,比如主题可以添加 [#halo-theme](https://github.com/topics/halo-theme),插件可以添加 [#halo-plugin](https://github.com/topics/halo-plugin)。
-
-## 版本发布
-
-当你完成了你的应用并进行充分测试后,就可以在 GitHub 上创建新的 Release,其中版本规范可以参考[版本控制](#version-control)。
-
-### 集成 CI / CD
-
-我们为 Halo 的主题和插件提供了适用于 GitHub Action 的 CI / CD [工作流](https://github.com/halo-sigs/reusable-workflows),可以非常方便的集成到你的 GitHub 仓库中,以下是示例:
-
-插件 CI:
-
-```yaml title=".github/workflows/ci.yaml"
-name: CI
-
-on:
- push:
- branches:
- - main
- pull_request:
- branches:
- - main
-
-jobs:
- ci:
- uses: halo-sigs/reusable-workflows/.github/workflows/plugin-ci.yaml@v3
- with:
- ui-path: "ui"
- pnpm-version: 9
- node-version: 22
- java-version: 21
-```
-
-插件 CD:
-
-此工作流会在每次发布 Release 时自动执行,会自动构建插件并上传产物到 Release 的 Assets 中。
-
-```yaml title=".github/workflows/cd.yaml"
-name: CD
-
-on:
- release:
- types:
- - published
-
-jobs:
- cd:
- uses: halo-sigs/reusable-workflows/.github/workflows/plugin-cd.yaml@v3
- permissions:
- contents: write
- with:
- pnpm-version: 9
- node-version: 22
- java-version: 21
- skip-appstore-release: true
-```
-
-主题 CD:
-
-此工作流会在每次发布 Release 时自动执行,会自动构建主题并上传产物到 Release 的 Assets 中。
-
-```yaml title=".github/workflows/cd.yaml"
-name: CD
-
-on:
- release:
- types:
- - published
-
-jobs:
- cd:
- uses: halo-sigs/reusable-workflows/.github/workflows/theme-cd.yaml@v3
- permissions:
- contents: write
- with:
- skip-appstore-release: true
- node-version: 22
- pnpm-version: 9
-```
-
-关于 CI / CD 的更多详细信息,可查阅:[halo-sigs/reusable-workflows](https://github.com/halo-sigs/reusable-workflows)
-
-## 分享应用
-
-为了方便让 Halo 的用户知道你的应用,可以在以下渠道分享:
-
-1. [halo-sigs/awesome-halo](https://github.com/halo-sigs/awesome-halo):你可以向这个仓库发起一个 PR 提交你的应用信息。
-2. [Halo 论坛](https://bbs.halo.run/t/plugins):你可以在 Halo 官方社区的[插件](https://bbs.halo.run/t/plugins)和[主题](https://bbs.halo.run/t/themes)板块发布你的应用。
-
-## 发布到应用市场
-
-Halo 的官方应用市场接受新应用的提交,但由于应用市场仅支持作者自行管理应用以及版本,还不支持自助新建应用并发布,所以发布到应用市场需要按照以下流程:
-
-1. 向 [halo-sigs/awesome-halo](https://github.com/halo-sigs/awesome-halo) 发起一个 PR 提交应用的信息,并勾选 **上架到 Halo 应用市场**。
-2. Halo 官方人员会审核你的应用信息,审核通过后会上架到应用市场。
-3. 如果你需要自行管理应用以及版本,可以在 PR 描述信息中提供 [Halo 官网](https://www.halo.run/)的用户名,我们会在应用发布之后将管理权限授予你。
-
-### 要求
-
-在你决定上架到 Halo 应用市场前,请确保已经完成以下要求:
-
-1. 插件必须正确设置 `plugin.yaml` 中的 logo 字段,不能是插件开发模板中默认的 Halo 图标。
-2. 主题和插件的描述文件中必须正确设置 `homepage`、`issues`、`license` 字段,详细解释:
- 1. `homepage`:应用的主页,可以填写为 GitHub 仓库地址或者 Halo 应用市场的应用详情页地址。
- 2. `issues`:应用的反馈地址,可以填写为 GitHub 仓库的 issues 地址。
- 3. `license`:应用的发行许可证。
-3. 应用必须编写介绍和使用文档。
-4. 应用如果是基于其他程序开发的,需要保证许可证兼容。
-
-### 自动发布
-
-当你有了应用的管理权限之后,你可以修改上述 CI / CD 工作流,以实现在 GitHub 发布 Release 之后自动同步到应用市场,以下是具体步骤:
-
-1. 移除 `skip-appstore-release: true` 配置,或者设置为 `false`。
-2. 在 `with` 中添加 `app-id` 配置,值为应用市场的应用 ID。
-3. 在 Halo 官网的个人中心创建一个新的[个人令牌](https://www.halo.run/uc/profile?tab=pat),勾选 **应用市场开发者 > 版本管理**。
-4. 在 GitHub 仓库的设置 -> `Secrets and variables` 中新建一个 Secret,名称为 `HALO_PAT`,值为你在 Halo 官网创建的个人令牌。
-
-## 版本控制 {#version-control}
-
-为了保持 Halo 生态系统的健康、可靠和安全,每次你对自己拥有的应用进行重大更新时,我们建议在遵循 [semantic versioning spec](http://semver.org/) 的基础上发布新版本。遵循语义版本控制规范有助于其他依赖你代码的开发人员了解给定版本的更改程度,并在必要时调整自己的代码。
diff --git a/versioned_docs/version-2.22/developer-guide/core/build.md b/versioned_docs/version-2.22/developer-guide/core/build.md
deleted file mode 100644
index 2e397539..00000000
--- a/versioned_docs/version-2.22/developer-guide/core/build.md
+++ /dev/null
@@ -1,84 +0,0 @@
----
-title: 构建
-description: 构建为可执行 JAR 和 Docker 镜像的文档
----
-
-:::info
-在此之前,我们推荐你先阅读[《准备工作》](./prepare),检查本地环境是否满足要求。
-:::
-
-一般情况下,为了保证版本一致性和可维护性,我们并不推荐自行构建和二次开发。
-
-## 克隆项目
-
-如果你已经 Fork 了相关仓库,请将以下命令中的 `halo-dev` 替换为你的 GitHub 用户名。
-
-```bash
-git clone https://github.com/halo-dev/halo
-
-# 或者使用 ssh 的方式 clone(推荐)
-# git clone git@github.com:halo-dev/halo.git
-
-# 或者使用 GitHub CLI 克隆(推荐)
-# gh repo clone halo-dev/halo
-
-# 或者使用 GitHub CLI Fork(推荐)
-# gh repo fork halo-dev/halo
-
-cd halo
-
-# 切换到特定的分支或标签,请替换 ${branch_name}
-git checkout ${branch_name}
-```
-
-## 构建 Fat Jar
-
-构建之前需要修改 `gradle.properties` 中的 `version` 属性(推荐遵循 [SemVer 规范](https://semver.org/)),例如:`version=2.22.0`
-
-```bash
-cd path/to/halo
-```
-
-下载预设插件(可选):
-
-```bash
-# Windows
-./gradlew.bat downloadPluginPresets
-
-# macOS / Linux
-./gradlew downloadPluginPresets
-```
-
-构建:
-
-```bash
-# Windows
-./gradlew.bat clean build -x check
-
-# macOS / Linux
-./gradlew clean build -x check
-```
-
-构建完成之后,在 Halo 项目下产生的 `application/build/libs/halo-${version}.jar` 即为构建完成的文件。
-
-最终部署文档可参考:[使用 JAR 文件部署](../../getting-started/install/jar-file.md)。
-
-## 构建 Docker 镜像
-
-在此之前,请确认已经构建好了 Fat Jar。
-
-```bash
-cd path/to/halo
-```
-
-```bash
-# 请替换 ${tag_name}
-docker build -t halo-dev/halo:${tag_name} .
-```
-
-```bash
-# 插件构建完成的版本
-docker images | grep halo
-```
-
-最终部署文档可参考:[使用 Docker Compose 部署](../../getting-started/install/docker-compose.md)。
diff --git a/versioned_docs/version-2.22/developer-guide/core/code-style.md b/versioned_docs/version-2.22/developer-guide/core/code-style.md
deleted file mode 100644
index c23fbc01..00000000
--- a/versioned_docs/version-2.22/developer-guide/core/code-style.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: 代码风格
-description: 代码风格的相关配置说明
----
-
-Halo 添加了 checkstyle 插件,来保证每位提交者代码的风格保持一致,减少无效代码的修改。本篇文章主要讲解如何在 IDEA 中添加 CheckStyle 插件,并引入项目所提供的 checkstyle.xml 配置。
-
-## 安装 CheckStyle-IDEA
-
-- 进入 IDEA 插件市场。
-- 搜索 CheckStyle-IDEA,点击安装即可。
-
-## 配置 CheckStyle
-
-- 进入 CheckStyle 配置(File | Settings | Tools | Checkstyle)。
-- 选择 Checkstyle 版本:9.3(以文件 `application/build.gradle` 中指定的版本为准)。
-- 在配置文件中点击添加按钮,配置描述可随便填写(推荐 Halo Checks),选择 ./config/checkstyle/checkstyle.xml,点击下一步和完成。
-- 勾选刚刚创建的配置文件。
-
-## 配置 Editor
-
-- 进入编辑器配置(File | Settings | Editor | Code Style)
-
-- 导入 checkstyle.xm 配置:
-
-
-
-- 选择 `./config/checkstyle/checkstyle.xml` 配置文件,点击确定即可。
-
-至此,有关代码风格检查工具和格式化配置已经完成。
diff --git a/versioned_docs/version-2.22/developer-guide/core/framework.md b/versioned_docs/version-2.22/developer-guide/core/framework.md
deleted file mode 100644
index 8196c276..00000000
--- a/versioned_docs/version-2.22/developer-guide/core/framework.md
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Halo 架构概览
-description: Halo 架构概览
----
-
-Halo 是一个基于 Spring Boot 的 Java Web 应用,Web 层不再使用 Servlet 技术,而是充分向异步和非阻塞的反应式编程靠拢,使用 Netty 作为 Web 服务器,使用 [Reactor](https://projectreactor.io/) 作为异步编程框架,使用 R2DBC 作为数据库访问框架,使用 WebFlux 作为 Web 层框架。
-
-Halo 由以下几个核心模块组成:
-
-- 安全模块:提供用户认证、授权、用户管理等功能。
-- 插件模块:提供插件管理、插件加载、插件通信、扩展点等功能。
-- 主题模块:提供主题管理、模板渲染、主题配置等功能。
-- 内置内容管理模块:提供文章、分类、标签、评论、附件、页面、菜单、设置等功能。
-
-## Halo 核心概念和 Extension
-
-### 自定义模型 {#extension}
-
-Extension 自定义模型提供了一种声明和管理数据模型的方法,它是 Halo 的核心概念之一。Halo 中的所有数据模型都是通过 Extension 来定义的,包括文章、分类、标签、评论、附件、页面、菜单、设置等,这便于插件系统可以灵活的进行数据模型的扩展,设计文档参考:[自定义模型设计](https://github.com/halo-dev/rfcs/tree/main/extension)。
-
-每个自定义模型都有三大类属性:metadata、spec、和 status。
-
-1. metadata 用于标识自定义模型,每个自定义模型都至少有三个 metadata 属性:name、creationTimestamp、version,除此之外还有 labels 用于标识自定义模型的标签,annotations 用于存放扩展信息,deletionTimestamp 用于标识自定义模型是否被删除,finalizers 用于标识自定义模型的是否可回收。
-2. spec 描述用户期望达到的理想状态(Desired State),比如用户可以配置插件的 `spec.enable` 属性为 `true` 来启用插件或者为 `false` 来停用插件,这就是用户期望达到的理想状态,然后插件控制器会根据用户的期望状态来实现插件的启用或停用,它是声明式的,用户只需要声明期望状态,实际状态由具体的控制器来维护,最终达到用户期望的状态。
-3. status 描述当前实际状态(Actual State),比如用户可以通过 `status.phase` 属性来查看插件启用进行到了哪一步,中间过程可能包含多个步骤,比如插件解析、加载、资源准备等,这些步骤都是由插件控制器来实现的,它是实际状态,只要插件控制器还在运行,它就会一直更新状态,最终达到用户期望的状态。
-
-每个自定义模型注册后都会默认生成 CRUD APIs,通过这些 APIs 就可以对自定义模型对象进行增删改查的操作,然后只需要编写控制器来实现自定义模型的业务逻辑即可,这就是 Halo 的异步编程模型。
-
-### 控制器 {#controller}
-
-在 Halo 中,用户通过自定义模型定义资源的期望状态,Controller 负责监视资源的实际状态,当资源的实际状态和“期望状态”不一致时,Controller 则对系统进行必要的更改,以确保两者一致,这个过程被称之为调谐(Reconcile),而实现调谐的逻辑被称之为 Reconciler。Reconciler 获取对象的名称并返回是否需要重试(例如发生一些错误),如果需要重试,则 Controller 会在稍后再次调用 Reconciler,而这个过程会一直重复,直到 Reconciler 返回成功为止,这个过程被称之为调谐循环(Reconciliation Loop)。
-
-### 自定义模型生命周期 {#extension-lifecycle}
-
-所有 Halo 的自定义模型对象都遵循一个共同的生命周期,可以将其视为状态机,尽管某些特定的自定义模型扩展了这一点并提供了更多状态。要编写正确的控制器,了解公共对象生命周期非常重要。
-
-所有自定义模型对象都存在以下状态之一:
-
-- `DOES_NOT_EXIST`:Halo 不知道该对象。该状态不区分“尚未创建”和“已删除”。
-- `ACTIVE`:Halo 知道该对象并且该对象尚未被删除(未设置 `metadata.deletionTimestamp`)。在此状态下,任何更新操作(PUT、PATCH、服务器端处理等)都将导致相同的状态。
-- `DELETING`:Halo 知道该对象,该对象已被删除,但尚未完全删除。这可能是因为对象有一个或多个终结器(在 `metadata.finilizers` 中),客户端仍然可以访问该对象,并且可以看到它正在删除,因为设置了 `metadata.deleteTimestamp` 字段。当最后一个终结器被删除时,该对象将从存储中删除,并真正不存在。
-
-下图描述了上述状态:
-
-```text
- +---- object
- | updated
- v |
- +----------+ |
- | +----+
- object --------->| ACTIVE |
- created | +-----------+
- | +---+------+ |
- | | |
- | | |
-+------------+---+ | |
-| | object deleted |
-| |<--- without finalizers |
-| | object deleted
-| DOES_NOT_EXIST | with finalizers
-| | |
-| |<--- finalizers removed |
-| | | |
-+----------------+ | |
- | |
- | |
- +---+------+ |
- | | |
- | DELETING |<----------+
- | |
- +----------+
-```
-
-总结:自定义模型对象的删除并不是立即生效的,而是需要经过两个步骤,第一步是将对象的 `metadata.deletionTimestamp` 字段设置为当前时间,第二步是将对象的 `metadata.finalizers` 字段设置为空,这样对象才会真正被删除,第一步是由用户发起的,第二步是由 Halo 控制器发起的。
-
-### Secret {#secret}
-
-Secret 用于解决密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到自定义模型的 Spec 中,或 API 响应中。
-
-### ConfigMap {#configmap}
-
-ConfigMap 自定义模型用来保存 key-value pair 配置数据,这个数据可以在 Reconciler 里使用,或者被用来为插件或者主题存储配置数据。
-
-虽然 ConfigMap 跟 Secret 类似,但是 ConfigMap 更方便的处理不含敏感信息的字符串。
-
-### Setting {#setting}
-
-Setting 自定义模型用于提供用户配置声明,用户可以通过 Setting 来声明一些模板需要的配置,比如主题设置、插件设置、系统设置等都可以通过 Setting 来声明,就能在 UI 层面提供配置入口,用户可以通过 UI 来配置这些设置,而不需要修改配置文件。
-
-### 基于角色的访问控制(RBAC){#rbac}
-
-Halo 使用基于角色的访问控制(Role-based Access Control,RBAC)来控制用户对资源的访问权限,RBAC 通过将角色分配给用户来实现访问控制,用户可以通过角色来访问资源,角色可以通过权限来访问资源。
-
-RBAC 主要引入了角色(Role)和角色绑定(RoleBinding)的抽象概念,插件可以通过定义角色来提供用户对资源的分配入口,用户可以通过角色绑定来获取角色,从而获取资源的访问权限。
-
-而对于底层角色,用户分配起来比较麻烦,因此 Halo 提供了**角色模板**的概念,通过将角色标记为模板来使用一组功能相关的角色,如文章查看的角色可能必须包含标签和分类的查看才算是一组完整的功能,因此可以将文章查看的角色标记为模板,并依赖标签和分类的查看角色,这样用户就可以通过角色模板来获取一组功能相关的角色,而不需要一个一个的分配角色。
diff --git a/versioned_docs/version-2.22/developer-guide/core/prepare.md b/versioned_docs/version-2.22/developer-guide/core/prepare.md
deleted file mode 100644
index 6e765f2c..00000000
--- a/versioned_docs/version-2.22/developer-guide/core/prepare.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: 准备工作
-description: 开发环境的准备工作
----
-
-## 环境要求
-
-- [OpenJDK 21 LTS](https://github.com/openjdk/jdk)
-- [Node.js 20 LTS](https://nodejs.org)
-- [pnpm 10](https://pnpm.io/)
-- [IntelliJ IDEA](https://www.jetbrains.com/idea/)
-- [Git](https://git-scm.com/)
-- [Docker](https://www.docker.com/)(可选)
-
-## 名词解释
-
-### 工作目录
-
-指 Halo 所依赖的工作目录,在 Halo 运行的时候会在系统当前用户目录下产生一个 halo-next 的文件夹,绝对路径为 ~/halo-next。里面通常包含下列目录或文件:
-
-1. `db`:存放 H2 Database 的物理文件,如果你使用其他数据库,那么不会存在这个目录。
-2. `themes`:里面包含用户所安装的主题。
-2. `plugins`:里面包含用户所安装的插件。
-5. `attachments`:附件目录。
-4. `logs`:运行日志目录。
diff --git a/versioned_docs/version-2.22/developer-guide/core/run.md b/versioned_docs/version-2.22/developer-guide/core/run.md
deleted file mode 100644
index 6d12ac05..00000000
--- a/versioned_docs/version-2.22/developer-guide/core/run.md
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: 开发环境运行
-description: 开发环境运行的指南
----
-
-:::info
-在此之前,我们推荐你先阅读[《准备工作》](./prepare),检查本地环境是否满足要求。
-:::
-
-## 项目结构说明
-
-目前如果需要完整的运行 Halo,总共需要三个部分:
-
-1. Halo 主项目([halo-dev/halo](https://github.com/halo-dev/halo))
-2. UI,包括 Console 控制台和 UC 个人中心(托管在 Halo 主项目)
-3. 主题(Halo 主项目内已包含默认主题)
-
-:::info[说明]
-从 Halo 2.11 开始,Halo 项目的 `ui` 目录同时包含了 Console(管理控制台)和 UC(个人中心),以下统称为 UI。
-
-当前 Halo 主项目并不会将 UI 的构建资源托管到 Git 版本控制,所以在开发环境是需要同时运行 UI 项目的。当然,在我们的最终发布版本的时候会在 CI 中自动构建 UI 到 Halo 主项目。
-:::
-
-## 克隆项目
-
-如果你已经 Fork 了相关仓库,请将以下命令中的 `halo-dev` 替换为你的 GitHub 用户名。
-
-```bash
-git clone https://github.com/halo-dev/halo
-
-# 或者使用 ssh 的方式 clone(推荐)
-# git clone git@github.com:halo-dev/halo.git
-
-# 或者使用 GitHub CLI 克隆(推荐)
-# gh repo clone halo-dev/halo
-
-# 或者使用 GitHub CLI Fork(推荐)
-# gh repo fork halo-dev/halo
-```
-
-## 运行 UI 服务
-
-```bash
-cd path/to/halo/ui
-pnpm install
-pnpm build:packages
-pnpm dev
-```
-
-最终控制台打印了如下信息即代表运行正常:
-
-```bash
-VITE v4.2.3 ready in 638 ms
-
-# Console 控制台服务
-➜ Local: http://localhost:3000/console/
-
-# UC 个人中心服务
-➜ Local: http://localhost:4000/uc/
-```
-
-:::info[提示]
-请不要直接使用 UI 的运行端口(3000 / 4000)访问,会因为跨域问题导致无法正常登录,建议按照后续的步骤以 dev 的配置文件运行 Halo,在 dev 的配置文件中,我们默认代理了 UI 页面的访问地址,所以后续访问 UI 页面使用 `http://localhost:8090/console` 和 `http://localhost:8090/uc` 访问即可,代理的相关配置:
-
-```yaml
-halo:
- console:
- proxy:
- endpoint: http://localhost:3000/
- enabled: true
- uc:
- proxy:
- endpoint: http://localhost:4000/
- enabled: true
-```
-
-:::
-
-## 运行 Halo
-
-1. 在 IntelliJ IDEA 中打开 Halo 项目,等待 Gradle 初始化和依赖下载完成。
-
-2. 下载预设插件(可选)
-
- ```bash
- # Windows
- ./gradlew.bat downloadPluginPresets
-
- # macOS / Linux
- ./gradlew downloadPluginPresets
- ```
-
-3. 修改 IntelliJ IDEA 的运行配置
-
- - Windows
-
- 将 Active Profiles 改为 `dev,win`,如图所示:
-
- 
-
- - macOS / Linux
-
- 将 Active Profiles 改为 `dev`,如图所示:
-
- 
-
-4. 点击 IntelliJ IDEA 的运行按钮,等待项目启动完成。
-
-5. 或者使用 Gradle 运行
-
- ```bash
- # macOS / Linux
- ./gradlew bootRun --args="--spring.profiles.active=dev"
-
- # Windows
- gradlew.bat bootRun --args="--spring.profiles.active=dev,win"
- ```
-
-6. 最终提供以下访问地址:
- 1. 网站首页:[http://localhost:8090](http://localhost:8090)
- 2. Console 控制台:[http://localhost:8090/console](http://localhost:8090/console)
- 3. UC 个人中心:[http://localhost:8090/uc](http://localhost:8090/uc)
diff --git a/versioned_docs/version-2.22/developer-guide/core/structure.md b/versioned_docs/version-2.22/developer-guide/core/structure.md
deleted file mode 100644
index 66084b07..00000000
--- a/versioned_docs/version-2.22/developer-guide/core/structure.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title: 系统结构
-description: Halo 项目的构成
----
-
-[Halo](https://github.com/halo-dev/halo) 博客系统分为以下四个部分:
-
-| 项目名称 | 简介 |
-| :------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------- |
-| [halo](https://github.com/halo-dev/halo) | 提供整个系统的服务,采用 [Spring Boot](https://spring.io/) 开发 |
-| [halo-admin](https://github.com/halo-dev/halo-admin) | 负责后台管理的渲染,采用 [Vue](https://vuejs.org/) 开发,已集成在 Halo 运行包内,无需独立部署。 |
-| [halo-comment](https://github.com/halo-dev/halo-comment) | 评论插件,采用 [Vue](https://vuejs.org/) 开发,在主题中运行方式引入构建好的 `JavaScript` 文件即可 |
-| [halo-theme-\*](https://github.com/halo-dev) | 主题项目集,采用 [FreeMarker](https://freemarker.apache.org/) 模板引擎编写,需要包含一些特殊的配置才能够被 halo 所使用 |
-
-## 自定义配置
-
-> 为什么要提前讲自定义配置呢?是因为在这里让大家了解到 `Halo` 的`配置方式`,以及`配置优先级`,不至于未来运行项目的时候不知道如何优雅地修改配置。
-
-`Halo` 配置目录优先级如下(从上到下优先级越来越小,上层的配置将会覆盖下层):
-
-- `Halo` 自定义配置
- - file:~/.halo/
- - file:~/.halo-dev/
-- `Spring Boot` 默认配置
- - file:./config/
- - file:./
- - classpath:/config/
- - classpath:/
-
-> 参考:[Application Property Files](https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files)
-
-在开发的时候,希望大家能够在 `~/halo-dev/application.yml` 中进行添加自定义配置。当然后面也会讲到如何用`运行参数` 和 `VM options` 进行控制配置,届时可根据具体情况进行选择。
-
-:::warning
-开发的时候,我们不建议直接更改`项目源码`中的所包含的`配置文件`,包括 `application.yml`、`application-dev.yml`、`application-test.yml` 和 `application-user.yml`。
-:::
diff --git a/versioned_docs/version-2.22/developer-guide/form-schema.md b/versioned_docs/version-2.22/developer-guide/form-schema.md
deleted file mode 100644
index bed20cba..00000000
--- a/versioned_docs/version-2.22/developer-guide/form-schema.md
+++ /dev/null
@@ -1,869 +0,0 @@
----
-title: 表单定义
----
-
-在 Halo 2.0,在 Console 端的所有表单我们都使用了 [FormKit](https://github.com/formkit/formkit) 的方案。FormKit 不仅支持使用 Vue 组件的形式来构建表单,同时支持使用 Schema 的形式来构建。因此,我们的 [Setting](https://github.com/halo-dev/halo/blob/87ccd61ae5cd35a38324c30502d4e9c0ced41c6a/src/main/java/run/halo/app/core/extension/Setting.java#L20) 资源中的表单定义,都是使用 FormKit Schema 来定义的,最常用的场景即主题和插件的设置表单定义。当然,如果要在 Halo 2.0 的插件中使用,也可以参考 FormKit 的文档使用 Vue 组件的形式使用,但不需要在插件中引入 FormKit。
-
-此文档将不会介绍 FormKit 的具体使用教程,因为我们已经很好的集成了 FormKit,并且使用方式基本无异。此文章将介绍 Halo 2.0 中表单定义的一些规范,以及额外的一些输入组件。
-
-FormKit 相关文档:
-
-- Form Schema: [https://formkit.com/essentials/schema](https://formkit.com/essentials/schema)
-- FormKit Inputs: [https://formkit.com/inputs](https://formkit.com/inputs)
-
-:::tip
-目前不支持 FormKit Pro 中的输入组件,但 Halo 额外提供了部分输入组件,将在下面文档列出。
-:::
-
-## Setting 资源定义方式
-
-```yaml title="settings.yaml"
-apiVersion: v1alpha1
-kind: Setting
-metadata:
- name: foo-setting
-spec:
- forms:
- - group: group_1
- label: 分组 1
- formSchema:
- - $formkit: radio
- name: color_scheme
- label: 默认配色
- value: system
- options:
- - label: 跟随系统
- value: system
- - label: 深色
- value: dark
- - label: 浅色
- value: light
-
- - group: group_2
- label: 分组 2
- formSchema:
- - $formkit: text
- name: username
- label: 用户名
- value: ""
- - $formkit: password
- name: password
- label: 密码
- value: ""
-```
-
-:::tip
-需要注意的是,FormKit Schema 本身应该是 JSON 格式的,但目前我们定义一个表单所使用的是 YAML,可能在参考 FormKit 写法时需要手动转换一下。
-:::
-
-字段说明:
-
-1. `metadata.name`:设置资源的名称,建议以 `-setting` 结尾。
-2. `spec.forms`:表单定义,可以定义多个表单,每个表单都有一个 `group` 字段,用于区分不同的表单。
-3. `spec.forms[].label`:表单的标题。
-4. `spec.forms[].formSchema`:表单的定义,使用 FormKit Schema 来定义。虽然我们使用的 YAML,但与 FormKit Schema 完全一致。
-
-## 组件类型
-
-除了 FormKit 官方提供的常用输入组件之外,Halo 还额外提供了一些输入组件,这些输入组件可以在 Form Schema 中使用。
-
-### select
-
-#### 描述
-
-自定义的选择器组件,支持静态和动态数据源,支持多选等功能。
-
-#### 参数 {#select-params}
-
-- `options`:静态数据源。当 `action` 存在时,此参数无效。
-- `action`:远程动态数据源的接口地址。
-- `requestOption`:动态数据源的请求参数,可以通过此参数来指定如何获取数据,适配不同的接口。当 `action` 存在时,此参数有效。
-- `remoteOptimize`:是否开启远程数据源优化,默认为 `true`。开启后,将会对远程数据源进行优化,减少请求次数。仅在动态数据源下有效。
-- `allowCreate`:是否允许创建新选项,默认为 `false`。仅在静态数据源下有效,需要同时开启 `searchable`。
-- `clearable`:是否允许清空选项,默认为 `false`。
-- `multiple`:是否多选,默认为 `false`。
-- `maxCount`:多选时最大可选数量,默认为 `Infinity`。仅在多选时有效。
-- `sortable`:是否支持拖动排序,默认为 `false`。仅在多选时有效。
-- `searchable`: 是否支持搜索,默认为 `false`。
-- `autoSelect`:当初始值不存在时,是否自动选择第一个选项,默认为 `true`。仅在单选时有效。
-
-#### 参数类型定义
-
-```ts
-{
- options?: Array<
- Record & {
- label: string;
- value: string;
- }
- >;
- action?: string;
- requestOption?: {
- method?: "GET" | "POST";
-
- /**
- * 请求结果中 page 的字段名,默认为 `page`。
- */
- pageField?: PropertyPath;
-
- /**
- * 请求结果中 size 的字段名,默认为 `size`。
- */
- sizeField?: PropertyPath;
-
- /**
- * 请求结果中 total 的字段名,默认为 `total`。
- */
- totalField?: PropertyPath;
-
- /**
- * 从请求结果中解析数据的字段名,默认为 `items`。
- */
- itemsField?: PropertyPath;
-
- /**
- * 从 items 中解析出 label 的字段名,默认为 `label`。
- */
- labelField?: PropertyPath;
-
- /**
- * 从 items 中解析出 value 的字段名,默认为 `value`。
- */
- valueField?: PropertyPath;
-
- /**
- * 使用 value 查询详细信息时,fieldSelector 的查询参数 key,默认为 `metadata.name`。
- */
- fieldSelectorKey?: PropertyPath;
- };
- remoteOptimize?: boolean;
- allowCreate?: boolean;
- clearable?: boolean;
- multiple?: boolean;
- maxCount?: number;
- sortable?: boolean;
- searchable?: boolean;
-}
-```
-
-#### 静态数据示例
-
-```yaml
-- $formkit: select
- name: countries
- label: What country makes the best food?
- sortable: true
- multiple: true
- clearable: true
- searchable: true
- placeholder: Select a country
- options:
- - label: China
- value: cn
- - label: France
- value: fr
- - label: Germany
- value: de
- - label: Spain
- value: es
- - label: Italy
- value: ie
- - label: Greece
- value: gr
-```
-
-#### 远程动态数据示例
-
-支持远程动态数据源,通过 `action` 和 `requestOption` 参数来指定如何获取数据。
-
-请求的接口将会自动拼接 `page`、`size` 与 `keyword` 参数,其中 `keyword` 为搜索关键词。
-
-```yaml
-- $formkit: select
- name: postName
- label: Choose an post
- clearable: true
- action: /apis/api.console.halo.run/v1alpha1/posts
- requestOption:
- method: GET
- pageField: page
- sizeField: size
- totalField: total
- itemsField: items
- labelField: post.spec.title
- valueField: post.metadata.name
- fieldSelectorKey: metadata.name
-```
-
-:::tip
-当远程数据具有分页时,可能会出现默认选项不在第一页的情况,此时 Select 组件将会发送另一个查询请求,以获取默认选项的数据。此接口会携带如下参数:
-
-```ts
-fieldSelector: `${requestOption.fieldSelectorKey}=(value1,value2,value3)`
-```
-
-其中,value1, value2, value3 为默认选项的值。返回值与查询一致,通过 `requestOption` 解析。
-:::
-
-### list
-
-#### 描述
-
-列表类型的输入组件,支持动态添加、删除数据项。
-
-:::tip
-`list` 组件与 [array](#array) 组件功能类似,但它们的用途不同。`list` 组件适合展示基本类型的数据,而 `array` 组件更适合于展示复杂类型的数据。
-:::
-
-#### 参数
-
-- `item-type`:数据项的数据类型,用于初始化数据。可选参数 `string`, `number`, `boolean`,默认为 `string`
-- `min`:数组最小要求数量,默认为 `0`
-- `max`:数组最大容量,默认为 `Infinity`,即无限制
-- `addButton`:是否显示添加按钮
-- `addLabel`:添加按钮的文本
-- `upControl`:是否显示上移按钮
-- `downControl`:是否显示下移按钮
-- `insertControl`:是否显示插入按钮
-- `removeControl`:是否显示移除按钮
-
-#### 示例
-
-```yaml
-- $formkit: list
- name: socials
- label: 社交账号
- addLabel: 添加账号
- min: 1
- max: 5
- itemType: string
- children:
- - $formkit: text
- index: "$index"
- validation: required
-```
-
-:::tip
-`list` 组件有且只有一个子节点,并且必须为子节点传递 `index` 属性。若想提供多个字段组成对象,则建议改为使用 [array](#array) 组件。
-:::
-
-最终保存表单之后得到的值为以下形式:
-
-```json
-{
- "socials": [
- "GitHub",
- "Twitter"
- ]
-}
-```
-
-### verificationForm
-
-#### 描述
-
-用于远程验证一组数据是否符合要求的组件。
-
-#### 参数
-
-- `action`:对目标数据进行验证的接口地址
-- `label`:验证按钮文本
-- `submitAttrs`:验证按钮的额外属性
-
-#### 示例
-
-```yaml
-- $formkit: verificationForm
- action: /apis/console.api.halo.run/v1alpha1/verify/verify-password
- label: 账户校验
- children:
- - $formkit: text
- label: "用户名"
- name: username
- validation: required
- - $formkit: password
- label: "密码"
- name: password
- validation: required
-```
-
-:::tip
-尽管 `verificationForm` 本身是一个输入组件,但与其他输入组件不同的是,它仅仅用于包装待验证的数据,所以并不会破坏原始数据的格式。例如上述示例中的值在保存后为:
-
-```json
-{
- "username": "admin",
- "password": "admin"
-}
-```
-
-而不是
-
-```json
-{
- "verificationForm": {
- "username": "admin",
- "password": "admin"
- }
-}
-```
-
-:::
-
-示例中发送至验证地址的值为如下格式:
-
-```json
-{
- "username": "admin",
- "password": "admin"
-}
-```
-
-当验证接口返回成功响应时,则验证通过,否则验证失败。
-
-若用户在验证失败时想显示错误信息,可以在验证接口返回错误信息,该错误信息的结构定义需遵循 [RFC 7807 - Problem Details for HTTP APIs](https://datatracker.ietf.org/doc/html/rfc7807.html) 。例如:
-
-```json
-{
- "title": "无效凭据",
- "status": 401,
- "detail": "用户名或密码错误。"
-}
-```
-
-UI 效果:
-
-
-
-### ~~repeater~~(已过时)
-
-:::warning
-`repeater` 组件已不再推荐使用,请使用 [array](#array) 组件代替。
-:::
-
-#### 描述
-
-一组重复的输入组件,可以用于定义一组数据,最终得到的数据为一个对象的数组,可以方便地让使用者对其进行增加、移除、排序等操作。
-
-#### 参数
-
-- `min`:数组最小要求数量,默认为 `0`
-- `max`:数组最大容量,默认为 `Infinity`,即无限制
-- `addButton`:是否显示添加按钮
-- `addLabel`:添加按钮的文本
-- `upControl`:是否显示上移按钮
-- `downControl`:是否显示下移按钮
-- `insertControl`:是否显示插入按钮
-- `removeControl`:是否显示移除按钮
-
-#### 示例
-
-```yaml
-- $formkit: repeater
- name: socials
- label: 社交账号
- value: []
- max: 5
- min: 1
- children:
- - $formkit: select
- name: enabled
- id: enabled
- label: 是否启用
- options:
- - label: 是
- value: true
- - label: 否
- value: false
- - $formkit: text
- # 在 Repeater 中进行条件判断的方式,当 enabled 为 true 时才显示
- if: "$value.enabled === true",
- name: name
- label: 名称
- value: ""
- - $formkit: text
- if: "$value.enabled === true",
- name: url
- label: 地址
- value: ""
-```
-
-:::tip
-使用 `repeater` 类型时,一定要设置默认值,如果不需要默认有任何元素,可以设置为 `[]`。
-:::
-
-其中 `name` 和 `url` 即数组对象的属性,最终保存表单之后得到的值为以下形式:
-
-```json
-{
- "socials": [
- {
- "name": "GitHub",
- "url": "https://github.com/halo-dev"
- }
- ]
-}
-```
-
-UI 效果:
-
-
-
-### attachment
-
-#### 描述
-
-:::info
-在 Halo 2.22 中,我们重构了原有的 attachment 表单类型,支持了预览和直接上传文件,并将旧版的表单类型更名为了 [attachmentInput](#attachmentinput)。
-:::
-
-附件类型的输入框,支持预览附件、直接上传文件、从附件库选择。
-
-#### 参数
-
-- `accepts`:文件类型,数据类型为 `string[]`
-- `width`:预览区域宽度
-- `aspectRatio`:预览区域长宽比,比如 `1/1`、`16/9`
-- `multiple`:是否支持多选,设置为 `true` 之后,数据结构为字符串数组
-
-#### 示例
-
-```yaml
-- $formkit: attachment
- name: logo
- label: Logo
- accepts:
- - "image/png"
- - "video/mp4"
- - "audio/*"
- value: ""
-```
-
-### attachmentInput
-
-#### 描述
-
-附件类型的输入框,支持直接调用附件库弹框选择附件。
-
-#### 参数
-
-- `accepts`:文件类型,数据类型为 `string[]`
-- `min`:最小文件数量
-- `max`:最大文件数量
-
-#### 示例
-
-```yaml
-- $formkit: attachment
- name: logo
- label: Logo
- accepts:
- - "image/png"
- - "video/mp4"
- - "audio/*"
- value: ""
-```
-
-### code
-
-#### 描述
-
-代码编辑器的输入组件,集成了 [Codemirror](https://codemirror.net/)。
-
-#### 参数
-
-- `language`:代码语言,目前支持 `yaml` `html` `javascript` `css` `json`。
-- `height`:代码编辑器的高度。
-
-#### 示例
-
-```yaml
-- $formkit: code
- name: footer_code
- label: 页脚代码注入
- value: ""
- language: yaml
-```
-
-### menuSelect
-
-#### 描述
-
-菜单选择器,用于选择系统内的导航菜单,支持单选、多选、排序。
-
-#### 示例
-
-```yaml
-- $formkit: menuSelect
- name: menus
- label: 菜单
- multiple: true
- value: []
-```
-
-:::info
-menuSelect 基于 select,并兼容 select 的[参数](#select-params)。
-:::
-
-### menuCheckbox
-
-#### 描述
-
-菜单复选框,用于选择系统内的导航菜单。其中选择的值为菜单资源 `metadata.name` 的集合。
-
-#### 示例
-
-```yaml
-- $formkit: menuCheckbox
- name: menus
- label: 菜单
- value: []
-```
-
-### menuRadio
-
-#### 描述
-
-菜单单选框,用于选择系统内的导航菜单。其中选择的值为菜单资源 `metadata.name`。
-
-#### 示例
-
-```yaml
-- $formkit: menuRadio
- name: menu
- label: 菜单
- value: ""
-```
-
-### postSelect
-
-#### 描述
-
-文章选择器,用于选择系统内的文章。其中选择的值为文章资源 `metadata.name`。
-
-#### 示例
-
-```yaml
-- $formkit: postSelect
- name: post
- label: 文章
- value: ""
-```
-
-### singlePageSelect
-
-#### 描述
-
-单页选择器,用于选择系统内的独立页面。其中选择的值为独立页面资源 `metadata.name`。
-
-#### 示例
-
-```yaml
-- $formkit: singlePageSelect
- name: singlePage
- label: 单页
- value: ""
-```
-
-### categorySelect
-
-#### 描述
-
-文章分类选择器,用于选择系统内的文章分类。其中选择的值为文章分类资源 `metadata.name`。
-
-#### 示例
-
-```yaml
-- $formkit: categorySelect
- name: category
- label: 分类
- value: ""
-```
-
-### categoryCheckbox
-
-#### 描述
-
-文章分类复选框,用于选择系统内的文章分类。其中选择的值为文章分类资源 `metadata.name` 的集合。
-
-#### 示例
-
-```yaml
-- $formkit: categoryCheckbox
- name: categories
- label: 分类
- value: []
-```
-
-### tagSelect
-
-#### 描述
-
-文章标签选择器,用于选择系统内的文章标签。其中选择的值为文章标签资源 `metadata.name`。
-
-#### 示例
-
-```yaml
-- $formkit: tagSelect
- name: tag
- label: 标签
- value: ""
-```
-
-### tagCheckbox
-
-#### 描述
-
-文章标签复选框,用于选择系统内的文章标签。其中选择的值为文章标签资源 `metadata.name` 的集合。
-
-#### 示例
-
-```yaml
-- $formkit: tagCheckbox
- name: tags
- label: 标签
- value: []
-```
-
-### iconify
-
-统一的图标选择器,基于 [Iconify](https://iconify.design/)。
-
-示例
-
-```yaml
-- $formkit: iconify
- name: social_icon
- label: 社交图标
- format: svg # svg / dataurl / url / name
-```
-
-#### 参数
-
-- `format`:图标格式,默认为 `svg`
- - `svg`:svg 字符串
- - `dataurl`:base64 的图片链接,可以直接用于 img 标签
- - `url`:Iconify 的 CDN 链接
- - `name`:Iconify 的图标名称,需要在使用的地方自行加载图标
-- `value-only`:是否仅返回图标数据,默认为 `false`
-- `popper-placement`:图标选择弹窗的打开位置,默认为 `auto`,可以为:`auto`、`auto-end`、`auto-start`、`bottom`、`bottom-end`、`bottom-start`、`left`、`left-end`、`left-start`、`right`、`right-end`、`right-start`、`top`、`top-end`、`top-start`
-
-#### 值类型
-
-当 `value-only` 参数为 `true` 时,此表单项的值为 `string` 类型,比如当 `format` 为 `svg` 时,返回值数据形如 ``
-
-当 `value-only` 参数不填写或为 `false` 时,表单类型的值为对象,包含以下属性:
-
-- `value`: 图标数据,当 `format` 参数不同时,value 的形式也不同,具体如下:
- - `svg`:value 的值为 svg 字符串,可以直接放置在 HTML 中使用
- - `dataurl` / `url`:可以使用 `img` 标签加载
- - `name`:Iconify 对应的图标名称,需要在前端加载 [Iconify](https://iconify.design/docs/iconify-icon/) 的依赖配合使用
-- `name`:Iconify 对应的图标名称,保留这个字段的目的是为了在 Console 中回显图标信息,通常不需要使用此字段
-- `width`:用户在选择图标时设置的图标大小,此字段的目的是为了在 Console 中再次编辑时回显,通常不需要使用此字段
-- `color`:用户在选择图标时设置的图标颜色,此字段的目的是为了在 Console 中再次编辑时回显,通常不需要使用此字段
-
-在主题模板中的使用示例:
-
-```html
-
-
-
-
-
-
-
-
-
-```
-
-开发者可根据具体使用情况自行选择图标格式,通常推荐 `svg` 或者 `dataurl`,因为这样无需任何网络请求,确保图标可以稳定地正常加载。
-
-UI 效果:
-
-
-
-
-
-### array
-
-一组重复的输入组件,展示为列表形式,可以用于定义一组数据。最终得到的数据为一个对象的数组,方便使用者对此数组进行增加、删除、排序等操作。
-
-参数
-
-- `min`:数组最小要求数量,默认为 `0`
-- `max`:数组最大容量,默认为 `Infinity`,即无限制
-- `removeControl`:是否允许移除元素
-- `addButton`:是否显示添加按钮
-- `addLabel`:添加按钮上显示的文本
-- `addAttrs`:添加按钮的额外属性
-- `emptyText`: 当数组为空时显示的文本
-- `itemLabels`: 列表元素上显示的内容,数据类型为 `{ type: "image" | "text" | "iconify"; label: string }[]`
-
-:::tip
-强烈建议为 `array` 设置 `itemLabels` 属性,以便于更直观的展示元素内容,设置的元素内容将按照设置顺序展示在列表元素上。
-
-在 `itemLabels` 中定义 `label` 时,可以使用 `$value` 来指向当前项的值。
-:::
-
-#### 示例
-
-```yaml
-- $formkit: array
- name: socials
- label: 社交账号
- value: []
- max: 5
- min: 1
- itemLabels:
- - type: image
- label: $value.logo
- - type: text
- label: $value.name
- children:
- - $formkit: attachment
- name: logo
- label: 图标
- value: ""
- - $formkit: text
- name: name
- label: 名称
- value: ""
- - $formkit: text
- name: url
- label: 地址
- value: ""
-```
-
-:::warning
-由于目前无法通过单个 `itemLabels` 定义涵盖所有子项变动的情况,因此在 `itemLabels` 中使用 `$value` ,无法获取到具有 `if` 属性的组件值。
-
-例如:
-
-```yaml
-- $formkit: array
- name: socials
- label: 社交账号
- value: []
- itemLabels:
- - type: text
- # 这里无法获取到具有 if 属性的组件值,因此也就无法展示在列表元素上。
- label: $value.name
- children:
- - $formkit: select
- name: enabled
- label: 是否启用
- options:
- - label: 是
- value: true
- - label: 否
- value: false
- - $formkit: text
- if: "$value.enabled === true",
- label: $value.name
-```
-
-:::
-
-### switch
-
-开关组件,提供两个值之间的选择;当您想使用户切换功能开或关时,这是一个很好的选项
-
-参数
-
-- `onValue`:开关打开时的值,默认为 `true`
-- `offValue`:开关关闭时的值,默认为 `false`
-- `disabled`:是否禁用开关,默认为 `false`
-
-#### 示例
-
-```yaml
-- $formkit: switch
- name: enabled
- label: 是否启用
- value: false
-```
-
-如果需要开关的值为其他值,可以设置 `onValue` 和 `offValue` 参数。
-
-```yaml
-- $formkit: switch
- name: enabled
- label: 是否启用
- value: "active"
- onValue: "active"
- offValue: "inactive"
-```
-
-### toggle
-
-切换组件,用于对一组图片、颜色或文字等选择切换,支持单选与多选。它的功能与 `select` 组件类似,但相较于 `select` 组件,`toggle` 组件可以更直观的展示选项。
-
-参数:
-
-- `renderType`:当前组件的渲染类型,可选参数为 `image`、`color`、`text`,默认为 `text`。
-- `options`:一组同类型的数据源,数据类型为 `{ label?: string; value: string; render?: string }[]`,其中 `label` 为选项的文本,`value` 为选项的值。`render` 为选项的渲染展示内容,与 `renderType` 参数配合使用。
- - 当 `renderType` 为 `image` 时,`render` 参数为图片的 URL。
- - 当 `renderType` 为 `color` 时,`render` 参数为颜色的十六进制代码。例如 `#000000`。
- - 当 `renderType` 为 `text` 时,`render` 参数为文字内容。
-- `multiple`:可选,是否支持多选,默认为 `false`。
-- `size`:可选,渲染内容的尺寸,`number` 类型,单位为 `px`。
-- `gap`:可选,渲染内容之间的间距,`number` 类型,单位为 `px`。
-- `value`: 可选初始值,数据类型为 `string | number | boolean | (string | number | boolean)[]`。
-
-#### 示例
-
-```yaml
-- $formkit: toggle
- label: 选择图片
- name: toggle
- render-type: image
- size: 100
- gap: 10
- help: 选择图片作为背景
- options:
- - label: 图文1
- value: 1
- render: https://placehold.co/600x400
- - label: 图文2
- value: 2
- render: https://placehold.co/600x400
- - label: 图文3
- value: 3
- render: https://placehold.co/600x400
-
-```
-
-#### UI 效果
-
-
-
-
-
-### secret
-
-密钥输入组件,用于选择一个密钥资源。
-
-:::note
-在 Halo 中,我们提供了一种更加安全的数据存储模型,即 Secret,通常我们使用 Secret 来存储敏感数据,比如密码、token、密钥等。
-
-主要注意的是,此表单类型通常与后端配合使用,需要在后端查询密钥资源。
-:::
-
-参数
-
-- `requiredKeys`:所需的密钥字段,用于为用户说明所选的密钥资源中需要包含的字段,此字段为对象数组类型,对象包含以下属性:
- - `key`:密钥字段名称
- - `help`:密钥字段名称的描述
-
-#### 示例
-
-```yaml
-- $formkit: secret
- name: secret
- label: 密钥
- requiredKeys:
- - key: apiKey
- help: API 密钥
- - key: secretKey
- help: 密钥
-```
diff --git a/versioned_docs/version-2.22/developer-guide/plugin/api-changelog.md b/versioned_docs/version-2.22/developer-guide/plugin/api-changelog.md
deleted file mode 100644
index 7030d2c3..00000000
--- a/versioned_docs/version-2.22/developer-guide/plugin/api-changelog.md
+++ /dev/null
@@ -1,205 +0,0 @@
----
-title: API 变更日志
-description: 记录每一个版本的插件 API 变更记录,方便开发者适配
----
-
-## 2.22.8
-
-### 表单定义 > 新增 `toggle` 组件
-
-在 2.22.8 中,我们为 FormKit 表单新增了 `toggle` 组件,这是一个可以对一组图片、颜色或文字等进行选择切换的组件,详细文档可查阅:[表单定义#toggle](../../developer-guide/form-schema.md#toggle)
-
-## 2.22.5
-
-### SpringDoc 依赖更新可能导致插件无法启动
-
-在 2.22.5 中,我们更新了 SpringDoc 依赖至 [2.8.15](https://github.com/springdoc/springdoc-openapi/releases/tag/v2.8.15) 版本,该版本[修复](https://github.com/springdoc/springdoc-openapi/pull/3183)了 OpenAPI 文档生成中的一些问题(例如嵌套路由无须定义文档),且为破坏性更新,这可能会导致插件无法正常启动。
-
-因此,建议插件开发者尽快升级 Halo 依赖,`build.gradle` 修改示例如下:
-
-```groovy
-dependencies {
- implementation platform('run.halo.tools.platform:plugin:2.22.5')
-
- ...
-}
-```
-
-`plugin.yaml` 中的 `spec.requires` 字段也需要提升至 `>=2.22.5`,示例如下:
-
-```yaml
-spec:
- requires: ">=2.22.5"
-```
-
-尝试构建并解决编译错误即可。
-
-## 2.22.2
-
-### 表单定义 > 新增 `switch` 组件
-
-在 2.22.2 中,我们为 FormKit 表单新增了 `switch` 组件,用于定义一个功能的开关,详细文档可查阅:[表单定义#switch](../../developer-guide/form-schema.md#switch)
-
-## 2.22.0
-
-### 自定义模型索引 API 更新
-
-在 2.22.0 中,我们重构了自定义模型索引和查询 API,插件中直接使用索引 API 的代码建议进行以下调整:
-
-1. 使用 `IndexSpecs.single(name, keyType)` 和 `IndexSpecs.multi(name, keyType)` 声明索引,替代 `IndexAttributeFactory.simpleAttribute()`、`IndexAttributeFactory.multiValueAttribute()` 和直接创建 `new IndexSpec()` 的旧写法。
-2. 索引值类型不再局限于字符串,可以使用 `String`、`Boolean`、`Integer`、`Long`、`Instant` 等实现 `Comparable` 的类型。
-3. 使用 `Queries` 创建 `FieldSelector` 查询条件,替代已过时的 `QueryFactory`。
-4. `ReactiveExtensionClient` 和 `ExtensionClient` 新增了 `listAllNames`、`listTopNames`、`listNamesBy` 和 `countBy` 等查询方法,直接使用 `indexedQueryEngine()` 的方式已过时。
-
-详细文档可查阅:[自定义模型使用索引](./api-reference/server/extension.md#using-indexes) 和 [ExtensionClient 查询](./api-reference/server/extension-client.md#query)。
-
-### `@halo-dev/console-shared` 改名
-
-从 Halo 2.11 支持个人中心以后,插件的 UI 项目能同时扩展 Console 和 UC,所以为了避免歧义,我们在 Halo 2.22 中将 UI 的 `@halo-dev/console-shared` 依赖更名为 `@halo-dev/ui-shared`,虽然在 Halo 中兼容了旧版依赖,但仍然推荐使用新版依赖,迁移方案:
-
-```bash
-pnpm uninstall @halo-dev/console-shared
-pnpm install @halo-dev/ui-shared
-```
-
-然后在插件项目全局搜索 `@halo-dev/console-shared` 并替换为 `@halo-dev/ui-shared` 即可,同时需要将 `plugin.yaml` 的 `spec.requires` 字段修改为 `>=2.22.0`。
-
-### `@halo-dev/ui-shared` 工具库
-
-在 2.22.0 中,Halo 在 `@halo-dev/ui-shared` 包中提供一些常用工具,用于减少部分业务的开发工作量,目前提供:
-
-1. `stores`
- 1. `currentUser`:用于获取当前用户信息
- 2. `globalInfo`:用于获取网站一些公开的信息,比如外部访问地址
-2. utils
- 1. `date`:时间日期格式化工具
- 2. `permission`:用户权限检查工具
- 3. `id`:uuid 生成工具
- 4. `attachment`:附件相关工具,比如获取附件缩略图地址
-3. events
- 1. `core:plugin:configMap:updated`:用于监听插件配置变更
-
-详细文档可查阅:[共享工具库](./api-reference/ui/shared.md)
-
-### UI 扩展点 > 附件选择选项卡类型更新
-
-在 2.22.0 中,我们为 `AttachmentLike` 复合类型添加了 `mediaType` 字段,用于区分文件类型,方便在插入到文章时显示正确的媒体类型,如不填写,所选择的文件将作为链接插入到编辑器,所以实现了此扩展点的插件都需要进行改动,具体步骤:
-
-1. 升级依赖
-
- ```bash
- pnpm install @halo-dev/ui-shared@2.22.0
- ```
-
-2. 提升 [plugin.yaml#spec.requires](./basics/manifest.md#字段详解) 版本为 `>=2.22.0`。
-3. 按照[最新文档](./extension-points/ui/attachment-selector-create.md)修改插件代码
-
-### 表单定义 > 新增 Iconify 图标选择器
-
-在 2.22.0 中,我们为 FormKit 表单提供了通用的图标选择器,基于 [Iconify](https://icon-sets.iconify.design/),详细文档可查阅:[表单定义#Iconify](../../developer-guide/form-schema.md#iconify)
-
-### 表单定义 > 新增 `array` 组件
-
-在 2.22.0 中,我们为 FormKit 表单新增了 `array` 组件,用于定义一组数据,并计划使用 `array` 组件替换原有的 `repeater` 组件。详细文档可查阅:[表单定义#array](../../developer-guide/form-schema.md#array)
-
-### 编辑器 > BubbleMenu 扩展点改动
-
-在 Halo 2.22.0 中,我们升级了编辑器的 Tiptap 版本至 3.x,由于 Tiptap 在 3.x 中做了一些破坏性更新且 Halo 也遵循其更新,因此如果插件扩展了编辑器,并使用了 BubbleMenu 扩展点,则需要根据以下方式进行更新升级。
-
-1. 使用 `options` 代替 `tippyOptions`。
-
-```diff
-- tippyOptions: {
-- fixed: false,
-- },
-+ options: {
-+ strategy:"absolute",
-+ },
-```
-
-2. 使用 `getReferencedVirtualElement` 代替 `getRenderContainer`。
-
-```diff
-- getRenderContainer: (node: HTMLElement) => {
-- let container = node;
-- if (container.nodeName === "#text") {
-- container = node.parentElement as HTMLElement;
-- }
-- while (
-- container &&
-- container.classList &&
-- !container.classList.contains("column")
-- ) {
-- container = container.parentElement as HTMLElement;
-- }
-- return container;
-- },
-+ getReferencedVirtualElement() {
-+ const editor = this.editor;
-+ if (!editor) {
-+ return null;
-+ }
-+ const parentNode = findParentNode(
-+ (node) => node.type.name === Column.name
-+ )(editor.state.selection);
-+ if (parentNode) {
-+ const domRect = posToDOMRect(
-+ editor.view,
-+ parentNode.pos,
-+ parentNode.pos + parentNode.node.nodeSize
-+ );
-+ return {
-+ getBoundingClientRect: () => domRect,
-+ getClientRects: () => [domRect],
-+ };
-+ }
-+ return null;
-+ },
-```
-
-3. 移除 `defaultAnimation`。
-
-```diff
-- defaultAnimation: false,
-```
-
-此外,扩展其他 Node 中 `BubbleMenu` 的旧方式将会失效,例如 [编辑器超链接卡片](https://github.com/halo-sigs/plugin-editor-hyperlink-card/blob/main/ui/src/editor/text-bubble-extension.ts) 扩展了 Text Node 的 `BubbleMenu`。 此版本中引入了 `extendsKey` 字段,用于扩展已有的 `BubbleMenu`。**需要已有的 `BubbleMenu` 设置了 PluginKey**。
-用法如下:
-
-```ts
-Extension.create({
- name: "expandTextBubbleMenu",
- addOptions() {
- return {
- getBubbleMenu() {
- return {
- // 目标 BubbleMenu 的 PluginKey。当前版本会导出 Halo UI Editor 中的所有 PluginKey。
- extendsKey: TEXT_BUBBLE_MENU_KEY,
- items: [
- {
- priority: 10,
- // 具有同一个 key 的 items 将会被覆盖
- key: "textItem1",
- props: { title: "ExpandText" },
- },
- ],
- };
- },
- };
- },
- }),
-```
-
-有关 `BubbleMenu` 扩展的详细文档可查阅:[悬浮菜单扩展](./extension-points/ui/default-editor-extension-create.md#4-悬浮菜单扩展)
-
-### 编辑器 > 新增 getDraggableMenuItems 扩展点
-
-在 Halo 2.22.0 中,我们为编辑器增加了拖拽菜单的功能,同时支持插件动态扩展拖拽菜单。与此同时,旧的 `getDraggable` 扩展点被移除,取而代之的是 `getDraggableMenuItems` 扩展点。
-
-可直接移除 `getDraggable` 扩展点,不再使用,也无需考虑兼容性问题。
-
-关于 `getDraggableMenuItems` 扩展点的详细文档可查阅:[拖拽菜单扩展](./extension-points/ui/default-editor-extension-create.md#5-拖拽菜单扩展)
-
-### 表单定义 > 重构 `attachment` 表单类型
-
-在 Halo 2.22 中,我们重构了原有的 attachment 表单类型,支持了预览和直接上传文件,并将旧版的表单类型更名为了 [attachmentInput](../form-schema.md#attachmentinput)
diff --git a/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/extension-client.md b/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/extension-client.md
deleted file mode 100644
index bc50b131..00000000
--- a/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/extension-client.md
+++ /dev/null
@@ -1,234 +0,0 @@
----
-title: 与自定义模型交互
-description: 了解如何通过代码的方式操作数据
----
-
-Halo 提供了两个类用于与自定义模型对象交互 `ExtensionClient` 和 `ReactiveExtensionClient`。
-
-它们提供了对自定义模型对象的增删改查操作,`ExtensionClient` 是阻塞式的用于后台任务如控制器中操作数据,而 `ReactiveExtensionClient` 返回值都是 Mono 或 Flux 是反应式非阻塞的,它们由 [reactor](https://projectreactor.io/) 提供。
-
-```java
-public interface ReactiveExtensionClient {
-
- // 已经过时,建议使用 listBy 或 listAll 代替
- Flux list(Class type, Predicate predicate,
- Comparator comparator);
-
- // 已经过时,建议使用 listBy 或 listAll 代替
- Mono> list(Class type, Predicate predicate,
- Comparator comparator, int page, int size);
-
- Flux listAll(Class type, ListOptions options, Sort sort);
-
- Mono> listBy(Class type, ListOptions options,
- PageRequest pageable);
-
- /**
- * Fetches Extension by its type and name.
- *
- * @param type is Extension type.
- * @param name is Extension name.
- * @param is Extension type.
- * @return an optional Extension.
- */
- Mono fetch(Class type, String name);
-
- Mono fetch(GroupVersionKind gvk, String name);
-
- Mono get(Class type, String name);
-
- /**
- * Creates an Extension.
- *
- * @param extension is fresh Extension to be created. Please make sure the Extension name does
- * not exist.
- * @param is Extension type.
- */
- Mono create(E extension);
-
- /**
- * Updates an Extension.
- *
- * @param extension is an Extension to be updated. Please make sure the resource version is
- * latest.
- * @param is Extension type.
- */
- Mono update(E extension);
-
- /**
- * Deletes an Extension.
- *
- * @param extension is an Extension to be deleted. Please make sure the resource version is
- * latest.
- * @param is Extension type.
- */
- Mono delete(E extension);
-}
-```
-
-### 示例
-
-如果你想在插件中根据 name 参数查询获取到 Person 自定义模型的数据,则可以这样写:
-
-```java
-@Service
-@RequiredArgsConstructor
-public PersonService {
- private final ReactiveExtensionClient client;
-
- Mono getPerson(String name) {
- return client.fetch(Person.class, name);
- }
-}
-```
-
-或者使用阻塞式 Client
-
-```java
-@Service
-@RequiredArgsConstructor
-public PersonService {
- private final ExtensionClient client;
-
- Optional getPerson(String name) {
- return client.fetch(Person.class, name);
- }
-}
-```
-
-注意:非阻塞线程中不能调用阻塞式方法。
-
-我们建议你更多的使用响应式的 `ReactiveExtensionClient` 去替代 `ExtensionClient`。
-
-### 查询 {#query}
-
-`ReactiveExtensionClient` 提供了以下方法用于查询数据:
-
-- `listBy`:分页查询数据。
-- `listNamesBy`:分页查询对象名称。
-- `listAll`:查询所有数据。
-- `listAllNames`:查询所有对象名称。
-- `listTopNames`:查询指定数量的对象名称。
-- `countBy`:统计符合条件的数据数量。
-
-这些方法都需要一个 `ListOptions` 参数,用于传递查询条件:
-
-```java
-public class ListOptions {
- private LabelSelector labelSelector;
- private FieldSelector fieldSelector;
-}
-```
-
-其中 `LabelSelector` 用于传递标签查询条件,`FieldSelector` 用于传递字段查询条件。
-
-`FieldSelector` 支持比自动生成的 APIs 中更多的查询条件,可以通过 `run.halo.app.extension.index.query.Queries` 来构建。
-
-```java
-import static run.halo.app.extension.index.query.Queries.and;
-import static run.halo.app.extension.index.query.Queries.equal;
-
-ListOptions.builder()
- .fieldQuery(and(
- equal("name", "test"),
- equal("age", 18)
- ))
- .build();
-```
-
-支持的查询条件如下:
-
-| 方法 | 说明 | 示例 |
-| --- | --- | --- |
-| `equal` | 等于 | `equal("name", "test")` |
-| `notEqual` | 不等于 | `notEqual("name", "test")` |
-| `greaterThan` | 大于,可通过第三个参数控制是否包含边界 | `greaterThan("age", 18)`、`greaterThan("age", 18, true)` |
-| `lessThan` | 小于,可通过第三个参数控制是否包含边界 | `lessThan("age", 18)`、`lessThan("age", 18, true)` |
-| `between` | 在范围内,可分别控制上下边界是否包含 | `between("age", 18, true, 20, false)` |
-| `in` | 在给定值范围内 | `in("age", 18, 19, 20)` |
-| `isNull` | 值为空 | `isNull("deletedAt")` |
-| `all` | 指定字段的所有值 | `all("age")` |
-| `startsWith` | 以指定字符串开头 | `startsWith("name", "test")` |
-| `endsWith` | 以指定字符串结尾 | `endsWith("name", "test")` |
-| `contains` | 包含指定字符串 | `contains("name", "test")` |
-| `and` | 且 | `and(equal("name", "test"), equal("age", 18))` |
-| `or` | 或 | `or(equal("name", "test"), equal("age", 18))` |
-| `not` | 取反 | `not(equal("name", "test"))` |
-| `labelExists` | 标签存在 | `labelExists("halo.run/hidden")` |
-| `labelEqual` | 标签等于 | `labelEqual("env", "production")` |
-| `labelIn` | 标签值在给定范围内 | `labelIn("env", Set.of("production", "staging"))` |
-
-在 `FieldSelector` 中使用的所有字段都必须添加为索引,否则会抛出异常表示不支持该字段。关于如何使用索引请参考 [自定义模型使用索引](./extension.md#using-indexes)。
-
-:::note
-
-从 2.22.0 开始,`QueryFactory` 已过时,请使用 `Queries` 创建查询条件。取反查询可以通过 `Queries.not(condition)` 或 `condition.not()` 构建。
-
-:::
-
-可以通过 `and` 和 `or` 方法组合和嵌套查询条件:
-
-```java
-import run.halo.app.extension.index.query.Condition;
-import static run.halo.app.extension.index.query.Queries.and;
-import static run.halo.app.extension.index.query.Queries.equal;
-import static run.halo.app.extension.index.query.Queries.or;
-
-Condition query = and(
- or(equal("dept", "A"), equal("dept", "B")),
- or(equal("age", 19), equal("age", 18))
-);
-ListOptions.builder()
- .fieldQuery(query)
- .build();
-```
-
-### 构建 ListOptions
-
-ListOptions 提供了 `builder` 方法用于构建查询条件,`fieldQuery` 方法用于传递字段查询条件,`labelSelector` 方法用于传递标签查询条件。
-
-```java
-import static run.halo.app.extension.index.query.Queries.equal;
-
-ListOptions.builder()
- .labelSelector()
- .eq("key-1", "value-1")
- .end()
- .fieldQuery(equal("key-2", "value-2"))
- .build();
-```
-
-- `labelSelector` 之后使用 `end` 方法结束标签查询条件的构建。
-- `andQuery` 和 `orQuery` 用于组合多个 `FieldSelector` 查询条件。
-
-### 排序
-
-`listBy`、`listNamesBy`、`listAll`、`listAllNames` 和 `listTopNames` 方法都支持传递 `Sort` 参数,用于传递排序条件。
-
-```java
-import org.springframework.data.domain.Sort;
-
-Sort.by(Sort.Order.asc("metadata.name"))
-```
-
-通过 `Sort.by` 方法可以构建排序条件,`Sort.Order` 用于指定排序字段和排序方式,`asc` 表示升序,`desc` 表示降序。
-
-排序中使用的字段必须是添加为索引的字段,否则会抛出异常表示不支持该字段。关于如何使用索引请参考 [自定义模型使用索引](./extension.md#using-indexes)。
-
-### 分页
-
-`listBy` 方法支持传递 `PageRequest` 参数,用于传递分页条件。
-
-```java
-import run.halo.app.extension.PageRequestImpl;
-
-PageRequestImpl.of(1, 10);
-
-PageRequestImpl.of(1, 10, Sort.by(Sort.Order.asc("metadata.name"));
-
-PageRequestImpl.ofSize(10);
-```
-
-通过 `PageRequestImpl.of` 方法可以构建分页条件,具有两个参数的方法用于指定页码和每页数量,具有三个参数的方法用于指定页码、每页数量和排序条件。
-
-`ofSize` 方法用于指定每页数量,页码默认为 1。
diff --git a/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/extension-getter.md b/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/extension-getter.md
deleted file mode 100644
index 80f0e348..00000000
--- a/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/extension-getter.md
+++ /dev/null
@@ -1,72 +0,0 @@
----
-title: 获取扩展
-description: 了解如何在插件中使用 `ExtensionGetter` 获取扩展
----
-
-`ExtensionGetter` 用于获取和管理 Halo 或其他插件提供的扩展。它提供了多种方法来根据扩展点获取扩展,确保插件能够灵活地集成和使用各种扩展功能。
-
-`ExtensionGetter` 接口的定义如下:
-
-```java
-public interface ExtensionGetter {
-
- /**
- * Get only one enabled extension from system configuration.
- *
- * @param extensionPoint is extension point class.
- * @return implementation of the corresponding extension point. If no configuration is found,
- * we will use the default implementation from application context instead.
- */
- Mono getEnabledExtension(Class extensionPoint);
-
- /**
- * Get the extension(s) according to the {@link ExtensionPointDefinition} queried
- * by incoming extension point class.
- *
- * @param extensionPoint extension point class
- * @return implementations of the corresponding extension point.
- * @throws IllegalArgumentException if the incoming extension point class does not have
- * the {@link ExtensionPointDefinition}.
- */
- Flux getEnabledExtensions(Class extensionPoint);
-
- /**
- * Get all extensions according to extension point class.
- *
- * @param extensionPointClass extension point class
- * @param type of extension point
- * @return a bunch of extension points.
- */
- Flux getExtensions(Class extensionPointClass);
-}
-```
-
-包含以下方法:
-
-1. `getEnabledExtension(Class extensionPoint)`: 获取一个在扩展设置中已启用的扩展。如果没有找到对应配置,将使用 Halo 中的默认扩展,如果 Halo 没有提供默认实现则找到一个由**已启用插件**提供的可用扩展。
-2. `getEnabledExtensions(Class extensionPoint)`: 根据传入的扩展点类获取所有已启用扩展。如果没有在扩展设置页面配置过则会返回所有可用的扩展。
-3. `getExtensions(Class extensionPointClass)`: 获取所有与扩展点类相关的扩展,无论是否在扩展设置中启用它。
-
-:::tip
-使用 `getEnabledExtension` 方法或者 `getEnabledExtensions` 方法取决于扩展点声明的 `type` 是 `SINGLETON` 还是 `MULTI_INSTANCE`。
-
-通过使用 `ExtensionGetter`,开发者可以轻松地在插件中访问和管理各种扩展点,提升插件的功能和灵活性。
-
-如果想了解 Halo 提供的扩展点请参考:[扩展点](../../extension-points/server/index.md)。
-:::
-
-### 示例
-
-如果你想在插件中获取已启用的搜索引擎扩展,可以使用 `ExtensionGetter` 来获取:
-
-```java
-@Service
-@RequiredArgsConstructor
-public class SearchService {
- private final ExtensionGetter extensionGetter;
-
- Mono getSearchEngine() {
- return extensionGetter.getEnabledExtension(SearchEngine.class)
- }
-}
-```
diff --git a/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/extension.md b/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/extension.md
deleted file mode 100644
index 5e14d759..00000000
--- a/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/extension.md
+++ /dev/null
@@ -1,707 +0,0 @@
----
-title: 自定义模型
-description: 了解什么是自定义模型及如何创建
----
-
-## 概述
-
-Halo 自定义模型是参考自 [Kubernetes CRD](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/) 的一种灵活可扩展的数据存储和使用方式,旨在为插件开发者提供自定义数据支持。
-自定义模型遵循 [OpenAPI v3](https://spec.openapis.org/oas/v3.1.0),便于开发者在插件中存储、读取和操作自定义数据。
-详情请参考 [自定义模型设计](https://github.com/halo-dev/rfcs/tree/main/extension)。
-
-### 示例 {#person-extension-example}
-
-以下是一个典型的自定义模型代码示例:
-
-```java
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import run.halo.app.extension.AbstractExtension;
-import run.halo.app.extension.GVK;
-import run.halo.app.extension.GroupKind;
-
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@GVK(group = "my-plugin.halo.run",
- version = "v1alpha1",
- kind = "Person",
- plural = "persons",
- singular = "person")
-public class Person extends AbstractExtension {
-
- @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
- private Spec spec;
-
- @Data
- @Schema(name = "PersonSpec")
- public static class Spec {
- @Schema(description = "The description on name field", maxLength = 100)
- private String name;
-
- @Schema(description = "The description on age field", maximum = "150", minimum = "0")
- private Integer age;
-
- @Schema(description = "The description on gender field")
- private Gender gender;
-
- private Person otherPerson;
- }
-
- public enum Gender {
- MALE, FEMALE,
- }
-}
-```
-
-## 创建自定义模型步骤 {#create-extension}
-
-创建一个自定义模型需要以下三个步骤:
-
-1. **继承 `AbstractExtension` 类**:创建一个类继承 `run.halo.app.extension.AbstractExtension`。
-2. **使用 `GVK` 注解**:通过 `GVK` 注解定义自定义模型的基本信息,包括 group、version、kind 等。
-3. **注册自定义模型**:在插件的 `start()` 生命周期方法中注册自定义模型。
-
-```java
-@Autowired
-private SchemeManager schemeManager;
-
-@Override
-public void start() {
- schemeManager.register(Person.class);
-}
-```
-
-### `GVK` 注解详解
-
-- **group**:表示自定义模型所属的组,通常采用域名形式,建议使用你的组织或公司拥有的子域名。例如 `widget.mycompany.com`。
-- **version**:API 的版本,通常用于与 group 组合形成 `apiVersion`,例如`api.halo.run/v1alpha1`。
-- **kind**:标识自定义模型的类型,即资源的 REST 表示形式。
-- **plural**/**singular**:自定义资源的复数和单数名称,用于在 API 路径中标识资源类型。
- - singular: 必须全部小写,通常是将 `kind` 的值转换为小写作为 `singular` 的值。
- - plural:自定义资源在 `/apis///.../` 下提供,必须为全部小写,通常是将 `kind` 的值转换为小写并转为复数形式作为 `plural` 的值。
-
-### 自定义模型定义结构
-
-一个自定义模型通常包含以下几部分:
-
-- `apiVersion`:标识 API 版本,由 `GVK` 注解的 `group` 和 `version` 组合而成。
-- `kind`:标识自定义模型类型。
-- `metadata`:[Metadata](#metadata) 类型,用于存储模型的元数据,如名称、创建时间。
-- `spec`:声明自定义模型对象的期望状态。它是声明式的,用户只需要声明期望状态,实际状态由具体的控制器来维护,最终达到用户期望的状态。
-- `status`:描述自定义模型对象资源的实际状态。
-
-`apiVersion`、`kind` 和 `metadata` 已包含在 `AbstractExtension` 类中,开发者只需关注 `spec` 和 `status` 即可。
-
-#### Metadata
-
-自定义模型的 Metadata 包含以下属性:
-
-- `name`: 用于标识自定义模型的名称。
-- `creationTimestamp`: 用于标识自定义模型的创建时间,无法修改,只在创建时自动生成。
-- `version`: 用于标识自定义模型的数据乐观锁版本,无法修改,由更新时自动填充,如果更新时指定了 `version` 且与当前 `version` 不一致则会更新失败。
-- `deletionTimestamp`: 用于标识自定义模型的删除时间,表示此自定义模型对象被声明为删除,此时仍然可以通过 API 访问到此对象,参考 [自定义模型对象生命周期](../../../core/framework.md#extension-lifecycle)
-- `finalizers`: 用于标识终结器,它是一个字符串集合,用于标识自定义模型对象是否可回收,参考 [自定义模型对象生命周期](../../../core/framework.md#extension-lifecycle)
-- `labels`: 用于标识自定义模型的标签,它是一个字符串键值对集合,用于标识自定义模型对象的标签,可以通过标签来查询自定义模型对象。
-- `annotations`: 用于存放扩展信息,它是一个字符串键值对集合,用于存放自定义模型对象的扩展信息。
-
-## 声明自定义模型对象 {#declare-extension-object}
-
-在创建了自定义模型之后,可以通过在插件项目的 `src/main/resources/extensions` 目录下编写 `yaml` 文件来声明自定义模型对象。示例如下:
-
-```yaml
-apiVersion: my-plugin.halo.run/v1alpha1
-kind: Person
-metadata:
- name: fake-person
-spec:
- name: halo
- age: 18
- gender: male
-```
-
-该目录下所有的 `yaml` 文件中声明的自定义模型对象都会**在插件启动后被创建/更新**,文件名是任意的,只需根据 `kind` 和 `apiVersion` 确定类型。
-基于这个特性,开发者可以将一些**初始化资源**的声明放在这个目录下,以便在插件启动时自动创建。但需要注意的是,如果资源如配置等能被用户修改,则不应该放在这个目录下,因为这些资源会在插件启动时被强制覆盖。
-
-## 校验自定义模型对象 {#validate-extension-object}
-
-Halo 使用 [OpenAPI v3](https://spec.openapis.org/oas/v3.1.0) 标准来定义自定义模型。
-OpenAPI 规范定义了自定义模型的数据结构、字段属性及其校验规则,然后将其转换为 JSON Schema,注册到 Halo 的 SchemeManager 中。
-
-使用 `@Schema` 注解可以为自定义模型的字段添加校验规则,`@Schema` 是 OpenAPI 提供的一个注解,通过这个注解,我们可以在生成的 OpenAPI 文档中展示字段的详细信息(如名称、描述、类型、是否必填等),同时也可以对字段进行一定的校验,比如限制字段的最大长度、最小值、格式等。
-
-### 基本用法
-
-`@Schema` 注解中有许多可用的属性,用来对字段进行更加细致的校验和文档说明。下面是一些常用的属性:
-
-- description:字段的描述信息,用于在文档中展示。
-- example:字段的示例值。
-- requiredMode:是否必填字段。
-- minLength:字符串字段的最小长度。
-- maxLength:字符串字段的最大长度。
-- minimum:数值字段的最小值。
-- maximum:数值字段的最大值。
-- format:字段的格式,常用于指定日期、时间、邮箱等特殊格式。
-
-例如,如果我们有一个电子邮件字段,并且想要校验它的格式,可以这样定义:
-
-```java
-@Schema(description = "用户电子邮箱", example = "user@example.com", format = "email")
-private String email;
-```
-
-当用户向 API 提交一个自定义模型对象时,Halo 会根据自定义模型中定义的 OpenAPI `@Schema` 注解对对象进行以下几个步骤的校验:
-
-1. **基本结构校验**:验证对象的字段结构是否符合定义的 OpenAPI 模式,例如字段类型是否正确、是否存在必填字段等。
-2. **字段约束校验**:针对特定字段的约束条件(如最小值、最大长度、正则表达式等)进行校验,确保字段值符合条件。
-3. **成功或失败**:如果校验通过,Halo 接受并存储该对象;如果校验失败,会返回详细的错误信息,说明哪些字段不符合要求
-
-参考示例 [Person](#person-extension-example)。
-
-## 使用索引 {#using-indexes}
-
-为了让插件可以方便的定义自定义模型定义,而不需要考虑操作数据库表的细节且可以切换存储介质如可以使用 `MySQL`,`PostgreSQL`,`H2` 等数据库来来作为存储介质,数据存储使用 `byte[]` 的形式,这使得无法利用数据库的原生索引来提高查询效率。
-
-Halo 提供了一套索引机制,开发者可以通过注册自定义模型时声明索引来提高查询效率。
-
-示例:
-
-```java
-import java.time.Instant;
-import java.util.HashSet;
-import java.util.Set;
-import run.halo.app.extension.index.IndexSpecs;
-
-@Override
-public void start() {
- schemeManager.register(Moment.class, indexSpecs -> {
- // multi 用于声明一个返回多个值的索引
- indexSpecs.add(IndexSpecs.multi("spec.tags", String.class)
- .indexFunc(moment -> {
- var tags = moment.getSpec().getTags();
- return tags == null ? Set.of() : tags;
- }));
-
- // single 用于声明一个返回单个值的索引,可以返回 null
- indexSpecs.add(IndexSpecs.single("spec.owner", String.class)
- .indexFunc(moment -> moment.getSpec().getOwner()));
-
- // 索引值不再局限于字符串,也可以使用 Boolean、Integer、Instant 等可比较类型
- indexSpecs.add(IndexSpecs.single("spec.pinned", Boolean.class)
- .indexFunc(moment -> moment.getSpec().getPinned()));
- indexSpecs.add(IndexSpecs.single("spec.priority", Integer.class)
- .indexFunc(moment -> moment.getSpec().getPriority()));
- indexSpecs.add(IndexSpecs.single("spec.publishTime", Instant.class)
- .indexFunc(moment -> moment.getSpec().getPublishTime()));
- });
-}
-```
-
-`IndexSpec` 用于声明索引项,推荐通过 `IndexSpecs.single(name, keyType)` 或 `IndexSpecs.multi(name, keyType)` 构建。它包含以下属性:
-
-- name:索引名称,在同一个自定义模型的索引中必须唯一,一般建议使用字段路径作为索引名称,例如 `spec.slug`。
-- order:对索引值的排序方式,支持 `ASC` 和 `DESC`,默认为 `ASC`。
-- unique:是否唯一索引,如果为 `true` 则索引值必须唯一,如果创建自定义模型对象时检测到此索引字段有重复值则会创建失败。
-- keyType:索引值类型,必须实现 `Comparable`,例如 `String`、`Boolean`、`Integer`、`Long`、`Instant` 等。
-- indexFunc:索引函数,用于获取索引值,接收当前自定义模型对象。单值索引返回一个 `keyType` 类型的值,可以返回 `null`;多值索引返回 `Set`。
-
-:::note
-
-从 2.22.0 开始,`IndexAttributeFactory.simpleAttribute()`、`IndexAttributeFactory.multiValueAttribute()` 和直接创建 `new IndexSpec()` 的写法已过时,请优先使用 `IndexSpecs.single()` 和 `IndexSpecs.multi()`。
-
-:::
-
-当注册自定义模型时声明了索引,Halo 会在插件启动时构建索引,在构建索引期间插件处于未启动状态。
-
-Halo 默认会为每个自定义模型建立以下几个索引,因此不需要为下列字段再次声明索引:
-
-- `metadata.name` 创建唯一索引
-- `metadata.labels`
-- `metadata.creationTimestamp`
-- `metadata.deletionTimestamp`
-
-创建了索引的字段可以在查询时使用 `fieldSelector` 参数来查询,参考 [自定义模型 API](#extension-apis)。
-
-:::tip
-
-- 索引是一种存储数据结构,可提供对数据集中字段的高效查找。
-- 索引将自定义模型中的字段映射到数据库行,以便在查询特定字段时不需要完整的扫描。
-- 查询数据之前,必须对需要查询的字段创建索引。
-- 索引可以包含一个或多个字段的值,可以包含唯一值或重复值。索引中的值按照索引中的顺序进行排序。
-- 索引可以提高查询性能,但会占用额外的存储空间,因为它们需要存储索引字段的副本。索引的大小取决于字段的数据类型和索引的类型,因此,创建索引时应该考虑存储成本和性能收益。
- :::
-
-## 命名规范
-
-### `metadata.name` {#naming-spec-for-metadata-name}
-
-`metadata.name` 是自定义模型对象的唯一标识名,需遵循以下规则:
-
-- 不超过 253 个字符。
-- 只能包含小写字母、数字和 `-`,且以字母或数字开头和结尾。
-
-### `labels` {#naming-spec-for-labels}
-
-`labels` 是一个字符串键值对集合,用于标识模型的标签,格式为 `/`。例如,`halo.run/post-slug`。遵循以下规则:
-
-- 前缀是可选的,通常是反向的域名表示形式,用于避免键名冲突。
-- 名称必须是合法的 DNS 标签,最多 63 个字符,且以字母数字字符开头和结尾。
-
-建议保持标签的命名简洁易懂,在整个项目中保持一致性,不包含敏感信息。
-
-**需要注意的是**,`metadata.labels` 被用于通过标签查询自定义模型对象。**它会被自动创建索引**,因此使用时需谨慎,避免索引过多导致性能问题,对于不需要索引的额外字段,可以使用 `metadata.annotations`。
-
-#### labels 命名规范
-
-前缀规则:
-
-- 如果 label 用于特定于一个组织的资源,建议使用一个前缀,如 `plugin.halo.run/plugin-name`。
-- 前缀必须是一个有效的 DNS 子域名(参考 metadata.name),且最多可包含 253 个字符。
-- 保留了不带前缀的 label 键以及特定前缀(如 halo.run),因此插件不可使用。
-
-名称规则:
-
-- 名称必须是合法的 DNS 标签,最多可包含 63 个字符。
-- 必须以字母数字字符开头和结尾。
-- 可以包含 `-`、`.`、`_` 和`字母数字`字符。
-
-通用规范:
-
-- 避免使用容易引起混淆或误解的键名。
-- 尽量保持简洁明了,易于理解。
-- 使用易于记忆和识别的单词或缩写。
-
-一致性和清晰性:
-
-- 在整个项目或组织中保持一致的命名约定。
-- labels 应直观地反映其代表的信息或用途。
-- 不要在 labels 中包含敏感信息,例如用户凭据或个人识别信息。
-
-### `annotations` {#naming-spec-for-annotations}
-
-`annotations` 是一个字符串键值对集合,用于存放扩展信息,命名规则与 `labels` 相同。
-
-可以使用 `metadata.annotations` 存放一些额外的信息,如 JSON 数据、配置信息等。
-
-## 自定义模型 API {#extension-apis}
-
-定义并注册自定义模型后,Halo 会根据 `GVK` 注解自动生成一组 `CRUD` APIs。
-
-生成 APIs 的规则为:`/apis////{extensionname}/`
-
-例如,`Person` 自定义模型将有以下 APIs:
-
-- `GET /apis/my-plugin.halo.run/v1alpha1/persons`:列出所有对象。
-- `GET /apis/my-plugin.halo.run/v1alpha1/persons/{name}`:根据名称查询对象。
-- `POST /apis/my-plugin.halo.run/v1alpha1/persons`:创建对象。
-- `PUT /apis/my-plugin.halo.run/v1alpha1/persons/{name}`:更新对象。
-- `DELETE /apis/my-plugin.halo.run/v1alpha1/persons/{name}`:删除对象。
-
-其中,**列出所有对象**的 API 支持以下参数:
-
-- **page**:页码,从 1 开始。
-- **size**:每页的数据量。
-- **sort**:排序字段,格式为 `字段名,排序方式`,例如 `name,desc`,可传递多个排序字段,排序使用的字段必须是注册为索引的字段。
-- **labelSelector**:标签选择器,用于筛选特定标签的对象。详见 [标签选择器参数规则](#label-selector-query-params)。
-- **fieldSelector**:字段选择器,用于筛选注册为索引的字段。详见 [字段选择器参数规则](#field-selector-query-params)。
-
-示例:
-
-```shell
-GET /apis/my-plugin.halo.run/v1alpha1/persons?page=1&size=10&sort=name,desc&labelSelector=name=halo&fieldSelector=spec.slug=halo
-```
-
-表示查询 `metadata.labels` 中 `name` 的值等于 `halo` 且 `spec.slug` 的值等于 `halo` 的自定义模型对象,并按照 `name` 字段降序排序,查询第 1 页,每页 10 条数据。
-
-### 自定义模型 API 业务逻辑
-
-自动生成的 `CRUD` APIs 不仅只是简单的数据操作,你可以通过定义[控制器](../../../core/framework.md#controller) 来实现对数据的业务逻辑处理。
-
-自定义模型控制器是专门为自定义模型设计的,它允许用户通过自定义逻辑来响应自定义模型对象的变化,执行自动化操作,从而扩展这组自动生成 APIs 的功能。
-
-自定义模型控制器通常会:
-
-- 监控自定义模型的变化:当某个自定义模型的对象被创建、更新或删除时,控制器会被触发,读取该对象的状态信息。
-- 执行特定的业务逻辑:根据自定义模型的状态和需求,控制器可以执行某些动作,如创建或删除其他资源,或调用外部系统进行处理。
-- 维护资源的期望状态:控制器的目标是确保自定义模型的状态符合期望状态,维护资源的稳定性。
-
-参考 [自定义模型控制器](../../../core/framework.md#controller) 文档。
-
-### 选择器参数规则
-
-#### 标签选择器 {#label-selector-query-params}
-
-`labelSelector`:标签选择器,用于筛选特定标签的对象,支持以下操作符:
-
-- `=` 表示等于,例如 `labelSelector=name=halo` 表示查询 `metadata.labels` 中 `name` 的值等于 `halo` 的自定义模型对象。
-- `!=` 表示不等于,例如 `labelSelector=name!=halo` 表示查询 `metadata.labels` 中 `name` 的值不等于 `halo` 的自定义模型对象。
-- `!` 表示不存在 key,例如 `labelSelector=!name` 表示查询 `metadata.labels` 不存在 `name` 这个 key 的自定义模型对象。
-- `存在检查` 表示查询存在 key 的对象,例如 `labelSelector=name` 表示查询 `metadata.labels` 存在 `name` 这个 key 的自定义模型对象。
-
-#### 字段选择器 {#field-selector-query-params}
-
-`fieldSelector`:字段选择器,格式与 `labelSelector` 类似,但需要确保对应的字段是注册为索引的字段。
-
-例如 `fieldSelector=spec.name=slug` 表示查询 `spec.slug` 的值等于 `halo` 的自定义模型对象。
-
-支持的操作符有 `=`、`!=` 和 `in`:
-
-- `=` 表示等于,例如 `fieldSelector=spec.slug=halo` 表示查询 `spec.slug` 的值等于 `halo` 的自定义模型对象。
-- `!=` 表示不等于,例如 `fieldSelector=spec.slug!=halo` 表示查询 `spec.slug` 的值不等于 `halo` 的自定义模型对象。
-- `in` 表示在集合中,例如 `fieldSelector=spec.slug=(halo,halo2)` 表示查询 `spec.slug` 的值为 `halo` 或 `halo2` 的自定义模型对象。
-
-## 自定义 API
-
-对于自动生成的 `CRUD` APIs 不能满足的场景,开发者可以通过定义自定义 API 来扩展功能。
-
-推荐使用 [Spring Webflux](https://docs.spring.io/spring-framework/reference/web/webflux-functional.html) 的 `Functional Endpoints` 来编写轻量级自定义 APIs:
-
-```java
-RouterFunction route = route()
- .GET("/persons/{name}", accept(APPLICATION_JSON), this::getPerson)
- .POST("/persons", this::createPerson)
- .build();
-```
-
-- **HandlerFunction**:用于处理请求,接收 `ServerRequest` 并返回 `ServerResponse`。
-- **RouterFunction**:将请求路由到相应的处理函数。
-
-这样开发者可以灵活定义符合业务需求的 APIs,方便地扩展插件的功能。
-
-自定义 APIs 与自动生成的 APIs 一样,都应该遵循以下规范:
-
-`/apis////{extensionname}/`
-
-路径不超过 7 段,如果超过则应当以参数的形式传递或改进路径设计,否则无法适应角色模板的规则,参考 [角色模板](../../security/role-template.md#resource-rules)。
-
-### 自定义 API 的 Group 规则 {#custom-api-group-spec}
-
-为了确保插件定义的自定义 APIs 不与`其他插件的 APIs / 自动生成的 APIs` 冲突,Halo 约定通过不同的 group 来区分,遵循以下规则:
-
-- 在 Console 端使用的自定义 API 的 group 规则遵循 `console.api.`。
-- 在个人中心使用的自定义 API 的 group 规则遵循 `uc.api.`,例如 `uc.api.my-plugin.halo.run`。
-- 为主题端提供的公开的自定义 API 的 group 规则建议为 `api.`,例如 `api.my-plugin.halo.run`。
-
-其中 `` 为自定义模型的 `GVK` 注解中的 `group`。
-
-例如,`Person` 自定义模型需要提供一个在 Console 使用的自定义 API,可以定义如下:
-
-```java
-// my-plugin.halo.run 为 Person 自定义模型的 group
-// console.api. 为 Console 端自定义 API 的 group 前缀
-RouterFunction route = route()
- .GET("/apis/console.api.my-plugin.halo.run/v1alpha1/persons/{name}",
- accept(APPLICATION_JSON), this::getPerson)
- .build();
-```
-
-### CustomEndpoint 接口
-
-根据 [自定义 API 的 Group 规则](#custom-api-group-spec) 约定,开发者需要在自定义 API 的路径中包含 `console.api.`,这样会导致 API 路径变得冗长。
-
-为了简化 API 路径写法,Halo 提供了 `run.halo.app.core.extension.endpoint.CustomEndpoint` 接口,开发者可以通过实现该接口来定义自定义 APIs:
-
-```java
-import static org.springframework.http.MediaType.APPLICATION_JSON;
-
-import org.springframework.stereotype.Component;
-import org.springframework.web.reactive.function.server.RequestPredicates;
-import org.springframework.web.reactive.function.server.RouterFunction;
-import org.springframework.web.reactive.function.server.RouterFunctions;
-import org.springframework.web.reactive.function.server.ServerRequest;
-import org.springframework.web.reactive.function.server.ServerResponse;
-import reactor.core.publisher.Mono;
-import run.halo.app.core.extension.endpoint.CustomEndpoint;
-import run.halo.app.extension.GroupVersion;
-
-@Component
-public class PersonEndpoint implements CustomEndpoint {
-
- @Override
- public RouterFunction endpoint() {
- return RouterFunctions.route()
- .GET("/persons/{name}",
- RequestPredicates.accept(APPLICATION_JSON), this::getPerson)
- // more routes
- .build();
- }
-
- private Mono getPerson(ServerRequest request) {
- return ServerResponse.ok().bodyValue("Hello, " + request.pathVariable("name"));
- }
-
- @Override
- public GroupVersion groupVersion() {
- return new GroupVersion("console.api.my-plugin.halo.run", "v1alpha1");
- }
-}
-```
-
-CustomEndpoint 接口包含以下两个方法:
-
-- `endpoint()`:定义自定义 API 的路由。
-- `groupVersion()`:定义自定义 API 的 group 和 version。
-
-实现了 `CustomEndpoint` 接口的类需要添加 `@Component` 注解,Halo 会自动扫描并注册这些自定义 APIs。
-注册时会根据 `groupVersion()` 方法返回的 group 和 version 作为 `endpoint()` 中定义路由的前缀以简化路径写法。
-
-本章节相关技术栈参考文档:
-
-- [Reactor 3 Reference Guide](https://projectreactor.io/docs/core/release/reference/)
-- [Webflux](https://docs.spring.io/spring-framework/reference/web/webflux.html)。
-
-### 带注解的 MVC 控制器写法
-
-如果开发者习惯使用 Spring MVC 的注解风格,也可以使用 `@Controller`、`@RequestMapping` 等注解来定义自定义 APIs:
-
-唯一的区别是是需要在 MVC 控制器添加 `@ApiVersion` 注解,**没有此注解的 MVC 控制器类无法被注册路由**。
-
-示例:
-
-```java
-@ApiVersion("my-plugin.halo.run/v1alpha1")
-@RequestMapping("/persons")
-@RestController
-@RequiredArgsConstructor
-public class PersonController {
- private final PersonService personService;
-
- @GetMapping("/{name}")
- public Mono getPerson(@PathVariable("name") String name) {
- return personService.getPerson(name);
- }
-}
-```
-
-这个写法定义的路由与 `CustomEndpoint` 接口的写法是等价的,`@ApiVersion` 等价于 `CustomEndpoint` 接口的 `groupVersion()` 方法。
-
-参考 [Spring Framework Web](https://docs.spring.io/spring-framework/reference/web/webflux/new-framework.html)
-
-### 自定义 API 查询参数定义
-
-以 Person 自定义模型为例,列表查询 API 的查询参数可能包括关键词、排序、分页等,可以通过定义一个 DTO 类来封装查询参数:
-
-```java
-@Data
-public class PersonQuery {
- private String keyword;
- private Integer page;
- private Integer size;
- private String sort;
-}
-```
-
-但排序、分页、标签查询和字段查询等参数通常是通用的,因此 Halo 提供了 `run.halo.app.extension.router.SortableRequest` 类来封装这些参数,开发者可以直接继承该类来定义额外查询参数:
-
-```java
-import static run.halo.app.extension.index.query.Queries.contains;
-import static run.halo.app.extension.index.query.Queries.equal;
-import static run.halo.app.extension.index.query.Queries.or;
-
-public class PersonQuery extends SortableRequest {
-
- public PersonQuery(ServerWebExchange exchange) {
- super(exchange);
- }
-
- @Override
- public ListOptions toListOptions() {
- return super.toListOptions();
- }
-
- @Override
- public PageRequest toPageRequest() {
- return super.toPageRequest();
- }
-}
-```
-
-- toListOptions():将查询参数转换为 `ReactiveExtensionClient` 的 list 查询所需参数。
-- toPageRequest():将查询参数转换为 `ReactiveExtensionClient` 的 list 查询所需 page 参数,此方法通常不需要覆盖。
-
-当需要添加额外的查询参数时,只需在 `PersonQuery` 类中添加对应的字段即可。
-
-```java
-public class PersonQuery extends SortableRequest {
-
- public PersonQuery(ServerWebExchange exchange) {
- super(exchange);
- }
-
- public String getKeyword() {
- return queryParams.getFirst("keyword");
- }
-
- @Override
- public ListOptions toListOptions() {
- return ListOptions.builder(super.toListOptions())
- .fieldQuery(or(
- equal("metadata.name", getKeyword()),
- contains("spec.name", getKeyword())
- ))
- .build();
- }
-}
-```
-
-然后使用它:
-
-```java
-final ReactiveExtensionClient client;
-
-public Mono> list(ServerRequest request) {
- var query = new PersonQuery(request.exchange());
- return client.listBy(Person.class, query.toListOptions(), query.toPageRequest());
-}
-```
-
-参考 [ReactiveExtensionClient](./extension-client.md#query)。
-
-### 使用 Java Bean Validation {#using-java-bean-validation}
-
-对于自定义 API 的请求体,开发者可以使用 [Java Bean Validation](https://beanvalidation.org/) 来校验请求体参数,可以减少手动校验的代码量。
-
-Bean Validation 为应用程序提供了一种通过约束声明和元数据的通用验证方式。
-要使用它,你可以在域模型属性上使用声明性验证约束进行注解,然后在运行时强制执行这些约束。它包含内置的约束,你还可以定义自己的自定义约束。
-
-以下示例,展示了一个包含两个属性的简单 PersonParam 模型:
-
-```java
-public class PersonParam {
- private String name;
- private int age;
-}
-```
-
-Bean Validation 允许您像以下示例所示那样声明约束:
-
-```java
-public class PersonParam {
-
- @NotNull
- @Size(max=64)
- private String name;
-
- @Min(0)
- private int age;
-}
-```
-
-要启用 Bean Validation,需要在插件项目中添加一个配置类,如下所示:
-
-```java
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
-
-@Configuration
-public class PluginConfig {
-
- @Bean
- public LocalValidatorFactoryBean validator() {
- return new LocalValidatorFactoryBean();
- }
-}
-```
-
-然后注入 `Validator` 实例:
-
-```java
-@Component
-@RequiredArgsConstructor
-public class PersonEndpoint implements CustomEndpoint {
- // step 1: 注入 Validator 实例
- private final Validator validator;
-
- // 省略其他代码
-
- private Mono updatePerson(ServerRequest request) {
- return request.bodyToMono(PersonParam.class)
- // step 3: 调用 validate 方法
- .doOnNext(person -> validate(person, request.exchange()))
- .flatMap(person -> ServerResponse.ok().bodyValue(person));
- }
-
- // step 2: 校验请求体参数
- private void validate(PersonParam person, ServerWebExchange exchange) {
- var bindResult = validate(person, "person", validator, exchange);
- if (bindResult.hasErrors()) {
- throw new RequestBodyValidationException(bindResult);
- }
- }
-}
-
-// 将此工具方法添加到你的插件中
-public static BindingResult validate(Object target, String objectName,
- Validator validator, ServerWebExchange exchange) {
- BindingResult bindingResult = new BeanPropertyBindingResult(target, objectName);
- try {
- // 由于 Halo 可以在登录时设置用户语言环境
- // 设置当前请求的 Locale 使得校验错误信息的语言可以根据请求的 Locale 返回
- LocaleContextHolder.setLocaleContext(exchange.getLocaleContext());
- validator.validate(target, bindingResult);
- return bindingResult;
- } finally {
- LocaleContextHolder.resetLocaleContext();
- }
-}
-```
-
-参考文档:
-
-- [RequestBodyValidationException](https://github.com/halo-dev/halo/blob/25086ee3e63f0c8b6ed380140a068c44404ef2b2/application/src/main/java/run/halo/app/infra/exception/RequestBodyValidationException.java)
-- [Bean Validation](https://beanvalidation.org/)
-- [Spring Validation](https://docs.spring.io/spring-framework/reference/core/validation/beanvalidation.html)
-
-## API 文档
-
-Halo 会自动生成 OpenAPI 文档,包括自动生成的 `CRUD` APIs 和自定义 APIs。
-
-API 文档可以通过访问 `/swagger-ui.html` 查看,例如:`http://localhost:8090/swagger-ui.html`。
-
-API 文档会根据 [自定义 API 的 Group 规则](#custom-api-group-spec)被划分到不同的分组,方便开发者和生成 API Client:
-
-- `Aggregated API V1alpha1`:所有 APIs 都会被聚合到这个分组中。
-- `Extension API V1alpha1`:自动生成的所有 `CRUD` API。
-- `Console API V1alpha1`:Console 端使用的自定义 API。
-- `User-center API V1alpha1`:个人中心使用的自定义 API。
-- `Public API V1alpha1`:提供给主题端使用的自定义 API。
-
-参考 [Swagger Config](http://localhost:8090/v3/api-docs/swagger-config)
-
-为了能让自定义 API 能够被 Swagger 文档展示,开发者定义 Functional Endpoints 时需要 SpringDoc 包装过的 `SpringdocRouteBuilder` 来代替 `RouterFunctions`。
-
-```java
-public class PersonEndpoint implements CustomEndpoint {
-
- @Override
- public RouterFunction endpoint() {
- final var tag = "PersonV1alpha1Console";
- return SpringdocRouteBuilder.route()
- .GET("/persons", this::getPersons,
- builder -> builder.operationId("ListPersons")
- .description("List all persons")
- .tag(tag)
- .response(responseBuilder()
- .implementation(ListResult.generateGenericClass(Person.class))
- )
- )
- .build();
- }
-}
-```
-
-其中 builder 用于设置 API 文档的元数据:
-
-- operationId:操作 ID,建议首字母大写,驼峰命名,生成 API Client 时将以此为方法名的一部分。
-- tag:标签,用于分组 API,建议使用 `{自定义模型Kind}{自定义模型Version}{作用域}` 的格式,例如 `PersonV1alpha1Console`,Console 表示其在 Console 端使用。
-
-关于生成 API Client 文档参考 [Devtools 生成 API Client](../../basics/devtools.md#how-to-generate-api-client)
-
-由于 SpringDoc 缺少对 `SpringdocRouteBuilder` 的文档介绍,开发者可参考示例来使用。
-
-- [PostEndpoint](https://github.com/halo-dev/halo/blob/25086ee3e63f0c8b6ed380140a068c44404ef2b2/application/src/main/java/run/halo/app/core/endpoint/console/PostEndpoint.java)
-- [AttachmentEndpoint](https://github.com/halo-dev/halo/blob/25086ee3e63f0c8b6ed380140a068c44404ef2b2/application/src/main/java/run/halo/app/core/attachment/endpoint/AttachmentEndpoint.java#L48)
-- [UserConnectionEndpoint](https://github.com/halo-dev/halo/blob/25086ee3e63f0c8b6ed380140a068c44404ef2b2/application/src/main/java/run/halo/app/core/endpoint/uc/UserConnectionEndpoint.java#L55)
-- [构建查询参数](https://github.com/halo-dev/halo/blob/25086ee3e63f0c8b6ed380140a068c44404ef2b2/application/src/main/java/run/halo/app/content/PostQuery.java#L97)
diff --git a/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/finder-for-theme.md b/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/finder-for-theme.md
deleted file mode 100644
index 60fb81f4..00000000
--- a/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/finder-for-theme.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: 为主题提供数据
-description: 了解如何为主题提供更多获取和使用数据的方法。
----
-
-当你在插件中创建了自己的自定义模型时,你可能需要在主题模板中使用这些数据。或者,你提供一些额外的数据,以便主题可以使用它们,你可以通过创建一个自定义的 `finder` 来实现这一点。
-
-## 创建一个 Finder
-
-首先,你需要创建一个 `interface`,并在其中定义你需要提供给主题获取数据的方法,方法的返回值可以是 `Mono` 或 `Flux` 类型,例如:
-
-```java
-public interface LinkFinder {
- Mono get(String linkName);
-
- Flux listAll();
-}
-```
-
-然后写一个实现类,实现这个 `interface`,并在类上添加 `@Finder` 注解,例如:
-
-```java
-import run.halo.app.theme.finders.Finder;
-
-@Finder("myPluginLinkFinder")
-public class LinkFinderImpl implements LinkFinder {
- @Override
- public Mono get(String linkName) {
- // ...
- }
-
- @Override
- public Flux listAll() {
- // ...
- }
-}
-```
-
-`@Finder` 注解的值是你在主题中使用的名称,例如,你可以在主题中使用 `myPluginLinkFinder.get('a-link-name')` 来获取数据,`myPluginLinkFinder` 就是你在 `@Finder` 注解中定义的名称。
-
-## Finder 命名
-
-为了避免与其他插件的 `finder` 名称冲突,建议在 `@Finder` 注解中添加一个你插件名称的前缀作为 `finder` 名称且名称需要是驼峰式的,不能包含除了 `_` 之外的其他特殊字符。
-
-例如,你的插件名称是 `my_plugin`,你需要为主题提供一个获取链接的 `finder`,那么你可以这样定义 `@Finder` 注解:
-
-```java
-@Finder("myPluginLinkFinder")
-```
-
-## 使用 Finder
-
-在主题中,你可以通过 `finder` 名称和方法名及对应的参数来获取数据,例如:
-
-```html
-
-
-```
-
-模板语法参考:[Thymeleaf](https://www.thymeleaf.org/doc/tutorials/3.1/usingthymeleaf.html#standard-expression-syntax)。
diff --git a/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/login-handler-enhancer.md b/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/login-handler-enhancer.md
deleted file mode 100644
index c06fe5e8..00000000
--- a/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/login-handler-enhancer.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: 登录增强
-description: 了解如何在登录时如何允许 Halo 做登录逻辑的增强切入。
----
-
-## 背景
-
-在 Halo 中,插件可以实现多种登录方式,例如 LDAP、第三方登录等。然而,灵活的登录方式也带来了以下问题:
-
-1. 登录逻辑难以统一:例如登录成功后需要进行额外处理,这需要插件自行实现。
-2. Halo 或其他插件无法知晓登录状态:无法记录登录日志等额外处理。
-3. 新增安全特性适配:Halo 增加了新安全特性,插件需要适配才能使用,如在记住我机制中需要在登录成功后设置 remember-me cookie。
-
-为了解决这些问题,Halo 提供了登录增强机制,插件可以在登录成功或失败时调用登录增强器,使 Halo 可以执行额外的处理逻辑。随着 Halo 的版本更新,这些逻辑也会更新,而插件无需做任何修改。
-
-### 登录增强器
-
-Halo 提供了一个 LoginHandlerEnhancer 的 Bean,插件可以通过依赖注入的方式在合适的位置调用该 Bean 的方法,以便 Halo 可以在登录成功或失败后执行逻辑切入。
-
-```java
-public interface LoginHandlerEnhancer {
-
- /**
- * Invoked when login success.
- *
- * @param exchange The exchange.
- * @param successfulAuthentication The successful authentication.
- */
- Mono onLoginSuccess(ServerWebExchange exchange, Authentication successfulAuthentication);
-
- /**
- * Invoked when login fails.
- *
- * @param exchange The exchange.
- * @param exception the reason authentication failed
- */
- Mono onLoginFailure(ServerWebExchange exchange, AuthenticationException exception);
-}
-```
-
-例如在用户密码登录的处理器中,可以这样调用登录增强器:
-
-```java
-public class UsernamePasswordHandler implements ServerAuthenticationSuccessHandler,
- ServerAuthenticationFailureHandler {
- @Override
- public Mono onAuthenticationFailure(WebFilterExchange webFilterExchange,
- AuthenticationException exception) {
- var exchange = webFilterExchange.getExchange();
- return loginHandlerEnhancer.onLoginFailure(exchange, exception)
- .then(handleFailure(exchange, exception));
- }
-
- @Override
- public Mono onAuthenticationSuccess(WebFilterExchange webFilterExchange,
- Authentication authentication) {
- return loginHandlerEnhancer.onLoginSuccess(webFilterExchange.getExchange(), authentication)
- .then(handleSuccess(webFilterExchange.getExchange(), authentication);
- }
-}
-```
-
-设备管理、记住我等机制都依赖于登录增强器。插件开发者可以通过在合适的时机调用登录增强器来实现这些功能,确保插件与 Halo 的安全特性无缝集成。
diff --git a/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/notification.md b/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/notification.md
deleted file mode 100644
index a401de08..00000000
--- a/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/notification.md
+++ /dev/null
@@ -1,475 +0,0 @@
----
-title: 发送和订阅通知
-description: 了解如何在插件中发送和订阅通知。
----
-
-Halo 的通知功能提供了事件驱动的消息提醒机制,让用户能够及时获取系统内的关键事件。
-开发者可以根据需求定义事件类型和通知方式(如站内消息、邮件等),并支持个性化的推送策略,提升用户体验和系统可扩展性。
-
-通知系统通过事件机制将关键消息推送给用户。开发者可以自定义通知类型、消息格式和推送方式,主要应用于以下场景:
-
-- 用户互动:如文章评论、点赞等;
-- 订单和流程提醒:如订单创建、处理完成等;
-- 内容更新:如文章发布、系统公告等。
-
-## 通知系统工作流程
-
-下图展示了 Halo 通知功能的工作流程,包括事件声明、订阅查找、通知发送等关键步骤。
-
-```mermaid
- graph TD
- A[开发者声明 ReasonType] --> B[业务代码创建 Reason]
- B --> C[查找匹配的 Subscription]
- C --> D{用户订阅了事件吗?}
- D -- 是 --> E[获取用户通知偏好]
- E --> F[查找通知模板]
- F --> G[查找对应的 Notifier]
- G --> H[发送通知]
- D -- 否 --> I[结束,无需通知]
- H --> J[用户接收通知]
- J --> K[用户查看/处理通知]
- Z[用户订阅事件] --> D
-```
-
-1. 声明事件类型:开发者首先需要声明通知事件的类型 (ReasonType),指定事件的名称、描述和事件所需的属性。
-2. 插件触发事件:当插件中的某个业务操作发生时,插件需要触发相应的事件。
-3. 创建 Reason 实例:Halo 根据发送的事件创建一个 Reason 实例,表示具体的事件信息,步骤 2 和 3 可以合并为`业务代码创建 Reason`。
-4. 订阅查找:Halo 通知中心会根据事件的类型和属性查找匹配的订阅。
-5. 通知发送:如果找到匹配的订阅,系统根据用户的偏好设置通过不同的通知器(如站内消息、邮件等)发送通知。
-6. 用户接收和处理通知:用户通过预设的通知渠道接收事件通知,并可以在系统中查看或处理这些通知。
-
-## 通知事件
-
-在 Halo 通知系统中,`ReasonType` 和 `Reason` 是两个核心自定义模型,用于定义通知事件的类别和具体的事件实例。
-理解它们的字段对于开发者扩展通知功能至关重要。
-
-下面将详细说明这两个模型的字段及其作用。
-
-### ReasonType 模型
-
-`ReasonType` 是用于定义通知事件类别的模型。每个 `ReasonType` 都代表一类特定的事件,例如文章评论、新文章发布等。通过 `ReasonType`,系统可以了解该事件的特定属性和数据结构。
-用户个人中心的通知设置页面会根据 `ReasonType` 的名称和描述展示事件类型和通知方式。
-
-#### ReasonType 字段说明
-
-| 字段名 | 类型 | 是否必填 | 说明 |
-| ------------------ | -------- | -------- | --------------------------------------------------- |
-| `apiVersion` | `string` | 是 | API 版本号,定义为 `notification.halo.run/v1alpha1` |
-| `kind` | `string` | 是 | 自定义资源类型,必须为 `ReasonType` |
-| `metadata.name` | `string` | 是 | 事件类别的唯一标识名称,例如 `comment` |
-| `spec.displayName` | `string` | 是 | 事件类别的展示名称,用户界面中显示的事件名称 |
-| `spec.description` | `string` | 否 | 事件类别的描述,说明此事件的用途和含义 |
-| `spec.properties` | `array` | 是 | 此事件包含的属性字段,用于定义该类事件应携带的数据 |
-
-#### spec.properties 字段
-
-`properties` 字段用于定义该通知事件需要传递的参数或属性。每个属性都是一个对象,通常包含以下字段:
-
-| 字段名 | 类型 | 是否必填 | 说明 |
-| ------------- | --------- | -------- | -------------------------------------------------------- |
-| `name` | `string` | 是 | 属性的名称,表示事件数据中的某个字段 |
-| `type` | `string` | 是 | 属性的数据类型,例如 `string`、`boolean` 等,仅用于描述 |
-| `description` | `string` | 否 | 对该属性的描述,说明其在事件中的作用 |
-| `optional` | `boolean` | 否 | 该属性是否为可选字段,默认值为 `false`,`false` 表示必填 |
-
-`properties.type` 字段仅用于文档性目的,不会在运行时进行数据类型检查。有了此描述,便于编写通知模板时使用正确的数据类型。
-
-**示例:** 声明评论事件的 ReasonType
-
-```yaml
-apiVersion: notification.halo.run/v1alpha1
-kind: ReasonType
-metadata:
- name: comment
-spec:
- displayName: "评论事件"
- description: "用户在文章上收到评论时触发。"
- properties:
- - name: postName
- type: string
- description: "文章的名称。"
- - name: commenter
- type: string
- description: "评论者用户名。"
- - name: content
- type: string
- description: "评论内容。"
-```
-
-在这个示例中,`ReasonType` 定义了一个评论事件,该事件包括三种属性:`postName`(文章名)、`commenter`(评论者)和 `content`(评论内容),这些属性在触发事件时将传递给通知系统。
-
-这一类型的资源声明非常适合放在插件的 `resources` 目录下,以便插件安装时自动创建。参考 [声明自定义模型对象](./extension.md#declare-extension-object)
-
-### Reason 模型
-
-`Reason` 模型用于描述具体的事件实例,它是 `ReasonType` 的一个实例化,包含触发该事件时的具体数据。
-`Reason` 通常在某个事件发生时创建,例如某篇文章收到评论时生成一个 `Reason`,记录具体的评论信息。
-
-#### Reason 字段说明
-
-| 字段名 | 类型 | 是否必填 | 说明 |
-| ----------------- | -------- | -------- | -------------------------------------------------------------- |
-| `apiVersion` | `string` | 是 | API 版本号,定义为 `notification.halo.run/v1alpha1` |
-| `kind` | `string` | 是 | 自定义资源类型,必须为 `Reason` |
-| `metadata.name` | `string` | 是 | 该事件实例的唯一标识名称,通常自动生成 |
-| `spec.reasonType` | `string` | 是 | 引用的 `ReasonType` 名称,表示该事件实例属于哪个事件类型 |
-| `spec.author` | `string` | 是 | 事件的触发者或创建者,通常为用户或系统的标识符 |
-| `spec.subject` | `object` | 是 | 事件的主题,指向该事件所涉及的具体对象(如文章、评论等) |
-| `spec.attributes` | `object` | 是 | 包含事件具体数据的键值对,内容与 `ReasonType` 中定义的属性一致 |
-
-#### spec.subject 字段
-
-`subject` 字段描述了与该事件相关的主体对象,例如,评论事件中的文章对象。`subject` 通常包含以下字段:
-
-| 字段名 | 类型 | 是否必填 | 说明 |
-| ------------ | -------- | -------- | ------------------------------------------------------- |
-| `apiVersion` | `string` | 是 | 主题对象的 API 版本号,例如 `content.halo.run/v1alpha1` |
-| `kind` | `string` | 是 | 主题对象的类型,例如 `Post` 表示文章 |
-| `name` | `string` | 是 | 主题对象的唯一标识,通常是对象的名称或 ID |
-| `title` | `string` | 是 | 主题对象的标题,通常是人类可读的名称 |
-| `url` | `string` | 否 | 主题对象的访问链接或详情页面的 URL |
-
-参考 [Reason 自定义模型](https://github.com/halo-dev/halo/blob/0d1a0992231fd5e66a65b4e9d426d3f373b1903f/api/src/main/java/run/halo/app/core/extension/notification/Reason.java)
-
-#### spec.attributes 字段
-
-`attributes` 字段用于存储该事件实例的具体数据。每个键值对表示一个 `ReasonType` 中定义的属性和其对应的值。
-
-**示例:** 创建评论事件的 Reason
-
-```yaml
-apiVersion: notification.halo.run/v1alpha1
-kind: Reason
-metadata:
- name: comment-123
-spec:
- reasonType: comment
- author: "访客"
- subject:
- apiVersion: 'content.halo.run/v1alpha1'
- kind: Post
- name: 'post-456'
- title: 'Halo 系统介绍'
- url: 'https://example.com/archives/456'
- attributes:
- postName: "Halo 系统介绍"
- commenter: "访客"
- content: "这是一篇非常有帮助的文章!"
-```
-
-在这个示例中,`Reason` 表示具体的评论事件。
-它关联了 `comment` 这一 `ReasonType`,并提供了详细的事件信息,包括文章(subject)的标识信息以及评论的内容(attributes)。
-
-通过 ReasonType 和 Reason,开发者可以定义和管理各种事件,并在事件发生时触发相应的通知逻辑。
-
-## 通知模板
-
-在 Halo 系统中,通知模板用于定义每种通知类型的展示格式和内容结构。每当触发某个通知事件时,系统会根据事件的类型选择相应的通知模板,并将事件的属性嵌入到模板中生成最终的通知内容。如果未定义通知模板,则系统无法确定通知的具体格式和内容,这可能导致通知发送失败。因此,定义通知模板是实现通知功能的关键步骤。
-
-### 通知模板的基本结构
-
-通知模板是通过 `NotificationTemplate` 自定义模型定义的。
-每个模板指定了与某个事件类型 (ReasonType) 关联的内容格式,包括通知的标题、正文内容等。
-模板内容可以使用属性占位符,以便在通知生成时自动填充事件属性。Halo 支持使用 [Thymeleaf](https://www.thymeleaf.org/) 模板引擎进行内容渲染。
-
-#### 通知模板字段说明
-
-| 字段名 | 类型 | 是否必填 | 说明 |
-| -------------------------------- | -------- | -------- | --------------------------------------------------- |
-| `apiVersion` | `string` | 是 | API 版本号,定义为 `notification.halo.run/v1alpha1` |
-| `kind` | `string` | 是 | 自定义资源类型,必须为 `NotificationTemplate` |
-| `metadata.name` | `string` | 是 | 模板的唯一标识名称 |
-| `spec.reasonSelector.reasonType` | `string` | 是 | 关联的事件类型 (`ReasonType`) 名称 |
-| `spec.reasonSelector.language` | `string` | 是 | 模板语言,固定写为 `default` |
-| `spec.template.title` | `string` | 是 | 通知的标题模板,支持占位符 |
-| `spec.template.rawBody` | `string` | 是 | 通知的正文模板,应当是纯文本,支持占位符 |
-| `spec.template.htmlBody` | `string` | 是 | 通知的正文模板,格式为 HTML 的模板,支持占位符 |
-
-#### 定义通知模板
-
-定义通知模板时,开发者需要指定模板的 `reasonSelector`,用于与事件类型关联,并在 `template` 中定义通知标题和内容的格式。
-
-`spec.reasonSelector.language` 字段用于指定模板的语言,设计支持多语言,但目前 Halo 没有提供保存用户语言偏好的入口,因此只能使用 `default`。
-
-模板内容支持纯文本和 HTML 格式,建议开发者两种内容都提供,以适应不同的通知渠道。比如邮件通知需要 HTML 格式,而短信通知则仅支持纯文本。
-
-**示例:** 定义评论事件的通知模板
-
-假设我们需要为“新评论”事件定义一个通知模板,该模板包括事件的标题和正文内容:
-
-```yaml
-apiVersion: notification.halo.run/v1alpha1
-kind: NotificationTemplate
-metadata:
- name: template-new-comment-on-post
-spec:
- reasonSelector:
- reasonType: new-comment-on-post
- language: default
- template:
- title: "你的文章 [(${subject.title})] 收到了一条新评论"
- rawBody: |
- 评论者 [(${author.name})] 评论了您的文章 [(${subject.title})],内容如下:
- [(${props.comment})]
- htmlBody: |
- 评论者 [(${author.name})] 评论了您的文章 [(${subject.title})],内容如下:
- [(${props.comment})]
-```
-
-参考 [Halo 默认通知模板 YAML](https://github.com/halo-dev/halo/blob/0d1a0992231fd5e66a65b4e9d426d3f373b1903f/application/src/main/resources/extensions/notification-templates.yaml)
-
-#### 通知模板设计小技巧与最佳实践
-
-##### 合理使用占位符
-
-在通知模板中,使用占位符来动态插入事件数据是提高模板灵活性的关键。占位符的设计应遵循以下规则:
-
-- 使用清晰的命名:占位符应具有明确的含义,例如 `[(${quoteReplyName})]` 表示引用回复的名称,让代码更具可读性,建议使用 `CamelCase` 命名规范,不要使用嵌套对象作为变量如 `subject.title`。
-- 避免嵌套复杂表达式:为了避免通知生成的内容过于复杂,建议在模板中尽量使用简单的占位符。复杂逻辑应在事件触发时处理,尽量保持模板的简洁。
-- 确保属性完整性:占位符应与 ReasonType 中定义的属性一致,避免由于属性缺失导致的通知发送错误。
-
-##### 提供多种格式的内容
-
-在 Halo 中,不同的通知渠道可能支持不同格式的内容,建议模板中同时提供纯文本和 HTML 格式,以便适应各类通知渠道需求。
-
-- 纯文本格式:适合即时通讯类应用消息和短信通知,尽量简洁明了,关注重点信息。
-- HTML 格式:适合富文本展示渠道,如邮件通知。HTML 模板可使用简单的样式和链接,帮助用户更好地理解通知内容。
-- 适配不同渠道的内容:对于可能发送到多渠道的通知,可以在不同格式中包含适合该渠道的具体内容,如 HTML 中使用 `` 标签提供链接,而纯文本只展示简洁的链接地址。
-- 如果在模板中需要用到日期,建议提前将其格式化为带时区的日期字符串,避免在模板中使用复杂的日期格式化。
-
-##### 模板语法
-
-Halo 使用 Thymeleaf 模板引擎来渲染通知模板,开发者可以在模板中使用 Thymeleaf 的语法来处理模板中的逻辑和数据。
-
-- 对于纯文本如标题和 `rawBody`,使用 Thymeleaf 的 [Textual syntax](https://www.thymeleaf.org/doc/tutorials/3.1/usingthymeleaf.html#textual-syntax) 语法来引用变量和表达式。
-其取值格式为:`[(${expression})]`,例如 `[(${title})]`。
-- 对于 HTML 内容如 `htmlBody`,使用 Thymeleaf 的 [Standard syntax](https://www.thymeleaf.org/doc/tutorials/3.1/usingthymeleaf.html#standard-syntax) 语法。
-其取值格式为:`${expression}`,例如 `${title}`。
-
-#### 模板渲染与发送
-
-在通知事件触发时,Halo 通知中心会查找与该事件 `ReasonType` 匹配的 `NotificationTemplate`,并将事件数据填充到模板中生成最终通知内容。
-没有定义模板的事件将无法发送通知,因此为每个 `ReasonType` 定义模板是保证通知发送成功的前提。
-
-可以有多个相同的 `reasonSelector` 绑定到同一个事件类型,比如 `reasonType=new-comment-on-post`且 `language=default` 的模板存在多个,Halo 会**选择最近创建的模板**。
-根据这个特点,**插件或主题开发者可以提供自己的通知模板以覆盖默认的通知模板**。
-
-在生成通知内容时,系统还会提供一些额外的全局属性(如 `site.title` 等),这些属性可以在模板中直接使用:
-
-| 字段名 | 类型 | 说明 |
-| ------------------------ | -------- | ---------------------------- |
-| `site.title` | `string` | 站点标题 |
-| `site.subtitle` | `string` | 站点副标题 |
-| `site.logo` | `string` | 站点 Logo URL |
-| `site.url` | `string` | 站点外部访问地址 |
-| `subscriber.displayName` | `string` | 订阅者显示名称 |
-| `subscriber.id` | `string` | 订阅者唯一标识符 |
-| `unsubscribeUrl` | `string` | 退订地址,用于取消订阅的链接 |
-
-## 触发通知事件
-
-在 Halo 系统中,通知功能的核心是通过触发特定的事件,生成相应的 Reason 实例,然后通过系统的通知机制将该事件通知给订阅者。
-Halo 提供了 `NotificationReasonEmitter` 接口,开发者可以通过它轻松触发通知事件,将业务逻辑与通知机制结合起来。
-
-### 工作机制
-
-`NotificationReasonEmitter` 的作用是简化事件触发和通知的处理流程,它的主要职责是:
-
-- 接收业务事件的参数,生成 `Reason` 实例。
-- 将 `Reason` 实例与 `ReasonType` 进行匹配,触发事件。
-- 通过 Halo 的通知系统,将事件推送给订阅了该事件的用户。
-
-定义参考 [NotificationReasonEmitter](../../basics/server/object-management.md#notificationreasonemitter)
-
-- `reasonType`:事件类型的名称,对应于 `ReasonType` 的 `metadata.name` 字段。
-- `reasonData`:事件数据的构建器,用于构建 `Reason` 实例的属性。
-
-Reason 数据的构建器有以下属性:
-
-```java
-public class ReasonPayloadBuilder {
- private Reason.Subject subject;
- private UserIdentity author;
- private Map attributes;
-}
-```
-
-- `subject`:事件的主体对象,参考 `Reason` 中的 `spec.subject` 字段。
-- `author`:事件的触发者,通常是用户或系统的标识符,这是一个 `UserIdentity` 对象,如果作者是匿名的则需要传递邮箱地址来构造,比如评论者可能没有关联具体用户而仅仅是邮箱地址。
-- `attributes`:事件的具体数据,包含了 `ReasonType` 中定义的属性和对应的值,如果必填字段没有传递则会抛出异常。
-
-使用场景举例:
-
-- 当用户在博客上发表文章时,触发“新文章发布”事件,通知订阅了该事件的用户。
-- 当用户在文章上发表评论时,触发“评论回复”事件,通知文章作者或订阅了评论的用户。
-- 当管理员处理插件订单时,触发“订单创建”事件,通知管理员新订单的详情。
-
-### 示例 {#reason-emitter-example}
-
-假设我们需要在用户发布的文章时有新评论时,向订阅了“文章有新评论”事件的用户发送通知。可以通过 `NotificationReasonEmitter` 实现如下逻辑。
-
-第一步:在你的插件代码中注入 `NotificationReasonEmitter`。
-
-```java
-import run.halo.app.notification.NotificationReasonEmitter;
-
-@Service
-@RequiredArgsConstructor
-public class CommentEventListener {
-
- private final NotificationReasonEmitter notificationReasonEmitter;
-}
-```
-
-第二步:有新评论被创建时触发
-
-```java
-import run.halo.app.core.extension.content.Comment;
-import run.halo.app.core.extension.content.Post;
-
-@Async
-@EventListener(CommentCreatedEvent.class)
-public void onNewComment(CommentCreatedEvent event) {
- Comment comment = event.getComment();
- Ref subjectRef = comment.getSpec().getSubjectRef();
- Post post = client.fetch(Post.class, subjectRef.getName()).orElseThrow();
- // 评论的主体是文章,因此构建文章的主体对象
- var reasonSubject = Reason.Subject.builder()
- .apiVersion(post.getApiVersion())
- .kind(post.getKind())
- .name(subjectRef.getName())
- .title(post.getSpec().getTitle())
- .url(postUrl)
- .build();
- // new-comment-on-post 用于表示 ReasonType 的 metadata.name
- notificationReasonEmitter.emit("new-comment-on-post",
- builder -> {
- // 定义了一个类型用于保存评论事件的数据,避免 map 的 key 写错
- var attributes = CommentOnPostReasonData.builder()
- .postName(subjectRef.getName())
- .postOwner(post.getSpec().getOwner())
- .postTitle(post.getSpec().getTitle())
- .postUrl(postUrl)
- .commenter(owner.getDisplayName())
- .content(comment.getSpec().getContent())
- .commentName(comment.getMetadata().getName())
- .build();
- // 将 CommentOnPostReasonData 转换为事件所需的 Map 类型数据
- builder.attributes(toAttributeMap(attributes))
- .author(identityFrom(owner))
- .subject(reasonSubject);
- }).block();
-}
-
-public static Map toAttributeMap(T data) {
- Assert.notNull(data, "Reason attributes must not be null");
- return JsonUtils.mapper().convertValue(data, new TypeReference<>() {
- });
-}
-```
-
-参考 [Halo 评论事件触发](https://github.com/halo-dev/halo/blob/0d1a0992231fd5e66a65b4e9d426d3f373b1903f/application/src/main/java/run/halo/app/content/comment/CommentNotificationReasonPublisher.java#L89)
-
-## 订阅通知
-
-在 Halo 系统中,用户可以通过订阅通知来接收感兴趣的事件,并且可以使用表达式对事件进行过滤,确保只接收到符合条件的通知。
-通过这种方式,用户可以精确订阅某些事件,并避免被无关的事件打扰。
-订阅机制支持根据事件属性、主体对象和事件发起人来过滤事件,并使用 SpEL(Spring Expression Language)编写过滤表达式。
-
-### 订阅通知的工作机制
-
-通知订阅机制允许用户订阅各种类型的事件(如文章发布、评论回复等),并且支持通过表达式过滤事件。
-
-订阅系统可以通过以下三种根对象来筛选感兴趣的事件:
-
-- props:事件属性的根对象,表示事件携带的具体数据。例如,在评论回复事件中,属性可以是 `{repliedOwner: 'guqing'}`,可以通过 `props.repliedOwner` 来访问 `repliedOwner` 属性。
-- subject:事件的主体对象,表示事件所关联的核心对象,字段同 `Reason` 中的 `spec.subject` 字段。例如,在“新评论”事件中,subject 是评论所属的文章。
-- author:事件的发起人,表示触发事件的用户标识符,字符串类型。例如,在评论事件中,发起人是评论者。
-
-通过这些对象,订阅者可以编写表达式来对事件进行过滤。
-
-表达式的结果必须为布尔值,用于判断当前事件是否符合订阅者的条件。
-
-### 表达式过滤规则
-
-使用 [SpEL](https://docs.spring.io/spring-framework/reference/core/expressions.html) 规范,开发者可以通过以下方式过滤事件:
-
-- props:访问事件的属性。例如,`props.repliedOwner == 'guqing'` 用于筛选事件属性中 repliedOwner 为 guqing 的事件。
-- subject:访问事件主体的属性。例如,`subject.kind == 'Post'` 用于筛选主体为 Post 的事件。
-- author:访问事件的发起人。例如,`author == 'guqing'` 用于筛选 guqing 发起的评事件。
-
-### 订阅方式
-
-目前 Halo 没有提供用户界面来订阅通知,订阅均是通过事件发起前由开发者为用户创建的订阅对象来实现的。
-因此,开发者需要在插件中实现订阅逻辑,为用户创建订阅对象,需要注意以下几点:
-
-1. 订阅对象的创建需要在用户订阅事件前完成,否则用户无法接收到通知。
-2. 哪些用户能够接收到通知需要开发者谨慎考虑,确保用户订阅的事件是符合其需求的,避免将无关的事件推送给用户。
-3. 在创建订阅时,同样的逻辑反复执行不会重复创建订阅,因此可以在每次事件触发前订阅。
-
-Halo 提供 `NotificationCenter` Bean 来帮助开发者创建订阅对象和取消订阅对象。
-
-参考 [NotificationCenter Bean](../../basics/server/object-management.md#notificationcenter)
-
-`subscribe` 方法用于订阅事件,`unsubscribe` 方法用于取消订阅事件,第一个参数是订阅者,第二个参数是感兴趣的事件。
-
-#### Subscription.Subscriber
-
-`Subscription.Subscriber` 具有以下属性:
-
-| 字段名 | 类型 | 是否必填 | 说明 |
-| ------ | -------- | -------- | -------------------------------------------------------- |
-| `name` | `string` | 是 | 订阅者的用户名,或通过 `UserIdentity` 构建的匿名订阅标识 |
-
-#### Subscription.InterestReason
-
-`Subscription.InterestReason` 具有以下属性:
-
-| 字段名 | 类型 | 是否必填 | 说明 |
-| ------------ | -------- | -------- | -------------------------------------------------------------------- |
-| `reasonType` | `string` | 是 | 感兴趣的事件类型的名称,对应于 `ReasonType` 的 `metadata.name` 字段 |
-| `expression` | `string` | 是 | 订阅事件的过滤表达式,用于过滤感兴趣的事件避免用户接收到不相关的通知 |
-
-参考 [Subscription 自定义模型](https://github.com/halo-dev/halo/blob/0d1a0992231fd5e66a65b4e9d426d3f373b1903f/api/src/main/java/run/halo/app/core/extension/notification/Subscription.java)
-
-### 示例 {#subscribe-example}
-
-以下是一个通过 Java 代码实现订阅文章“新评论”通知的示例。该示例展示了如何使用表达式来筛选事件,只接收特定文章下的评论通知。
-
-```java
-// step 0: 依赖注入 NotificationCenter
-private final NotificationCenter notificationCenter;
-
-Mono subscribeNewCommentOnPostNotification(String username) {
- // step1: 创建订阅者对象
- var subscriber = new Subscription.Subscriber();
- subscriber.setName(username); // 设置订阅者的用户名
-
- // step2: 创建感兴趣的事件类型对象
- var interestReason = new Subscription.InterestReason();
- // 设置订阅的事件类型为“新评论”
- interestReason.setReasonType(NEW_COMMENT_ON_POST);
-
- // step3: 使用表达式过滤事件,props 是事件属性的根对象
- // 只接收由指定用户创建的文章下的评论事件
- interestReason.setExpression("props.repliedOwner == '%s'".formatted(username));
-
- // step4: 订阅事件
- return notificationCenter.subscribe(subscriber, interestReason);
-}
-```
-
-在这个示例中,我们通过以下步骤实现了订阅:
-
-1. 创建订阅者对象:通过 `Subscription.Subscriber()` 实例化一个订阅者对象,并为其设置订阅者的用户名。
-2. 定义感兴趣的事件类型:使用 `Subscription.InterestReason()` 定义感兴趣的事件类型,这里使用 `NEW_COMMENT_ON_POST` 表示订阅“新评论”事件。
-3. 使用表达式过滤事件:通过表达式 `props.repliedOwner == '%s'`,订阅者只会接收到`被评论者/回复者`是他们自己的评论通知。
-4. 执行订阅操作:调用 `notificationCenter.subscribe(subscriber, interestReason)` 方法完成订阅操作。
-
-参考 [Halo 评论订阅](https://github.com/halo-dev/halo/blob/0d1a0992231fd5e66a65b4e9d426d3f373b1903f/application/src/main/java/run/halo/app/core/reconciler/CommentReconciler.java#L70)
-
-## 通知器
-
-开发者可以通过 Halo 的通知器机制扩展通知的发送方式。
-
-参考 [通知器扩展点](../../extension-points/server/notifier.md)
diff --git a/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/reconciler.md b/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/reconciler.md
deleted file mode 100644
index b708fdb9..00000000
--- a/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/reconciler.md
+++ /dev/null
@@ -1,367 +0,0 @@
----
-title: 编写控制器
-description: 了解如何为自定义模型编写控制器
----
-
-控制器是 Halo 的关键组件,它们负责对每个自定义模型对象进行操作,协调所需状态和当前状态,参考: [控制器概述](../../../core/framework.md#controller)。
-
-控制器通常在具有一般事件序列的控制循环中运行:
-
-1. 观察:每个控制器将被设计为观察一组自定义模型对象,例如文章的控制器会观察文章对象,插件的控制器会观察插件自定义模型对象等。
-2. 比较:控制器将对象配置的期望状态与其当前状态进行比较,以确定是否需要更改,例如插件的 `spec.enabled` 为 `true`,而插件的当前状态是未启动,则插件控制器会处理启动插件的逻辑。
-3. 操作:控制器将根据比较的结果执行相应的操作,以确保对象的实际状态与其期望状态一致,例如插件期望启动,插件控制器会处理启动插件的逻辑。
-3. 重复:上述所有步骤都由控制器重复执行直到与期望状态一致。
-
-这是一个描述控制器作用的例子:房间里的温度自动调节器。
-
-当你设置了温度,告诉了温度自动调节器你的期望状态(Desired State)。
-房间的实际温度是当前状态(Current State)。通过对设备的开关控制,温度自动调节器让其当前状态接近期望状态,未到达期望状态则继续调节,直到达到期望状态。
-
-在 Halo 中控制器的运行部分已经有一个默认实现,你只需要编写控制器的调谐的逻辑也就是 [控制器概述](../../../core/framework.md#controller) 中的所说的 Reconciler 即可。
-
-## 编写 Reconciler
-
-Reconciler 是控制器的核心,它是一个接口,你需要实现它的 `reconcile()` 方法,该方法接收一个 `Reconciler.Request` 对象,它包含了当前自定义模型对象的名称,你可以通过它来获取自定义模型对象的当前状态和期望状态,然后编写调谐的逻辑。
-
-```java
-@Component
-public class PostReconciler implements Reconciler {
- @Override
- public Result reconcile(Request request) {
-
- }
-
- @Override
- public Controller setupWith(ControllerBuilder builder) {
- return builder
- .extension(new Post())
- .build();
- }
-}
-```
-
-以上是一个简单的 Reconciler 实现,它实现了 `reconcile()` 方法,然后在 `setupWith()` 方法中将其通过 `ControllerBuilder` 构建为一个控制器并指定了
-它要观察的自定义模型对象为`Post`,当文章自定义模型对象发生变化时,`reconcile()` 方法就会被调用,从 `Request request` 参数中你可以获得当前发生变化的文章自定义模型对象的名称,然后你就可以通过名称来查询到自定义模型对象进行调谐了。
-
-### 构建控制器
-
-`setupWith()` 方法用于根据当前类的 `reconcile` 方法构建控制器,你可以通过 `ControllerBuilder` 提供的方法来构建并定制控制器:
-
-```java
-public class ControllerBuilder {
- private final String name;
- private Duration minDelay;
- private Duration maxDelay;
- private final Reconciler reconciler;
- private Supplier nowSupplier;
- private Extension extension;
- private ExtensionMatcher onAddMatcher;
- private ExtensionMatcher onDeleteMatcher;
- private ExtensionMatcher onUpdateMatcher;
- private ListOptions syncAllListOptions;
- private boolean syncAllOnStart = true;
- private int workerCount = 1;
-}
-```
-
-- `name`:控制器的名称,用于标识控制器。
-- `minDelay`:控制器的最小延迟,用于控制控制器的最小调谐间隔,默认为 5 毫秒。
-- `maxDelay`:控制器的最大延迟,用于控制控制器的最大调谐间隔,默认为 1000 秒。
-- `reconciler`:控制器的调谐器,用于执行调谐逻辑,你需要实现 `Reconciler` 接口。
-- `nowSupplier`:用于获取当前时间的供应商,用于控制器的时间戳,默认使用 `Instant.now()` 获取当前时间。
-- `extension`:控制器要观察的自定义模型对象。
-- `onAddMatcher`:用于匹配添加事件的匹配器,当自定义模型对象被创建时会触发。
-- `onDeleteMatcher`:用于匹配删除事件的匹配器,当自定义模型对象被删除时会触发。
-- `onUpdateMatcher`:用于匹配更新事件的匹配器,当自定义模型对象被更新时会触发。
-- `syncAllListOptions`:用于同步所有自定义模型对象的查询条件,仅当 `syncAllOnStart` 为 `true` 时生效。
-- `syncAllOnStart`:是否在控制器启动时同步所有自定义模型对象,默认为 `true`,可以配合 `syncAllListOptions` 使用以缩小需要同步的对象范围避免不必要的同步,例如只同步某个用户创建的文章或者某个固定名称的 ConfigMap 对象。如果你的控制器不需要同步所有对象,可以将其设置为 `false`。
-- `workerCount`:控制器的工作线程数,用于控制控制器的并发度,如果你的控制器需要处理大量的对象,可以将其设置为大于 1 的值,以提高控制器的处理能力,但需要注意的是并发度越高,系统的负载也会越高。这里的并发度是指控制器的并发度,但是每个控制器还是单线程执行的。
-
-#### ExtensionMatcher
-
-`onAddMatcher/onUpdateMatcher/onDeleteMatcher` 都是 `ExtensionMatcher` 类型,用于决定当自定义模型对象发生变化时是否触发控制器:
-
-```java
-public interface ExtensionMatcher {
- boolean match(Extension extension);
-}
-```
-
-这里`match` 方法的 `Extension` 参数类型与 `ControllerBuilder` 中的 `extension` 类型始终是一致的,因此可以直接通过强制类型转换来得到需要的类型。
-
-比如我们想要观察文章对象,但是只想观察文章对象中 `visible` 字段为 `PUBLIC` 的文章,可以这样
-
-```java
-import static run.halo.app.extension.index.query.Queries.equal;
-
-public class PostReconciler implements Reconciler {
- @Override
- public Result reconcile(Request request) {
- return Result.doNotRetry();
- }
-
- @Override
- public Controller setupWith(ControllerBuilder builder) {
- // 只想观察 VisibleEnum.PUBLIC 的文章
- ExtensionMatcher extensionMatcher = extension -> {
- var post = (Post) extension;
- return VisibleEnum.PUBLIC.equals(post.getSpec().getVisible());
- };
- return builder
- .extension(new Post())
- .onAddMatcher(extensionMatcher)
- .onUpdateMatcher(extensionMatcher)
- .onDeleteMatcher(extensionMatcher)
- .build();
- }
-}
-```
-
-#### 控制启动时同步的范围
-
-如果想要在控制器启动时控制同步对象的范围,可以通过 `syncAllListOptions` 和 `syncAllOnStart` 来实现,例如只同步某个用户创建的文章:
-
-```java
-public class PostReconciler implements Reconciler {
- @Override
- public Result reconcile(Request request) {
- return Result.doNotRetry();
- }
-
- @Override
- public Controller setupWith(ControllerBuilder builder) {
- return builder
- .extension(new Post())
- .syncAllListOptions(ListOptions.builder()
- .fieldQuery(equal("spec.owner", "guqing"))
- .build()
- )
- .syncAllOnStart(true)
- .build();
- }
-}
-```
-
-### Reconciler 的返回值
-
-`reconcile()` 方法的返回值是一个 `Result` 对象,它包含了调谐的结果,你可以通过它来告诉控制器是否需要重试,如果需要重试则控制器会在稍后再次调用 `reconcile()` 方法,而这个过程会一直重复,直到 `reconcile()` 方法返回成功为止,这个过程被称之为调谐循环(Reconciliation Loop)。
-
-```java
-record Result(boolean reEnqueue, Duration retryAfter) {}
-```
-
-`Result` 对象包含了两个属性:reEnqueue 和 retryAfter,reEnqueue 用于标识是否需要重试,retryAfter 用于标识重试的时间间隔,如果 reEnqueue 为 true 则会在 retryAfter 指定的时间间隔后再次调用 `reconcile()` 方法,如果 reEnqueue 为 false 则不会再次调用 `reconcile()` 方法。
-
-在没有特殊需要时,`retryAfter` 可以不指定,控制器会有一套默认的重试策略。
-
-如果直接返回 `null` 则会被视为成功,效果等同于返回 `new Result(false, null)`。
-
-### Reconciler 的异常处理
-
-当 `reconcile()` 方法抛出异常时,控制器会将异常记录到日志中,然后会将 `Request request` 对象重新放入队列中,等待下次调用 `reconcile()` 方法,这个过程会一直重复,直到 `reconcile()` 成功,对于默认重试策略,每次重试间隔会越来越长,直到达到最长间隔后不再增加。
-
-## 控制器示例
-
-本章节将通过一个简单的示例来演示如何编写控制器。
-
-### 场景:事件管理系统
-
-创建一个名为”EventTracker“的自定义模型,用于管理和追踪组织内的各种事件。这些事件可以是会议、研讨会、社交聚会或任何其他类型的组织活动。
-“EventTracker“自定义模型将提供一个框架,用于记录事件的详细信息,如时间、地点、参与者和状态。
-
-由于这里的重点是控制器,因此我们将忽略自定义模型的详细信息,只关注控制器的实现,一个可能的“EventTracker”数据结构如下:
-
-```yaml
-apiVersion: tracker.halo.run/v1alpha1
-kind: EventTracker
-metadata:
- name: event-tracker-1
-spec:
- eventName: "Halo Meetup"
- eventDate: "2024-01-20T12:00:00Z"
- location: "Chengdu"
- participants: ["@sig-doc", "@sig-console", "@sig-halo"]
- description: "Halo Meetup in Chengdu"
-status:
- phase: "Planned" # Planned, Ongoing, Completed
- participants: []
- conditions:
- - type: "Invalid"
- status: "True"
- reason: "InvalidEventDate"
- message: "Event date is invalid"
-```
-
-业务逻辑处理:
-
-1. 事件创建:
-
- - 当新的 EventTracker 资源被创建时,控制器需验证所有必要字段的存在和格式正确性。
- - 初始化事件状态为 Planned。
-
-2. 事件更新:
-
- - 检查 eventDate、location 和 participants 字段的变更。
- - 如果接近事件日期,自动更新状态为 Ongoing。
-
-3. 状态管理:
-
- - 根据当前日期和事件日期自动管理 phase 字段。
- - 当事件日期过去时,将状态更新为 Completed。
-4. 数据验证和完整性:
- - 确保所有输入数据的格式正确且合理。
- - 如有不一致或缺失的重要信息,记录警告或错误。
-5. 事件提醒和通知:
- - 在事件状态改变或临近事件日期时发送通知。
-6. 清理和维护:
- - 对于已完成的事件,提供自动清理机制,例如在事件结束后一定时间内删除资源。
-
-首先实现 EventTracker 控制器的协调循环主体,通过依赖注入 `ExtensionClient` 可以用于获取当前变更的对象:
-
-```java
-@Component
-@RequiredArgsConstructor
-public class EventTrackerReconciler implements Reconciler {
-
- private final ExtensionClient client;
-
- @Override
- public Result reconcile(Request request) {
- // ...
- }
-
- @Override
- public Controller setupWith(ControllerBuilder builder) {
- return builder
- .extension(new EventTracker())
- .build();
- }
-}
-```
-
-然后在 `reconcile()` 方法中根据 `EventTracker` 对象的状态来执行响应的操作,确保执行逻辑是是幂等的,这意味着即使多次执行相同操作,结果也应该是一致的。
-
-```java
-public Result reconcile(Request request) {
- client.fetch(EventTracker.class, request.name()).ifPresent(eventTracker -> {
- // 获取到当前变更的 EventTracker 对象
- // 1. 检查必要字段的存在和格式正确性
- // 2. 初始化事件状态为 Planned
- if (eventTracker.getStatus() == null) {
- eventTracker.setStatus(new EventTracker.Status());
- }
- var status = eventTracker.getStatus();
- if (status.getPhase() == null) {
- status.setPhase(EventTracker.Phase.PLANNED);
- }
-
- var eventName = eventTracker.getSpec().getEventName();
- if (StringUtils.isBlank(eventName)) {
- Condition condition = Condition.builder()
- .type("Invalid")
- .reason("InvalidEventName")
- .message("Event name is invalid")
- .status(ConditionStatus.FALSE)
- .lastTransitionTime(Instant.now())
- .build();
- status.getConditions().addAndEvictFIFO(condition);
- }
-
- client.update(eventTracker);
- });
- return new Result(false, null);
-}
-```
-
-上述,我们通过 `client.fetch()` 方法获取到了当前变更的 `EventTracker` 对象,然后根据 `EventTracker` 对象的状态来执行响应的操作,例如初始化事件状态为 Planned,检查必要字段的存在和格式正确性等,但需要注意控制器的执行是异步的,如果我们通过 `EventTracker` 的 API 来创建或更改了一个 `EventTracker` 对象,那么 API 会在控制器执行之前返回结果,这意味着在用户界面看到的结果可能不是最新的,并且可能会在稍后更新。
-
-对于上述校验 `eventName` 的逻辑只是保证后续的执行是可靠的,如果有些字段是必须的,那么我们可以通过 `@Schema` 注解来标注,为了让控制器中校验字段失败的信息能够呈现到用户界面,我们通过向 `status.conditions` 中添加了一条 Condition 记录来用于记录这个事件,再用户界面可以展示这个 Condition 记录的信息以让用户知晓。
-
-最后,我们通过 `client.update()` 方法来更新 `EventTracker` 对象,这个过程就是将实际状态回写到 `EventTracker` 对象并应用到数据库中,这样就完成了一次调谐。
-
-当 `EventTracker` 对象发生变更时,控制器也会被执行,这时我们可以根据 `EventTracker` 对象的状态来执行响应的操作,例如检查和更新 `eventDate`、`location` 和 `participants` 字段的变更,如果接近事件日期,自动更新状态为 Ongoing。
-
-```java
-public Result reconcile(Request request) {
- client.fetch(EventTracker.class, request.name()).ifPresent(eventTracker -> {
- // ...此处省略之前的逻辑
- if (isApproach(eventTracker.getSpec().getEventDate())) {
- status.setPhase(EventTracker.Phase.ONGOING);
- sendNotification(eventTracker, "Event is ongoing");
- }
- });
- return new Result(false, null);
-}
-```
-
-这里我们通过 `isApproach()` 方法来表示判断是否接近事件日期,如果接近则更新状态为 Ongoing,并使用 `sendNotification` 来发送发送通知。
-
-> 为了简化示例,我们省略了 `isApproach()` 和 `sendNotification` 方法的实现。
-
-还可以根据 `spec.participants` 字段来解析参与者信息,然后将其添加到 `status.participants` 中,这样就可以在用户界面看到参与者信息了。
-
-```java
-public Result reconcile(Request request) {
- client.fetch(EventTracker.class, request.name()).ifPresent(eventTracker -> {
- // ...此处省略之前的逻辑
- var participants = eventTracker.getSpec().getParticipants();
- resolveParticipants(participants).forEach(status::addParticipant);
- });
- return new Result(false, null);
-}
-```
-
-### 使用 Finalizers
-
-`Finalizers` 允许控制器实现异步预删除钩子。假设您为正在实现的 API 类型的每个对象创建了一个外部资源,例如存储桶,并且您希望在从 Halo 中删除相应对象
-时清理外部资源,您可以使用终结器来删除外部资源资源。
-
-比如 `EventTracker` 对象被删除时,我们需要删除 `EventTracker` 对象记录的日志,这时我们可以通过 `Finalizers` 来实现。
-
-首先我们需要在 `reconcile()` 的开头判断 `EventTracker` 对象的 `metadata.deletionTimestamp` 是否存在,如果存在则表示 `EventTracker` 对象被删除了,
-这时我们就可以执行清理操作。
-
-```java
-public Result reconcile(Request request) {
- client.fetch(EventTracker.class, request.name()).ifPresent(eventTracker -> {
- if (ExtensionOperator.isDeleted(eventTracker)) { // 1. 判断是否被删除
- // 2. 调用 removeFinalizers 方法移除终结器(稍后会说明)
- ExtensionUtil.removeFinalizers(eventTracker.getMetadata(), Set.of(FINALIZER_NAME));
- // 3. 执行清理操作
- cleanUpLogsForTracker(eventTracker);
- // 4. 更新 EventTracker 对象将变更应用到数据库中
- client.update(eventTracker);
- // 5. return 避免执行后续逻辑
- return;
- }
- // ...此处省略之前的逻辑
- });
- return new Result(false, null);
-}
-```
-
-1. `ExtensionOperator.isDeleted` 方法是 Halo 提供的工具方法,用于判断对象是否被删除,它会判断 `metadata.deletionTimestamp` 是否存在,如果存在则表示对象被标记删除了。
-关于自定义模型对象的删除可以参考:[自定义模型对象生命周期](../../../core/framework.md#extension-lifecycle)
-2. `ExtensionUtil.removeFinalizers` 方法是 Halo 提供的工具方法,用于移除对象的终结器,它接收两个参数,第一个参数是对象的元数据,第二个参数是要移除的终结器名称集合,它来自 `run.halo.app.extension.ExtensionUtil`。
-3. `cleanUpLogsForTracker` 方法是我们自己实现的,这里的示例是用于清理 `EventTracker` 对象记录的日志,你可以根据自己的业务需求来实现,如清理外部资源等。
-
-经过上述步骤,我们只是写了移除终结器但是发现没有添加终结器的逻辑,添加终结器的逻辑需要在判断删除之后,`metadata.finalizers` 是一个字符串集合,用于标识对象是否可回收,如果 `metadata.finalizers` 不为空则表示对象不可回收,否则表示对象可回收,我们可以通过 `ExtensionUtil.addFinalizers` 方法来添加终结器。
-
-最佳实践是,一个控制器最多添加一个终结器,名称为了防止冲突可以使用当前业务的 `group/终结器名称` 来命名,例如 `tracker.halo.run/finalizer`,例如在 Halo 中文章的控制器使用了一个终结器,但可能插件也会定义一个文章控制器来扩展文章的业务,那么根据最佳实践命名终结器可以避免冲突。
-
-```java
-private static final String FINALIZER_NAME = "tracker.halo.run/finalizer";
-
-public Result reconcile(Request request) {
- client.fetch(EventTracker.class, request.name()).ifPresent(eventTracker -> {
- if (ExtensionOperator.isDeleted(eventTracker)) {
-// ... 省略删除逻辑
- }
- // 添加终结器
- ExtensionUtil.addFinalizers(post.getMetadata(), Set.of(FINALIZER_NAME));
- // ...此处省略之前的逻辑
- // 会在更新时将终结器的变更写入到数据库中
- client.update(eventTracker);
- });
-}
-```
diff --git a/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/reverseproxy.md b/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/reverseproxy.md
deleted file mode 100644
index ff0ae286..00000000
--- a/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/reverseproxy.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title: 静态资源代理
-description: 了解如何使用静态资源代理来访问插件中的静态资源
----
-
-插件中的静态资源如图片等如果想被外部访问到,需要放到 `src/main/resources` 目录下,并通过创建 `ReverseProxy` 自定义模型对象来进行静态资源代理访问。
-
-例如 `src/main/resources` 下的 `static` 目录下有一张 `halo.jpg`:
-
-1. 首先需要在 `src/main/resources/extensions` 下创建一个 `yaml`,文件名可以任意。
-2. 声明 `ReverseProxy` 对象如下:
-
- ```yaml
- apiVersion: plugin.halo.run/v1alpha1
- kind: ReverseProxy
- metadata:
- # 为了避免与其他插件冲突,推荐带上插件名称前缀
- name: my-plugin-fake-reverse-proxy
- rules:
- - path: /res/**
- file:
- directory: static
- # 如果想代理 static 下所有静态资源则省略 filename 配置
- filename: halo.jpg
- ```
-
-插件启动后会根据 `/plugins/{plugin-name}/assets/**` 规则生成访问路径,
-因此该 `ReverseProxy` 的访问路径为:`/plugins/my-plugin/assets/res/halo.jpg`。
-
-- `rules` 下可以添加多组规则。
-- `path` 为路径前缀。
-- `file` 表示访问文件系统,目前暂时仅支持这一种。
-- `directory` 表示要代理的目标文件目录,它相对于 `src/main/resources/` 目录。
-- `filename` 表示要代理的目标文件名。
-
-`directory` 和 `filename` 都是可选的,但必须至少有一个被配置。
diff --git a/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/setting-fetcher.md b/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/setting-fetcher.md
deleted file mode 100644
index a572a39c..00000000
--- a/versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/setting-fetcher.md
+++ /dev/null
@@ -1,139 +0,0 @@
----
-title: 获取插件配置
-description: 了解如何获取插件定义的设置表单对应的配置数据,以及如何在插件中使用配置数据。
----
-
-插件的 `plugin.yaml` 中允许配置 `settingName` 和 `configMapName` 字段,用于定义插件的个性化设置。
-本文介绍如何获取插件定义的设置表单对应的配置数据,以及如何在插件中使用配置数据。
-
-## 概述
-
-Halo 提供了两个 Bean 用于获取插件配置数据:`SettingFetcher` 和 `ReactiveSettingFetcher`,分别用于同步和异步获取配置数据。
-
-以 `ReactiveSettingFetcher` 为例,提供了以下方法:
-
-```java
-public interface ReactiveSettingFetcher {
-
- Mono fetch(String group, Class clazz);
-
- @NonNull
- Mono get(String group);
-
- @NonNull
- Mono