From e7f2c66e1d22912660463ec293a73238847fe5b3 Mon Sep 17 00:00:00 2001 From: adithya Date: Fri, 5 Dec 2025 23:48:03 +0530 Subject: [PATCH 01/17] feat: VitePress for docs VitePress is configured in the repo for handling docs --- .gitignore | 4 + docs/.vitepress/config.mts | 27 + docs/01-getting-started/03-arm64.md | 4 + .../04-single-compose-setup.md | 4 + docs/01-getting-started/index.md | 3 + docs/02-setup/01-overview.md | 4 + docs/02-setup/02-build-setup.md | 4 + docs/02-setup/03-start-setup.md | 4 + docs/02-setup/04-env-variables.md | 4 + docs/02-setup/05-overrides.md | 4 + docs/02-setup/06-setup-examples.md | 4 + docs/02-setup/07-single-server-example.md | 4 + docs/02-setup/index.md | 3 + docs/03-production/01-tls-ssl-setup.md | 6 +- docs/03-production/02-backup-strategy.md | 4 + docs/03-production/03-multi-tenancy.md | 4 + docs/03-production/index.md | 3 + docs/04-operations/01-site-operations.md | 4 + docs/04-operations/index.md | 3 + docs/05-development/01-development.md | 4 + docs/05-development/02-debugging.md | 4 + .../03-local-services-connection.md | 4 + docs/05-development/index.md | 3 + .../01-migrate-from-multi-image-setup.md | 4 + docs/06-migration/index.md | 3 + docs/07-troubleshooting/01-troubleshoot.md | 11 +- .../02-windows-nginx-entrypoint-error.md | 4 + docs/07-troubleshooting/index.md | 3 + .../01-build-version-10-images.md | 4 + docs/08-reference/index.md | 3 + docs/getting-started.md | 4 + docs/images/frappe_docker.png | Bin 0 -> 45163 bytes docs/index.md | 26 + package.json | 11 + pnpm-lock.yaml | 1756 +++++++++++++++++ 35 files changed, 1937 insertions(+), 4 deletions(-) create mode 100644 docs/.vitepress/config.mts create mode 100644 docs/01-getting-started/index.md create mode 100644 docs/02-setup/index.md create mode 100644 docs/03-production/index.md create mode 100644 docs/04-operations/index.md create mode 100644 docs/05-development/index.md create mode 100644 docs/06-migration/index.md create mode 100644 docs/07-troubleshooting/index.md create mode 100644 docs/08-reference/index.md create mode 100644 docs/images/frappe_docker.png create mode 100644 docs/index.md create mode 100644 package.json create mode 100644 pnpm-lock.yaml diff --git a/.gitignore b/.gitignore index 94a9fe2f..4704f2d6 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,7 @@ venv # NodeJS node_modules + +# VitePress +**/.vitepress/dist +**/.vitepress/cache \ No newline at end of file diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts new file mode 100644 index 00000000..316d9829 --- /dev/null +++ b/docs/.vitepress/config.mts @@ -0,0 +1,27 @@ +import { defineConfig } from "vitepress"; +import { withSidebar } from "vitepress-sidebar"; + +// https://vitepress.dev/reference/site-config +const vitePressOptions = { + title: "Frappe Docker Docs", + description: "Frappe in a Container", + themeConfig: { + logo: "../images/frappe_docker.png", + // https://vitepress.dev/reference/default-theme-config + nav: [{ text: "Home", link: "/" }], + + socialLinks: [ + { icon: "github", link: "https://github.com/frappe/frappe_docker/" }, + ], + }, +}; + +const vitePressSidebarOptions = { + documentRootPath: "./docs", + useTitleFromFrontmatter: true, + useFolderTitleFromIndexFile: true, +}; + +export default defineConfig( + withSidebar(vitePressOptions, vitePressSidebarOptions) +); diff --git a/docs/01-getting-started/03-arm64.md b/docs/01-getting-started/03-arm64.md index d2c50ce0..c76beb06 100644 --- a/docs/01-getting-started/03-arm64.md +++ b/docs/01-getting-started/03-arm64.md @@ -1,3 +1,7 @@ +--- +title: Quick Start with Linux and Mac +--- + # How to install ERPNext on linux/mac using Frappe_docker ? ## Clone the repo diff --git a/docs/01-getting-started/04-single-compose-setup.md b/docs/01-getting-started/04-single-compose-setup.md index aea2914c..72e71474 100644 --- a/docs/01-getting-started/04-single-compose-setup.md +++ b/docs/01-getting-started/04-single-compose-setup.md @@ -1,3 +1,7 @@ +--- +title: Single Compose Setup +--- + # Single Compose Setup This setup is a very simple single compose file that does everything to start required services and a frappe-bench. It is used to start play with docker instance with a site. The file is located in the root of repo and named `pwd.yml`. diff --git a/docs/01-getting-started/index.md b/docs/01-getting-started/index.md new file mode 100644 index 00000000..f15cbd37 --- /dev/null +++ b/docs/01-getting-started/index.md @@ -0,0 +1,3 @@ +--- +title: Getting Started +--- diff --git a/docs/02-setup/01-overview.md b/docs/02-setup/01-overview.md index 08f3d233..bfae92cf 100644 --- a/docs/02-setup/01-overview.md +++ b/docs/02-setup/01-overview.md @@ -1,3 +1,7 @@ +--- +title: Setup Overview +--- + The purpose of this document is to give you an overview of how the Frappe Docker containers are structured. # 🐳 Images diff --git a/docs/02-setup/02-build-setup.md b/docs/02-setup/02-build-setup.md index 6c0c49da..93331280 100644 --- a/docs/02-setup/02-build-setup.md +++ b/docs/02-setup/02-build-setup.md @@ -1,3 +1,7 @@ +--- +title: Build Setup +--- + This guide walks you through building Frappe images from the repository resources. # Prerequisites diff --git a/docs/02-setup/03-start-setup.md b/docs/02-setup/03-start-setup.md index bbcb1258..93bd6391 100644 --- a/docs/02-setup/03-start-setup.md +++ b/docs/02-setup/03-start-setup.md @@ -1,3 +1,7 @@ +--- +title: Start Container +--- + # start Container Once your compose file is ready, start all containers with a single command: diff --git a/docs/02-setup/04-env-variables.md b/docs/02-setup/04-env-variables.md index 54ed2956..ab07da67 100644 --- a/docs/02-setup/04-env-variables.md +++ b/docs/02-setup/04-env-variables.md @@ -1,3 +1,7 @@ +--- +title: Environment Variables +--- + # Environment Variables Reference Environment variables configure your Frappe Docker setup. They can be set directly in the container or defined in a `.env` file referenced by Docker Compose. diff --git a/docs/02-setup/05-overrides.md b/docs/02-setup/05-overrides.md index 0d7b6004..c81bf153 100644 --- a/docs/02-setup/05-overrides.md +++ b/docs/02-setup/05-overrides.md @@ -1,3 +1,7 @@ +--- +title: Overrides +--- + Overrides extend the base compose.yaml with additional services or modify existing behavior. Include them in your compose command using multiple -f flags. ```bash diff --git a/docs/02-setup/06-setup-examples.md b/docs/02-setup/06-setup-examples.md index 5d9b569a..02c5f3c6 100644 --- a/docs/02-setup/06-setup-examples.md +++ b/docs/02-setup/06-setup-examples.md @@ -1,3 +1,7 @@ +--- +title: Setup Examples +--- + # Setup Examples This guide provides practical examples for common setup scenarios. These examples build upon the [container setup guide](01-overview.md) and demonstrate how to combine the base compose file with overrides. diff --git a/docs/02-setup/07-single-server-example.md b/docs/02-setup/07-single-server-example.md index 6827dda6..fd4e1130 100644 --- a/docs/02-setup/07-single-server-example.md +++ b/docs/02-setup/07-single-server-example.md @@ -1,3 +1,7 @@ +--- +title: Single Server Setup +--- + # Single Server Example This guide demonstrates setting up multiple Frappe/ERPNext benches (projects) on a single server with shared infrastructure components. diff --git a/docs/02-setup/index.md b/docs/02-setup/index.md new file mode 100644 index 00000000..0e51640f --- /dev/null +++ b/docs/02-setup/index.md @@ -0,0 +1,3 @@ +--- +title: Setup +--- diff --git a/docs/03-production/01-tls-ssl-setup.md b/docs/03-production/01-tls-ssl-setup.md index b88fc8c1..e2ea2e0e 100644 --- a/docs/03-production/01-tls-ssl-setup.md +++ b/docs/03-production/01-tls-ssl-setup.md @@ -1,4 +1,8 @@ -# TLS/SSL Setup Overview +--- +title: TLS/SSL Setup Overview +--- + +# Accessing ERPNext through https on local deployment Frappe Docker supports multiple TLS/SSL approaches. Choose the one that matches your routing needs and where you want the proxy to run. diff --git a/docs/03-production/02-backup-strategy.md b/docs/03-production/02-backup-strategy.md index ce5d8b49..bba20b29 100644 --- a/docs/03-production/02-backup-strategy.md +++ b/docs/03-production/02-backup-strategy.md @@ -1,3 +1,7 @@ +--- +title: Backup Strategy +--- + Create backup service or stack. ```yaml diff --git a/docs/03-production/03-multi-tenancy.md b/docs/03-production/03-multi-tenancy.md index 2f469bfd..4551da3e 100644 --- a/docs/03-production/03-multi-tenancy.md +++ b/docs/03-production/03-multi-tenancy.md @@ -1,3 +1,7 @@ +--- +title: Multi Tenancy +--- + WARNING: Do not use this in production if the site is going to be served over plain http. ### Step 1 diff --git a/docs/03-production/index.md b/docs/03-production/index.md new file mode 100644 index 00000000..2d4b91a5 --- /dev/null +++ b/docs/03-production/index.md @@ -0,0 +1,3 @@ +--- +title: Production +--- diff --git a/docs/04-operations/01-site-operations.md b/docs/04-operations/01-site-operations.md index 1520d6aa..ac8fc957 100644 --- a/docs/04-operations/01-site-operations.md +++ b/docs/04-operations/01-site-operations.md @@ -1,3 +1,7 @@ +--- +title: Site Operations +--- + # Site operations > 💡 You should setup `--project-name` option in `docker-compose` commands if you have non-standard project name. diff --git a/docs/04-operations/index.md b/docs/04-operations/index.md new file mode 100644 index 00000000..eb2b7cf5 --- /dev/null +++ b/docs/04-operations/index.md @@ -0,0 +1,3 @@ +--- +title: Operations +--- diff --git a/docs/05-development/01-development.md b/docs/05-development/01-development.md index 6ff718e9..99df7254 100644 --- a/docs/05-development/01-development.md +++ b/docs/05-development/01-development.md @@ -1,3 +1,7 @@ +--- +title: Getting Started +--- + # Getting Started ## Prerequisites diff --git a/docs/05-development/02-debugging.md b/docs/05-development/02-debugging.md index d506be0f..e5ad13a0 100644 --- a/docs/05-development/02-debugging.md +++ b/docs/05-development/02-debugging.md @@ -1,3 +1,7 @@ +--- +title: Debugging +--- + Add the following configuration to `launch.json` `configurations` array to start bench console and use debugger. Replace `development.localhost` with appropriate site. Also replace `frappe-bench` with name of the bench directory. ```json diff --git a/docs/05-development/03-local-services-connection.md b/docs/05-development/03-local-services-connection.md index c76b52a2..69186b35 100644 --- a/docs/05-development/03-local-services-connection.md +++ b/docs/05-development/03-local-services-connection.md @@ -1,3 +1,7 @@ +--- +title: Local Services +--- + Add following to frappe container from the `.devcontainer/docker-compose.yml`: ```yaml diff --git a/docs/05-development/index.md b/docs/05-development/index.md new file mode 100644 index 00000000..4cb3f607 --- /dev/null +++ b/docs/05-development/index.md @@ -0,0 +1,3 @@ +--- +title: Development +--- diff --git a/docs/06-migration/01-migrate-from-multi-image-setup.md b/docs/06-migration/01-migrate-from-multi-image-setup.md index 77202e0f..0fd2e344 100644 --- a/docs/06-migration/01-migrate-from-multi-image-setup.md +++ b/docs/06-migration/01-migrate-from-multi-image-setup.md @@ -1,3 +1,7 @@ +--- +title: Migrate from Multi Image Setup +--- + ## Migrate from multi-image setup All the containers now use same image. Use `frappe/erpnext` instead of `frappe/frappe-worker`, `frappe/frappe-nginx` , `frappe/frappe-socketio` , `frappe/erpnext-worker` and `frappe/erpnext-nginx`. diff --git a/docs/06-migration/index.md b/docs/06-migration/index.md new file mode 100644 index 00000000..8083bf82 --- /dev/null +++ b/docs/06-migration/index.md @@ -0,0 +1,3 @@ +--- +title: Migration +--- diff --git a/docs/07-troubleshooting/01-troubleshoot.md b/docs/07-troubleshooting/01-troubleshoot.md index 09d7f8b6..d2254b8c 100644 --- a/docs/07-troubleshooting/01-troubleshoot.md +++ b/docs/07-troubleshooting/01-troubleshoot.md @@ -1,6 +1,11 @@ -1. [Fixing MariaDB issues after rebuilding the container](#fixing-mariadb-issues-after-rebuilding-the-container) -1. [docker-compose does not recognize variables from `.env` file](#docker-compose-does-not-recognize-variables-from-env-file) -1. [Windows Based Installation](#windows-based-installation) +--- +title: Troubleshoot +--- + +- [Fixing MariaDB issues after rebuilding the container](#fixing-mariadb-issues-after-rebuilding-the-container) +- [docker-compose does not recognize variables from `.env` file](#docker-compose-does-not-recognize-variables-from-env-file) +- [Windows Based Installation](#windows-based-installation) +- [Redo installation](#redo-installation) ### Fixing MariaDB issues after rebuilding the container diff --git a/docs/07-troubleshooting/02-windows-nginx-entrypoint-error.md b/docs/07-troubleshooting/02-windows-nginx-entrypoint-error.md index 112ed0ea..a2bbdb34 100644 --- a/docs/07-troubleshooting/02-windows-nginx-entrypoint-error.md +++ b/docs/07-troubleshooting/02-windows-nginx-entrypoint-error.md @@ -1,3 +1,7 @@ +--- +title: NGINX in Windows +--- + # Resolving Docker `nginx-entrypoint.sh` Script Not Found Error on Windows If you're encountering the error `exec /usr/local/bin/nginx-entrypoint.sh: no such file or directory` in a Docker container on Windows, follow these steps to resolve the issue. diff --git a/docs/07-troubleshooting/index.md b/docs/07-troubleshooting/index.md new file mode 100644 index 00000000..9662ac07 --- /dev/null +++ b/docs/07-troubleshooting/index.md @@ -0,0 +1,3 @@ +--- +title: Troubleshooting +--- diff --git a/docs/08-reference/01-build-version-10-images.md b/docs/08-reference/01-build-version-10-images.md index 613f06ee..5d3bba32 100644 --- a/docs/08-reference/01-build-version-10-images.md +++ b/docs/08-reference/01-build-version-10-images.md @@ -1,3 +1,7 @@ +--- +title: Build Version 10 +--- + Clone the version-10 branch of this repo ```shell diff --git a/docs/08-reference/index.md b/docs/08-reference/index.md new file mode 100644 index 00000000..1e6c5c77 --- /dev/null +++ b/docs/08-reference/index.md @@ -0,0 +1,3 @@ +--- +title: References +--- diff --git a/docs/getting-started.md b/docs/getting-started.md index e67f7415..72f9dee9 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -1,3 +1,7 @@ +--- +title: Getting Started +--- + # Getting Started with Frappe Docker _A comprehensive guide for developers getting started with Frappe Docker, with comparisons to Django for teams familiar with that framework_ diff --git a/docs/images/frappe_docker.png b/docs/images/frappe_docker.png new file mode 100644 index 0000000000000000000000000000000000000000..7f1138ab23a9ab37897d0ad4c4be60d64b03cfb9 GIT binary patch literal 45163 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 Vzu01V4C-=Zc+liP=Kixc{|ni=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.5': + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/types@7.28.5': + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + engines: {node: '>=6.9.0'} + + '@docsearch/css@4.3.2': + resolution: {integrity: sha512-K3Yhay9MgkBjJJ0WEL5MxnACModX9xuNt3UlQQkDEDZJZ0+aeWKtOkxHNndMRkMBnHdYvQjxkm6mdlneOtU1IQ==} + + '@docsearch/js@4.3.2': + resolution: {integrity: sha512-xdfpPXMgKRY9EW7U1vtY7gLKbLZFa9ed+t0Dacquq8zXBqAlH9HlUf0h4Mhxm0xatsVeMaIR2wr/u6g0GsZyQw==} + + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@iconify-json/simple-icons@1.2.61': + resolution: {integrity: sha512-DG6z3VEAxtDEw/SuZssZ/E8EvhjBhFQqxpEo3uckRKiia3LfZHmM4cx4RsaO2qX1Bqo9uadR5c/hYavvUQVuHw==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@isaacs/balanced-match@4.0.1': + resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + engines: {node: 20 || >=22} + + '@isaacs/brace-expansion@5.0.0': + resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} + engines: {node: 20 || >=22} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@rolldown/pluginutils@1.0.0-beta.50': + resolution: {integrity: sha512-5e76wQiQVeL1ICOZVUg4LSOVYg9jyhGCin+icYozhsUzM+fHE7kddi1bdiE0jwVqTfkjba3jUFbEkoC9WkdvyA==} + + '@rollup/rollup-android-arm-eabi@4.53.3': + resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.53.3': + resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.53.3': + resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.53.3': + resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.53.3': + resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.53.3': + resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': + resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.53.3': + resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.53.3': + resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.53.3': + resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.53.3': + resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.53.3': + resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.53.3': + resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.53.3': + resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.53.3': + resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.53.3': + resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.53.3': + resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openharmony-arm64@4.53.3': + resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.53.3': + resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.53.3': + resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.53.3': + resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.53.3': + resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} + cpu: [x64] + os: [win32] + + '@shikijs/core@3.19.0': + resolution: {integrity: sha512-L7SrRibU7ZoYi1/TrZsJOFAnnHyLTE1SwHG1yNWjZIVCqjOEmCSuK2ZO9thnRbJG6TOkPp+Z963JmpCNw5nzvA==} + + '@shikijs/engine-javascript@3.19.0': + resolution: {integrity: sha512-ZfWJNm2VMhKkQIKT9qXbs76RRcT0SF/CAvEz0+RkpUDAoDaCx0uFdCGzSRiD9gSlhm6AHkjdieOBJMaO2eC1rQ==} + + '@shikijs/engine-oniguruma@3.19.0': + resolution: {integrity: sha512-1hRxtYIJfJSZeM5ivbUXv9hcJP3PWRo5prG/V2sWwiubUKTa+7P62d2qxCW8jiVFX4pgRHhnHNp+qeR7Xl+6kg==} + + '@shikijs/langs@3.19.0': + resolution: {integrity: sha512-dBMFzzg1QiXqCVQ5ONc0z2ebyoi5BKz+MtfByLm0o5/nbUu3Iz8uaTCa5uzGiscQKm7lVShfZHU1+OG3t5hgwg==} + + '@shikijs/themes@3.19.0': + resolution: {integrity: sha512-H36qw+oh91Y0s6OlFfdSuQ0Ld+5CgB/VE6gNPK+Hk4VRbVG/XQgkjnt4KzfnnoO6tZPtKJKHPjwebOCfjd6F8A==} + + '@shikijs/transformers@3.19.0': + resolution: {integrity: sha512-e6vwrsyw+wx4OkcrDbL+FVCxwx8jgKiCoXzakVur++mIWVcgpzIi8vxf4/b4dVTYrV/nUx5RjinMf4tq8YV8Fw==} + + '@shikijs/types@3.19.0': + resolution: {integrity: sha512-Z2hdeEQlzuntf/BZpFG8a+Fsw9UVXdML7w0o3TgSXV3yNESGon+bs9ITkQb3Ki7zxoXOOu5oJWqZ2uto06V9iQ==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + + '@types/markdown-it@14.1.2': + resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdurl@2.0.0': + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/web-bluetooth@0.0.21': + resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@vitejs/plugin-vue@6.0.2': + resolution: {integrity: sha512-iHmwV3QcVGGvSC1BG5bZ4z6iwa1SOpAPWmnjOErd4Ske+lZua5K9TtAVdx0gMBClJ28DViCbSmZitjWZsWO3LA==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + vue: ^3.2.25 + + '@vue/compiler-core@3.5.25': + resolution: {integrity: sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==} + + '@vue/compiler-dom@3.5.25': + resolution: {integrity: sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==} + + '@vue/compiler-sfc@3.5.25': + resolution: {integrity: sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==} + + '@vue/compiler-ssr@3.5.25': + resolution: {integrity: sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==} + + '@vue/devtools-api@8.0.5': + resolution: {integrity: sha512-DgVcW8H/Nral7LgZEecYFFYXnAvGuN9C3L3DtWekAncFBedBczpNW8iHKExfaM559Zm8wQWrwtYZ9lXthEHtDw==} + + '@vue/devtools-kit@8.0.5': + resolution: {integrity: sha512-q2VV6x1U3KJMTQPUlRMyWEKVbcHuxhqJdSr6Jtjz5uAThAIrfJ6WVZdGZm5cuO63ZnSUz0RCsVwiUUb0mDV0Yg==} + + '@vue/devtools-shared@8.0.5': + resolution: {integrity: sha512-bRLn6/spxpmgLk+iwOrR29KrYnJjG9DGpHGkDFG82UM21ZpJ39ztUT9OXX3g+usW7/b2z+h46I9ZiYyB07XMXg==} + + '@vue/reactivity@3.5.25': + resolution: {integrity: sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==} + + '@vue/runtime-core@3.5.25': + resolution: {integrity: sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==} + + '@vue/runtime-dom@3.5.25': + resolution: {integrity: sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==} + + '@vue/server-renderer@3.5.25': + resolution: {integrity: sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==} + peerDependencies: + vue: 3.5.25 + + '@vue/shared@3.5.25': + resolution: {integrity: sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==} + + '@vueuse/core@14.1.0': + resolution: {integrity: sha512-rgBinKs07hAYyPF834mDTigH7BtPqvZ3Pryuzt1SD/lg5wEcWqvwzXXYGEDb2/cP0Sj5zSvHl3WkmMELr5kfWw==} + peerDependencies: + vue: ^3.5.0 + + '@vueuse/integrations@14.1.0': + resolution: {integrity: sha512-eNQPdisnO9SvdydTIXnTE7c29yOsJBD/xkwEyQLdhDC/LKbqrFpXHb3uS//7NcIrQO3fWVuvMGp8dbK6mNEMCA==} + peerDependencies: + async-validator: ^4 + axios: ^1 + change-case: ^5 + drauu: ^0.4 + focus-trap: ^7 + fuse.js: ^7 + idb-keyval: ^6 + jwt-decode: ^4 + nprogress: ^0.2 + qrcode: ^1.5 + sortablejs: ^1 + universal-cookie: ^7 || ^8 + vue: ^3.5.0 + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true + + '@vueuse/metadata@14.1.0': + resolution: {integrity: sha512-7hK4g015rWn2PhKcZ99NyT+ZD9sbwm7SGvp7k+k+rKGWnLjS/oQozoIZzWfCewSUeBmnJkIb+CNr7Zc/EyRnnA==} + + '@vueuse/shared@14.1.0': + resolution: {integrity: sha512-EcKxtYvn6gx1F8z9J5/rsg3+lTQnvOruQd8fUecW99DCK04BkWD7z5KQ/wTAx+DazyoEE9dJt/zV8OIEQbM6kw==} + peerDependencies: + vue: ^3.5.0 + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + birpc@2.9.0: + resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + copy-anything@4.0.5: + resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} + engines: {node: '>=18'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + focus-trap@7.6.6: + resolution: {integrity: sha512-v/Z8bvMCajtx4mEXmOo7QEsIzlIOqRXTIwgUfsFOF9gEsespdbD0AkPIka1bSXZ8Y8oZ+2IVDQZePkTfEHZl7Q==} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=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] + + glob@11.1.0: + resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} + engines: {node: 20 || >=22} + hasBin: true + + gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + + htm@3.1.1: + resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-what@5.5.0: + resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} + engines: {node: '>=18'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@4.1.1: + resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} + engines: {node: 20 || >=22} + + js-yaml@3.14.2: + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} + hasBin: true + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + lru-cache@11.2.4: + resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} + engines: {node: 20 || >=22} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + mark.js@8.11.1: + resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + minimatch@10.1.1: + resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} + engines: {node: 20 || >=22} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minisearch@7.2.0: + resolution: {integrity: sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + oniguruma-parser@0.12.1: + resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} + + oniguruma-to-es@4.3.4: + resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-scurry@2.0.1: + resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} + engines: {node: 20 || >=22} + + perfect-debounce@2.0.0: + resolution: {integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + + qsu@1.10.4: + resolution: {integrity: sha512-v5RhwvHMkDdbXEaAxQh5re8q7DiG6EE70+CNwYVA6wZsa4gUrpur+D8lIO3PrzeCj3azc/S79X5v3BH8ILfr9A==} + engines: {node: '>=18.0.0'} + + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@6.0.1: + resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rollup@4.53.3: + resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shiki@3.19.0: + resolution: {integrity: sha512-77VJr3OR/VUZzPiStyRhADmO2jApMM0V2b1qf0RpfWya8Zr1PeZev5AEpPGAAKWdiYUtcZGBE4F5QvJml1PvWA==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + 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'} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + engines: {node: '>=12'} + + strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + + superjson@2.2.6: + resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} + engines: {node: '>=16'} + + tabbable@6.3.0: + resolution: {integrity: sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ==} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + + 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.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vite@7.2.6: + resolution: {integrity: sha512-tI2l/nFHC5rLh7+5+o7QjKjSR04ivXDF4jcgV0f/bTQ+OJiITy5S6gaynVsEM+7RqzufMnVbIon6Sr5x1SDYaQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitepress-sidebar@1.33.1: + resolution: {integrity: sha512-wPUbXezGakVldawixeRW5tKQTLKoMj2t4nWoThKfCltBM/9a38IE+wCXmmRNW22ZKC32SD/X/sG6NyCTK8QBRg==} + engines: {node: '>=18.0.0'} + + vitepress@2.0.0-alpha.15: + resolution: {integrity: sha512-jhjSYd10Z6RZiKOa7jy0xMVf5NB5oSc/lS3bD/QoUc6V8PrvQR5JhC9104NEt6+oTGY/ftieVWxY9v7YI+1IjA==} + hasBin: true + peerDependencies: + markdown-it-mathjax3: ^4 + oxc-minify: '*' + postcss: ^8 + peerDependenciesMeta: + markdown-it-mathjax3: + optional: true + oxc-minify: + optional: true + postcss: + optional: true + + vue@3.5.25: + resolution: {integrity: sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/parser@7.28.5': + dependencies: + '@babel/types': 7.28.5 + + '@babel/types@7.28.5': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@docsearch/css@4.3.2': {} + + '@docsearch/js@4.3.2': + dependencies: + htm: 3.1.1 + + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@iconify-json/simple-icons@1.2.61': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/types@2.0.0': {} + + '@isaacs/balanced-match@4.0.1': {} + + '@isaacs/brace-expansion@5.0.0': + dependencies: + '@isaacs/balanced-match': 4.0.1 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.2 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@rolldown/pluginutils@1.0.0-beta.50': {} + + '@rollup/rollup-android-arm-eabi@4.53.3': + optional: true + + '@rollup/rollup-android-arm64@4.53.3': + optional: true + + '@rollup/rollup-darwin-arm64@4.53.3': + optional: true + + '@rollup/rollup-darwin-x64@4.53.3': + optional: true + + '@rollup/rollup-freebsd-arm64@4.53.3': + optional: true + + '@rollup/rollup-freebsd-x64@4.53.3': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.53.3': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.53.3': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.53.3': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.53.3': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.53.3': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.53.3': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.53.3': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.53.3': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.53.3': + optional: true + + '@rollup/rollup-linux-x64-musl@4.53.3': + optional: true + + '@rollup/rollup-openharmony-arm64@4.53.3': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.53.3': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.53.3': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.53.3': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.53.3': + optional: true + + '@shikijs/core@3.19.0': + dependencies: + '@shikijs/types': 3.19.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@3.19.0': + dependencies: + '@shikijs/types': 3.19.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.4 + + '@shikijs/engine-oniguruma@3.19.0': + dependencies: + '@shikijs/types': 3.19.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.19.0': + dependencies: + '@shikijs/types': 3.19.0 + + '@shikijs/themes@3.19.0': + dependencies: + '@shikijs/types': 3.19.0 + + '@shikijs/transformers@3.19.0': + dependencies: + '@shikijs/core': 3.19.0 + '@shikijs/types': 3.19.0 + + '@shikijs/types@3.19.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@types/estree@1.0.8': {} + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/linkify-it@5.0.0': {} + + '@types/markdown-it@14.1.2': + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdurl@2.0.0': {} + + '@types/unist@3.0.3': {} + + '@types/web-bluetooth@0.0.21': {} + + '@ungap/structured-clone@1.3.0': {} + + '@vitejs/plugin-vue@6.0.2(vite@7.2.6)(vue@3.5.25)': + dependencies: + '@rolldown/pluginutils': 1.0.0-beta.50 + vite: 7.2.6 + vue: 3.5.25 + + '@vue/compiler-core@3.5.25': + dependencies: + '@babel/parser': 7.28.5 + '@vue/shared': 3.5.25 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.25': + dependencies: + '@vue/compiler-core': 3.5.25 + '@vue/shared': 3.5.25 + + '@vue/compiler-sfc@3.5.25': + dependencies: + '@babel/parser': 7.28.5 + '@vue/compiler-core': 3.5.25 + '@vue/compiler-dom': 3.5.25 + '@vue/compiler-ssr': 3.5.25 + '@vue/shared': 3.5.25 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.6 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.25': + dependencies: + '@vue/compiler-dom': 3.5.25 + '@vue/shared': 3.5.25 + + '@vue/devtools-api@8.0.5': + dependencies: + '@vue/devtools-kit': 8.0.5 + + '@vue/devtools-kit@8.0.5': + dependencies: + '@vue/devtools-shared': 8.0.5 + birpc: 2.9.0 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 2.0.0 + speakingurl: 14.0.1 + superjson: 2.2.6 + + '@vue/devtools-shared@8.0.5': + dependencies: + rfdc: 1.4.1 + + '@vue/reactivity@3.5.25': + dependencies: + '@vue/shared': 3.5.25 + + '@vue/runtime-core@3.5.25': + dependencies: + '@vue/reactivity': 3.5.25 + '@vue/shared': 3.5.25 + + '@vue/runtime-dom@3.5.25': + dependencies: + '@vue/reactivity': 3.5.25 + '@vue/runtime-core': 3.5.25 + '@vue/shared': 3.5.25 + csstype: 3.2.3 + + '@vue/server-renderer@3.5.25(vue@3.5.25)': + dependencies: + '@vue/compiler-ssr': 3.5.25 + '@vue/shared': 3.5.25 + vue: 3.5.25 + + '@vue/shared@3.5.25': {} + + '@vueuse/core@14.1.0(vue@3.5.25)': + dependencies: + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 14.1.0 + '@vueuse/shared': 14.1.0(vue@3.5.25) + vue: 3.5.25 + + '@vueuse/integrations@14.1.0(focus-trap@7.6.6)(vue@3.5.25)': + dependencies: + '@vueuse/core': 14.1.0(vue@3.5.25) + '@vueuse/shared': 14.1.0(vue@3.5.25) + vue: 3.5.25 + optionalDependencies: + focus-trap: 7.6.6 + + '@vueuse/metadata@14.1.0': {} + + '@vueuse/shared@14.1.0(vue@3.5.25)': + dependencies: + vue: 3.5.25 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + birpc@2.9.0: {} + + ccount@2.0.1: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + comma-separated-tokens@2.0.3: {} + + copy-anything@4.0.5: + dependencies: + is-what: 5.5.0 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + csstype@3.2.3: {} + + dequal@2.0.3: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + eastasianwidth@0.2.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + entities@4.5.0: {} + + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + + esprima@4.0.1: {} + + estree-walker@2.0.2: {} + + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + focus-trap@7.6.6: + dependencies: + tabbable: 6.3.0 + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + fsevents@2.3.3: + optional: true + + glob@11.1.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.1.1 + minimatch: 10.1.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.1 + + gray-matter@4.0.3: + dependencies: + js-yaml: 3.14.2 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@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.1.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hookable@5.5.3: {} + + htm@3.1.1: {} + + html-void-elements@3.0.0: {} + + is-extendable@0.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-what@5.5.0: {} + + isexe@2.0.0: {} + + jackspeak@4.1.1: + dependencies: + '@isaacs/cliui': 8.0.2 + + js-yaml@3.14.2: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + kind-of@6.0.3: {} + + lru-cache@11.2.4: {} + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + mark.js@8.11.1: {} + + mdast-util-to-hast@13.2.1: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-encode@2.0.1: {} + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + minimatch@10.1.1: + dependencies: + '@isaacs/brace-expansion': 5.0.0 + + minipass@7.1.2: {} + + minisearch@7.2.0: {} + + mitt@3.0.1: {} + + nanoid@3.3.11: {} + + oniguruma-parser@0.12.1: {} + + oniguruma-to-es@4.3.4: + dependencies: + oniguruma-parser: 0.12.1 + regex: 6.0.1 + regex-recursion: 6.0.2 + + package-json-from-dist@1.0.1: {} + + path-key@3.1.1: {} + + path-scurry@2.0.1: + dependencies: + lru-cache: 11.2.4 + minipass: 7.1.2 + + perfect-debounce@2.0.0: {} + + picocolors@1.1.1: {} + + picomatch@4.0.3: {} + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + property-information@7.1.0: {} + + qsu@1.10.4: {} + + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.0.1: + dependencies: + regex-utilities: 2.3.0 + + rfdc@1.4.1: {} + + rollup@4.53.3: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.53.3 + '@rollup/rollup-android-arm64': 4.53.3 + '@rollup/rollup-darwin-arm64': 4.53.3 + '@rollup/rollup-darwin-x64': 4.53.3 + '@rollup/rollup-freebsd-arm64': 4.53.3 + '@rollup/rollup-freebsd-x64': 4.53.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 + '@rollup/rollup-linux-arm-musleabihf': 4.53.3 + '@rollup/rollup-linux-arm64-gnu': 4.53.3 + '@rollup/rollup-linux-arm64-musl': 4.53.3 + '@rollup/rollup-linux-loong64-gnu': 4.53.3 + '@rollup/rollup-linux-ppc64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-musl': 4.53.3 + '@rollup/rollup-linux-s390x-gnu': 4.53.3 + '@rollup/rollup-linux-x64-gnu': 4.53.3 + '@rollup/rollup-linux-x64-musl': 4.53.3 + '@rollup/rollup-openharmony-arm64': 4.53.3 + '@rollup/rollup-win32-arm64-msvc': 4.53.3 + '@rollup/rollup-win32-ia32-msvc': 4.53.3 + '@rollup/rollup-win32-x64-gnu': 4.53.3 + '@rollup/rollup-win32-x64-msvc': 4.53.3 + fsevents: 2.3.3 + + section-matter@1.0.0: + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shiki@3.19.0: + dependencies: + '@shikijs/core': 3.19.0 + '@shikijs/engine-javascript': 3.19.0 + '@shikijs/engine-oniguruma': 3.19.0 + '@shikijs/langs': 3.19.0 + '@shikijs/themes': 3.19.0 + '@shikijs/types': 3.19.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + signal-exit@4.1.0: {} + + source-map-js@1.2.1: {} + + space-separated-tokens@2.0.2: {} + + speakingurl@14.0.1: {} + + sprintf-js@1.0.3: {} + + 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: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.2 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.2: + dependencies: + ansi-regex: 6.2.2 + + strip-bom-string@1.0.0: {} + + superjson@2.2.6: + dependencies: + copy-anything: 4.0.5 + + tabbable@6.3.0: {} + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + trim-lines@3.0.1: {} + + unist-util-is@6.0.1: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.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.3 + + vite@7.2.6: + dependencies: + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.53.3 + tinyglobby: 0.2.15 + optionalDependencies: + fsevents: 2.3.3 + + vitepress-sidebar@1.33.1: + dependencies: + glob: 11.1.0 + gray-matter: 4.0.3 + qsu: 1.10.4 + + vitepress@2.0.0-alpha.15(postcss@8.5.6): + dependencies: + '@docsearch/css': 4.3.2 + '@docsearch/js': 4.3.2 + '@iconify-json/simple-icons': 1.2.61 + '@shikijs/core': 3.19.0 + '@shikijs/transformers': 3.19.0 + '@shikijs/types': 3.19.0 + '@types/markdown-it': 14.1.2 + '@vitejs/plugin-vue': 6.0.2(vite@7.2.6)(vue@3.5.25) + '@vue/devtools-api': 8.0.5 + '@vue/shared': 3.5.25 + '@vueuse/core': 14.1.0(vue@3.5.25) + '@vueuse/integrations': 14.1.0(focus-trap@7.6.6)(vue@3.5.25) + focus-trap: 7.6.6 + mark.js: 8.11.1 + minisearch: 7.2.0 + shiki: 3.19.0 + vite: 7.2.6 + vue: 3.5.25 + optionalDependencies: + postcss: 8.5.6 + transitivePeerDependencies: + - '@types/node' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jiti + - jwt-decode + - less + - lightningcss + - nprogress + - qrcode + - sass + - sass-embedded + - sortablejs + - stylus + - sugarss + - terser + - tsx + - typescript + - universal-cookie + - yaml + + vue@3.5.25: + dependencies: + '@vue/compiler-dom': 3.5.25 + '@vue/compiler-sfc': 3.5.25 + '@vue/runtime-dom': 3.5.25 + '@vue/server-renderer': 3.5.25(vue@3.5.25) + '@vue/shared': 3.5.25 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.1.2 + + zwitch@2.0.4: {} From a48633d33c6bfa29bcac5939cad5116a8f191869 Mon Sep 17 00:00:00 2001 From: adithya Date: Sat, 6 Dec 2025 00:11:26 +0530 Subject: [PATCH 02/17] feat: Deploy to GitHub pages fix: pnpm Actions fix, corrected base fix: Build error fixes fix: Images not showing up in pages fix: Moved logo to public path --- .github/workflows/publish_docs.yml | 55 ++++++++++++++++++ docs/.vitepress/config.mts | 3 +- docs/getting-started.md | 16 ++--- docs/index.md | 2 +- .../frappe-docker.png} | Bin 5 files changed, 66 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/publish_docs.yml rename docs/{images/frappe_docker.png => public/frappe-docker.png} (100%) diff --git a/.github/workflows/publish_docs.yml b/.github/workflows/publish_docs.yml new file mode 100644 index 00000000..f8cd75f5 --- /dev/null +++ b/.github/workflows/publish_docs.yml @@ -0,0 +1,55 @@ +name: Deploy Frappe Docker Docs to GitHub Pages + +on: + push: + branches: [docs] + paths: + - "docs/**" + - ".github/workflows/publish_docs.yml" + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: true + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [20] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: 10 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: "pnpm" + + - name: Install dependencies + run: pnpm i --frozen-lockfile + + - name: Build Docs site + run: pnpm docs:build + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: docs/.vitepress/dist + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 316d9829..495139ae 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -5,8 +5,9 @@ import { withSidebar } from "vitepress-sidebar"; const vitePressOptions = { title: "Frappe Docker Docs", description: "Frappe in a Container", + base: "/frappe_docker/", themeConfig: { - logo: "../images/frappe_docker.png", + logo: "/frappe-docker.png", // https://vitepress.dev/reference/default-theme-config nav: [{ text: "Home", link: "/" }], diff --git a/docs/getting-started.md b/docs/getting-started.md index 72f9dee9..585b1f3f 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -89,7 +89,7 @@ Four predefined Dockerfiles are available, each serving different use cases: - **images/layered/** - Same final contents as `custom` but based on prebuilt images from Docker Hub; faster builds for production when using Frappe-managed dependency versions - **images/production/** - Installs only Frappe and ERPNext (not customizable with `apps.json`); best for **quick starts or exploration**; for real deployments, use `custom` or `layered` -> **Note:** For detailed build arguments and advanced configuration options, see [docs/container-setup/01-overview.md](container-setup/01-overview.md). +> **Note:** For detailed build arguments and advanced configuration options, see [docs/02-setup/01-overview.md](02-setup/01-overview.md). ### 📁 overrides/ - Compose File Extensions @@ -859,11 +859,11 @@ Many teams use both: Frappe for back-office/admin tools, Django for customer-fac ### Key Files in This Repository -- [`docs/development.md`](development.md) - Detailed development setup -- [`docs/container-setup/env-variables.md`](container-setup/env-variables.md) - Environment variable reference -- [`docs/single-server-example.md`](single-server-example.md) - Production deployment guide -- [`docs/site-operations.md`](site-operations.md) - Common site management tasks -- [`development/installer.py`](../development/installer.py) - Automated setup script +- [`docs/05-development/01-development.md`](05-development/01-development.md) - Detailed development setup +- [`docs/02-setup/04-env-variables.md`](02-setup/04-env-variables.md) - Environment variable reference +- [`docs/02-setup/07-single-server-example.md`](02-setup/07-single-server-example.md) - Production deployment guide +- [`docs/04-operations/01-site-operations.md`](04-operations/01-site-operations.md) - Common site management tasks +- `development/installer.py` - Automated setup script - [`pwd.yml`](../pwd.yml) - Quick test configuration - [`compose.yaml`](../compose.yaml) - Base Docker Compose configuration @@ -958,7 +958,7 @@ bench update # Update framework and apps ### Getting Help -1. **Check existing docs** - Most issues covered in [`docs/troubleshoot.md`](troubleshoot.md) +1. **Check existing docs** - Most issues covered in [`docs/07-troubleshooting/01-troubleshoot.md](07-troubleshooting/01-troubleshoot.md) 2. **Search Frappe Forum** - [discuss.frappe.io](https://discuss.frappe.io) 3. **GitHub Issues** - Search existing issues first 4. **Discord/Telegram** - Community real-time chat (links in main repo) @@ -969,7 +969,7 @@ Found issues or improvements for this guide? - Create an issue: [frappe_docker/issues](https://github.com/frappe/frappe_docker/issues) - Submit focused PRs: keep updates scoped and split large efforts across multiple pull requests. -- Review [CONTRIBUTING.md](../CONTRIBUTING.md) for coding standards and review expectations. +- Review CONTRIBUTING.md: for coding standards and review expectations. --- diff --git a/docs/index.md b/docs/index.md index 9c2f9096..3a108011 100644 --- a/docs/index.md +++ b/docs/index.md @@ -7,7 +7,7 @@ hero: # text: "Frappe in Container" tagline: "Documentation to use Docker based setup of Frappe framework" image: - src: ./images/frappe_docker.png + src: /frappe-docker.png actions: - theme: brand text: Getting Started diff --git a/docs/images/frappe_docker.png b/docs/public/frappe-docker.png similarity index 100% rename from docs/images/frappe_docker.png rename to docs/public/frappe-docker.png From c81d6c794bdc916d10a7720afdb98eeae47f6d40 Mon Sep 17 00:00:00 2001 From: adithya Date: Fri, 6 Feb 2026 23:21:39 +0530 Subject: [PATCH 03/17] fix: Contain all docs and related in docs folder The package.json and pnpm-lock.yaml are not part of the main repo but specific to the docs. The workflow will now target this folder for running. --- .github/workflows/publish_docs.yml | 13 +++++++++---- package.json => docs/package.json | 0 pnpm-lock.yaml => docs/pnpm-lock.yaml | 0 3 files changed, 9 insertions(+), 4 deletions(-) rename package.json => docs/package.json (100%) rename pnpm-lock.yaml => docs/pnpm-lock.yaml (100%) diff --git a/.github/workflows/publish_docs.yml b/.github/workflows/publish_docs.yml index f8cd75f5..df467e00 100644 --- a/.github/workflows/publish_docs.yml +++ b/.github/workflows/publish_docs.yml @@ -2,7 +2,7 @@ name: Deploy Frappe Docker Docs to GitHub Pages on: push: - branches: [docs] + branches: [docs-v2] paths: - "docs/**" - ".github/workflows/publish_docs.yml" @@ -13,6 +13,10 @@ permissions: pages: write id-token: write +defaults: + run: + working-directory: ./docs + concurrency: group: pages cancel-in-progress: true @@ -26,7 +30,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install pnpm uses: pnpm/action-setup@v4 @@ -34,10 +38,11 @@ jobs: version: 10 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} cache: "pnpm" + cache-dependency-path: ./docs - name: Install dependencies run: pnpm i --frozen-lockfile @@ -46,7 +51,7 @@ jobs: run: pnpm docs:build - name: Upload artifact - uses: actions/upload-pages-artifact@v3 + uses: actions/upload-pages-artifact@v4 with: path: docs/.vitepress/dist diff --git a/package.json b/docs/package.json similarity index 100% rename from package.json rename to docs/package.json diff --git a/pnpm-lock.yaml b/docs/pnpm-lock.yaml similarity index 100% rename from pnpm-lock.yaml rename to docs/pnpm-lock.yaml From cab78405cc8f77494d95ce3b2a1e786336eb2f11 Mon Sep 17 00:00:00 2001 From: adithya Date: Sat, 7 Feb 2026 00:17:38 +0530 Subject: [PATCH 04/17] refactor: Moving md files to src for clarity --- docs/.vitepress/config.mts | 5 +++-- docs/package.json | 11 ++++++----- .../01-choosing-a-deployment-method.md | 4 ++-- .../01-getting-started/02-docker-immutability.md | 0 docs/{ => src}/01-getting-started/03-arm64.md | 0 .../01-getting-started/04-single-compose-setup.md | 0 docs/{ => src}/01-getting-started/index.md | 0 docs/{ => src}/02-setup/01-overview.md | 0 docs/{ => src}/02-setup/02-build-setup.md | 0 docs/{ => src}/02-setup/03-start-setup.md | 0 docs/{ => src}/02-setup/04-env-variables.md | 0 docs/{ => src}/02-setup/05-overrides.md | 0 docs/{ => src}/02-setup/06-setup-examples.md | 0 docs/{ => src}/02-setup/07-single-server-example.md | 0 .../02-setup/08-single-server-nginxproxy-example.md | 0 docs/{ => src}/02-setup/index.md | 0 docs/{ => src}/03-production/01-tls-ssl-setup.md | 0 docs/{ => src}/03-production/02-backup-strategy.md | 0 docs/{ => src}/03-production/03-multi-tenancy.md | 0 .../03-production/04-nginx-proxy-acme-companion.md | 0 docs/{ => src}/03-production/05-caddy-https.md | 0 docs/{ => src}/03-production/index.md | 0 docs/{ => src}/04-operations/01-site-operations.md | 0 docs/{ => src}/04-operations/index.md | 0 docs/{ => src}/05-development/01-development.md | 0 docs/{ => src}/05-development/02-debugging.md | 0 .../05-development/03-local-services-connection.md | 0 docs/{ => src}/05-development/index.md | 0 .../01-migrate-from-multi-image-setup.md | 0 .../06-migration/02-traefik-v3-migration.md | 0 docs/{ => src}/06-migration/index.md | 0 .../{ => src}/07-troubleshooting/01-troubleshoot.md | 0 .../02-windows-nginx-entrypoint-error.md | 0 docs/{ => src}/07-troubleshooting/index.md | 0 .../08-reference/01-build-version-10-images.md | 0 docs/{ => src}/08-reference/index.md | 0 docs/{ => src}/getting-started.md | 0 ...ocker Desktop Screenshot - Resources section.png | Bin ...Docker Manual Screenshot - Resources section.png | Bin docs/{ => src}/index.md | 0 40 files changed, 11 insertions(+), 9 deletions(-) rename docs/{ => src}/01-getting-started/01-choosing-a-deployment-method.md (96%) rename docs/{ => src}/01-getting-started/02-docker-immutability.md (100%) rename docs/{ => src}/01-getting-started/03-arm64.md (100%) rename docs/{ => src}/01-getting-started/04-single-compose-setup.md (100%) rename docs/{ => src}/01-getting-started/index.md (100%) rename docs/{ => src}/02-setup/01-overview.md (100%) rename docs/{ => src}/02-setup/02-build-setup.md (100%) rename docs/{ => src}/02-setup/03-start-setup.md (100%) rename docs/{ => src}/02-setup/04-env-variables.md (100%) rename docs/{ => src}/02-setup/05-overrides.md (100%) rename docs/{ => src}/02-setup/06-setup-examples.md (100%) rename docs/{ => src}/02-setup/07-single-server-example.md (100%) rename docs/{ => src}/02-setup/08-single-server-nginxproxy-example.md (100%) rename docs/{ => src}/02-setup/index.md (100%) rename docs/{ => src}/03-production/01-tls-ssl-setup.md (100%) rename docs/{ => src}/03-production/02-backup-strategy.md (100%) rename docs/{ => src}/03-production/03-multi-tenancy.md (100%) rename docs/{ => src}/03-production/04-nginx-proxy-acme-companion.md (100%) rename docs/{ => src}/03-production/05-caddy-https.md (100%) rename docs/{ => src}/03-production/index.md (100%) rename docs/{ => src}/04-operations/01-site-operations.md (100%) rename docs/{ => src}/04-operations/index.md (100%) rename docs/{ => src}/05-development/01-development.md (100%) rename docs/{ => src}/05-development/02-debugging.md (100%) rename docs/{ => src}/05-development/03-local-services-connection.md (100%) rename docs/{ => src}/05-development/index.md (100%) rename docs/{ => src}/06-migration/01-migrate-from-multi-image-setup.md (100%) rename docs/{ => src}/06-migration/02-traefik-v3-migration.md (100%) rename docs/{ => src}/06-migration/index.md (100%) rename docs/{ => src}/07-troubleshooting/01-troubleshoot.md (100%) rename docs/{ => src}/07-troubleshooting/02-windows-nginx-entrypoint-error.md (100%) rename docs/{ => src}/07-troubleshooting/index.md (100%) rename docs/{ => src}/08-reference/01-build-version-10-images.md (100%) rename docs/{ => src}/08-reference/index.md (100%) rename docs/{ => src}/getting-started.md (100%) rename docs/{ => src}/images/Docker Desktop Screenshot - Resources section.png (100%) rename docs/{ => src}/images/Docker Manual Screenshot - Resources section.png (100%) rename docs/{ => src}/index.md (100%) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 495139ae..42adf4b2 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -5,6 +5,7 @@ import { withSidebar } from "vitepress-sidebar"; const vitePressOptions = { title: "Frappe Docker Docs", description: "Frappe in a Container", + srcDir: "./src", base: "/frappe_docker/", themeConfig: { logo: "/frappe-docker.png", @@ -18,11 +19,11 @@ const vitePressOptions = { }; const vitePressSidebarOptions = { - documentRootPath: "./docs", + documentRootPath: ".", useTitleFromFrontmatter: true, useFolderTitleFromIndexFile: true, }; export default defineConfig( - withSidebar(vitePressOptions, vitePressSidebarOptions) + withSidebar(vitePressOptions, vitePressSidebarOptions), ); diff --git a/docs/package.json b/docs/package.json index a365f27f..32e71881 100644 --- a/docs/package.json +++ b/docs/package.json @@ -4,8 +4,9 @@ "vitepress-sidebar": "^1.33.1" }, "scripts": { - "docs:dev": "vitepress dev docs", - "docs:build": "vitepress build docs", - "docs:preview": "vitepress preview docs" - } -} \ No newline at end of file + "docs:dev": "vitepress dev", + "docs:build": "vitepress build", + "docs:preview": "vitepress preview" + }, + "packageManager": "pnpm@10.28.2+sha512.41872f037ad22f7348e3b1debbaf7e867cfd448f2726d9cf74c08f19507c31d2c8e7a11525b983febc2df640b5438dee6023ebb1f84ed43cc2d654d2bc326264" +} diff --git a/docs/01-getting-started/01-choosing-a-deployment-method.md b/docs/src/01-getting-started/01-choosing-a-deployment-method.md similarity index 96% rename from docs/01-getting-started/01-choosing-a-deployment-method.md rename to docs/src/01-getting-started/01-choosing-a-deployment-method.md index 11b39a8f..4b343c06 100644 --- a/docs/01-getting-started/01-choosing-a-deployment-method.md +++ b/docs/src/01-getting-started/01-choosing-a-deployment-method.md @@ -45,7 +45,7 @@ If you start with `pwd.yml`, you should expect to **throw the environment away** ## 2. VS Code Devcontainers – Local Development Setup -The development setup described in [`/docs/05-development`](../05-development) +The development setup described in [`/docs/05-development/development.md`](../05-development/01-development.md) uses **VS Code Devcontainers** to provide a **local Frappe development environment**. @@ -103,7 +103,7 @@ It uses: - The main `compose.yml` - Override files from the `overrides/` directory -Detailed instructions are available in [`/docs/02-setup`](../02-setup) +Detailed instructions are available in [`/docs/02-setup`](../02-setup/01-overview.md) ### Characteristics diff --git a/docs/01-getting-started/02-docker-immutability.md b/docs/src/01-getting-started/02-docker-immutability.md similarity index 100% rename from docs/01-getting-started/02-docker-immutability.md rename to docs/src/01-getting-started/02-docker-immutability.md diff --git a/docs/01-getting-started/03-arm64.md b/docs/src/01-getting-started/03-arm64.md similarity index 100% rename from docs/01-getting-started/03-arm64.md rename to docs/src/01-getting-started/03-arm64.md diff --git a/docs/01-getting-started/04-single-compose-setup.md b/docs/src/01-getting-started/04-single-compose-setup.md similarity index 100% rename from docs/01-getting-started/04-single-compose-setup.md rename to docs/src/01-getting-started/04-single-compose-setup.md diff --git a/docs/01-getting-started/index.md b/docs/src/01-getting-started/index.md similarity index 100% rename from docs/01-getting-started/index.md rename to docs/src/01-getting-started/index.md diff --git a/docs/02-setup/01-overview.md b/docs/src/02-setup/01-overview.md similarity index 100% rename from docs/02-setup/01-overview.md rename to docs/src/02-setup/01-overview.md diff --git a/docs/02-setup/02-build-setup.md b/docs/src/02-setup/02-build-setup.md similarity index 100% rename from docs/02-setup/02-build-setup.md rename to docs/src/02-setup/02-build-setup.md diff --git a/docs/02-setup/03-start-setup.md b/docs/src/02-setup/03-start-setup.md similarity index 100% rename from docs/02-setup/03-start-setup.md rename to docs/src/02-setup/03-start-setup.md diff --git a/docs/02-setup/04-env-variables.md b/docs/src/02-setup/04-env-variables.md similarity index 100% rename from docs/02-setup/04-env-variables.md rename to docs/src/02-setup/04-env-variables.md diff --git a/docs/02-setup/05-overrides.md b/docs/src/02-setup/05-overrides.md similarity index 100% rename from docs/02-setup/05-overrides.md rename to docs/src/02-setup/05-overrides.md diff --git a/docs/02-setup/06-setup-examples.md b/docs/src/02-setup/06-setup-examples.md similarity index 100% rename from docs/02-setup/06-setup-examples.md rename to docs/src/02-setup/06-setup-examples.md diff --git a/docs/02-setup/07-single-server-example.md b/docs/src/02-setup/07-single-server-example.md similarity index 100% rename from docs/02-setup/07-single-server-example.md rename to docs/src/02-setup/07-single-server-example.md diff --git a/docs/02-setup/08-single-server-nginxproxy-example.md b/docs/src/02-setup/08-single-server-nginxproxy-example.md similarity index 100% rename from docs/02-setup/08-single-server-nginxproxy-example.md rename to docs/src/02-setup/08-single-server-nginxproxy-example.md diff --git a/docs/02-setup/index.md b/docs/src/02-setup/index.md similarity index 100% rename from docs/02-setup/index.md rename to docs/src/02-setup/index.md diff --git a/docs/03-production/01-tls-ssl-setup.md b/docs/src/03-production/01-tls-ssl-setup.md similarity index 100% rename from docs/03-production/01-tls-ssl-setup.md rename to docs/src/03-production/01-tls-ssl-setup.md diff --git a/docs/03-production/02-backup-strategy.md b/docs/src/03-production/02-backup-strategy.md similarity index 100% rename from docs/03-production/02-backup-strategy.md rename to docs/src/03-production/02-backup-strategy.md diff --git a/docs/03-production/03-multi-tenancy.md b/docs/src/03-production/03-multi-tenancy.md similarity index 100% rename from docs/03-production/03-multi-tenancy.md rename to docs/src/03-production/03-multi-tenancy.md diff --git a/docs/03-production/04-nginx-proxy-acme-companion.md b/docs/src/03-production/04-nginx-proxy-acme-companion.md similarity index 100% rename from docs/03-production/04-nginx-proxy-acme-companion.md rename to docs/src/03-production/04-nginx-proxy-acme-companion.md diff --git a/docs/03-production/05-caddy-https.md b/docs/src/03-production/05-caddy-https.md similarity index 100% rename from docs/03-production/05-caddy-https.md rename to docs/src/03-production/05-caddy-https.md diff --git a/docs/03-production/index.md b/docs/src/03-production/index.md similarity index 100% rename from docs/03-production/index.md rename to docs/src/03-production/index.md diff --git a/docs/04-operations/01-site-operations.md b/docs/src/04-operations/01-site-operations.md similarity index 100% rename from docs/04-operations/01-site-operations.md rename to docs/src/04-operations/01-site-operations.md diff --git a/docs/04-operations/index.md b/docs/src/04-operations/index.md similarity index 100% rename from docs/04-operations/index.md rename to docs/src/04-operations/index.md diff --git a/docs/05-development/01-development.md b/docs/src/05-development/01-development.md similarity index 100% rename from docs/05-development/01-development.md rename to docs/src/05-development/01-development.md diff --git a/docs/05-development/02-debugging.md b/docs/src/05-development/02-debugging.md similarity index 100% rename from docs/05-development/02-debugging.md rename to docs/src/05-development/02-debugging.md diff --git a/docs/05-development/03-local-services-connection.md b/docs/src/05-development/03-local-services-connection.md similarity index 100% rename from docs/05-development/03-local-services-connection.md rename to docs/src/05-development/03-local-services-connection.md diff --git a/docs/05-development/index.md b/docs/src/05-development/index.md similarity index 100% rename from docs/05-development/index.md rename to docs/src/05-development/index.md diff --git a/docs/06-migration/01-migrate-from-multi-image-setup.md b/docs/src/06-migration/01-migrate-from-multi-image-setup.md similarity index 100% rename from docs/06-migration/01-migrate-from-multi-image-setup.md rename to docs/src/06-migration/01-migrate-from-multi-image-setup.md diff --git a/docs/06-migration/02-traefik-v3-migration.md b/docs/src/06-migration/02-traefik-v3-migration.md similarity index 100% rename from docs/06-migration/02-traefik-v3-migration.md rename to docs/src/06-migration/02-traefik-v3-migration.md diff --git a/docs/06-migration/index.md b/docs/src/06-migration/index.md similarity index 100% rename from docs/06-migration/index.md rename to docs/src/06-migration/index.md diff --git a/docs/07-troubleshooting/01-troubleshoot.md b/docs/src/07-troubleshooting/01-troubleshoot.md similarity index 100% rename from docs/07-troubleshooting/01-troubleshoot.md rename to docs/src/07-troubleshooting/01-troubleshoot.md diff --git a/docs/07-troubleshooting/02-windows-nginx-entrypoint-error.md b/docs/src/07-troubleshooting/02-windows-nginx-entrypoint-error.md similarity index 100% rename from docs/07-troubleshooting/02-windows-nginx-entrypoint-error.md rename to docs/src/07-troubleshooting/02-windows-nginx-entrypoint-error.md diff --git a/docs/07-troubleshooting/index.md b/docs/src/07-troubleshooting/index.md similarity index 100% rename from docs/07-troubleshooting/index.md rename to docs/src/07-troubleshooting/index.md diff --git a/docs/08-reference/01-build-version-10-images.md b/docs/src/08-reference/01-build-version-10-images.md similarity index 100% rename from docs/08-reference/01-build-version-10-images.md rename to docs/src/08-reference/01-build-version-10-images.md diff --git a/docs/08-reference/index.md b/docs/src/08-reference/index.md similarity index 100% rename from docs/08-reference/index.md rename to docs/src/08-reference/index.md diff --git a/docs/getting-started.md b/docs/src/getting-started.md similarity index 100% rename from docs/getting-started.md rename to docs/src/getting-started.md diff --git a/docs/images/Docker Desktop Screenshot - Resources section.png b/docs/src/images/Docker Desktop Screenshot - Resources section.png similarity index 100% rename from docs/images/Docker Desktop Screenshot - Resources section.png rename to docs/src/images/Docker Desktop Screenshot - Resources section.png diff --git a/docs/images/Docker Manual Screenshot - Resources section.png b/docs/src/images/Docker Manual Screenshot - Resources section.png similarity index 100% rename from docs/images/Docker Manual Screenshot - Resources section.png rename to docs/src/images/Docker Manual Screenshot - Resources section.png diff --git a/docs/index.md b/docs/src/index.md similarity index 100% rename from docs/index.md rename to docs/src/index.md From 2901865e74b8e2f5320547d2d2cbdf7d1be82bf3 Mon Sep 17 00:00:00 2001 From: adithya Date: Sat, 7 Feb 2026 00:23:45 +0530 Subject: [PATCH 05/17] fix: Frappe Docker logo moved public folder to docs. --- .github/workflows/publish_docs.yml | 2 +- docs/{ => src}/public/frappe-docker.png | Bin 2 files changed, 1 insertion(+), 1 deletion(-) rename docs/{ => src}/public/frappe-docker.png (100%) diff --git a/.github/workflows/publish_docs.yml b/.github/workflows/publish_docs.yml index df467e00..30683402 100644 --- a/.github/workflows/publish_docs.yml +++ b/.github/workflows/publish_docs.yml @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [20] + node-version: [24] steps: - name: Checkout diff --git a/docs/public/frappe-docker.png b/docs/src/public/frappe-docker.png similarity index 100% rename from docs/public/frappe-docker.png rename to docs/src/public/frappe-docker.png From b6247270125bbeb28eae891294141440a9b715da Mon Sep 17 00:00:00 2001 From: adithya Date: Sat, 7 Feb 2026 00:31:01 +0530 Subject: [PATCH 06/17] fix: Sidebar config issue Properly source the sidebar links --- docs/.vitepress/config.mts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 42adf4b2..403cb622 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -19,7 +19,7 @@ const vitePressOptions = { }; const vitePressSidebarOptions = { - documentRootPath: ".", + documentRootPath: "./src", useTitleFromFrontmatter: true, useFolderTitleFromIndexFile: true, }; From 98f83f96762ddbb2ae5da6f4d01c1cd1972d21c8 Mon Sep 17 00:00:00 2001 From: adithya Date: Sat, 7 Feb 2026 00:44:43 +0530 Subject: [PATCH 07/17] feat: added favicon --- docs/.vitepress/config.mts | 5 +++-- docs/src/public/favicon.png | Bin 0 -> 45163 bytes 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 docs/src/public/favicon.png diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 403cb622..dbd62a79 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -1,12 +1,13 @@ -import { defineConfig } from "vitepress"; +import { defineConfig, UserConfig } from "vitepress"; import { withSidebar } from "vitepress-sidebar"; // https://vitepress.dev/reference/site-config -const vitePressOptions = { +const vitePressOptions: UserConfig = { title: "Frappe Docker Docs", description: "Frappe in a Container", srcDir: "./src", base: "/frappe_docker/", + head: [["link", { rel: "icon", href: "/frappe_docker/favicon.png" }]], themeConfig: { logo: "/frappe-docker.png", // https://vitepress.dev/reference/default-theme-config diff --git a/docs/src/public/favicon.png b/docs/src/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..7f1138ab23a9ab37897d0ad4c4be60d64b03cfb9 GIT binary patch literal 45163 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 Vzu01V4C-=Zc+liP=Kixc{|ni Date: Sat, 7 Feb 2026 00:56:43 +0530 Subject: [PATCH 08/17] fix: Changed branch to `main` For creating pull request --- .github/workflows/publish_docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish_docs.yml b/.github/workflows/publish_docs.yml index 30683402..d2f6c2b2 100644 --- a/.github/workflows/publish_docs.yml +++ b/.github/workflows/publish_docs.yml @@ -2,7 +2,7 @@ name: Deploy Frappe Docker Docs to GitHub Pages on: push: - branches: [docs-v2] + branches: [main] paths: - "docs/**" - ".github/workflows/publish_docs.yml" From 477376edc42c598887ceccdef353b0407c72508d Mon Sep 17 00:00:00 2001 From: adithya Date: Sat, 7 Feb 2026 01:02:15 +0530 Subject: [PATCH 09/17] refactor: Moved md files back to docs Refactor can be considered later if needed. --- docs/.vitepress/config.mts | 3 +-- .../01-choosing-a-deployment-method.md | 0 .../01-getting-started/02-docker-immutability.md | 0 docs/{src => }/01-getting-started/03-arm64.md | 0 .../01-getting-started/04-single-compose-setup.md | 0 docs/{src => }/01-getting-started/index.md | 0 docs/{src => }/02-setup/01-overview.md | 0 docs/{src => }/02-setup/02-build-setup.md | 0 docs/{src => }/02-setup/03-start-setup.md | 0 docs/{src => }/02-setup/04-env-variables.md | 0 docs/{src => }/02-setup/05-overrides.md | 0 docs/{src => }/02-setup/06-setup-examples.md | 0 docs/{src => }/02-setup/07-single-server-example.md | 0 .../02-setup/08-single-server-nginxproxy-example.md | 0 docs/{src => }/02-setup/index.md | 0 docs/{src => }/03-production/01-tls-ssl-setup.md | 0 docs/{src => }/03-production/02-backup-strategy.md | 0 docs/{src => }/03-production/03-multi-tenancy.md | 0 .../03-production/04-nginx-proxy-acme-companion.md | 0 docs/{src => }/03-production/05-caddy-https.md | 0 docs/{src => }/03-production/index.md | 0 docs/{src => }/04-operations/01-site-operations.md | 0 docs/{src => }/04-operations/index.md | 0 docs/{src => }/05-development/01-development.md | 0 docs/{src => }/05-development/02-debugging.md | 0 .../05-development/03-local-services-connection.md | 0 docs/{src => }/05-development/index.md | 0 .../01-migrate-from-multi-image-setup.md | 0 .../06-migration/02-traefik-v3-migration.md | 0 docs/{src => }/06-migration/index.md | 0 .../{src => }/07-troubleshooting/01-troubleshoot.md | 0 .../02-windows-nginx-entrypoint-error.md | 0 docs/{src => }/07-troubleshooting/index.md | 0 .../08-reference/01-build-version-10-images.md | 0 docs/{src => }/08-reference/index.md | 0 docs/{src => }/getting-started.md | 0 ...ocker Desktop Screenshot - Resources section.png | Bin ...Docker Manual Screenshot - Resources section.png | Bin docs/{src => }/index.md | 0 docs/{src => }/public/favicon.png | Bin docs/{src => }/public/frappe-docker.png | Bin 41 files changed, 1 insertion(+), 2 deletions(-) rename docs/{src => }/01-getting-started/01-choosing-a-deployment-method.md (100%) rename docs/{src => }/01-getting-started/02-docker-immutability.md (100%) rename docs/{src => }/01-getting-started/03-arm64.md (100%) rename docs/{src => }/01-getting-started/04-single-compose-setup.md (100%) rename docs/{src => }/01-getting-started/index.md (100%) rename docs/{src => }/02-setup/01-overview.md (100%) rename docs/{src => }/02-setup/02-build-setup.md (100%) rename docs/{src => }/02-setup/03-start-setup.md (100%) rename docs/{src => }/02-setup/04-env-variables.md (100%) rename docs/{src => }/02-setup/05-overrides.md (100%) rename docs/{src => }/02-setup/06-setup-examples.md (100%) rename docs/{src => }/02-setup/07-single-server-example.md (100%) rename docs/{src => }/02-setup/08-single-server-nginxproxy-example.md (100%) rename docs/{src => }/02-setup/index.md (100%) rename docs/{src => }/03-production/01-tls-ssl-setup.md (100%) rename docs/{src => }/03-production/02-backup-strategy.md (100%) rename docs/{src => }/03-production/03-multi-tenancy.md (100%) rename docs/{src => }/03-production/04-nginx-proxy-acme-companion.md (100%) rename docs/{src => }/03-production/05-caddy-https.md (100%) rename docs/{src => }/03-production/index.md (100%) rename docs/{src => }/04-operations/01-site-operations.md (100%) rename docs/{src => }/04-operations/index.md (100%) rename docs/{src => }/05-development/01-development.md (100%) rename docs/{src => }/05-development/02-debugging.md (100%) rename docs/{src => }/05-development/03-local-services-connection.md (100%) rename docs/{src => }/05-development/index.md (100%) rename docs/{src => }/06-migration/01-migrate-from-multi-image-setup.md (100%) rename docs/{src => }/06-migration/02-traefik-v3-migration.md (100%) rename docs/{src => }/06-migration/index.md (100%) rename docs/{src => }/07-troubleshooting/01-troubleshoot.md (100%) rename docs/{src => }/07-troubleshooting/02-windows-nginx-entrypoint-error.md (100%) rename docs/{src => }/07-troubleshooting/index.md (100%) rename docs/{src => }/08-reference/01-build-version-10-images.md (100%) rename docs/{src => }/08-reference/index.md (100%) rename docs/{src => }/getting-started.md (100%) rename docs/{src => }/images/Docker Desktop Screenshot - Resources section.png (100%) rename docs/{src => }/images/Docker Manual Screenshot - Resources section.png (100%) rename docs/{src => }/index.md (100%) rename docs/{src => }/public/favicon.png (100%) rename docs/{src => }/public/frappe-docker.png (100%) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index dbd62a79..192c7ca0 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -5,7 +5,6 @@ import { withSidebar } from "vitepress-sidebar"; const vitePressOptions: UserConfig = { title: "Frappe Docker Docs", description: "Frappe in a Container", - srcDir: "./src", base: "/frappe_docker/", head: [["link", { rel: "icon", href: "/frappe_docker/favicon.png" }]], themeConfig: { @@ -20,7 +19,7 @@ const vitePressOptions: UserConfig = { }; const vitePressSidebarOptions = { - documentRootPath: "./src", + documentRootPath: ".", useTitleFromFrontmatter: true, useFolderTitleFromIndexFile: true, }; diff --git a/docs/src/01-getting-started/01-choosing-a-deployment-method.md b/docs/01-getting-started/01-choosing-a-deployment-method.md similarity index 100% rename from docs/src/01-getting-started/01-choosing-a-deployment-method.md rename to docs/01-getting-started/01-choosing-a-deployment-method.md diff --git a/docs/src/01-getting-started/02-docker-immutability.md b/docs/01-getting-started/02-docker-immutability.md similarity index 100% rename from docs/src/01-getting-started/02-docker-immutability.md rename to docs/01-getting-started/02-docker-immutability.md diff --git a/docs/src/01-getting-started/03-arm64.md b/docs/01-getting-started/03-arm64.md similarity index 100% rename from docs/src/01-getting-started/03-arm64.md rename to docs/01-getting-started/03-arm64.md diff --git a/docs/src/01-getting-started/04-single-compose-setup.md b/docs/01-getting-started/04-single-compose-setup.md similarity index 100% rename from docs/src/01-getting-started/04-single-compose-setup.md rename to docs/01-getting-started/04-single-compose-setup.md diff --git a/docs/src/01-getting-started/index.md b/docs/01-getting-started/index.md similarity index 100% rename from docs/src/01-getting-started/index.md rename to docs/01-getting-started/index.md diff --git a/docs/src/02-setup/01-overview.md b/docs/02-setup/01-overview.md similarity index 100% rename from docs/src/02-setup/01-overview.md rename to docs/02-setup/01-overview.md diff --git a/docs/src/02-setup/02-build-setup.md b/docs/02-setup/02-build-setup.md similarity index 100% rename from docs/src/02-setup/02-build-setup.md rename to docs/02-setup/02-build-setup.md diff --git a/docs/src/02-setup/03-start-setup.md b/docs/02-setup/03-start-setup.md similarity index 100% rename from docs/src/02-setup/03-start-setup.md rename to docs/02-setup/03-start-setup.md diff --git a/docs/src/02-setup/04-env-variables.md b/docs/02-setup/04-env-variables.md similarity index 100% rename from docs/src/02-setup/04-env-variables.md rename to docs/02-setup/04-env-variables.md diff --git a/docs/src/02-setup/05-overrides.md b/docs/02-setup/05-overrides.md similarity index 100% rename from docs/src/02-setup/05-overrides.md rename to docs/02-setup/05-overrides.md diff --git a/docs/src/02-setup/06-setup-examples.md b/docs/02-setup/06-setup-examples.md similarity index 100% rename from docs/src/02-setup/06-setup-examples.md rename to docs/02-setup/06-setup-examples.md diff --git a/docs/src/02-setup/07-single-server-example.md b/docs/02-setup/07-single-server-example.md similarity index 100% rename from docs/src/02-setup/07-single-server-example.md rename to docs/02-setup/07-single-server-example.md diff --git a/docs/src/02-setup/08-single-server-nginxproxy-example.md b/docs/02-setup/08-single-server-nginxproxy-example.md similarity index 100% rename from docs/src/02-setup/08-single-server-nginxproxy-example.md rename to docs/02-setup/08-single-server-nginxproxy-example.md diff --git a/docs/src/02-setup/index.md b/docs/02-setup/index.md similarity index 100% rename from docs/src/02-setup/index.md rename to docs/02-setup/index.md diff --git a/docs/src/03-production/01-tls-ssl-setup.md b/docs/03-production/01-tls-ssl-setup.md similarity index 100% rename from docs/src/03-production/01-tls-ssl-setup.md rename to docs/03-production/01-tls-ssl-setup.md diff --git a/docs/src/03-production/02-backup-strategy.md b/docs/03-production/02-backup-strategy.md similarity index 100% rename from docs/src/03-production/02-backup-strategy.md rename to docs/03-production/02-backup-strategy.md diff --git a/docs/src/03-production/03-multi-tenancy.md b/docs/03-production/03-multi-tenancy.md similarity index 100% rename from docs/src/03-production/03-multi-tenancy.md rename to docs/03-production/03-multi-tenancy.md diff --git a/docs/src/03-production/04-nginx-proxy-acme-companion.md b/docs/03-production/04-nginx-proxy-acme-companion.md similarity index 100% rename from docs/src/03-production/04-nginx-proxy-acme-companion.md rename to docs/03-production/04-nginx-proxy-acme-companion.md diff --git a/docs/src/03-production/05-caddy-https.md b/docs/03-production/05-caddy-https.md similarity index 100% rename from docs/src/03-production/05-caddy-https.md rename to docs/03-production/05-caddy-https.md diff --git a/docs/src/03-production/index.md b/docs/03-production/index.md similarity index 100% rename from docs/src/03-production/index.md rename to docs/03-production/index.md diff --git a/docs/src/04-operations/01-site-operations.md b/docs/04-operations/01-site-operations.md similarity index 100% rename from docs/src/04-operations/01-site-operations.md rename to docs/04-operations/01-site-operations.md diff --git a/docs/src/04-operations/index.md b/docs/04-operations/index.md similarity index 100% rename from docs/src/04-operations/index.md rename to docs/04-operations/index.md diff --git a/docs/src/05-development/01-development.md b/docs/05-development/01-development.md similarity index 100% rename from docs/src/05-development/01-development.md rename to docs/05-development/01-development.md diff --git a/docs/src/05-development/02-debugging.md b/docs/05-development/02-debugging.md similarity index 100% rename from docs/src/05-development/02-debugging.md rename to docs/05-development/02-debugging.md diff --git a/docs/src/05-development/03-local-services-connection.md b/docs/05-development/03-local-services-connection.md similarity index 100% rename from docs/src/05-development/03-local-services-connection.md rename to docs/05-development/03-local-services-connection.md diff --git a/docs/src/05-development/index.md b/docs/05-development/index.md similarity index 100% rename from docs/src/05-development/index.md rename to docs/05-development/index.md diff --git a/docs/src/06-migration/01-migrate-from-multi-image-setup.md b/docs/06-migration/01-migrate-from-multi-image-setup.md similarity index 100% rename from docs/src/06-migration/01-migrate-from-multi-image-setup.md rename to docs/06-migration/01-migrate-from-multi-image-setup.md diff --git a/docs/src/06-migration/02-traefik-v3-migration.md b/docs/06-migration/02-traefik-v3-migration.md similarity index 100% rename from docs/src/06-migration/02-traefik-v3-migration.md rename to docs/06-migration/02-traefik-v3-migration.md diff --git a/docs/src/06-migration/index.md b/docs/06-migration/index.md similarity index 100% rename from docs/src/06-migration/index.md rename to docs/06-migration/index.md diff --git a/docs/src/07-troubleshooting/01-troubleshoot.md b/docs/07-troubleshooting/01-troubleshoot.md similarity index 100% rename from docs/src/07-troubleshooting/01-troubleshoot.md rename to docs/07-troubleshooting/01-troubleshoot.md diff --git a/docs/src/07-troubleshooting/02-windows-nginx-entrypoint-error.md b/docs/07-troubleshooting/02-windows-nginx-entrypoint-error.md similarity index 100% rename from docs/src/07-troubleshooting/02-windows-nginx-entrypoint-error.md rename to docs/07-troubleshooting/02-windows-nginx-entrypoint-error.md diff --git a/docs/src/07-troubleshooting/index.md b/docs/07-troubleshooting/index.md similarity index 100% rename from docs/src/07-troubleshooting/index.md rename to docs/07-troubleshooting/index.md diff --git a/docs/src/08-reference/01-build-version-10-images.md b/docs/08-reference/01-build-version-10-images.md similarity index 100% rename from docs/src/08-reference/01-build-version-10-images.md rename to docs/08-reference/01-build-version-10-images.md diff --git a/docs/src/08-reference/index.md b/docs/08-reference/index.md similarity index 100% rename from docs/src/08-reference/index.md rename to docs/08-reference/index.md diff --git a/docs/src/getting-started.md b/docs/getting-started.md similarity index 100% rename from docs/src/getting-started.md rename to docs/getting-started.md diff --git a/docs/src/images/Docker Desktop Screenshot - Resources section.png b/docs/images/Docker Desktop Screenshot - Resources section.png similarity index 100% rename from docs/src/images/Docker Desktop Screenshot - Resources section.png rename to docs/images/Docker Desktop Screenshot - Resources section.png diff --git a/docs/src/images/Docker Manual Screenshot - Resources section.png b/docs/images/Docker Manual Screenshot - Resources section.png similarity index 100% rename from docs/src/images/Docker Manual Screenshot - Resources section.png rename to docs/images/Docker Manual Screenshot - Resources section.png diff --git a/docs/src/index.md b/docs/index.md similarity index 100% rename from docs/src/index.md rename to docs/index.md diff --git a/docs/src/public/favicon.png b/docs/public/favicon.png similarity index 100% rename from docs/src/public/favicon.png rename to docs/public/favicon.png diff --git a/docs/src/public/frappe-docker.png b/docs/public/frappe-docker.png similarity index 100% rename from docs/src/public/frappe-docker.png rename to docs/public/frappe-docker.png From 208aa7b7f4203da622a8fae3f53c714050581771 Mon Sep 17 00:00:00 2001 From: adithya Date: Sat, 7 Feb 2026 01:07:38 +0530 Subject: [PATCH 10/17] fix: Header fix Header in TLS / SSL setup was accidentally reverted to older one. Now replaced with the new one. --- docs/03-production/01-tls-ssl-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/03-production/01-tls-ssl-setup.md b/docs/03-production/01-tls-ssl-setup.md index e2ea2e0e..91104455 100644 --- a/docs/03-production/01-tls-ssl-setup.md +++ b/docs/03-production/01-tls-ssl-setup.md @@ -2,7 +2,7 @@ title: TLS/SSL Setup Overview --- -# Accessing ERPNext through https on local deployment +# TLS/SSL Setup Overview Frappe Docker supports multiple TLS/SSL approaches. Choose the one that matches your routing needs and where you want the proxy to run. From bb06d6bb092ad22c5c0737eac63d74ef2d08ddd2 Mon Sep 17 00:00:00 2001 From: adithya Date: Sat, 7 Feb 2026 01:23:54 +0530 Subject: [PATCH 11/17] fix: Added missing title metadata New files didn't have YAML metadata, it is added now. --- docs/01-getting-started/01-choosing-a-deployment-method.md | 4 ++++ docs/01-getting-started/02-docker-immutability.md | 4 ++++ docs/02-setup/08-single-server-nginxproxy-example.md | 4 ++++ docs/03-production/04-nginx-proxy-acme-companion.md | 4 ++++ docs/03-production/05-caddy-https.md | 4 ++++ docs/06-migration/02-traefik-v3-migration.md | 4 ++++ 6 files changed, 24 insertions(+) diff --git a/docs/01-getting-started/01-choosing-a-deployment-method.md b/docs/01-getting-started/01-choosing-a-deployment-method.md index 4b343c06..409a50be 100644 --- a/docs/01-getting-started/01-choosing-a-deployment-method.md +++ b/docs/01-getting-started/01-choosing-a-deployment-method.md @@ -1,3 +1,7 @@ +--- +title: Choosing a Method +--- + # Choosing a Deployment or Development Method This repository (`frappe_docker`) supports **multiple ways to run Frappe using Docker**. diff --git a/docs/01-getting-started/02-docker-immutability.md b/docs/01-getting-started/02-docker-immutability.md index 38a82330..c42ba65d 100644 --- a/docs/01-getting-started/02-docker-immutability.md +++ b/docs/01-getting-started/02-docker-immutability.md @@ -1,3 +1,7 @@ +--- +title: Docker Immutability +--- + # Important Concept: Immutability and Persistence A frequent source of confusion is how **Docker-based Frappe deployments handle persistence**. diff --git a/docs/02-setup/08-single-server-nginxproxy-example.md b/docs/02-setup/08-single-server-nginxproxy-example.md index ec9ef913..0049e39f 100644 --- a/docs/02-setup/08-single-server-nginxproxy-example.md +++ b/docs/02-setup/08-single-server-nginxproxy-example.md @@ -1,3 +1,7 @@ +--- +title: Single Server Example +--- + # Single Server Example (nginx-proxy + acme-companion) This guide demonstrates a single-server setup using nginx-proxy and acme-companion for HTTPS. It is best for a small number of hostnames and a single bench. If you need multiple benches or advanced routing, use the Traefik-based example instead. diff --git a/docs/03-production/04-nginx-proxy-acme-companion.md b/docs/03-production/04-nginx-proxy-acme-companion.md index 15c474eb..70a0e223 100644 --- a/docs/03-production/04-nginx-proxy-acme-companion.md +++ b/docs/03-production/04-nginx-proxy-acme-companion.md @@ -1,3 +1,7 @@ +--- +title: NGINX and ACME Companion +--- + # nginx-proxy + acme-companion (HTTPS) This guide explains how to use nginx-proxy with acme-companion to provide HTTPS for a Frappe Docker stack. diff --git a/docs/03-production/05-caddy-https.md b/docs/03-production/05-caddy-https.md index a8683c5d..45aba8cc 100644 --- a/docs/03-production/05-caddy-https.md +++ b/docs/03-production/05-caddy-https.md @@ -1,3 +1,7 @@ +--- +title: Caddy with HTTPS +--- + # Caddy reverse proxy (local HTTPS) This guide shows how to use Caddy as an external reverse proxy in front of the frontend container. It is most useful for local HTTPS or internal networks. diff --git a/docs/06-migration/02-traefik-v3-migration.md b/docs/06-migration/02-traefik-v3-migration.md index cb0eee11..cb116e23 100644 --- a/docs/06-migration/02-traefik-v3-migration.md +++ b/docs/06-migration/02-traefik-v3-migration.md @@ -1,3 +1,7 @@ +--- +title: Migrate Traefik from v2 to v3 +--- + # Migrate an existing Traefik v2 instance to v3 Use this guide if you already run Traefik v2 with `frappe_docker` and want to upgrade to v3. It focuses on the image upgrade and the v3 routing rule changes that affect existing setups. From f4faecc1d621edc20049bdc74c98705194d0676d Mon Sep 17 00:00:00 2001 From: adithya Date: Tue, 10 Feb 2026 01:15:30 +0530 Subject: [PATCH 12/17] feat: Added Contribution Guide The README.md gives a brief overview about how to contribute to documentation, and more detailed isntructions specific to VitePress is added as a new page under References. --- CONTRIBUTING.md | 20 ++++++++- docs/08-reference/02-configuring-vitepress.md | 45 +++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 docs/08-reference/02-configuring-vitepress.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3389cfe0..23018349 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -102,7 +102,25 @@ pytest # Documentation -Place relevant markdown files in the `docs` directory and index them in README.md located at the root of repo. +Documentation is written as markdown files, and placed inside the `docs/` directory. There are multiple sub directories under `docs/`, and be sure to place the `.md` file in the relevant sub directory if you are adding a new page. + +If you want to include any image in the markdown file, place them in the `docs/images/` folder, and add a relative link in the `.md` file. + +Frappe Docker also have a static site version of the documentation, which is made using the same `.md` files in the `docs/` directory. Build pipeline uses [VitePress](https://vitepress.dev/) as the Static Site builder, which is a JavaScript (TypeScript) static site builder. Note that to contribute to the documentation JavaScript or VitePress knowledge is not needed. Updating the `.md` file is enough. + +The only additional content needed that is specific to VitePress, is a ['frontmatter'](https://vitepress.dev/guide/frontmatter#frontmatter). Frontmatter is like the `metadata` or `config` of that specific `.md` file, added at the beginning of the file and enclosed in `---`. For example, the frontmatter can include a friendly title, author, date of publishing, etc. A more detailed overview on what is frontmatter can be found in this [blog](https://www.seancdavis.com/posts/wtf-is-frontmatter/). + +In this project only one field is used in the frontmatter. The `title` field. This is used to specify the title of the page shown in the sidebar, which is either same or a simpler and smaller version of the first heading `#` of the page. To add the required frontmatter just add a block at the beginning of the `.md` file as shown below + +```yaml +--- +title: +--- +``` + +In case of any doubt, just refer to any of the existing `.md` file. Also checkout the Markdown section in the VitePress documentation to see some additional features supported by VitePress: [Markdown Extensions](https://vitepress.dev/guide/markdown). Be careful not to break compatibility with what is supported by GitHub markdown. It is recommended to keep the documentation simple. + +If you want details on how to configure or update VitePress specific settings and and functionalities, refer this page: [Configuring VitePress](https://github.com/frappe/frappe_docker/blob/main/docs/08-reference/02-configuring-vitepress.md) # Frappe and ERPNext updates diff --git a/docs/08-reference/02-configuring-vitepress.md b/docs/08-reference/02-configuring-vitepress.md new file mode 100644 index 00000000..9e396e35 --- /dev/null +++ b/docs/08-reference/02-configuring-vitepress.md @@ -0,0 +1,45 @@ +--- +title: Configuring VitePress +--- + +# Configuring VitePress + +To modify any VitePress related settings, a JavaScript development environment is needed. Everything related to VitePress is contained in the `docs/` folder. + +## Prerequisites + +1. Node.js v24 or above is recommended. To install and manage Node.js [nvm](https://github.com/nvm-sh/nvm) is the preferred way for Linux and MacOS. For Windows either official installer or [fnm](https://github.com/Schniz/fnm). +2. pnpm package manager, v10.28 or above. Easiest way to install pnpm is using [corepack](https://pnpm.io/installation#using-corepack) which is part of Node.js. + +## Development + +To start a development environment, + +1. Navigate to `/docs` directory in the terminal + +```sh +cd docs +``` + +2. Install dependencies + +```sh +pnpm install +``` + +3. Start the development server + +```sh +pnpm run docs:dev +``` + +4. Open `http://localhost:5173` in your browser to see the development version which will update the preview as you make changes. + +## Configurations + +1. Public assets related to VitePress site is added in the `docs/public` folder. This folder should not be used for adding images added inside the `.md` file. +2. VitePress uses `index.md` files to do some special things. For example the home page is configured using the `docs/index.md` file. Checkout the file for more details. +3. VitePress uses 'file based routing', meaning the URL paths mimics the directory and file structure inside the `docs/` directory. +4. VitePress specific config is `docs/.vitepress/config.mts`. +5. To auto populate the sidebar, a plugin called 'VitePress Sidebar' is used. The `config.mts` also include config for this plugin. More details can be found in the [documentation page](https://vitepress-sidebar.cdget.com/guide/getting-started). +6. Each subfolder has an `index.md` file. This is used to specify the group heading of the pages in the sidebar. From d433f52e9a47507b92202b1663955ea766f1f1f5 Mon Sep 17 00:00:00 2001 From: adithya Date: Mon, 16 Mar 2026 00:01:11 +0530 Subject: [PATCH 13/17] ore: VitePress version bump --- docs/package.json | 2 +- docs/pnpm-lock.yaml | 910 ++++++++++++++++++++++---------------------- 2 files changed, 454 insertions(+), 458 deletions(-) diff --git a/docs/package.json b/docs/package.json index 32e71881..73b65329 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,6 +1,6 @@ { "devDependencies": { - "vitepress": "2.0.0-alpha.15", + "vitepress": "2.0.0-alpha.16", "vitepress-sidebar": "^1.33.1" }, "scripts": { diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index d382bcdb..9881ec77 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: devDependencies: vitepress: - specifier: 2.0.0-alpha.15 - version: 2.0.0-alpha.15(postcss@8.5.6) + specifier: 2.0.0-alpha.16 + version: 2.0.0-alpha.16(postcss@8.5.8) vitepress-sidebar: specifier: ^1.33.1 version: 1.33.1 @@ -25,179 +25,182 @@ packages: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + '@babel/parser@7.29.0': + resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} - '@docsearch/css@4.3.2': - resolution: {integrity: sha512-K3Yhay9MgkBjJJ0WEL5MxnACModX9xuNt3UlQQkDEDZJZ0+aeWKtOkxHNndMRkMBnHdYvQjxkm6mdlneOtU1IQ==} + '@docsearch/css@4.6.0': + resolution: {integrity: sha512-YlcAimkXclvqta47g47efzCM5CFxDwv2ClkDfEs/fC/Ak0OxPH2b3czwa4o8O1TRBf+ujFF2RiUwszz2fPVNJQ==} - '@docsearch/js@4.3.2': - resolution: {integrity: sha512-xdfpPXMgKRY9EW7U1vtY7gLKbLZFa9ed+t0Dacquq8zXBqAlH9HlUf0h4Mhxm0xatsVeMaIR2wr/u6g0GsZyQw==} + '@docsearch/js@4.6.0': + resolution: {integrity: sha512-9/rbgkm/BgTq46cwxIohvSAz3koOFjnPpg0mwkJItAfzKbQIj+310PvwtgUY1YITDuGCag6yOL50GW2DBkaaBw==} - '@esbuild/aix-ppc64@0.25.12': - resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + '@docsearch/sidepanel-js@4.6.0': + resolution: {integrity: sha512-lFT5KLwlzUmpoGArCScNoK41l9a22JYsEPwBzMrz+/ILVR5Ax87UphCuiyDFQWEvEmbwzn/kJx5W/O5BUlN1Rw==} + + '@esbuild/aix-ppc64@0.27.4': + resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.12': - resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + '@esbuild/android-arm64@0.27.4': + resolution: {integrity: sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.12': - resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + '@esbuild/android-arm@0.27.4': + resolution: {integrity: sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.12': - resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + '@esbuild/android-x64@0.27.4': + resolution: {integrity: sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.12': - resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + '@esbuild/darwin-arm64@0.27.4': + resolution: {integrity: sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.12': - resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + '@esbuild/darwin-x64@0.27.4': + resolution: {integrity: sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.12': - resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + '@esbuild/freebsd-arm64@0.27.4': + resolution: {integrity: sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.12': - resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + '@esbuild/freebsd-x64@0.27.4': + resolution: {integrity: sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.12': - resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + '@esbuild/linux-arm64@0.27.4': + resolution: {integrity: sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.12': - resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + '@esbuild/linux-arm@0.27.4': + resolution: {integrity: sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.12': - resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + '@esbuild/linux-ia32@0.27.4': + resolution: {integrity: sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.12': - resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + '@esbuild/linux-loong64@0.27.4': + resolution: {integrity: sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.12': - resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + '@esbuild/linux-mips64el@0.27.4': + resolution: {integrity: sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.12': - resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + '@esbuild/linux-ppc64@0.27.4': + resolution: {integrity: sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.12': - resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + '@esbuild/linux-riscv64@0.27.4': + resolution: {integrity: sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.12': - resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + '@esbuild/linux-s390x@0.27.4': + resolution: {integrity: sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.12': - resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + '@esbuild/linux-x64@0.27.4': + resolution: {integrity: sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.12': - resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + '@esbuild/netbsd-arm64@0.27.4': + resolution: {integrity: sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.12': - resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + '@esbuild/netbsd-x64@0.27.4': + resolution: {integrity: sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.12': - resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + '@esbuild/openbsd-arm64@0.27.4': + resolution: {integrity: sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.12': - resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + '@esbuild/openbsd-x64@0.27.4': + resolution: {integrity: sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.12': - resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + '@esbuild/openharmony-arm64@0.27.4': + resolution: {integrity: sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.12': - resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + '@esbuild/sunos-x64@0.27.4': + resolution: {integrity: sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.12': - resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + '@esbuild/win32-arm64@0.27.4': + resolution: {integrity: sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.12': - resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + '@esbuild/win32-ia32@0.27.4': + resolution: {integrity: sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.12': - resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + '@esbuild/win32-x64@0.27.4': + resolution: {integrity: sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@iconify-json/simple-icons@1.2.61': - resolution: {integrity: sha512-DG6z3VEAxtDEw/SuZssZ/E8EvhjBhFQqxpEo3uckRKiia3LfZHmM4cx4RsaO2qX1Bqo9uadR5c/hYavvUQVuHw==} + '@iconify-json/simple-icons@1.2.74': + resolution: {integrity: sha512-yqaohfY6jnYjTVpuTkaBQHrWbdUrQyWXhau0r/0EZiNWYXPX/P8WWwl1DoLH5CbvDjjcWQw5J0zADhgCUklOqA==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -217,139 +220,167 @@ packages: '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@rolldown/pluginutils@1.0.0-beta.50': - resolution: {integrity: sha512-5e76wQiQVeL1ICOZVUg4LSOVYg9jyhGCin+icYozhsUzM+fHE7kddi1bdiE0jwVqTfkjba3jUFbEkoC9WkdvyA==} + '@rolldown/pluginutils@1.0.0-rc.2': + resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==} - '@rollup/rollup-android-arm-eabi@4.53.3': - resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} + '@rollup/rollup-android-arm-eabi@4.59.0': + resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.3': - resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} + '@rollup/rollup-android-arm64@4.59.0': + resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.3': - resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} + '@rollup/rollup-darwin-arm64@4.59.0': + resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.3': - resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} + '@rollup/rollup-darwin-x64@4.59.0': + resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.3': - resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} + '@rollup/rollup-freebsd-arm64@4.59.0': + resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.3': - resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} + '@rollup/rollup-freebsd-x64@4.59.0': + resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.3': - resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} cpu: [arm] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.53.3': - resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} + '@rollup/rollup-linux-arm-musleabihf@4.59.0': + resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} cpu: [arm] os: [linux] + libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.53.3': - resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} + '@rollup/rollup-linux-arm64-gnu@4.59.0': + resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} cpu: [arm64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.53.3': - resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} + '@rollup/rollup-linux-arm64-musl@4.59.0': + resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} cpu: [arm64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.53.3': - resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} + '@rollup/rollup-linux-loong64-gnu@4.59.0': + resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} cpu: [loong64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.53.3': - resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} + '@rollup/rollup-linux-loong64-musl@4.59.0': + resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-ppc64-gnu@4.59.0': + resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} cpu: [ppc64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.53.3': - resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} + '@rollup/rollup-linux-ppc64-musl@4.59.0': + resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} + cpu: [ppc64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-riscv64-gnu@4.59.0': + resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} cpu: [riscv64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.53.3': - resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} + '@rollup/rollup-linux-riscv64-musl@4.59.0': + resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} cpu: [riscv64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.53.3': - resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} + '@rollup/rollup-linux-s390x-gnu@4.59.0': + resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} cpu: [s390x] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.53.3': - resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} + '@rollup/rollup-linux-x64-gnu@4.59.0': + resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} cpu: [x64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.53.3': - resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} + '@rollup/rollup-linux-x64-musl@4.59.0': + resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} cpu: [x64] os: [linux] + libc: [musl] - '@rollup/rollup-openharmony-arm64@4.53.3': - resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} + '@rollup/rollup-openbsd-x64@4.59.0': + resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.59.0': + resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.3': - resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} + '@rollup/rollup-win32-arm64-msvc@4.59.0': + resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.3': - resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} + '@rollup/rollup-win32-ia32-msvc@4.59.0': + resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.3': - resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} + '@rollup/rollup-win32-x64-gnu@4.59.0': + resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.3': - resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} + '@rollup/rollup-win32-x64-msvc@4.59.0': + resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} cpu: [x64] os: [win32] - '@shikijs/core@3.19.0': - resolution: {integrity: sha512-L7SrRibU7ZoYi1/TrZsJOFAnnHyLTE1SwHG1yNWjZIVCqjOEmCSuK2ZO9thnRbJG6TOkPp+Z963JmpCNw5nzvA==} + '@shikijs/core@3.23.0': + resolution: {integrity: sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==} - '@shikijs/engine-javascript@3.19.0': - resolution: {integrity: sha512-ZfWJNm2VMhKkQIKT9qXbs76RRcT0SF/CAvEz0+RkpUDAoDaCx0uFdCGzSRiD9gSlhm6AHkjdieOBJMaO2eC1rQ==} + '@shikijs/engine-javascript@3.23.0': + resolution: {integrity: sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==} - '@shikijs/engine-oniguruma@3.19.0': - resolution: {integrity: sha512-1hRxtYIJfJSZeM5ivbUXv9hcJP3PWRo5prG/V2sWwiubUKTa+7P62d2qxCW8jiVFX4pgRHhnHNp+qeR7Xl+6kg==} + '@shikijs/engine-oniguruma@3.23.0': + resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==} - '@shikijs/langs@3.19.0': - resolution: {integrity: sha512-dBMFzzg1QiXqCVQ5ONc0z2ebyoi5BKz+MtfByLm0o5/nbUu3Iz8uaTCa5uzGiscQKm7lVShfZHU1+OG3t5hgwg==} + '@shikijs/langs@3.23.0': + resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==} - '@shikijs/themes@3.19.0': - resolution: {integrity: sha512-H36qw+oh91Y0s6OlFfdSuQ0Ld+5CgB/VE6gNPK+Hk4VRbVG/XQgkjnt4KzfnnoO6tZPtKJKHPjwebOCfjd6F8A==} + '@shikijs/themes@3.23.0': + resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==} - '@shikijs/transformers@3.19.0': - resolution: {integrity: sha512-e6vwrsyw+wx4OkcrDbL+FVCxwx8jgKiCoXzakVur++mIWVcgpzIi8vxf4/b4dVTYrV/nUx5RjinMf4tq8YV8Fw==} + '@shikijs/transformers@3.23.0': + resolution: {integrity: sha512-F9msZVxdF+krQNSdQ4V+Ja5QemeAoTQ2jxt7nJCwhDsdF1JWS3KxIQXA3lQbyKwS3J61oHRUSv4jYWv3CkaKTQ==} - '@shikijs/types@3.19.0': - resolution: {integrity: sha512-Z2hdeEQlzuntf/BZpFG8a+Fsw9UVXdML7w0o3TgSXV3yNESGon+bs9ITkQb3Ki7zxoXOOu5oJWqZ2uto06V9iQ==} + '@shikijs/types@3.23.0': + resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -381,64 +412,64 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@vitejs/plugin-vue@6.0.2': - resolution: {integrity: sha512-iHmwV3QcVGGvSC1BG5bZ4z6iwa1SOpAPWmnjOErd4Ske+lZua5K9TtAVdx0gMBClJ28DViCbSmZitjWZsWO3LA==} + '@vitejs/plugin-vue@6.0.5': + resolution: {integrity: sha512-bL3AxKuQySfk1iGcBsQnoRVexTPJq0Z/ixFVM8OhVJAP6ZXXXLtM7NFKWhLl30Kg7uTBqIaPXbh+nuQCuBDedg==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 vue: ^3.2.25 - '@vue/compiler-core@3.5.25': - resolution: {integrity: sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==} + '@vue/compiler-core@3.5.30': + resolution: {integrity: sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw==} - '@vue/compiler-dom@3.5.25': - resolution: {integrity: sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==} + '@vue/compiler-dom@3.5.30': + resolution: {integrity: sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g==} - '@vue/compiler-sfc@3.5.25': - resolution: {integrity: sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==} + '@vue/compiler-sfc@3.5.30': + resolution: {integrity: sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A==} - '@vue/compiler-ssr@3.5.25': - resolution: {integrity: sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==} + '@vue/compiler-ssr@3.5.30': + resolution: {integrity: sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA==} - '@vue/devtools-api@8.0.5': - resolution: {integrity: sha512-DgVcW8H/Nral7LgZEecYFFYXnAvGuN9C3L3DtWekAncFBedBczpNW8iHKExfaM559Zm8wQWrwtYZ9lXthEHtDw==} + '@vue/devtools-api@8.1.0': + resolution: {integrity: sha512-O44X57jjkLKbLEc4OgL/6fEPOOanRJU8kYpCE8qfKlV96RQZcdzrcLI5mxMuVRUeXhHKIHGhCpHacyCk0HyO4w==} - '@vue/devtools-kit@8.0.5': - resolution: {integrity: sha512-q2VV6x1U3KJMTQPUlRMyWEKVbcHuxhqJdSr6Jtjz5uAThAIrfJ6WVZdGZm5cuO63ZnSUz0RCsVwiUUb0mDV0Yg==} + '@vue/devtools-kit@8.1.0': + resolution: {integrity: sha512-/NZlS4WtGIB54DA/z10gzk+n/V7zaqSzYZOVlg2CfdnpIKdB61bd7JDIMxf/zrtX41zod8E2/bbEBoW/d7x70Q==} - '@vue/devtools-shared@8.0.5': - resolution: {integrity: sha512-bRLn6/spxpmgLk+iwOrR29KrYnJjG9DGpHGkDFG82UM21ZpJ39ztUT9OXX3g+usW7/b2z+h46I9ZiYyB07XMXg==} + '@vue/devtools-shared@8.1.0': + resolution: {integrity: sha512-h8uCb4Qs8UT8VdTT5yjY6tOJ//qH7EpxToixR0xqejR55t5OdISIg7AJ7eBkhBs8iu1qG5gY3QQNN1DF1EelAA==} - '@vue/reactivity@3.5.25': - resolution: {integrity: sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==} + '@vue/reactivity@3.5.30': + resolution: {integrity: sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q==} - '@vue/runtime-core@3.5.25': - resolution: {integrity: sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==} + '@vue/runtime-core@3.5.30': + resolution: {integrity: sha512-e0Z+8PQsUTdwV8TtEsLzUM7SzC7lQwYKePydb7K2ZnmS6jjND+WJXkmmfh/swYzRyfP1EY3fpdesyYoymCzYfg==} - '@vue/runtime-dom@3.5.25': - resolution: {integrity: sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==} + '@vue/runtime-dom@3.5.30': + resolution: {integrity: sha512-2UIGakjU4WSQ0T4iwDEW0W7vQj6n7AFn7taqZ9Cvm0Q/RA2FFOziLESrDL4GmtI1wV3jXg5nMoJSYO66egDUBw==} - '@vue/server-renderer@3.5.25': - resolution: {integrity: sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==} + '@vue/server-renderer@3.5.30': + resolution: {integrity: sha512-v+R34icapydRwbZRD0sXwtHqrQJv38JuMB4JxbOxd8NEpGLny7cncMp53W9UH/zo4j8eDHjQ1dEJXwzFQknjtQ==} peerDependencies: - vue: 3.5.25 + vue: 3.5.30 - '@vue/shared@3.5.25': - resolution: {integrity: sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==} + '@vue/shared@3.5.30': + resolution: {integrity: sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==} - '@vueuse/core@14.1.0': - resolution: {integrity: sha512-rgBinKs07hAYyPF834mDTigH7BtPqvZ3Pryuzt1SD/lg5wEcWqvwzXXYGEDb2/cP0Sj5zSvHl3WkmMELr5kfWw==} + '@vueuse/core@14.2.1': + resolution: {integrity: sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==} peerDependencies: vue: ^3.5.0 - '@vueuse/integrations@14.1.0': - resolution: {integrity: sha512-eNQPdisnO9SvdydTIXnTE7c29yOsJBD/xkwEyQLdhDC/LKbqrFpXHb3uS//7NcIrQO3fWVuvMGp8dbK6mNEMCA==} + '@vueuse/integrations@14.2.1': + resolution: {integrity: sha512-2LIUpBi/67PoXJGqSDQUF0pgQWpNHh7beiA+KG2AbybcNm+pTGWT6oPGlBgUoDWmYwfeQqM/uzOHqcILpKL7nA==} peerDependencies: async-validator: ^4 axios: ^1 change-case: ^5 drauu: ^0.4 - focus-trap: ^7 + focus-trap: ^7 || ^8 fuse.js: ^7 idb-keyval: ^6 jwt-decode: ^4 @@ -473,11 +504,11 @@ packages: universal-cookie: optional: true - '@vueuse/metadata@14.1.0': - resolution: {integrity: sha512-7hK4g015rWn2PhKcZ99NyT+ZD9sbwm7SGvp7k+k+rKGWnLjS/oQozoIZzWfCewSUeBmnJkIb+CNr7Zc/EyRnnA==} + '@vueuse/metadata@14.2.1': + resolution: {integrity: sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw==} - '@vueuse/shared@14.1.0': - resolution: {integrity: sha512-EcKxtYvn6gx1F8z9J5/rsg3+lTQnvOruQd8fUecW99DCK04BkWD7z5KQ/wTAx+DazyoEE9dJt/zV8OIEQbM6kw==} + '@vueuse/shared@14.2.1': + resolution: {integrity: sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==} peerDependencies: vue: ^3.5.0 @@ -522,10 +553,6 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - copy-anything@4.0.5: - resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} - engines: {node: '>=18'} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -549,12 +576,12 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} engines: {node: '>=0.12'} - esbuild@0.25.12: - resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + esbuild@0.27.4: + resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==} engines: {node: '>=18'} hasBin: true @@ -579,8 +606,8 @@ packages: picomatch: optional: true - focus-trap@7.6.6: - resolution: {integrity: sha512-v/Z8bvMCajtx4mEXmOo7QEsIzlIOqRXTIwgUfsFOF9gEsespdbD0AkPIka1bSXZ8Y8oZ+2IVDQZePkTfEHZl7Q==} + focus-trap@7.8.0: + resolution: {integrity: sha512-/yNdlIkpWbM0ptxno3ONTuf+2g318kh2ez3KSeZN5dZ8YC6AAmgeWz+GasYYiBJPFaYcSAPeu4GfhUaChzIJXA==} foreground-child@3.3.1: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} @@ -609,9 +636,6 @@ packages: hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} - htm@3.1.1: - resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==} - html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} @@ -623,10 +647,6 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-what@5.5.0: - resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} - engines: {node: '>=18'} - isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -681,9 +701,6 @@ packages: minisearch@7.2.0: resolution: {integrity: sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==} - mitt@3.0.1: - resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -692,8 +709,8 @@ packages: oniguruma-parser@0.12.1: resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} - oniguruma-to-es@4.3.4: - resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} + oniguruma-to-es@4.3.5: + resolution: {integrity: sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==} package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -706,8 +723,8 @@ packages: resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} engines: {node: 20 || >=22} - perfect-debounce@2.0.0: - resolution: {integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==} + perfect-debounce@2.1.0: + resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -716,8 +733,8 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + postcss@8.5.8: + resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} engines: {node: ^10 || ^12 || >=14} property-information@7.1.0: @@ -733,14 +750,11 @@ packages: regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - regex@6.0.1: - resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} - rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - - rollup@4.53.3: - resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} + rollup@4.59.0: + resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -756,8 +770,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@3.19.0: - resolution: {integrity: sha512-77VJr3OR/VUZzPiStyRhADmO2jApMM0V2b1qf0RpfWya8Zr1PeZev5AEpPGAAKWdiYUtcZGBE4F5QvJml1PvWA==} + shiki@3.23.0: + resolution: {integrity: sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==} signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} @@ -770,10 +784,6 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - speakingurl@14.0.1: - resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} - engines: {node: '>=0.10.0'} - sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -800,12 +810,8 @@ packages: resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} engines: {node: '>=0.10.0'} - superjson@2.2.6: - resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} - engines: {node: '>=16'} - - tabbable@6.3.0: - resolution: {integrity: sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ==} + tabbable@6.4.0: + resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} @@ -826,8 +832,8 @@ packages: unist-util-visit-parents@6.0.2: resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} vfile-message@4.0.3: resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} @@ -835,8 +841,8 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite@7.2.6: - resolution: {integrity: sha512-tI2l/nFHC5rLh7+5+o7QjKjSR04ivXDF4jcgV0f/bTQ+OJiITy5S6gaynVsEM+7RqzufMnVbIon6Sr5x1SDYaQ==} + vite@7.3.1: + resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -879,8 +885,8 @@ packages: resolution: {integrity: sha512-wPUbXezGakVldawixeRW5tKQTLKoMj2t4nWoThKfCltBM/9a38IE+wCXmmRNW22ZKC32SD/X/sG6NyCTK8QBRg==} engines: {node: '>=18.0.0'} - vitepress@2.0.0-alpha.15: - resolution: {integrity: sha512-jhjSYd10Z6RZiKOa7jy0xMVf5NB5oSc/lS3bD/QoUc6V8PrvQR5JhC9104NEt6+oTGY/ftieVWxY9v7YI+1IjA==} + vitepress@2.0.0-alpha.16: + resolution: {integrity: sha512-w1nwsefDVIsje7BZr2tsKxkZutDGjG0YoQ2yxO7+a9tvYVqfljYbwj5LMYkPy8Tb7YbPwa22HtIhk62jbrvuEQ==} hasBin: true peerDependencies: markdown-it-mathjax3: ^4 @@ -894,8 +900,8 @@ packages: postcss: optional: true - vue@3.5.25: - resolution: {integrity: sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==} + vue@3.5.30: + resolution: {integrity: sha512-hTHLc6VNZyzzEH/l7PFGjpcTvUgiaPK5mdLkbjrTeWSRcEfxFrv56g/XckIYlE9ckuobsdwqd5mk2g1sBkMewg==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -924,100 +930,100 @@ snapshots: '@babel/helper-validator-identifier@7.28.5': {} - '@babel/parser@7.28.5': + '@babel/parser@7.29.0': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.29.0 - '@babel/types@7.28.5': + '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@docsearch/css@4.3.2': {} + '@docsearch/css@4.6.0': {} - '@docsearch/js@4.3.2': - dependencies: - htm: 3.1.1 + '@docsearch/js@4.6.0': {} - '@esbuild/aix-ppc64@0.25.12': + '@docsearch/sidepanel-js@4.6.0': {} + + '@esbuild/aix-ppc64@0.27.4': optional: true - '@esbuild/android-arm64@0.25.12': + '@esbuild/android-arm64@0.27.4': optional: true - '@esbuild/android-arm@0.25.12': + '@esbuild/android-arm@0.27.4': optional: true - '@esbuild/android-x64@0.25.12': + '@esbuild/android-x64@0.27.4': optional: true - '@esbuild/darwin-arm64@0.25.12': + '@esbuild/darwin-arm64@0.27.4': optional: true - '@esbuild/darwin-x64@0.25.12': + '@esbuild/darwin-x64@0.27.4': optional: true - '@esbuild/freebsd-arm64@0.25.12': + '@esbuild/freebsd-arm64@0.27.4': optional: true - '@esbuild/freebsd-x64@0.25.12': + '@esbuild/freebsd-x64@0.27.4': optional: true - '@esbuild/linux-arm64@0.25.12': + '@esbuild/linux-arm64@0.27.4': optional: true - '@esbuild/linux-arm@0.25.12': + '@esbuild/linux-arm@0.27.4': optional: true - '@esbuild/linux-ia32@0.25.12': + '@esbuild/linux-ia32@0.27.4': optional: true - '@esbuild/linux-loong64@0.25.12': + '@esbuild/linux-loong64@0.27.4': optional: true - '@esbuild/linux-mips64el@0.25.12': + '@esbuild/linux-mips64el@0.27.4': optional: true - '@esbuild/linux-ppc64@0.25.12': + '@esbuild/linux-ppc64@0.27.4': optional: true - '@esbuild/linux-riscv64@0.25.12': + '@esbuild/linux-riscv64@0.27.4': optional: true - '@esbuild/linux-s390x@0.25.12': + '@esbuild/linux-s390x@0.27.4': optional: true - '@esbuild/linux-x64@0.25.12': + '@esbuild/linux-x64@0.27.4': optional: true - '@esbuild/netbsd-arm64@0.25.12': + '@esbuild/netbsd-arm64@0.27.4': optional: true - '@esbuild/netbsd-x64@0.25.12': + '@esbuild/netbsd-x64@0.27.4': optional: true - '@esbuild/openbsd-arm64@0.25.12': + '@esbuild/openbsd-arm64@0.27.4': optional: true - '@esbuild/openbsd-x64@0.25.12': + '@esbuild/openbsd-x64@0.27.4': optional: true - '@esbuild/openharmony-arm64@0.25.12': + '@esbuild/openharmony-arm64@0.27.4': optional: true - '@esbuild/sunos-x64@0.25.12': + '@esbuild/sunos-x64@0.27.4': optional: true - '@esbuild/win32-arm64@0.25.12': + '@esbuild/win32-arm64@0.27.4': optional: true - '@esbuild/win32-ia32@0.25.12': + '@esbuild/win32-ia32@0.27.4': optional: true - '@esbuild/win32-x64@0.25.12': + '@esbuild/win32-x64@0.27.4': optional: true - '@iconify-json/simple-icons@1.2.61': + '@iconify-json/simple-icons@1.2.74': dependencies: '@iconify/types': 2.0.0 @@ -1040,106 +1046,115 @@ snapshots: '@jridgewell/sourcemap-codec@1.5.5': {} - '@rolldown/pluginutils@1.0.0-beta.50': {} + '@rolldown/pluginutils@1.0.0-rc.2': {} - '@rollup/rollup-android-arm-eabi@4.53.3': + '@rollup/rollup-android-arm-eabi@4.59.0': optional: true - '@rollup/rollup-android-arm64@4.53.3': + '@rollup/rollup-android-arm64@4.59.0': optional: true - '@rollup/rollup-darwin-arm64@4.53.3': + '@rollup/rollup-darwin-arm64@4.59.0': optional: true - '@rollup/rollup-darwin-x64@4.53.3': + '@rollup/rollup-darwin-x64@4.59.0': optional: true - '@rollup/rollup-freebsd-arm64@4.53.3': + '@rollup/rollup-freebsd-arm64@4.59.0': optional: true - '@rollup/rollup-freebsd-x64@4.53.3': + '@rollup/rollup-freebsd-x64@4.59.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.3': + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.3': + '@rollup/rollup-linux-arm-musleabihf@4.59.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.3': + '@rollup/rollup-linux-arm64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.3': + '@rollup/rollup-linux-arm64-musl@4.59.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.3': + '@rollup/rollup-linux-loong64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.3': + '@rollup/rollup-linux-loong64-musl@4.59.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.3': + '@rollup/rollup-linux-ppc64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.3': + '@rollup/rollup-linux-ppc64-musl@4.59.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.3': + '@rollup/rollup-linux-riscv64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.3': + '@rollup/rollup-linux-riscv64-musl@4.59.0': optional: true - '@rollup/rollup-linux-x64-musl@4.53.3': + '@rollup/rollup-linux-s390x-gnu@4.59.0': optional: true - '@rollup/rollup-openharmony-arm64@4.53.3': + '@rollup/rollup-linux-x64-gnu@4.59.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.3': + '@rollup/rollup-linux-x64-musl@4.59.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.3': + '@rollup/rollup-openbsd-x64@4.59.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.3': + '@rollup/rollup-openharmony-arm64@4.59.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.3': + '@rollup/rollup-win32-arm64-msvc@4.59.0': optional: true - '@shikijs/core@3.19.0': + '@rollup/rollup-win32-ia32-msvc@4.59.0': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.59.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.59.0': + optional: true + + '@shikijs/core@3.23.0': dependencies: - '@shikijs/types': 3.19.0 + '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.19.0': + '@shikijs/engine-javascript@3.23.0': dependencies: - '@shikijs/types': 3.19.0 + '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.4 + oniguruma-to-es: 4.3.5 - '@shikijs/engine-oniguruma@3.19.0': + '@shikijs/engine-oniguruma@3.23.0': dependencies: - '@shikijs/types': 3.19.0 + '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.19.0': + '@shikijs/langs@3.23.0': dependencies: - '@shikijs/types': 3.19.0 + '@shikijs/types': 3.23.0 - '@shikijs/themes@3.19.0': + '@shikijs/themes@3.23.0': dependencies: - '@shikijs/types': 3.19.0 + '@shikijs/types': 3.23.0 - '@shikijs/transformers@3.19.0': + '@shikijs/transformers@3.23.0': dependencies: - '@shikijs/core': 3.19.0 - '@shikijs/types': 3.19.0 + '@shikijs/core': 3.23.0 + '@shikijs/types': 3.23.0 - '@shikijs/types@3.19.0': + '@shikijs/types@3.23.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -1171,104 +1186,99 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-vue@6.0.2(vite@7.2.6)(vue@3.5.25)': + '@vitejs/plugin-vue@6.0.5(vite@7.3.1)(vue@3.5.30)': dependencies: - '@rolldown/pluginutils': 1.0.0-beta.50 - vite: 7.2.6 - vue: 3.5.25 + '@rolldown/pluginutils': 1.0.0-rc.2 + vite: 7.3.1 + vue: 3.5.30 - '@vue/compiler-core@3.5.25': + '@vue/compiler-core@3.5.30': dependencies: - '@babel/parser': 7.28.5 - '@vue/shared': 3.5.25 - entities: 4.5.0 + '@babel/parser': 7.29.0 + '@vue/shared': 3.5.30 + entities: 7.0.1 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.25': + '@vue/compiler-dom@3.5.30': dependencies: - '@vue/compiler-core': 3.5.25 - '@vue/shared': 3.5.25 + '@vue/compiler-core': 3.5.30 + '@vue/shared': 3.5.30 - '@vue/compiler-sfc@3.5.25': + '@vue/compiler-sfc@3.5.30': dependencies: - '@babel/parser': 7.28.5 - '@vue/compiler-core': 3.5.25 - '@vue/compiler-dom': 3.5.25 - '@vue/compiler-ssr': 3.5.25 - '@vue/shared': 3.5.25 + '@babel/parser': 7.29.0 + '@vue/compiler-core': 3.5.30 + '@vue/compiler-dom': 3.5.30 + '@vue/compiler-ssr': 3.5.30 + '@vue/shared': 3.5.30 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.6 + postcss: 8.5.8 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.25': + '@vue/compiler-ssr@3.5.30': dependencies: - '@vue/compiler-dom': 3.5.25 - '@vue/shared': 3.5.25 + '@vue/compiler-dom': 3.5.30 + '@vue/shared': 3.5.30 - '@vue/devtools-api@8.0.5': + '@vue/devtools-api@8.1.0': dependencies: - '@vue/devtools-kit': 8.0.5 + '@vue/devtools-kit': 8.1.0 - '@vue/devtools-kit@8.0.5': + '@vue/devtools-kit@8.1.0': dependencies: - '@vue/devtools-shared': 8.0.5 + '@vue/devtools-shared': 8.1.0 birpc: 2.9.0 hookable: 5.5.3 - mitt: 3.0.1 - perfect-debounce: 2.0.0 - speakingurl: 14.0.1 - superjson: 2.2.6 + perfect-debounce: 2.1.0 - '@vue/devtools-shared@8.0.5': - dependencies: - rfdc: 1.4.1 + '@vue/devtools-shared@8.1.0': {} - '@vue/reactivity@3.5.25': + '@vue/reactivity@3.5.30': dependencies: - '@vue/shared': 3.5.25 + '@vue/shared': 3.5.30 - '@vue/runtime-core@3.5.25': + '@vue/runtime-core@3.5.30': dependencies: - '@vue/reactivity': 3.5.25 - '@vue/shared': 3.5.25 + '@vue/reactivity': 3.5.30 + '@vue/shared': 3.5.30 - '@vue/runtime-dom@3.5.25': + '@vue/runtime-dom@3.5.30': dependencies: - '@vue/reactivity': 3.5.25 - '@vue/runtime-core': 3.5.25 - '@vue/shared': 3.5.25 + '@vue/reactivity': 3.5.30 + '@vue/runtime-core': 3.5.30 + '@vue/shared': 3.5.30 csstype: 3.2.3 - '@vue/server-renderer@3.5.25(vue@3.5.25)': + '@vue/server-renderer@3.5.30(vue@3.5.30)': dependencies: - '@vue/compiler-ssr': 3.5.25 - '@vue/shared': 3.5.25 - vue: 3.5.25 + '@vue/compiler-ssr': 3.5.30 + '@vue/shared': 3.5.30 + vue: 3.5.30 - '@vue/shared@3.5.25': {} + '@vue/shared@3.5.30': {} - '@vueuse/core@14.1.0(vue@3.5.25)': + '@vueuse/core@14.2.1(vue@3.5.30)': dependencies: '@types/web-bluetooth': 0.0.21 - '@vueuse/metadata': 14.1.0 - '@vueuse/shared': 14.1.0(vue@3.5.25) - vue: 3.5.25 + '@vueuse/metadata': 14.2.1 + '@vueuse/shared': 14.2.1(vue@3.5.30) + vue: 3.5.30 - '@vueuse/integrations@14.1.0(focus-trap@7.6.6)(vue@3.5.25)': + '@vueuse/integrations@14.2.1(focus-trap@7.8.0)(vue@3.5.30)': dependencies: - '@vueuse/core': 14.1.0(vue@3.5.25) - '@vueuse/shared': 14.1.0(vue@3.5.25) - vue: 3.5.25 + '@vueuse/core': 14.2.1(vue@3.5.30) + '@vueuse/shared': 14.2.1(vue@3.5.30) + vue: 3.5.30 optionalDependencies: - focus-trap: 7.6.6 + focus-trap: 7.8.0 - '@vueuse/metadata@14.1.0': {} + '@vueuse/metadata@14.2.1': {} - '@vueuse/shared@14.1.0(vue@3.5.25)': + '@vueuse/shared@14.2.1(vue@3.5.30)': dependencies: - vue: 3.5.25 + vue: 3.5.30 ansi-regex@5.0.1: {} @@ -1300,10 +1310,6 @@ snapshots: comma-separated-tokens@2.0.3: {} - copy-anything@4.0.5: - dependencies: - is-what: 5.5.0 - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -1324,36 +1330,36 @@ snapshots: emoji-regex@9.2.2: {} - entities@4.5.0: {} + entities@7.0.1: {} - esbuild@0.25.12: + esbuild@0.27.4: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.12 - '@esbuild/android-arm': 0.25.12 - '@esbuild/android-arm64': 0.25.12 - '@esbuild/android-x64': 0.25.12 - '@esbuild/darwin-arm64': 0.25.12 - '@esbuild/darwin-x64': 0.25.12 - '@esbuild/freebsd-arm64': 0.25.12 - '@esbuild/freebsd-x64': 0.25.12 - '@esbuild/linux-arm': 0.25.12 - '@esbuild/linux-arm64': 0.25.12 - '@esbuild/linux-ia32': 0.25.12 - '@esbuild/linux-loong64': 0.25.12 - '@esbuild/linux-mips64el': 0.25.12 - '@esbuild/linux-ppc64': 0.25.12 - '@esbuild/linux-riscv64': 0.25.12 - '@esbuild/linux-s390x': 0.25.12 - '@esbuild/linux-x64': 0.25.12 - '@esbuild/netbsd-arm64': 0.25.12 - '@esbuild/netbsd-x64': 0.25.12 - '@esbuild/openbsd-arm64': 0.25.12 - '@esbuild/openbsd-x64': 0.25.12 - '@esbuild/openharmony-arm64': 0.25.12 - '@esbuild/sunos-x64': 0.25.12 - '@esbuild/win32-arm64': 0.25.12 - '@esbuild/win32-ia32': 0.25.12 - '@esbuild/win32-x64': 0.25.12 + '@esbuild/aix-ppc64': 0.27.4 + '@esbuild/android-arm': 0.27.4 + '@esbuild/android-arm64': 0.27.4 + '@esbuild/android-x64': 0.27.4 + '@esbuild/darwin-arm64': 0.27.4 + '@esbuild/darwin-x64': 0.27.4 + '@esbuild/freebsd-arm64': 0.27.4 + '@esbuild/freebsd-x64': 0.27.4 + '@esbuild/linux-arm': 0.27.4 + '@esbuild/linux-arm64': 0.27.4 + '@esbuild/linux-ia32': 0.27.4 + '@esbuild/linux-loong64': 0.27.4 + '@esbuild/linux-mips64el': 0.27.4 + '@esbuild/linux-ppc64': 0.27.4 + '@esbuild/linux-riscv64': 0.27.4 + '@esbuild/linux-s390x': 0.27.4 + '@esbuild/linux-x64': 0.27.4 + '@esbuild/netbsd-arm64': 0.27.4 + '@esbuild/netbsd-x64': 0.27.4 + '@esbuild/openbsd-arm64': 0.27.4 + '@esbuild/openbsd-x64': 0.27.4 + '@esbuild/openharmony-arm64': 0.27.4 + '@esbuild/sunos-x64': 0.27.4 + '@esbuild/win32-arm64': 0.27.4 + '@esbuild/win32-ia32': 0.27.4 + '@esbuild/win32-x64': 0.27.4 esprima@4.0.1: {} @@ -1367,9 +1373,9 @@ snapshots: optionalDependencies: picomatch: 4.0.3 - focus-trap@7.6.6: + focus-trap@7.8.0: dependencies: - tabbable: 6.3.0 + tabbable: 6.4.0 foreground-child@3.3.1: dependencies: @@ -1415,16 +1421,12 @@ snapshots: hookable@5.5.3: {} - htm@3.1.1: {} - html-void-elements@3.0.0: {} is-extendable@0.1.1: {} is-fullwidth-code-point@3.0.0: {} - is-what@5.5.0: {} - isexe@2.0.0: {} jackspeak@4.1.1: @@ -1455,7 +1457,7 @@ snapshots: micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 vfile: 6.0.3 micromark-util-character@2.1.1: @@ -1483,16 +1485,14 @@ snapshots: minisearch@7.2.0: {} - mitt@3.0.1: {} - nanoid@3.3.11: {} oniguruma-parser@0.12.1: {} - oniguruma-to-es@4.3.4: + oniguruma-to-es@4.3.5: dependencies: oniguruma-parser: 0.12.1 - regex: 6.0.1 + regex: 6.1.0 regex-recursion: 6.0.2 package-json-from-dist@1.0.1: {} @@ -1504,13 +1504,13 @@ snapshots: lru-cache: 11.2.4 minipass: 7.1.2 - perfect-debounce@2.0.0: {} + perfect-debounce@2.1.0: {} picocolors@1.1.1: {} picomatch@4.0.3: {} - postcss@8.5.6: + postcss@8.5.8: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -1526,38 +1526,39 @@ snapshots: regex-utilities@2.3.0: {} - regex@6.0.1: + regex@6.1.0: dependencies: regex-utilities: 2.3.0 - rfdc@1.4.1: {} - - rollup@4.53.3: + rollup@4.59.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.3 - '@rollup/rollup-android-arm64': 4.53.3 - '@rollup/rollup-darwin-arm64': 4.53.3 - '@rollup/rollup-darwin-x64': 4.53.3 - '@rollup/rollup-freebsd-arm64': 4.53.3 - '@rollup/rollup-freebsd-x64': 4.53.3 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 - '@rollup/rollup-linux-arm-musleabihf': 4.53.3 - '@rollup/rollup-linux-arm64-gnu': 4.53.3 - '@rollup/rollup-linux-arm64-musl': 4.53.3 - '@rollup/rollup-linux-loong64-gnu': 4.53.3 - '@rollup/rollup-linux-ppc64-gnu': 4.53.3 - '@rollup/rollup-linux-riscv64-gnu': 4.53.3 - '@rollup/rollup-linux-riscv64-musl': 4.53.3 - '@rollup/rollup-linux-s390x-gnu': 4.53.3 - '@rollup/rollup-linux-x64-gnu': 4.53.3 - '@rollup/rollup-linux-x64-musl': 4.53.3 - '@rollup/rollup-openharmony-arm64': 4.53.3 - '@rollup/rollup-win32-arm64-msvc': 4.53.3 - '@rollup/rollup-win32-ia32-msvc': 4.53.3 - '@rollup/rollup-win32-x64-gnu': 4.53.3 - '@rollup/rollup-win32-x64-msvc': 4.53.3 + '@rollup/rollup-android-arm-eabi': 4.59.0 + '@rollup/rollup-android-arm64': 4.59.0 + '@rollup/rollup-darwin-arm64': 4.59.0 + '@rollup/rollup-darwin-x64': 4.59.0 + '@rollup/rollup-freebsd-arm64': 4.59.0 + '@rollup/rollup-freebsd-x64': 4.59.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.59.0 + '@rollup/rollup-linux-arm-musleabihf': 4.59.0 + '@rollup/rollup-linux-arm64-gnu': 4.59.0 + '@rollup/rollup-linux-arm64-musl': 4.59.0 + '@rollup/rollup-linux-loong64-gnu': 4.59.0 + '@rollup/rollup-linux-loong64-musl': 4.59.0 + '@rollup/rollup-linux-ppc64-gnu': 4.59.0 + '@rollup/rollup-linux-ppc64-musl': 4.59.0 + '@rollup/rollup-linux-riscv64-gnu': 4.59.0 + '@rollup/rollup-linux-riscv64-musl': 4.59.0 + '@rollup/rollup-linux-s390x-gnu': 4.59.0 + '@rollup/rollup-linux-x64-gnu': 4.59.0 + '@rollup/rollup-linux-x64-musl': 4.59.0 + '@rollup/rollup-openbsd-x64': 4.59.0 + '@rollup/rollup-openharmony-arm64': 4.59.0 + '@rollup/rollup-win32-arm64-msvc': 4.59.0 + '@rollup/rollup-win32-ia32-msvc': 4.59.0 + '@rollup/rollup-win32-x64-gnu': 4.59.0 + '@rollup/rollup-win32-x64-msvc': 4.59.0 fsevents: 2.3.3 section-matter@1.0.0: @@ -1571,14 +1572,14 @@ snapshots: shebang-regex@3.0.0: {} - shiki@3.19.0: + shiki@3.23.0: dependencies: - '@shikijs/core': 3.19.0 - '@shikijs/engine-javascript': 3.19.0 - '@shikijs/engine-oniguruma': 3.19.0 - '@shikijs/langs': 3.19.0 - '@shikijs/themes': 3.19.0 - '@shikijs/types': 3.19.0 + '@shikijs/core': 3.23.0 + '@shikijs/engine-javascript': 3.23.0 + '@shikijs/engine-oniguruma': 3.23.0 + '@shikijs/langs': 3.23.0 + '@shikijs/themes': 3.23.0 + '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -1588,8 +1589,6 @@ snapshots: space-separated-tokens@2.0.2: {} - speakingurl@14.0.1: {} - sprintf-js@1.0.3: {} string-width@4.2.3: @@ -1619,11 +1618,7 @@ snapshots: strip-bom-string@1.0.0: {} - superjson@2.2.6: - dependencies: - copy-anything: 4.0.5 - - tabbable@6.3.0: {} + tabbable@6.4.0: {} tinyglobby@0.2.15: dependencies: @@ -1649,7 +1644,7 @@ snapshots: '@types/unist': 3.0.3 unist-util-is: 6.0.1 - unist-util-visit@5.0.0: + unist-util-visit@5.1.0: dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.1 @@ -1665,13 +1660,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@7.2.6: + vite@7.3.1: dependencies: - esbuild: 0.25.12 + esbuild: 0.27.4 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.53.3 + postcss: 8.5.8 + rollup: 4.59.0 tinyglobby: 0.2.15 optionalDependencies: fsevents: 2.3.3 @@ -1682,28 +1677,29 @@ snapshots: gray-matter: 4.0.3 qsu: 1.10.4 - vitepress@2.0.0-alpha.15(postcss@8.5.6): + vitepress@2.0.0-alpha.16(postcss@8.5.8): dependencies: - '@docsearch/css': 4.3.2 - '@docsearch/js': 4.3.2 - '@iconify-json/simple-icons': 1.2.61 - '@shikijs/core': 3.19.0 - '@shikijs/transformers': 3.19.0 - '@shikijs/types': 3.19.0 + '@docsearch/css': 4.6.0 + '@docsearch/js': 4.6.0 + '@docsearch/sidepanel-js': 4.6.0 + '@iconify-json/simple-icons': 1.2.74 + '@shikijs/core': 3.23.0 + '@shikijs/transformers': 3.23.0 + '@shikijs/types': 3.23.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 6.0.2(vite@7.2.6)(vue@3.5.25) - '@vue/devtools-api': 8.0.5 - '@vue/shared': 3.5.25 - '@vueuse/core': 14.1.0(vue@3.5.25) - '@vueuse/integrations': 14.1.0(focus-trap@7.6.6)(vue@3.5.25) - focus-trap: 7.6.6 + '@vitejs/plugin-vue': 6.0.5(vite@7.3.1)(vue@3.5.30) + '@vue/devtools-api': 8.1.0 + '@vue/shared': 3.5.30 + '@vueuse/core': 14.2.1(vue@3.5.30) + '@vueuse/integrations': 14.2.1(focus-trap@7.8.0)(vue@3.5.30) + focus-trap: 7.8.0 mark.js: 8.11.1 minisearch: 7.2.0 - shiki: 3.19.0 - vite: 7.2.6 - vue: 3.5.25 + shiki: 3.23.0 + vite: 7.3.1 + vue: 3.5.30 optionalDependencies: - postcss: 8.5.6 + postcss: 8.5.8 transitivePeerDependencies: - '@types/node' - async-validator @@ -1729,13 +1725,13 @@ snapshots: - universal-cookie - yaml - vue@3.5.25: + vue@3.5.30: dependencies: - '@vue/compiler-dom': 3.5.25 - '@vue/compiler-sfc': 3.5.25 - '@vue/runtime-dom': 3.5.25 - '@vue/server-renderer': 3.5.25(vue@3.5.25) - '@vue/shared': 3.5.25 + '@vue/compiler-dom': 3.5.30 + '@vue/compiler-sfc': 3.5.30 + '@vue/runtime-dom': 3.5.30 + '@vue/server-renderer': 3.5.30(vue@3.5.30) + '@vue/shared': 3.5.30 which@2.0.2: dependencies: From 655a1f4ec8cadca462070bd790b54119dc460d4b Mon Sep 17 00:00:00 2001 From: adithya Date: Mon, 16 Mar 2026 00:01:28 +0530 Subject: [PATCH 14/17] fix: More details in contributing --- CONTRIBUTING.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 23018349..47be9ebb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -100,11 +100,19 @@ Run pytest: pytest ``` +## Detailed Guidelines + +A detailed form management guidelines are available in the [Fork Management](./docs/08-reference/03-fork-management.md) + # Documentation Documentation is written as markdown files, and placed inside the `docs/` directory. There are multiple sub directories under `docs/`, and be sure to place the `.md` file in the relevant sub directory if you are adding a new page. -If you want to include any image in the markdown file, place them in the `docs/images/` folder, and add a relative link in the `.md` file. +If you want to include any image in the markdown file, place them in the `docs/images/` folder, and add a relative link in the `.md` file. For example if there is a `diagram.png` in the `docs/images/` directory, which has to be shown in a markdown file called `docs/01-getting-started/01-choosing-a-deployment-method.md` the image has to be referenced as, + +``` +![A diagram](../images/diagram.png) +``` Frappe Docker also have a static site version of the documentation, which is made using the same `.md` files in the `docs/` directory. Build pipeline uses [VitePress](https://vitepress.dev/) as the Static Site builder, which is a JavaScript (TypeScript) static site builder. Note that to contribute to the documentation JavaScript or VitePress knowledge is not needed. Updating the `.md` file is enough. From c1e545f3e530089d4fb276dc185ba3772b5c1369 Mon Sep 17 00:00:00 2001 From: adithya Date: Mon, 16 Mar 2026 00:02:01 +0530 Subject: [PATCH 15/17] refactor: Migrating Comprehensive Guide The Comprehensive Getting Started guide is broken into smaller pieces and added to respective sections. --- docs/01-getting-started/00-introduction.md | 92 ++++++++++ docs/05-development/01-development.md | 20 +++ .../03-arm64-apple-silicon.md | 10 ++ docs/08-reference/02-configuring-vitepress.md | 4 +- docs/08-reference/03-fork-management.md | 161 ++++++++++++++++++ docs/08-reference/04-framework-comparisons.md | 159 +++++++++++++++++ docs/08-reference/05-external-links.md | 18 ++ docs/09-concepts/01-custom-app.md | 64 +++++++ docs/09-concepts/02-docker-bind-mounts.md | 62 +++++++ docs/09-concepts/index.md | 3 + 10 files changed, 591 insertions(+), 2 deletions(-) create mode 100644 docs/01-getting-started/00-introduction.md create mode 100644 docs/07-troubleshooting/03-arm64-apple-silicon.md create mode 100644 docs/08-reference/03-fork-management.md create mode 100644 docs/08-reference/04-framework-comparisons.md create mode 100644 docs/08-reference/05-external-links.md create mode 100644 docs/09-concepts/01-custom-app.md create mode 100644 docs/09-concepts/02-docker-bind-mounts.md create mode 100644 docs/09-concepts/index.md diff --git a/docs/01-getting-started/00-introduction.md b/docs/01-getting-started/00-introduction.md new file mode 100644 index 00000000..4b3d9c3c --- /dev/null +++ b/docs/01-getting-started/00-introduction.md @@ -0,0 +1,92 @@ +--- +title: Introduction +--- + +# Introduction to Frappe Docker + +This is the documentation for the Frappe Docker repository, which contains all the information on how to develop, deploy and share Frappe app, using Docker containers. + +## Repository Architecture + +Frappe Docker provides a comprehensive containerized environment for developing and deploying Frappe/ERPNext applications. It uses a **multi-service architecture** that handles everything from web serving to background job processing. + +### Core Services + +The base compose file includes these essential services: + +- **configurator** - Initialization service that configures database and Redis connections; runs on startup and exits +- **backend** - Werkzeug development server for dynamic content processing +- **frontend** - Nginx reverse proxy that serves static assets and routes requests +- **websocket** - Node.js server running Socket.IO for real-time communications +- **queue-short/long** - Python workers using RQ (Redis Queue) for asynchronous background job processing +- **scheduler** - Python service that runs scheduled tasks using the schedule library + +Additional services are added through compose overrides: + +- **db** - MariaDB or PostgreSQL database server (via `compose.mariadb.yaml` or `compose.postgres.yaml`) +- **redis-cache/queue** - Redis instances for caching and job queues (via `compose.redis.yaml`) + +### How Services Work Together + +``` +User Request + ↓ +[frontend (Nginx)] → Static files served directly + ↓ +[backend (Werkzeug)] → Dynamic content processing + ↓ ↓ +[db (MariaDB)] [redis-cache] + +Background Tasks: +[scheduler] → [redis-queue] → [queue-short/long workers] + +Real-time: +[websocket (Socket.IO)] ←→ [redis-cache] +``` + +## Repository Structure + +### `/` Root: Core Configuration Files + +- **compose.yaml** - Main Docker Compose file defining all services +- **example.env** - Environment variables template (copy to `.env`) +- **pwd.yml** - "Play with Docker" - simplified single-file setup for quick testing +- **docker-bake.hcl** - Advanced Docker Buildx configuration for multi-architecture builds +- **docs/container-setup/env-variables.md** - Central reference for environment configuration logic and defaults + +### `images/`: Docker Image Definitions + +Four predefined Dockerfiles are available, each serving different use cases: + +- **images/bench/** - Sets up only the Bench CLI for development or debugging; does not include runtime services +- **images/custom/** - Multi-purpose Python backend built from plain Python base image; installs apps from `apps.json`; suitable for **production** and testing; ideal when you need control over Python/Node versions +- **images/layered/** - Same final contents as `custom` but based on prebuilt images from Docker Hub; faster builds for production when using Frappe-managed dependency versions +- **images/production/** - Installs only Frappe and ERPNext (not customizable with `apps.json`); best for **quick starts or exploration**; for real deployments, use `custom` or `layered` + +> **Note:** For detailed build arguments and advanced configuration options, see [Setup Overview](../02-setup/01-overview.md). + +### `overrides/`: Compose File Extensions + +Docker Compose "overrides" that extend the base compose.yaml for different scenarios: + +- **compose.mariadb.yaml** - Adds MariaDB database service +- **compose.redis.yaml** - Adds Redis caching service +- **compose.proxy.yaml** - Adds Traefik reverse proxy for multi-site hosting (label-based routing) +- **compose.https.yaml** - Adds Traefik HTTPS + automatic certs (uses `SITES_RULE`) +- **compose.nginxproxy.yaml** - Adds nginx-proxy reverse proxy (HTTP, env-based `VIRTUAL_HOST`) +- **compose.nginxproxy-ssl.yaml** - Adds nginx-proxy + acme-companion (HTTPS, env-based `LETSENCRYPT_HOST`) + +**Proxy choice:** + +- Traefik is more flexible for advanced routing and multi-bench setups +- nginx-proxy is simpler for a single bench with host-based routing. + +### `development/`: Dev Environment + +- **development/installer.py** - Automated bench/site creation and configuration script +- Contains your local development files (git-ignored to prevent accidental commits) + +### `resources/`: Runtime Templates + +- **core/nginx/nginx-entrypoint.sh** - Dynamic Nginx configuration generator script +- **core/nginx/nginx-template.conf** - Nginx configuration template with variable substitution diff --git a/docs/05-development/01-development.md b/docs/05-development/01-development.md index 99df7254..df22e4b0 100644 --- a/docs/05-development/01-development.md +++ b/docs/05-development/01-development.md @@ -101,6 +101,26 @@ PYENV_VERSION=3.9.17 bench init --skip-redis-config-generation --frappe-branch v cd frappe-bench ``` +At this point the the directory structure will be very close to this, if not exact, + +``` +development/ +├── frappe-bench/ # Your actual Frappe installation +│ ├── apps/ # All installed Frappe applications +│ │ ├── frappe/ # Core framework (don't modify directly) +│ │ ├── erpnext/ # ERPNext application (if installed) +│ │ └── my_custom_app/ # Your custom apps (edit freely) +│ ├── sites/ # Multi-tenant sites +│ │ ├── development.localhost/ # Default dev site +│ │ │ ├── site_config.json # Site-specific config +│ │ │ └── private/files/ # Uploaded files +│ │ └── common_site_config.json # Shared configuration +│ ├── env/ # Python virtual environment +│ ├── logs/ # Application logs +│ └── config/ # Bench-level configuration +└── .vscode/ # VSCode workspace settings +``` + ### Setup hosts We need to tell bench to use the right containers instead of localhost. Run the following commands inside the container: diff --git a/docs/07-troubleshooting/03-arm64-apple-silicon.md b/docs/07-troubleshooting/03-arm64-apple-silicon.md new file mode 100644 index 00000000..bafbf76e --- /dev/null +++ b/docs/07-troubleshooting/03-arm64-apple-silicon.md @@ -0,0 +1,10 @@ +--- +title: ARM64 / Apple Silicon +--- + +## Notes on ARM64 and Apple Silicon + +- Enable Docker Desktop's Rosetta emulation for initial builds when running on Apple Silicon with x86-only images. +- Prefer published multi-arch images (`frappe/bench`, `frappe/erpnext`) or build locally with `docker buildx bake --set *.platform=linux/amd64,linux/arm64` to cover both architectures in one pass. +- When using `pwd.yml`, export `DOCKER_DEFAULT_PLATFORM=linux/arm64` (or select the provided compose profile) to avoid unexpected emulation. +- Keep bind mounts under your user home directory and apply `:cached` or `:delegated` consistency flags for better performance on macOS. diff --git a/docs/08-reference/02-configuring-vitepress.md b/docs/08-reference/02-configuring-vitepress.md index 9e396e35..af400095 100644 --- a/docs/08-reference/02-configuring-vitepress.md +++ b/docs/08-reference/02-configuring-vitepress.md @@ -33,11 +33,11 @@ pnpm install pnpm run docs:dev ``` -4. Open `http://localhost:5173` in your browser to see the development version which will update the preview as you make changes. +4. Open `http://localhost:5173/frappe_docker` in your browser to see the development version which will update the preview as you make changes. ## Configurations -1. Public assets related to VitePress site is added in the `docs/public` folder. This folder should not be used for adding images added inside the `.md` file. +1. Public assets related to VitePress site is added in the `docs/public` folder. This folder should **NOT** be used for adding images added inside the `.md` file. 2. VitePress uses `index.md` files to do some special things. For example the home page is configured using the `docs/index.md` file. Checkout the file for more details. 3. VitePress uses 'file based routing', meaning the URL paths mimics the directory and file structure inside the `docs/` directory. 4. VitePress specific config is `docs/.vitepress/config.mts`. diff --git a/docs/08-reference/03-fork-management.md b/docs/08-reference/03-fork-management.md new file mode 100644 index 00000000..16ee2110 --- /dev/null +++ b/docs/08-reference/03-fork-management.md @@ -0,0 +1,161 @@ +--- +title: Fork Management +--- + +# Fork Management Best Practices + +## Initial Fork Setup + +```bash +# 1. Fork on GitHub (use the Fork button) + +# 2. Clone YOUR fork +git clone https://github.com/YOUR_USERNAME/frappe_docker +cd frappe_docker + +# 3. Add upstream remote (original repo) +git remote add upstream https://github.com/frappe/frappe_docker.git + +# 4. Verify remotes +git remote -v +# origin https://github.com/YOUR_USERNAME/frappe_docker (your fork) +# upstream https://github.com/frappe/frappe_docker (original) + +# 5. Create development branch +git checkout -b my-custom-setup +``` + +## Safe Customization Zones + +**✅ Safe (Won't conflict with upstream):** + +``` +development/ # Your entire dev environment + ├── frappe-bench/ # Local installation + └── .vscode/ # Your editor settings + +compose.my-*.yaml # Your custom compose overrides +scripts/my-*.sh # Your custom scripts +docs/my-*.md # Your custom documentation +.env.local # Local environment overrides +.gitignore.local # Additional gitignore rules +``` + +**⚠️ Modification Needed (May conflict):** + +``` +compose.yaml # Core - use overrides instead +docker-bake.hcl # Build config - use custom files +images/*/Dockerfile # Core images - extend rather than modify +``` + +**❌ Never Modify (Will break upstream sync):** + +``` +.github/workflows/ # CI/CD pipelines +images/*/ # Core image definitions +resources/ # Core templates +``` + +## Keeping Fork Updated + +```bash +# Regularly sync with upstream (weekly recommended) +git checkout main +git fetch upstream +git merge upstream/main +git push origin main + +# Update your development branch +git checkout my-custom-setup +git rebase main # Or: git merge main + +# If conflicts occur during rebase: +# 1. Fix conflicts in files +# 2. git add +# 3. git rebase --continue +# Or: git rebase --abort (to cancel) +``` + +## Custom Environment Pattern + +Create override files for your customizations: + +```yaml +# compose.my-env.yaml +version: "3.7" + +services: + backend: + environment: + # Your custom environment variables + - DEVELOPER_MODE=true + - MY_API_KEY=${MY_API_KEY} + volumes: + # Your custom bind mounts + - ./development/my-scripts:/home/frappe/my-scripts + - ./development/my-config:/home/frappe/config + + # Your additional services + my-monitoring: + image: prom/prometheus + ports: + - "9090:9090" + volumes: + - ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml +# Use it: +# docker compose -f compose.yaml -f compose.my-env.yaml up +``` + +## .gitignore Strategy + +Add to `.gitignore` (or create `.gitignore.local`): + +```gitignore +# Local environment files +.env.local +*.local.yaml +compose.my-*.yaml + +# Development artifacts +development/frappe-bench/sites/* +development/frappe-bench/apps/* +!development/frappe-bench/apps.json +development/frappe-bench/logs/ +development/frappe-bench/env/ + +# Local customizations +my-local-configs/ +scripts/my-*.sh +docs/internal-*.md + +# IDE +.vscode/settings.json.local +.idea/ + +# Temporary files +*.swp +*.swo +*~ +.DS_Store +``` + +## Contributing Back to Upstream + +```bash +# 1. Create feature branch from main +git checkout main +git pull upstream main +git checkout -b feature/my-improvement + +# 2. Make changes and commit +git add . +git commit -m "feat: add awesome feature" + +# 3. Push to YOUR fork +git push origin feature/my-improvement + +# 4. Create Pull Request on GitHub +# Go to: https://github.com/frappe/frappe_docker +# Click "Compare & pull request" +``` diff --git a/docs/08-reference/04-framework-comparisons.md b/docs/08-reference/04-framework-comparisons.md new file mode 100644 index 00000000..aec78a54 --- /dev/null +++ b/docs/08-reference/04-framework-comparisons.md @@ -0,0 +1,159 @@ +--- +title: Framework Comparisons +--- + +# Framework Comparisons + +> **Note:** This section provides comparisons to other frameworks for developers familiar with them. If you're new to all frameworks, you can skip this section - the rest of the guide is self-contained. + +## Frappe vs Django Concepts + +### Project Structure Comparison + +**Django Project:** + +```python +myproject/ +├── myproject/ # Project settings +│ ├── settings.py +│ ├── urls.py +│ └── wsgi.py +├── blog/ # Django app +│ ├── models.py +│ ├── views.py +│ └── urls.py +├── shop/ # Django app +└── users/ # Django app +``` + +**Frappe Bench:** + +``` +bench/ +├── apps/ +│ ├── frappe/ # Core framework (comparable to Django itself) +│ ├── erpnext/ # Complete business app (like Django + DRF + Celery + admin) +│ ├── hrms/ # HR Management app +│ └── my_custom_app/ # YOUR custom app +└── sites/ + └── mysite.com/ # Site instance (like Django project + database) + ├── site_config.json + └── private/files/ +``` + +### Conceptual Mapping + +| Django | Frappe | Notes | +| ------------------ | ----------------- | ----------------------------------------------- | +| Model | DocType | But includes UI, permissions, API automatically | +| View | Controller method | Much less code needed | +| Admin | Desk | More powerful, auto-generated | +| DRF Serializer | Built-in | Automatic from DocType | +| Celery task | Background job | Built-in, no separate setup | +| signals | hooks.py | More structured | +| Management command | bench command | More discoverable | + +### Key Architectural Differences + +1. **Multi-tenancy** + - Django: One app = one database (typically) + - Frappe: One installation = many sites, each with own database + +2. **Background Jobs** + - Django: Requires Celery + Redis + worker setup + - Frappe: Built-in queue system, just use `enqueue()` + +3. **Real-time** + - Django: Requires Channels + Redis + ASGI setup + - Frappe: Socket.IO built-in, automatic for DocType updates + +4. **Admin/Management** + - Django: Admin for models, basic CRUD + - Frappe: Full-featured Desk with reports, dashboards, permissions + +5. **API** + - Django: Manual DRF setup, serializers, views + - Frappe: Automatic REST + RPC from DocType definitions + +### Code Comparison Example + +**Creating a "Customer" model:** + +Django (requires ~50+ lines): + +```python +# models.py +class Customer(models.Model): + name = models.CharField(max_length=100) + email = models.EmailField(unique=True) + +# serializers.py +class CustomerSerializer(serializers.ModelSerializer): + # ... + +# views.py +class CustomerViewSet(viewsets.ModelViewSet): + # ... + +# urls.py +router.register(r'customers', CustomerViewSet) + +# admin.py +@admin.register(Customer) +class CustomerAdmin(admin.ModelAdmin): + # ... +``` + +Frappe (DocType JSON + ~10 lines Python): + +```json +// customer.json (auto-generated via UI or code) +{ + "name": "Customer", + "fields": [ + { "fieldname": "customer_name", "fieldtype": "Data" }, + { "fieldname": "email", "fieldtype": "Data", "unique": 1 } + ] +} +``` + +```python +# customer.py (only for custom business logic) +import frappe +from frappe.model.document import Document + +class Customer(Document): + def validate(self): + # Custom validation logic only + pass +``` + +✅ **Automatically includes:** + +- REST API (`/api/resource/Customer`) +- List view, Form view +- Search, Filters, Sorting +- Permissions (Create, Read, Update, Delete) +- Audit trail (created_by, modified_by, versions) +- Print formats, Email templates + +### When to Choose Frappe vs Django + +**Choose Frappe when:** + +- Building business applications (ERP, CRM, project management) +- Need multi-tenancy out-of-the-box +- Want rapid development with auto-generated UI +- Need role-based permissions and workflows +- Building for non-technical users who need customization + +**Choose Django when:** + +- Building consumer web apps (social media, e-commerce frontend) +- Need full control over every aspect +- Have highly custom UI requirements +- Team is already Django-expert +- Building API-only services + +**Hybrid Approach:** +Many teams use both: Frappe for back-office/admin tools, Django for customer-facing web apps. diff --git a/docs/08-reference/05-external-links.md b/docs/08-reference/05-external-links.md new file mode 100644 index 00000000..2eef4f83 --- /dev/null +++ b/docs/08-reference/05-external-links.md @@ -0,0 +1,18 @@ +--- +title: External Links +--- + +# External Links + +## Official Documentation + +- [Frappe Framework Docs](https://frappeframework.com/docs) - Core framework documentation +- [Frappe Docker Docs](https://github.com/frappe/frappe_docker/tree/main/docs) - This repository's docs +- [ERPNext Documentation](https://docs.erpnext.com) - ERPNext user and developer docs +- [Docker Documentation](https://docs.docker.com) - Docker fundamentals + +## Community Resources + +- [Frappe Forum](https://discuss.frappe.io) - Community Q&A +- [Frappe School](https://frappe.school) - Video tutorials +- [Frappe GitHub](https://github.com/frappe/frappe) - Framework source code diff --git a/docs/09-concepts/01-custom-app.md b/docs/09-concepts/01-custom-app.md new file mode 100644 index 00000000..bae585ba --- /dev/null +++ b/docs/09-concepts/01-custom-app.md @@ -0,0 +1,64 @@ +--- +title: Custom Apps +--- + +# Frappe Custom Applications + +## What Are Frappe Custom Apps? + +Custom apps are self-contained, modular business applications that extend Frappe's functionality. They follow a convention-over-configuration approach where the framework provides most boilerplate automatically. + +## Custom App Structure + +``` +my_custom_app/ +├── hooks.py # App configuration and hooks into Frappe lifecycle +├── modules.txt # List of business modules in this app +├── my_custom_app/ +│ ├── __init__.py +│ ├── config/ +│ │ └── desktop.py # Desktop workspace icons and shortcuts +│ ├── my_module/ # Business domain module (e.g., sales, inventory) +│ │ ├── doctype/ # Document Types (data models) +│ │ │ ├── customer/ +│ │ │ │ ├── customer.py # Python controller (business logic) +│ │ │ │ ├── customer.json # Model definition (schema, validation) +│ │ │ │ └── customer.js # Frontend logic (UI interactions) +│ │ └── page/ # Custom pages (dashboards, reports) +│ ├── public/ # Static assets (CSS, JS, images) +│ ├── templates/ # Jinja2 templates for web pages +│ └── www/ # Web pages accessible via routes +└── requirements.txt # Python package dependencies +``` + +## Built-in Features (Auto-generated) + +Every Frappe app automatically includes: + +- **REST API** - Automatic CRUD endpoints from DocType definitions +- **Permissions system** - Row-level and field-level access control +- **Audit trails** - Automatic version tracking and change history +- **Custom fields** - Runtime field additions without code changes +- **Workflows** - Configurable approval and state management +- **Reports** - Query builder and report designer +- **Print formats** - PDF generation with custom templates +- **Email integration** - Template-based email sending +- **File attachments** - Document attachment management + +## Creating Custom Apps + +```bash +# Enter the development container +docker exec -it bash + +# Create new app (interactive prompts will ask for details) +bench new-app my_custom_app + +# Install app to a site +bench --site mysite.com install-app my_custom_app + +# Create a new DocType (data model) +bench --site mysite.com console +>>> bench.new_doc("DocType", {...}) +# Or use the web UI: Setup → Customize → DocType → New +``` diff --git a/docs/09-concepts/02-docker-bind-mounts.md b/docs/09-concepts/02-docker-bind-mounts.md new file mode 100644 index 00000000..65b673a8 --- /dev/null +++ b/docs/09-concepts/02-docker-bind-mounts.md @@ -0,0 +1,62 @@ +--- +title: Docker Bind Mounts +--- + +# Docker Bind Mounts + +## What Are Bind Mounts? + +Bind mounts create a direct connection between a directory on your host machine and a directory inside a container. Changes in either location are immediately reflected in the other - perfect for development where you want to edit code on your host and see changes in the container. + +## Bind Mount vs Named Volume vs Anonymous Volume + +| Type | Syntax | Use Case | Persistence | +| -------------------- | ------------------------------ | -------------------------- | ---------------------------- | +| **Bind Mount** | `./local/path:/container/path` | Development, config files | On host filesystem | +| **Named Volume** | `volume_name:/container/path` | Production data, databases | Docker-managed | +| **Anonymous Volume** | `/container/path` | Temporary/cache data | Docker-managed, auto-deleted | + +## Bind Mount Examples + +```yaml +services: + backend: + volumes: + # Development: Edit code on host, run in container + - ./my_custom_app:/home/frappe/frappe-bench/apps/my_custom_app + + # Configuration: Override container config with host file + - ./custom-config.json:/home/frappe/frappe-bench/sites/common_site_config.json:ro # :ro = read-only + + # Logs: Access container logs on host for debugging + - ./logs:/home/frappe/frappe-bench/logs + + # Database (not recommended for production) + - ./data/mysql:/var/lib/mysql + + # Named volume for production database + db: + volumes: + - db_data:/var/lib/mysql # Managed by Docker, survives container deletion + +volumes: + db_data: # Define named volume +``` + +## Performance Optimization (macOS/Windows) + +Docker on macOS/Windows uses a VM, making bind mounts slower. Use these flags: + +```yaml +volumes: + # :cached - Host writes are buffered (good for general development) + - ./development:/home/frappe/frappe-bench:cached + + # :delegated - Container writes are buffered (best when container writes heavily) + - ./development:/home/frappe/frappe-bench:delegated + + # :consistent - Full synchronization (slowest but safest) + - ./development:/home/frappe/frappe-bench:consistent +``` + +**Recommendation:** Use `:cached` for most development work on macOS/Windows. diff --git a/docs/09-concepts/index.md b/docs/09-concepts/index.md new file mode 100644 index 00000000..ec28707f --- /dev/null +++ b/docs/09-concepts/index.md @@ -0,0 +1,3 @@ +--- +title: Concepts +--- From 1b8ddeadfdc50df32fd7868865ddfa4efa6e4251 Mon Sep 17 00:00:00 2001 From: RocketQuack <202538874+Rocket-Quack@users.noreply.github.com> Date: Thu, 19 Mar 2026 11:56:06 +0100 Subject: [PATCH 16/17] chore(packages): pin vitepress-sidebar version --- docs/package.json | 2 +- docs/pnpm-lock.yaml | 1859 ++++++++++++++++++++++++++++--------------- 2 files changed, 1228 insertions(+), 633 deletions(-) diff --git a/docs/package.json b/docs/package.json index 73b65329..91fd37bb 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,7 +1,7 @@ { "devDependencies": { "vitepress": "2.0.0-alpha.16", - "vitepress-sidebar": "^1.33.1" + "vitepress-sidebar": "1.33.1" }, "scripts": { "docs:dev": "vitepress dev", diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index 9881ec77..7497803e 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -1,469 +1,758 @@ -lockfileVersion: '9.0' +lockfileVersion: "9.0" settings: autoInstallPeers: true excludeLinksFromLockfile: false importers: - .: devDependencies: vitepress: specifier: 2.0.0-alpha.16 version: 2.0.0-alpha.16(postcss@8.5.8) vitepress-sidebar: - specifier: ^1.33.1 + specifier: 1.33.1 version: 1.33.1 packages: + "@babel/helper-string-parser@7.27.1": + resolution: + { + integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==, + } + engines: { node: ">=6.9.0" } - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} - engines: {node: '>=6.9.0'} + "@babel/helper-validator-identifier@7.28.5": + resolution: + { + integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==, + } + engines: { node: ">=6.9.0" } - '@babel/helper-validator-identifier@7.28.5': - resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.29.0': - resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} - engines: {node: '>=6.0.0'} + "@babel/parser@7.29.0": + resolution: + { + integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==, + } + engines: { node: ">=6.0.0" } hasBin: true - '@babel/types@7.29.0': - resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} - engines: {node: '>=6.9.0'} + "@babel/types@7.29.0": + resolution: + { + integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==, + } + engines: { node: ">=6.9.0" } - '@docsearch/css@4.6.0': - resolution: {integrity: sha512-YlcAimkXclvqta47g47efzCM5CFxDwv2ClkDfEs/fC/Ak0OxPH2b3czwa4o8O1TRBf+ujFF2RiUwszz2fPVNJQ==} + "@docsearch/css@4.6.0": + resolution: + { + integrity: sha512-YlcAimkXclvqta47g47efzCM5CFxDwv2ClkDfEs/fC/Ak0OxPH2b3czwa4o8O1TRBf+ujFF2RiUwszz2fPVNJQ==, + } - '@docsearch/js@4.6.0': - resolution: {integrity: sha512-9/rbgkm/BgTq46cwxIohvSAz3koOFjnPpg0mwkJItAfzKbQIj+310PvwtgUY1YITDuGCag6yOL50GW2DBkaaBw==} + "@docsearch/js@4.6.0": + resolution: + { + integrity: sha512-9/rbgkm/BgTq46cwxIohvSAz3koOFjnPpg0mwkJItAfzKbQIj+310PvwtgUY1YITDuGCag6yOL50GW2DBkaaBw==, + } - '@docsearch/sidepanel-js@4.6.0': - resolution: {integrity: sha512-lFT5KLwlzUmpoGArCScNoK41l9a22JYsEPwBzMrz+/ILVR5Ax87UphCuiyDFQWEvEmbwzn/kJx5W/O5BUlN1Rw==} + "@docsearch/sidepanel-js@4.6.0": + resolution: + { + integrity: sha512-lFT5KLwlzUmpoGArCScNoK41l9a22JYsEPwBzMrz+/ILVR5Ax87UphCuiyDFQWEvEmbwzn/kJx5W/O5BUlN1Rw==, + } - '@esbuild/aix-ppc64@0.27.4': - resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} - engines: {node: '>=18'} + "@esbuild/aix-ppc64@0.27.4": + resolution: + { + integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==, + } + engines: { node: ">=18" } cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.27.4': - resolution: {integrity: sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==} - engines: {node: '>=18'} + "@esbuild/android-arm64@0.27.4": + resolution: + { + integrity: sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==, + } + engines: { node: ">=18" } cpu: [arm64] os: [android] - '@esbuild/android-arm@0.27.4': - resolution: {integrity: sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==} - engines: {node: '>=18'} + "@esbuild/android-arm@0.27.4": + resolution: + { + integrity: sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==, + } + engines: { node: ">=18" } cpu: [arm] os: [android] - '@esbuild/android-x64@0.27.4': - resolution: {integrity: sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==} - engines: {node: '>=18'} + "@esbuild/android-x64@0.27.4": + resolution: + { + integrity: sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==, + } + engines: { node: ">=18" } cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.27.4': - resolution: {integrity: sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==} - engines: {node: '>=18'} + "@esbuild/darwin-arm64@0.27.4": + resolution: + { + integrity: sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==, + } + engines: { node: ">=18" } cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.27.4': - resolution: {integrity: sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==} - engines: {node: '>=18'} + "@esbuild/darwin-x64@0.27.4": + resolution: + { + integrity: sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==, + } + engines: { node: ">=18" } cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.27.4': - resolution: {integrity: sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==} - engines: {node: '>=18'} + "@esbuild/freebsd-arm64@0.27.4": + resolution: + { + integrity: sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==, + } + engines: { node: ">=18" } cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.4': - resolution: {integrity: sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==} - engines: {node: '>=18'} + "@esbuild/freebsd-x64@0.27.4": + resolution: + { + integrity: sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==, + } + engines: { node: ">=18" } cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.27.4': - resolution: {integrity: sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==} - engines: {node: '>=18'} + "@esbuild/linux-arm64@0.27.4": + resolution: + { + integrity: sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==, + } + engines: { node: ">=18" } cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.27.4': - resolution: {integrity: sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==} - engines: {node: '>=18'} + "@esbuild/linux-arm@0.27.4": + resolution: + { + integrity: sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==, + } + engines: { node: ">=18" } cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.27.4': - resolution: {integrity: sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==} - engines: {node: '>=18'} + "@esbuild/linux-ia32@0.27.4": + resolution: + { + integrity: sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==, + } + engines: { node: ">=18" } cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.27.4': - resolution: {integrity: sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==} - engines: {node: '>=18'} + "@esbuild/linux-loong64@0.27.4": + resolution: + { + integrity: sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==, + } + engines: { node: ">=18" } cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.27.4': - resolution: {integrity: sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==} - engines: {node: '>=18'} + "@esbuild/linux-mips64el@0.27.4": + resolution: + { + integrity: sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==, + } + engines: { node: ">=18" } cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.27.4': - resolution: {integrity: sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==} - engines: {node: '>=18'} + "@esbuild/linux-ppc64@0.27.4": + resolution: + { + integrity: sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==, + } + engines: { node: ">=18" } cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.27.4': - resolution: {integrity: sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==} - engines: {node: '>=18'} + "@esbuild/linux-riscv64@0.27.4": + resolution: + { + integrity: sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==, + } + engines: { node: ">=18" } cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.27.4': - resolution: {integrity: sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==} - engines: {node: '>=18'} + "@esbuild/linux-s390x@0.27.4": + resolution: + { + integrity: sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==, + } + engines: { node: ">=18" } cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.27.4': - resolution: {integrity: sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==} - engines: {node: '>=18'} + "@esbuild/linux-x64@0.27.4": + resolution: + { + integrity: sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==, + } + engines: { node: ">=18" } cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.27.4': - resolution: {integrity: sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==} - engines: {node: '>=18'} + "@esbuild/netbsd-arm64@0.27.4": + resolution: + { + integrity: sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==, + } + engines: { node: ">=18" } cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.4': - resolution: {integrity: sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==} - engines: {node: '>=18'} + "@esbuild/netbsd-x64@0.27.4": + resolution: + { + integrity: sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==, + } + engines: { node: ">=18" } cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.27.4': - resolution: {integrity: sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==} - engines: {node: '>=18'} + "@esbuild/openbsd-arm64@0.27.4": + resolution: + { + integrity: sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==, + } + engines: { node: ">=18" } cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.4': - resolution: {integrity: sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==} - engines: {node: '>=18'} + "@esbuild/openbsd-x64@0.27.4": + resolution: + { + integrity: sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==, + } + engines: { node: ">=18" } cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.27.4': - resolution: {integrity: sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==} - engines: {node: '>=18'} + "@esbuild/openharmony-arm64@0.27.4": + resolution: + { + integrity: sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==, + } + engines: { node: ">=18" } cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.27.4': - resolution: {integrity: sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==} - engines: {node: '>=18'} + "@esbuild/sunos-x64@0.27.4": + resolution: + { + integrity: sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==, + } + engines: { node: ">=18" } cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.27.4': - resolution: {integrity: sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==} - engines: {node: '>=18'} + "@esbuild/win32-arm64@0.27.4": + resolution: + { + integrity: sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==, + } + engines: { node: ">=18" } cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.27.4': - resolution: {integrity: sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==} - engines: {node: '>=18'} + "@esbuild/win32-ia32@0.27.4": + resolution: + { + integrity: sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==, + } + engines: { node: ">=18" } cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.27.4': - resolution: {integrity: sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==} - engines: {node: '>=18'} + "@esbuild/win32-x64@0.27.4": + resolution: + { + integrity: sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==, + } + engines: { node: ">=18" } cpu: [x64] os: [win32] - '@iconify-json/simple-icons@1.2.74': - resolution: {integrity: sha512-yqaohfY6jnYjTVpuTkaBQHrWbdUrQyWXhau0r/0EZiNWYXPX/P8WWwl1DoLH5CbvDjjcWQw5J0zADhgCUklOqA==} + "@iconify-json/simple-icons@1.2.74": + resolution: + { + integrity: sha512-yqaohfY6jnYjTVpuTkaBQHrWbdUrQyWXhau0r/0EZiNWYXPX/P8WWwl1DoLH5CbvDjjcWQw5J0zADhgCUklOqA==, + } - '@iconify/types@2.0.0': - resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + "@iconify/types@2.0.0": + resolution: + { + integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==, + } - '@isaacs/balanced-match@4.0.1': - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} - engines: {node: 20 || >=22} + "@isaacs/balanced-match@4.0.1": + resolution: + { + integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==, + } + engines: { node: 20 || >=22 } - '@isaacs/brace-expansion@5.0.0': - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} - engines: {node: 20 || >=22} + "@isaacs/brace-expansion@5.0.0": + resolution: + { + integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==, + } + engines: { node: 20 || >=22 } - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} + "@isaacs/cliui@8.0.2": + resolution: + { + integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==, + } + engines: { node: ">=12" } - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + "@jridgewell/sourcemap-codec@1.5.5": + resolution: + { + integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, + } - '@rolldown/pluginutils@1.0.0-rc.2': - resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==} + "@rolldown/pluginutils@1.0.0-rc.2": + resolution: + { + integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==, + } - '@rollup/rollup-android-arm-eabi@4.59.0': - resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} + "@rollup/rollup-android-arm-eabi@4.59.0": + resolution: + { + integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==, + } cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.59.0': - resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} + "@rollup/rollup-android-arm64@4.59.0": + resolution: + { + integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==, + } cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.59.0': - resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} + "@rollup/rollup-darwin-arm64@4.59.0": + resolution: + { + integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==, + } cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.59.0': - resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} + "@rollup/rollup-darwin-x64@4.59.0": + resolution: + { + integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==, + } cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.59.0': - resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} + "@rollup/rollup-freebsd-arm64@4.59.0": + resolution: + { + integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==, + } cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.59.0': - resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} + "@rollup/rollup-freebsd-x64@4.59.0": + resolution: + { + integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==, + } cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.59.0': - resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} + "@rollup/rollup-linux-arm-gnueabihf@4.59.0": + resolution: + { + integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==, + } cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.59.0': - resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} + "@rollup/rollup-linux-arm-musleabihf@4.59.0": + resolution: + { + integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==, + } cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.59.0': - resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} + "@rollup/rollup-linux-arm64-gnu@4.59.0": + resolution: + { + integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==, + } cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.59.0': - resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} + "@rollup/rollup-linux-arm64-musl@4.59.0": + resolution: + { + integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==, + } cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.59.0': - resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} + "@rollup/rollup-linux-loong64-gnu@4.59.0": + resolution: + { + integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==, + } cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-loong64-musl@4.59.0': - resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} + "@rollup/rollup-linux-loong64-musl@4.59.0": + resolution: + { + integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==, + } cpu: [loong64] os: [linux] libc: [musl] - '@rollup/rollup-linux-ppc64-gnu@4.59.0': - resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} + "@rollup/rollup-linux-ppc64-gnu@4.59.0": + resolution: + { + integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==, + } cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-musl@4.59.0': - resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} + "@rollup/rollup-linux-ppc64-musl@4.59.0": + resolution: + { + integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==, + } cpu: [ppc64] os: [linux] libc: [musl] - '@rollup/rollup-linux-riscv64-gnu@4.59.0': - resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} + "@rollup/rollup-linux-riscv64-gnu@4.59.0": + resolution: + { + integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==, + } cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.59.0': - resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} + "@rollup/rollup-linux-riscv64-musl@4.59.0": + resolution: + { + integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==, + } cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.59.0': - resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} + "@rollup/rollup-linux-s390x-gnu@4.59.0": + resolution: + { + integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==, + } cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.59.0': - resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} + "@rollup/rollup-linux-x64-gnu@4.59.0": + resolution: + { + integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==, + } cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.59.0': - resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} + "@rollup/rollup-linux-x64-musl@4.59.0": + resolution: + { + integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==, + } cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openbsd-x64@4.59.0': - resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} + "@rollup/rollup-openbsd-x64@4.59.0": + resolution: + { + integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==, + } cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.59.0': - resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} + "@rollup/rollup-openharmony-arm64@4.59.0": + resolution: + { + integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==, + } cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.59.0': - resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} + "@rollup/rollup-win32-arm64-msvc@4.59.0": + resolution: + { + integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==, + } cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.59.0': - resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} + "@rollup/rollup-win32-ia32-msvc@4.59.0": + resolution: + { + integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==, + } cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.59.0': - resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} + "@rollup/rollup-win32-x64-gnu@4.59.0": + resolution: + { + integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==, + } cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.59.0': - resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} + "@rollup/rollup-win32-x64-msvc@4.59.0": + resolution: + { + integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==, + } cpu: [x64] os: [win32] - '@shikijs/core@3.23.0': - resolution: {integrity: sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==} + "@shikijs/core@3.23.0": + resolution: + { + integrity: sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==, + } - '@shikijs/engine-javascript@3.23.0': - resolution: {integrity: sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==} + "@shikijs/engine-javascript@3.23.0": + resolution: + { + integrity: sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==, + } - '@shikijs/engine-oniguruma@3.23.0': - resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==} + "@shikijs/engine-oniguruma@3.23.0": + resolution: + { + integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==, + } - '@shikijs/langs@3.23.0': - resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==} + "@shikijs/langs@3.23.0": + resolution: + { + integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==, + } - '@shikijs/themes@3.23.0': - resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==} + "@shikijs/themes@3.23.0": + resolution: + { + integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==, + } - '@shikijs/transformers@3.23.0': - resolution: {integrity: sha512-F9msZVxdF+krQNSdQ4V+Ja5QemeAoTQ2jxt7nJCwhDsdF1JWS3KxIQXA3lQbyKwS3J61oHRUSv4jYWv3CkaKTQ==} + "@shikijs/transformers@3.23.0": + resolution: + { + integrity: sha512-F9msZVxdF+krQNSdQ4V+Ja5QemeAoTQ2jxt7nJCwhDsdF1JWS3KxIQXA3lQbyKwS3J61oHRUSv4jYWv3CkaKTQ==, + } - '@shikijs/types@3.23.0': - resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} + "@shikijs/types@3.23.0": + resolution: + { + integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==, + } - '@shikijs/vscode-textmate@10.0.2': - resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + "@shikijs/vscode-textmate@10.0.2": + resolution: + { + integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==, + } - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + "@types/estree@1.0.8": + resolution: + { + integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==, + } - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + "@types/hast@3.0.4": + resolution: + { + integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==, + } - '@types/linkify-it@5.0.0': - resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + "@types/linkify-it@5.0.0": + resolution: + { + integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==, + } - '@types/markdown-it@14.1.2': - resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} + "@types/markdown-it@14.1.2": + resolution: + { + integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==, + } - '@types/mdast@4.0.4': - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + "@types/mdast@4.0.4": + resolution: + { + integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==, + } - '@types/mdurl@2.0.0': - resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + "@types/mdurl@2.0.0": + resolution: + { + integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==, + } - '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + "@types/unist@3.0.3": + resolution: + { + integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==, + } - '@types/web-bluetooth@0.0.21': - resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + "@types/web-bluetooth@0.0.21": + resolution: + { + integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==, + } - '@ungap/structured-clone@1.3.0': - resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + "@ungap/structured-clone@1.3.0": + resolution: + { + integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==, + } - '@vitejs/plugin-vue@6.0.5': - resolution: {integrity: sha512-bL3AxKuQySfk1iGcBsQnoRVexTPJq0Z/ixFVM8OhVJAP6ZXXXLtM7NFKWhLl30Kg7uTBqIaPXbh+nuQCuBDedg==} - engines: {node: ^20.19.0 || >=22.12.0} + "@vitejs/plugin-vue@6.0.5": + resolution: + { + integrity: sha512-bL3AxKuQySfk1iGcBsQnoRVexTPJq0Z/ixFVM8OhVJAP6ZXXXLtM7NFKWhLl30Kg7uTBqIaPXbh+nuQCuBDedg==, + } + engines: { node: ^20.19.0 || >=22.12.0 } peerDependencies: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 vue: ^3.2.25 - '@vue/compiler-core@3.5.30': - resolution: {integrity: sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw==} + "@vue/compiler-core@3.5.30": + resolution: + { + integrity: sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw==, + } - '@vue/compiler-dom@3.5.30': - resolution: {integrity: sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g==} + "@vue/compiler-dom@3.5.30": + resolution: + { + integrity: sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g==, + } - '@vue/compiler-sfc@3.5.30': - resolution: {integrity: sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A==} + "@vue/compiler-sfc@3.5.30": + resolution: + { + integrity: sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A==, + } - '@vue/compiler-ssr@3.5.30': - resolution: {integrity: sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA==} + "@vue/compiler-ssr@3.5.30": + resolution: + { + integrity: sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA==, + } - '@vue/devtools-api@8.1.0': - resolution: {integrity: sha512-O44X57jjkLKbLEc4OgL/6fEPOOanRJU8kYpCE8qfKlV96RQZcdzrcLI5mxMuVRUeXhHKIHGhCpHacyCk0HyO4w==} + "@vue/devtools-api@8.1.0": + resolution: + { + integrity: sha512-O44X57jjkLKbLEc4OgL/6fEPOOanRJU8kYpCE8qfKlV96RQZcdzrcLI5mxMuVRUeXhHKIHGhCpHacyCk0HyO4w==, + } - '@vue/devtools-kit@8.1.0': - resolution: {integrity: sha512-/NZlS4WtGIB54DA/z10gzk+n/V7zaqSzYZOVlg2CfdnpIKdB61bd7JDIMxf/zrtX41zod8E2/bbEBoW/d7x70Q==} + "@vue/devtools-kit@8.1.0": + resolution: + { + integrity: sha512-/NZlS4WtGIB54DA/z10gzk+n/V7zaqSzYZOVlg2CfdnpIKdB61bd7JDIMxf/zrtX41zod8E2/bbEBoW/d7x70Q==, + } - '@vue/devtools-shared@8.1.0': - resolution: {integrity: sha512-h8uCb4Qs8UT8VdTT5yjY6tOJ//qH7EpxToixR0xqejR55t5OdISIg7AJ7eBkhBs8iu1qG5gY3QQNN1DF1EelAA==} + "@vue/devtools-shared@8.1.0": + resolution: + { + integrity: sha512-h8uCb4Qs8UT8VdTT5yjY6tOJ//qH7EpxToixR0xqejR55t5OdISIg7AJ7eBkhBs8iu1qG5gY3QQNN1DF1EelAA==, + } - '@vue/reactivity@3.5.30': - resolution: {integrity: sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q==} + "@vue/reactivity@3.5.30": + resolution: + { + integrity: sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q==, + } - '@vue/runtime-core@3.5.30': - resolution: {integrity: sha512-e0Z+8PQsUTdwV8TtEsLzUM7SzC7lQwYKePydb7K2ZnmS6jjND+WJXkmmfh/swYzRyfP1EY3fpdesyYoymCzYfg==} + "@vue/runtime-core@3.5.30": + resolution: + { + integrity: sha512-e0Z+8PQsUTdwV8TtEsLzUM7SzC7lQwYKePydb7K2ZnmS6jjND+WJXkmmfh/swYzRyfP1EY3fpdesyYoymCzYfg==, + } - '@vue/runtime-dom@3.5.30': - resolution: {integrity: sha512-2UIGakjU4WSQ0T4iwDEW0W7vQj6n7AFn7taqZ9Cvm0Q/RA2FFOziLESrDL4GmtI1wV3jXg5nMoJSYO66egDUBw==} + "@vue/runtime-dom@3.5.30": + resolution: + { + integrity: sha512-2UIGakjU4WSQ0T4iwDEW0W7vQj6n7AFn7taqZ9Cvm0Q/RA2FFOziLESrDL4GmtI1wV3jXg5nMoJSYO66egDUBw==, + } - '@vue/server-renderer@3.5.30': - resolution: {integrity: sha512-v+R34icapydRwbZRD0sXwtHqrQJv38JuMB4JxbOxd8NEpGLny7cncMp53W9UH/zo4j8eDHjQ1dEJXwzFQknjtQ==} + "@vue/server-renderer@3.5.30": + resolution: + { + integrity: sha512-v+R34icapydRwbZRD0sXwtHqrQJv38JuMB4JxbOxd8NEpGLny7cncMp53W9UH/zo4j8eDHjQ1dEJXwzFQknjtQ==, + } peerDependencies: vue: 3.5.30 - '@vue/shared@3.5.30': - resolution: {integrity: sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==} + "@vue/shared@3.5.30": + resolution: + { + integrity: sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==, + } - '@vueuse/core@14.2.1': - resolution: {integrity: sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==} + "@vueuse/core@14.2.1": + resolution: + { + integrity: sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==, + } peerDependencies: vue: ^3.5.0 - '@vueuse/integrations@14.2.1': - resolution: {integrity: sha512-2LIUpBi/67PoXJGqSDQUF0pgQWpNHh7beiA+KG2AbybcNm+pTGWT6oPGlBgUoDWmYwfeQqM/uzOHqcILpKL7nA==} + "@vueuse/integrations@14.2.1": + resolution: + { + integrity: sha512-2LIUpBi/67PoXJGqSDQUF0pgQWpNHh7beiA+KG2AbybcNm+pTGWT6oPGlBgUoDWmYwfeQqM/uzOHqcILpKL7nA==, + } peerDependencies: async-validator: ^4 axios: ^1 @@ -504,102 +793,183 @@ packages: universal-cookie: optional: true - '@vueuse/metadata@14.2.1': - resolution: {integrity: sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw==} + "@vueuse/metadata@14.2.1": + resolution: + { + integrity: sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw==, + } - '@vueuse/shared@14.2.1': - resolution: {integrity: sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==} + "@vueuse/shared@14.2.1": + resolution: + { + integrity: sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==, + } peerDependencies: vue: ^3.5.0 ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, + } + engines: { node: ">=8" } ansi-regex@6.2.2: - resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==, + } + engines: { node: ">=12" } ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, + } + engines: { node: ">=8" } ansi-styles@6.2.3: - resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==, + } + engines: { node: ">=12" } argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + resolution: + { + integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, + } birpc@2.9.0: - resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} + resolution: + { + integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==, + } ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + resolution: + { + integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==, + } character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + resolution: + { + integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==, + } character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + resolution: + { + integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==, + } color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + resolution: + { + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, + } + engines: { node: ">=7.0.0" } color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + resolution: + { + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, + } comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + resolution: + { + integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==, + } cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, + } + engines: { node: ">= 8" } csstype@3.2.3: - resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + resolution: + { + integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==, + } dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==, + } + engines: { node: ">=6" } devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + resolution: + { + integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==, + } eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + resolution: + { + integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==, + } emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + resolution: + { + integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, + } emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + resolution: + { + integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, + } entities@7.0.1: - resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} - engines: {node: '>=0.12'} + resolution: + { + integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==, + } + engines: { node: ">=0.12" } esbuild@0.27.4: - resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==, + } + engines: { node: ">=18" } hasBin: true esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, + } + engines: { node: ">=4" } hasBin: true estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + resolution: + { + integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, + } extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==, + } + engines: { node: ">=0.10.0" } fdir@6.5.0: - resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} - engines: {node: '>=12.0.0'} + resolution: + { + integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==, + } + engines: { node: ">=12.0.0" } peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -607,258 +977,463 @@ packages: optional: true focus-trap@7.8.0: - resolution: {integrity: sha512-/yNdlIkpWbM0ptxno3ONTuf+2g318kh2ez3KSeZN5dZ8YC6AAmgeWz+GasYYiBJPFaYcSAPeu4GfhUaChzIJXA==} + resolution: + { + integrity: sha512-/yNdlIkpWbM0ptxno3ONTuf+2g318kh2ez3KSeZN5dZ8YC6AAmgeWz+GasYYiBJPFaYcSAPeu4GfhUaChzIJXA==, + } foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} + resolution: + { + integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==, + } + engines: { node: ">=14" } fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + resolution: + { + integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } os: [darwin] glob@11.1.0: - resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} - engines: {node: 20 || >=22} + resolution: + { + integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==, + } + engines: { node: 20 || >=22 } + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true gray-matter@4.0.3: - resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} - engines: {node: '>=6.0'} + resolution: + { + integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==, + } + engines: { node: ">=6.0" } hast-util-to-html@9.0.5: - resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + resolution: + { + integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==, + } hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + resolution: + { + integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==, + } hookable@5.5.3: - resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + resolution: + { + integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==, + } html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + resolution: + { + integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==, + } is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==, + } + engines: { node: ">=0.10.0" } is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, + } + engines: { node: ">=8" } isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + resolution: + { + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, + } jackspeak@4.1.1: - resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} - engines: {node: 20 || >=22} + resolution: + { + integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==, + } + engines: { node: 20 || >=22 } js-yaml@3.14.2: - resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} + resolution: + { + integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==, + } hasBin: true kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, + } + engines: { node: ">=0.10.0" } lru-cache@11.2.4: - resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} - engines: {node: 20 || >=22} + resolution: + { + integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==, + } + engines: { node: 20 || >=22 } magic-string@0.30.21: - resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + resolution: + { + integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==, + } mark.js@8.11.1: - resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + resolution: + { + integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==, + } mdast-util-to-hast@13.2.1: - resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + resolution: + { + integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==, + } micromark-util-character@2.1.1: - resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + resolution: + { + integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==, + } micromark-util-encode@2.0.1: - resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + resolution: + { + integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==, + } micromark-util-sanitize-uri@2.0.1: - resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + resolution: + { + integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==, + } micromark-util-symbol@2.0.1: - resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + resolution: + { + integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==, + } micromark-util-types@2.0.2: - resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + resolution: + { + integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==, + } minimatch@10.1.1: - resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} - engines: {node: 20 || >=22} + resolution: + { + integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==, + } + engines: { node: 20 || >=22 } minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} + resolution: + { + integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==, + } + engines: { node: ">=16 || 14 >=14.17" } minisearch@7.2.0: - resolution: {integrity: sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==} + resolution: + { + integrity: sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==, + } nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + resolution: + { + integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==, + } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } hasBin: true oniguruma-parser@0.12.1: - resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} + resolution: + { + integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==, + } oniguruma-to-es@4.3.5: - resolution: {integrity: sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==} + resolution: + { + integrity: sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==, + } package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + resolution: + { + integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==, + } path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, + } + engines: { node: ">=8" } path-scurry@2.0.1: - resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} - engines: {node: 20 || >=22} + resolution: + { + integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==, + } + engines: { node: 20 || >=22 } perfect-debounce@2.1.0: - resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} + resolution: + { + integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==, + } picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + resolution: + { + integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, + } picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==, + } + engines: { node: ">=12" } postcss@8.5.8: - resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} - engines: {node: ^10 || ^12 || >=14} + resolution: + { + integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==, + } + engines: { node: ^10 || ^12 || >=14 } property-information@7.1.0: - resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + resolution: + { + integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==, + } qsu@1.10.4: - resolution: {integrity: sha512-v5RhwvHMkDdbXEaAxQh5re8q7DiG6EE70+CNwYVA6wZsa4gUrpur+D8lIO3PrzeCj3azc/S79X5v3BH8ILfr9A==} - engines: {node: '>=18.0.0'} + resolution: + { + integrity: sha512-v5RhwvHMkDdbXEaAxQh5re8q7DiG6EE70+CNwYVA6wZsa4gUrpur+D8lIO3PrzeCj3azc/S79X5v3BH8ILfr9A==, + } + engines: { node: ">=18.0.0" } regex-recursion@6.0.2: - resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + resolution: + { + integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==, + } regex-utilities@2.3.0: - resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + resolution: + { + integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==, + } regex@6.1.0: - resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} + resolution: + { + integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==, + } rollup@4.59.0: - resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} + resolution: + { + integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==, + } + engines: { node: ">=18.0.0", npm: ">=8.0.0" } hasBin: true section-matter@1.0.0: - resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==, + } + engines: { node: ">=4" } shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, + } + engines: { node: ">=8" } shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, + } + engines: { node: ">=8" } shiki@3.23.0: - resolution: {integrity: sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==} + resolution: + { + integrity: sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==, + } signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} + resolution: + { + integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, + } + engines: { node: ">=14" } source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, + } + engines: { node: ">=0.10.0" } space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + resolution: + { + integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==, + } sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + resolution: + { + integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, + } string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + 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'} + resolution: + { + integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==, + } + engines: { node: ">=12" } stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + resolution: + { + integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==, + } strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, + } + engines: { node: ">=8" } strip-ansi@7.1.2: - resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==, + } + engines: { node: ">=12" } strip-bom-string@1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==, + } + engines: { node: ">=0.10.0" } tabbable@6.4.0: - resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} + resolution: + { + integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==, + } tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} - engines: {node: '>=12.0.0'} + resolution: + { + integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==, + } + engines: { node: ">=12.0.0" } trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + resolution: + { + integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==, + } unist-util-is@6.0.1: - resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + resolution: + { + integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==, + } unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + resolution: + { + integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==, + } unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + resolution: + { + integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==, + } unist-util-visit-parents@6.0.2: - resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + resolution: + { + integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==, + } unist-util-visit@5.1.0: - resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} + resolution: + { + integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==, + } vfile-message@4.0.3: - resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + resolution: + { + integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==, + } vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + resolution: + { + integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==, + } vite@7.3.1: - resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } hasBin: true peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - jiti: '>=1.21.0' + "@types/node": ^20.19.0 || >=22.12.0 + jiti: ">=1.21.0" less: ^4.0.0 lightningcss: ^1.21.0 sass: ^1.70.0 sass-embedded: ^1.70.0 - stylus: '>=0.54.8' + stylus: ">=0.54.8" sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 yaml: ^2.4.2 peerDependenciesMeta: - '@types/node': + "@types/node": optional: true jiti: optional: true @@ -882,15 +1457,21 @@ packages: optional: true vitepress-sidebar@1.33.1: - resolution: {integrity: sha512-wPUbXezGakVldawixeRW5tKQTLKoMj2t4nWoThKfCltBM/9a38IE+wCXmmRNW22ZKC32SD/X/sG6NyCTK8QBRg==} - engines: {node: '>=18.0.0'} + resolution: + { + integrity: sha512-wPUbXezGakVldawixeRW5tKQTLKoMj2t4nWoThKfCltBM/9a38IE+wCXmmRNW22ZKC32SD/X/sG6NyCTK8QBRg==, + } + engines: { node: ">=18.0.0" } vitepress@2.0.0-alpha.16: - resolution: {integrity: sha512-w1nwsefDVIsje7BZr2tsKxkZutDGjG0YoQ2yxO7+a9tvYVqfljYbwj5LMYkPy8Tb7YbPwa22HtIhk62jbrvuEQ==} + resolution: + { + integrity: sha512-w1nwsefDVIsje7BZr2tsKxkZutDGjG0YoQ2yxO7+a9tvYVqfljYbwj5LMYkPy8Tb7YbPwa22HtIhk62jbrvuEQ==, + } hasBin: true peerDependencies: markdown-it-mathjax3: ^4 - oxc-minify: '*' + oxc-minify: "*" postcss: ^8 peerDependenciesMeta: markdown-it-mathjax3: @@ -901,141 +1482,155 @@ packages: optional: true vue@3.5.30: - resolution: {integrity: sha512-hTHLc6VNZyzzEH/l7PFGjpcTvUgiaPK5mdLkbjrTeWSRcEfxFrv56g/XckIYlE9ckuobsdwqd5mk2g1sBkMewg==} + resolution: + { + integrity: sha512-hTHLc6VNZyzzEH/l7PFGjpcTvUgiaPK5mdLkbjrTeWSRcEfxFrv56g/XckIYlE9ckuobsdwqd5mk2g1sBkMewg==, + } peerDependencies: - typescript: '*' + typescript: "*" peerDependenciesMeta: typescript: optional: true which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, + } + engines: { node: ">= 8" } hasBin: true wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, + } + engines: { node: ">=10" } wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==, + } + engines: { node: ">=12" } zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + resolution: + { + integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==, + } snapshots: + "@babel/helper-string-parser@7.27.1": {} - '@babel/helper-string-parser@7.27.1': {} + "@babel/helper-validator-identifier@7.28.5": {} - '@babel/helper-validator-identifier@7.28.5': {} - - '@babel/parser@7.29.0': + "@babel/parser@7.29.0": dependencies: - '@babel/types': 7.29.0 + "@babel/types": 7.29.0 - '@babel/types@7.29.0': + "@babel/types@7.29.0": dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 + "@babel/helper-string-parser": 7.27.1 + "@babel/helper-validator-identifier": 7.28.5 - '@docsearch/css@4.6.0': {} + "@docsearch/css@4.6.0": {} - '@docsearch/js@4.6.0': {} + "@docsearch/js@4.6.0": {} - '@docsearch/sidepanel-js@4.6.0': {} + "@docsearch/sidepanel-js@4.6.0": {} - '@esbuild/aix-ppc64@0.27.4': + "@esbuild/aix-ppc64@0.27.4": optional: true - '@esbuild/android-arm64@0.27.4': + "@esbuild/android-arm64@0.27.4": optional: true - '@esbuild/android-arm@0.27.4': + "@esbuild/android-arm@0.27.4": optional: true - '@esbuild/android-x64@0.27.4': + "@esbuild/android-x64@0.27.4": optional: true - '@esbuild/darwin-arm64@0.27.4': + "@esbuild/darwin-arm64@0.27.4": optional: true - '@esbuild/darwin-x64@0.27.4': + "@esbuild/darwin-x64@0.27.4": optional: true - '@esbuild/freebsd-arm64@0.27.4': + "@esbuild/freebsd-arm64@0.27.4": optional: true - '@esbuild/freebsd-x64@0.27.4': + "@esbuild/freebsd-x64@0.27.4": optional: true - '@esbuild/linux-arm64@0.27.4': + "@esbuild/linux-arm64@0.27.4": optional: true - '@esbuild/linux-arm@0.27.4': + "@esbuild/linux-arm@0.27.4": optional: true - '@esbuild/linux-ia32@0.27.4': + "@esbuild/linux-ia32@0.27.4": optional: true - '@esbuild/linux-loong64@0.27.4': + "@esbuild/linux-loong64@0.27.4": optional: true - '@esbuild/linux-mips64el@0.27.4': + "@esbuild/linux-mips64el@0.27.4": optional: true - '@esbuild/linux-ppc64@0.27.4': + "@esbuild/linux-ppc64@0.27.4": optional: true - '@esbuild/linux-riscv64@0.27.4': + "@esbuild/linux-riscv64@0.27.4": optional: true - '@esbuild/linux-s390x@0.27.4': + "@esbuild/linux-s390x@0.27.4": optional: true - '@esbuild/linux-x64@0.27.4': + "@esbuild/linux-x64@0.27.4": optional: true - '@esbuild/netbsd-arm64@0.27.4': + "@esbuild/netbsd-arm64@0.27.4": optional: true - '@esbuild/netbsd-x64@0.27.4': + "@esbuild/netbsd-x64@0.27.4": optional: true - '@esbuild/openbsd-arm64@0.27.4': + "@esbuild/openbsd-arm64@0.27.4": optional: true - '@esbuild/openbsd-x64@0.27.4': + "@esbuild/openbsd-x64@0.27.4": optional: true - '@esbuild/openharmony-arm64@0.27.4': + "@esbuild/openharmony-arm64@0.27.4": optional: true - '@esbuild/sunos-x64@0.27.4': + "@esbuild/sunos-x64@0.27.4": optional: true - '@esbuild/win32-arm64@0.27.4': + "@esbuild/win32-arm64@0.27.4": optional: true - '@esbuild/win32-ia32@0.27.4': + "@esbuild/win32-ia32@0.27.4": optional: true - '@esbuild/win32-x64@0.27.4': + "@esbuild/win32-x64@0.27.4": optional: true - '@iconify-json/simple-icons@1.2.74': + "@iconify-json/simple-icons@1.2.74": dependencies: - '@iconify/types': 2.0.0 + "@iconify/types": 2.0.0 - '@iconify/types@2.0.0': {} + "@iconify/types@2.0.0": {} - '@isaacs/balanced-match@4.0.1': {} + "@isaacs/balanced-match@4.0.1": {} - '@isaacs/brace-expansion@5.0.0': + "@isaacs/brace-expansion@5.0.0": dependencies: - '@isaacs/balanced-match': 4.0.1 + "@isaacs/balanced-match": 4.0.1 - '@isaacs/cliui@8.0.2': + "@isaacs/cliui@8.0.2": dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 @@ -1044,239 +1639,239 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@jridgewell/sourcemap-codec@1.5.5': {} + "@jridgewell/sourcemap-codec@1.5.5": {} - '@rolldown/pluginutils@1.0.0-rc.2': {} + "@rolldown/pluginutils@1.0.0-rc.2": {} - '@rollup/rollup-android-arm-eabi@4.59.0': + "@rollup/rollup-android-arm-eabi@4.59.0": optional: true - '@rollup/rollup-android-arm64@4.59.0': + "@rollup/rollup-android-arm64@4.59.0": optional: true - '@rollup/rollup-darwin-arm64@4.59.0': + "@rollup/rollup-darwin-arm64@4.59.0": optional: true - '@rollup/rollup-darwin-x64@4.59.0': + "@rollup/rollup-darwin-x64@4.59.0": optional: true - '@rollup/rollup-freebsd-arm64@4.59.0': + "@rollup/rollup-freebsd-arm64@4.59.0": optional: true - '@rollup/rollup-freebsd-x64@4.59.0': + "@rollup/rollup-freebsd-x64@4.59.0": optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + "@rollup/rollup-linux-arm-gnueabihf@4.59.0": optional: true - '@rollup/rollup-linux-arm-musleabihf@4.59.0': + "@rollup/rollup-linux-arm-musleabihf@4.59.0": optional: true - '@rollup/rollup-linux-arm64-gnu@4.59.0': + "@rollup/rollup-linux-arm64-gnu@4.59.0": optional: true - '@rollup/rollup-linux-arm64-musl@4.59.0': + "@rollup/rollup-linux-arm64-musl@4.59.0": optional: true - '@rollup/rollup-linux-loong64-gnu@4.59.0': + "@rollup/rollup-linux-loong64-gnu@4.59.0": optional: true - '@rollup/rollup-linux-loong64-musl@4.59.0': + "@rollup/rollup-linux-loong64-musl@4.59.0": optional: true - '@rollup/rollup-linux-ppc64-gnu@4.59.0': + "@rollup/rollup-linux-ppc64-gnu@4.59.0": optional: true - '@rollup/rollup-linux-ppc64-musl@4.59.0': + "@rollup/rollup-linux-ppc64-musl@4.59.0": optional: true - '@rollup/rollup-linux-riscv64-gnu@4.59.0': + "@rollup/rollup-linux-riscv64-gnu@4.59.0": optional: true - '@rollup/rollup-linux-riscv64-musl@4.59.0': + "@rollup/rollup-linux-riscv64-musl@4.59.0": optional: true - '@rollup/rollup-linux-s390x-gnu@4.59.0': + "@rollup/rollup-linux-s390x-gnu@4.59.0": optional: true - '@rollup/rollup-linux-x64-gnu@4.59.0': + "@rollup/rollup-linux-x64-gnu@4.59.0": optional: true - '@rollup/rollup-linux-x64-musl@4.59.0': + "@rollup/rollup-linux-x64-musl@4.59.0": optional: true - '@rollup/rollup-openbsd-x64@4.59.0': + "@rollup/rollup-openbsd-x64@4.59.0": optional: true - '@rollup/rollup-openharmony-arm64@4.59.0': + "@rollup/rollup-openharmony-arm64@4.59.0": optional: true - '@rollup/rollup-win32-arm64-msvc@4.59.0': + "@rollup/rollup-win32-arm64-msvc@4.59.0": optional: true - '@rollup/rollup-win32-ia32-msvc@4.59.0': + "@rollup/rollup-win32-ia32-msvc@4.59.0": optional: true - '@rollup/rollup-win32-x64-gnu@4.59.0': + "@rollup/rollup-win32-x64-gnu@4.59.0": optional: true - '@rollup/rollup-win32-x64-msvc@4.59.0': + "@rollup/rollup-win32-x64-msvc@4.59.0": optional: true - '@shikijs/core@3.23.0': + "@shikijs/core@3.23.0": dependencies: - '@shikijs/types': 3.23.0 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + "@shikijs/types": 3.23.0 + "@shikijs/vscode-textmate": 10.0.2 + "@types/hast": 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.23.0': + "@shikijs/engine-javascript@3.23.0": dependencies: - '@shikijs/types': 3.23.0 - '@shikijs/vscode-textmate': 10.0.2 + "@shikijs/types": 3.23.0 + "@shikijs/vscode-textmate": 10.0.2 oniguruma-to-es: 4.3.5 - '@shikijs/engine-oniguruma@3.23.0': + "@shikijs/engine-oniguruma@3.23.0": dependencies: - '@shikijs/types': 3.23.0 - '@shikijs/vscode-textmate': 10.0.2 + "@shikijs/types": 3.23.0 + "@shikijs/vscode-textmate": 10.0.2 - '@shikijs/langs@3.23.0': + "@shikijs/langs@3.23.0": dependencies: - '@shikijs/types': 3.23.0 + "@shikijs/types": 3.23.0 - '@shikijs/themes@3.23.0': + "@shikijs/themes@3.23.0": dependencies: - '@shikijs/types': 3.23.0 + "@shikijs/types": 3.23.0 - '@shikijs/transformers@3.23.0': + "@shikijs/transformers@3.23.0": dependencies: - '@shikijs/core': 3.23.0 - '@shikijs/types': 3.23.0 + "@shikijs/core": 3.23.0 + "@shikijs/types": 3.23.0 - '@shikijs/types@3.23.0': + "@shikijs/types@3.23.0": dependencies: - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + "@shikijs/vscode-textmate": 10.0.2 + "@types/hast": 3.0.4 - '@shikijs/vscode-textmate@10.0.2': {} + "@shikijs/vscode-textmate@10.0.2": {} - '@types/estree@1.0.8': {} + "@types/estree@1.0.8": {} - '@types/hast@3.0.4': + "@types/hast@3.0.4": dependencies: - '@types/unist': 3.0.3 + "@types/unist": 3.0.3 - '@types/linkify-it@5.0.0': {} + "@types/linkify-it@5.0.0": {} - '@types/markdown-it@14.1.2': + "@types/markdown-it@14.1.2": dependencies: - '@types/linkify-it': 5.0.0 - '@types/mdurl': 2.0.0 + "@types/linkify-it": 5.0.0 + "@types/mdurl": 2.0.0 - '@types/mdast@4.0.4': + "@types/mdast@4.0.4": dependencies: - '@types/unist': 3.0.3 + "@types/unist": 3.0.3 - '@types/mdurl@2.0.0': {} + "@types/mdurl@2.0.0": {} - '@types/unist@3.0.3': {} + "@types/unist@3.0.3": {} - '@types/web-bluetooth@0.0.21': {} + "@types/web-bluetooth@0.0.21": {} - '@ungap/structured-clone@1.3.0': {} + "@ungap/structured-clone@1.3.0": {} - '@vitejs/plugin-vue@6.0.5(vite@7.3.1)(vue@3.5.30)': + "@vitejs/plugin-vue@6.0.5(vite@7.3.1)(vue@3.5.30)": dependencies: - '@rolldown/pluginutils': 1.0.0-rc.2 + "@rolldown/pluginutils": 1.0.0-rc.2 vite: 7.3.1 vue: 3.5.30 - '@vue/compiler-core@3.5.30': + "@vue/compiler-core@3.5.30": dependencies: - '@babel/parser': 7.29.0 - '@vue/shared': 3.5.30 + "@babel/parser": 7.29.0 + "@vue/shared": 3.5.30 entities: 7.0.1 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.30': + "@vue/compiler-dom@3.5.30": dependencies: - '@vue/compiler-core': 3.5.30 - '@vue/shared': 3.5.30 + "@vue/compiler-core": 3.5.30 + "@vue/shared": 3.5.30 - '@vue/compiler-sfc@3.5.30': + "@vue/compiler-sfc@3.5.30": dependencies: - '@babel/parser': 7.29.0 - '@vue/compiler-core': 3.5.30 - '@vue/compiler-dom': 3.5.30 - '@vue/compiler-ssr': 3.5.30 - '@vue/shared': 3.5.30 + "@babel/parser": 7.29.0 + "@vue/compiler-core": 3.5.30 + "@vue/compiler-dom": 3.5.30 + "@vue/compiler-ssr": 3.5.30 + "@vue/shared": 3.5.30 estree-walker: 2.0.2 magic-string: 0.30.21 postcss: 8.5.8 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.30': + "@vue/compiler-ssr@3.5.30": dependencies: - '@vue/compiler-dom': 3.5.30 - '@vue/shared': 3.5.30 + "@vue/compiler-dom": 3.5.30 + "@vue/shared": 3.5.30 - '@vue/devtools-api@8.1.0': + "@vue/devtools-api@8.1.0": dependencies: - '@vue/devtools-kit': 8.1.0 + "@vue/devtools-kit": 8.1.0 - '@vue/devtools-kit@8.1.0': + "@vue/devtools-kit@8.1.0": dependencies: - '@vue/devtools-shared': 8.1.0 + "@vue/devtools-shared": 8.1.0 birpc: 2.9.0 hookable: 5.5.3 perfect-debounce: 2.1.0 - '@vue/devtools-shared@8.1.0': {} + "@vue/devtools-shared@8.1.0": {} - '@vue/reactivity@3.5.30': + "@vue/reactivity@3.5.30": dependencies: - '@vue/shared': 3.5.30 + "@vue/shared": 3.5.30 - '@vue/runtime-core@3.5.30': + "@vue/runtime-core@3.5.30": dependencies: - '@vue/reactivity': 3.5.30 - '@vue/shared': 3.5.30 + "@vue/reactivity": 3.5.30 + "@vue/shared": 3.5.30 - '@vue/runtime-dom@3.5.30': + "@vue/runtime-dom@3.5.30": dependencies: - '@vue/reactivity': 3.5.30 - '@vue/runtime-core': 3.5.30 - '@vue/shared': 3.5.30 + "@vue/reactivity": 3.5.30 + "@vue/runtime-core": 3.5.30 + "@vue/shared": 3.5.30 csstype: 3.2.3 - '@vue/server-renderer@3.5.30(vue@3.5.30)': + "@vue/server-renderer@3.5.30(vue@3.5.30)": dependencies: - '@vue/compiler-ssr': 3.5.30 - '@vue/shared': 3.5.30 + "@vue/compiler-ssr": 3.5.30 + "@vue/shared": 3.5.30 vue: 3.5.30 - '@vue/shared@3.5.30': {} + "@vue/shared@3.5.30": {} - '@vueuse/core@14.2.1(vue@3.5.30)': + "@vueuse/core@14.2.1(vue@3.5.30)": dependencies: - '@types/web-bluetooth': 0.0.21 - '@vueuse/metadata': 14.2.1 - '@vueuse/shared': 14.2.1(vue@3.5.30) + "@types/web-bluetooth": 0.0.21 + "@vueuse/metadata": 14.2.1 + "@vueuse/shared": 14.2.1(vue@3.5.30) vue: 3.5.30 - '@vueuse/integrations@14.2.1(focus-trap@7.8.0)(vue@3.5.30)': + "@vueuse/integrations@14.2.1(focus-trap@7.8.0)(vue@3.5.30)": dependencies: - '@vueuse/core': 14.2.1(vue@3.5.30) - '@vueuse/shared': 14.2.1(vue@3.5.30) + "@vueuse/core": 14.2.1(vue@3.5.30) + "@vueuse/shared": 14.2.1(vue@3.5.30) vue: 3.5.30 optionalDependencies: focus-trap: 7.8.0 - '@vueuse/metadata@14.2.1': {} + "@vueuse/metadata@14.2.1": {} - '@vueuse/shared@14.2.1(vue@3.5.30)': + "@vueuse/shared@14.2.1(vue@3.5.30)": dependencies: vue: 3.5.30 @@ -1334,32 +1929,32 @@ snapshots: esbuild@0.27.4: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.4 - '@esbuild/android-arm': 0.27.4 - '@esbuild/android-arm64': 0.27.4 - '@esbuild/android-x64': 0.27.4 - '@esbuild/darwin-arm64': 0.27.4 - '@esbuild/darwin-x64': 0.27.4 - '@esbuild/freebsd-arm64': 0.27.4 - '@esbuild/freebsd-x64': 0.27.4 - '@esbuild/linux-arm': 0.27.4 - '@esbuild/linux-arm64': 0.27.4 - '@esbuild/linux-ia32': 0.27.4 - '@esbuild/linux-loong64': 0.27.4 - '@esbuild/linux-mips64el': 0.27.4 - '@esbuild/linux-ppc64': 0.27.4 - '@esbuild/linux-riscv64': 0.27.4 - '@esbuild/linux-s390x': 0.27.4 - '@esbuild/linux-x64': 0.27.4 - '@esbuild/netbsd-arm64': 0.27.4 - '@esbuild/netbsd-x64': 0.27.4 - '@esbuild/openbsd-arm64': 0.27.4 - '@esbuild/openbsd-x64': 0.27.4 - '@esbuild/openharmony-arm64': 0.27.4 - '@esbuild/sunos-x64': 0.27.4 - '@esbuild/win32-arm64': 0.27.4 - '@esbuild/win32-ia32': 0.27.4 - '@esbuild/win32-x64': 0.27.4 + "@esbuild/aix-ppc64": 0.27.4 + "@esbuild/android-arm": 0.27.4 + "@esbuild/android-arm64": 0.27.4 + "@esbuild/android-x64": 0.27.4 + "@esbuild/darwin-arm64": 0.27.4 + "@esbuild/darwin-x64": 0.27.4 + "@esbuild/freebsd-arm64": 0.27.4 + "@esbuild/freebsd-x64": 0.27.4 + "@esbuild/linux-arm": 0.27.4 + "@esbuild/linux-arm64": 0.27.4 + "@esbuild/linux-ia32": 0.27.4 + "@esbuild/linux-loong64": 0.27.4 + "@esbuild/linux-mips64el": 0.27.4 + "@esbuild/linux-ppc64": 0.27.4 + "@esbuild/linux-riscv64": 0.27.4 + "@esbuild/linux-s390x": 0.27.4 + "@esbuild/linux-x64": 0.27.4 + "@esbuild/netbsd-arm64": 0.27.4 + "@esbuild/netbsd-x64": 0.27.4 + "@esbuild/openbsd-arm64": 0.27.4 + "@esbuild/openbsd-x64": 0.27.4 + "@esbuild/openharmony-arm64": 0.27.4 + "@esbuild/sunos-x64": 0.27.4 + "@esbuild/win32-arm64": 0.27.4 + "@esbuild/win32-ia32": 0.27.4 + "@esbuild/win32-x64": 0.27.4 esprima@4.0.1: {} @@ -1403,8 +1998,8 @@ snapshots: hast-util-to-html@9.0.5: dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 + "@types/hast": 3.0.4 + "@types/unist": 3.0.3 ccount: 2.0.1 comma-separated-tokens: 2.0.3 hast-util-whitespace: 3.0.0 @@ -1417,7 +2012,7 @@ snapshots: hast-util-whitespace@3.0.0: dependencies: - '@types/hast': 3.0.4 + "@types/hast": 3.0.4 hookable@5.5.3: {} @@ -1431,7 +2026,7 @@ snapshots: jackspeak@4.1.1: dependencies: - '@isaacs/cliui': 8.0.2 + "@isaacs/cliui": 8.0.2 js-yaml@3.14.2: dependencies: @@ -1444,15 +2039,15 @@ snapshots: magic-string@0.30.21: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + "@jridgewell/sourcemap-codec": 1.5.5 mark.js@8.11.1: {} mdast-util-to-hast@13.2.1: dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.3.0 + "@types/hast": 3.0.4 + "@types/mdast": 4.0.4 + "@ungap/structured-clone": 1.3.0 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 @@ -1479,7 +2074,7 @@ snapshots: minimatch@10.1.1: dependencies: - '@isaacs/brace-expansion': 5.0.0 + "@isaacs/brace-expansion": 5.0.0 minipass@7.1.2: {} @@ -1532,33 +2127,33 @@ snapshots: rollup@4.59.0: dependencies: - '@types/estree': 1.0.8 + "@types/estree": 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.59.0 - '@rollup/rollup-android-arm64': 4.59.0 - '@rollup/rollup-darwin-arm64': 4.59.0 - '@rollup/rollup-darwin-x64': 4.59.0 - '@rollup/rollup-freebsd-arm64': 4.59.0 - '@rollup/rollup-freebsd-x64': 4.59.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.59.0 - '@rollup/rollup-linux-arm-musleabihf': 4.59.0 - '@rollup/rollup-linux-arm64-gnu': 4.59.0 - '@rollup/rollup-linux-arm64-musl': 4.59.0 - '@rollup/rollup-linux-loong64-gnu': 4.59.0 - '@rollup/rollup-linux-loong64-musl': 4.59.0 - '@rollup/rollup-linux-ppc64-gnu': 4.59.0 - '@rollup/rollup-linux-ppc64-musl': 4.59.0 - '@rollup/rollup-linux-riscv64-gnu': 4.59.0 - '@rollup/rollup-linux-riscv64-musl': 4.59.0 - '@rollup/rollup-linux-s390x-gnu': 4.59.0 - '@rollup/rollup-linux-x64-gnu': 4.59.0 - '@rollup/rollup-linux-x64-musl': 4.59.0 - '@rollup/rollup-openbsd-x64': 4.59.0 - '@rollup/rollup-openharmony-arm64': 4.59.0 - '@rollup/rollup-win32-arm64-msvc': 4.59.0 - '@rollup/rollup-win32-ia32-msvc': 4.59.0 - '@rollup/rollup-win32-x64-gnu': 4.59.0 - '@rollup/rollup-win32-x64-msvc': 4.59.0 + "@rollup/rollup-android-arm-eabi": 4.59.0 + "@rollup/rollup-android-arm64": 4.59.0 + "@rollup/rollup-darwin-arm64": 4.59.0 + "@rollup/rollup-darwin-x64": 4.59.0 + "@rollup/rollup-freebsd-arm64": 4.59.0 + "@rollup/rollup-freebsd-x64": 4.59.0 + "@rollup/rollup-linux-arm-gnueabihf": 4.59.0 + "@rollup/rollup-linux-arm-musleabihf": 4.59.0 + "@rollup/rollup-linux-arm64-gnu": 4.59.0 + "@rollup/rollup-linux-arm64-musl": 4.59.0 + "@rollup/rollup-linux-loong64-gnu": 4.59.0 + "@rollup/rollup-linux-loong64-musl": 4.59.0 + "@rollup/rollup-linux-ppc64-gnu": 4.59.0 + "@rollup/rollup-linux-ppc64-musl": 4.59.0 + "@rollup/rollup-linux-riscv64-gnu": 4.59.0 + "@rollup/rollup-linux-riscv64-musl": 4.59.0 + "@rollup/rollup-linux-s390x-gnu": 4.59.0 + "@rollup/rollup-linux-x64-gnu": 4.59.0 + "@rollup/rollup-linux-x64-musl": 4.59.0 + "@rollup/rollup-openbsd-x64": 4.59.0 + "@rollup/rollup-openharmony-arm64": 4.59.0 + "@rollup/rollup-win32-arm64-msvc": 4.59.0 + "@rollup/rollup-win32-ia32-msvc": 4.59.0 + "@rollup/rollup-win32-x64-gnu": 4.59.0 + "@rollup/rollup-win32-x64-msvc": 4.59.0 fsevents: 2.3.3 section-matter@1.0.0: @@ -1574,14 +2169,14 @@ snapshots: shiki@3.23.0: dependencies: - '@shikijs/core': 3.23.0 - '@shikijs/engine-javascript': 3.23.0 - '@shikijs/engine-oniguruma': 3.23.0 - '@shikijs/langs': 3.23.0 - '@shikijs/themes': 3.23.0 - '@shikijs/types': 3.23.0 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + "@shikijs/core": 3.23.0 + "@shikijs/engine-javascript": 3.23.0 + "@shikijs/engine-oniguruma": 3.23.0 + "@shikijs/langs": 3.23.0 + "@shikijs/themes": 3.23.0 + "@shikijs/types": 3.23.0 + "@shikijs/vscode-textmate": 10.0.2 + "@types/hast": 3.0.4 signal-exit@4.1.0: {} @@ -1629,35 +2224,35 @@ snapshots: unist-util-is@6.0.1: dependencies: - '@types/unist': 3.0.3 + "@types/unist": 3.0.3 unist-util-position@5.0.0: dependencies: - '@types/unist': 3.0.3 + "@types/unist": 3.0.3 unist-util-stringify-position@4.0.0: dependencies: - '@types/unist': 3.0.3 + "@types/unist": 3.0.3 unist-util-visit-parents@6.0.2: dependencies: - '@types/unist': 3.0.3 + "@types/unist": 3.0.3 unist-util-is: 6.0.1 unist-util-visit@5.1.0: dependencies: - '@types/unist': 3.0.3 + "@types/unist": 3.0.3 unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 vfile-message@4.0.3: dependencies: - '@types/unist': 3.0.3 + "@types/unist": 3.0.3 unist-util-stringify-position: 4.0.0 vfile@6.0.3: dependencies: - '@types/unist': 3.0.3 + "@types/unist": 3.0.3 vfile-message: 4.0.3 vite@7.3.1: @@ -1679,19 +2274,19 @@ snapshots: vitepress@2.0.0-alpha.16(postcss@8.5.8): dependencies: - '@docsearch/css': 4.6.0 - '@docsearch/js': 4.6.0 - '@docsearch/sidepanel-js': 4.6.0 - '@iconify-json/simple-icons': 1.2.74 - '@shikijs/core': 3.23.0 - '@shikijs/transformers': 3.23.0 - '@shikijs/types': 3.23.0 - '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 6.0.5(vite@7.3.1)(vue@3.5.30) - '@vue/devtools-api': 8.1.0 - '@vue/shared': 3.5.30 - '@vueuse/core': 14.2.1(vue@3.5.30) - '@vueuse/integrations': 14.2.1(focus-trap@7.8.0)(vue@3.5.30) + "@docsearch/css": 4.6.0 + "@docsearch/js": 4.6.0 + "@docsearch/sidepanel-js": 4.6.0 + "@iconify-json/simple-icons": 1.2.74 + "@shikijs/core": 3.23.0 + "@shikijs/transformers": 3.23.0 + "@shikijs/types": 3.23.0 + "@types/markdown-it": 14.1.2 + "@vitejs/plugin-vue": 6.0.5(vite@7.3.1)(vue@3.5.30) + "@vue/devtools-api": 8.1.0 + "@vue/shared": 3.5.30 + "@vueuse/core": 14.2.1(vue@3.5.30) + "@vueuse/integrations": 14.2.1(focus-trap@7.8.0)(vue@3.5.30) focus-trap: 7.8.0 mark.js: 8.11.1 minisearch: 7.2.0 @@ -1701,7 +2296,7 @@ snapshots: optionalDependencies: postcss: 8.5.8 transitivePeerDependencies: - - '@types/node' + - "@types/node" - async-validator - axios - change-case @@ -1727,11 +2322,11 @@ snapshots: vue@3.5.30: dependencies: - '@vue/compiler-dom': 3.5.30 - '@vue/compiler-sfc': 3.5.30 - '@vue/runtime-dom': 3.5.30 - '@vue/server-renderer': 3.5.30(vue@3.5.30) - '@vue/shared': 3.5.30 + "@vue/compiler-dom": 3.5.30 + "@vue/compiler-sfc": 3.5.30 + "@vue/runtime-dom": 3.5.30 + "@vue/server-renderer": 3.5.30(vue@3.5.30) + "@vue/shared": 3.5.30 which@2.0.2: dependencies: From ce1d7b301aa412b703c6917732f5891185127240 Mon Sep 17 00:00:00 2001 From: RocketQuack <202538874+Rocket-Quack@users.noreply.github.com> Date: Thu, 19 Mar 2026 11:57:06 +0100 Subject: [PATCH 17/17] fix(lint): resolve pre-commit formatting --- .gitignore | 2 +- .pre-commit-config.yaml | 1 + docs/08-reference/04-framework-comparisons.md | 4 ++++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 4704f2d6..591cbaff 100644 --- a/.gitignore +++ b/.gitignore @@ -31,4 +31,4 @@ node_modules # VitePress **/.vitepress/dist -**/.vitepress/cache \ No newline at end of file +**/.vitepress/cache diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5a1d6036..ef57978e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -34,6 +34,7 @@ repos: rev: v2.4.1 hooks: - id: codespell + exclude: ^docs/pnpm-lock\.yaml$ args: - -L - "ro" diff --git a/docs/08-reference/04-framework-comparisons.md b/docs/08-reference/04-framework-comparisons.md index aec78a54..fa1691e8 100644 --- a/docs/08-reference/04-framework-comparisons.md +++ b/docs/08-reference/04-framework-comparisons.md @@ -56,18 +56,22 @@ bench/ ### Key Architectural Differences 1. **Multi-tenancy** + - Django: One app = one database (typically) - Frappe: One installation = many sites, each with own database 2. **Background Jobs** + - Django: Requires Celery + Redis + worker setup - Frappe: Built-in queue system, just use `enqueue()` 3. **Real-time** + - Django: Requires Channels + Redis + ASGI setup - Frappe: Socket.IO built-in, automatic for DocType updates 4. **Admin/Management** + - Django: Admin for models, basic CRUD - Frappe: Full-featured Desk with reports, dashboards, permissions