From ab4a1cafb7739be429f6b055354893cbd44237b0 Mon Sep 17 00:00:00 2001 From: Zhiben Chen Date: Mon, 7 Sep 2026 13:10:02 -0400 Subject: [PATCH 1/7] Build FluxServe documentation website with Astro and Starlight --- .github/workflows/deploy.yml | 47 + .gitignore | 9 + .nvmrc | 1 + README.md | 96 +- astro.config.mjs | 36 + fluxserve-docs.json | 58 + package-lock.json | 7402 ++++++++++++++++++++++++++++++++ package.json | 36 + public/favicon.svg | 1 + public/robots.txt | 4 + scripts/check-site.mjs | 45 + scripts/import-docs.mjs | 159 + src/components/Footer.astro | 9 + src/components/Header.astro | 24 + src/components/PageTitle.astro | 4 + src/content.config.ts | 27 + src/content/blog/.gitkeep | 0 src/lib/blog.mjs | 9 + src/pages/404.astro | 6 + src/pages/blog/[...slug].astro | 16 + src/pages/blog/index.astro | 11 + src/pages/guides/index.astro | 15 + src/pages/index.astro | 52 + src/styles/site.css | 153 + tests/blog-build.test.mjs | 41 + tests/blog.test.mjs | 13 + tests/import-docs.test.mjs | 59 + tsconfig.json | 5 + 28 files changed, 8336 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/deploy.yml create mode 100644 .gitignore create mode 100644 .nvmrc create mode 100644 astro.config.mjs create mode 100644 fluxserve-docs.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.svg create mode 100644 public/robots.txt create mode 100644 scripts/check-site.mjs create mode 100644 scripts/import-docs.mjs create mode 100644 src/components/Footer.astro create mode 100644 src/components/Header.astro create mode 100644 src/components/PageTitle.astro create mode 100644 src/content.config.ts create mode 100644 src/content/blog/.gitkeep create mode 100644 src/lib/blog.mjs create mode 100644 src/pages/404.astro create mode 100644 src/pages/blog/[...slug].astro create mode 100644 src/pages/blog/index.astro create mode 100644 src/pages/guides/index.astro create mode 100644 src/pages/index.astro create mode 100644 src/styles/site.css create mode 100644 tests/blog-build.test.mjs create mode 100644 tests/blog.test.mjs create mode 100644 tests/import-docs.test.mjs create mode 100644 tsconfig.json diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..15c60c1 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,47 @@ +name: Build and deploy website +on: + push: + branches: [main] + pull_request: + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: pages-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '24' + cache: npm + - run: npm ci + - run: npm run build + - run: npm run check + - run: npm test + - name: Upload site + if: github.event_name != 'pull_request' + uses: actions/upload-pages-artifact@v3 + with: + path: dist + + deploy: + if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main' + needs: build + runs-on: ubuntu-latest + permissions: + pages: write + id-token: write + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ffd2f50 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +node_modules/ +dist/ +.astro/ +.cache/ +src/content/docs/ +public/fluxserve/ +output/ +.playwright-cli/ +.DS_Store diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..a45fd52 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +24 diff --git a/README.md b/README.md index 8fbff96..ed7f604 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,94 @@ -# FLX-OSS.github.io -Homepage for FLUX-OSS +# FluxServe website + +The FluxServe product website, documentation, deployment guides, and blog. Built with Astro and Starlight; published at https://flx-oss.github.io. + +## Local development + +Use Node.js 24 and npm 10.8.2 or newer. + +```sh +npm ci +npm run dev +``` + +Development imports documentation from the sibling `../FluxServe` checkout, including uncommitted documentation edits. To use another checkout: + +```sh +FLUXSERVE_SOURCE=/absolute/path/to/FluxServe npm run dev +``` + +Search indexes are built for production, so use the static preview to test search: + +```sh +npm run build:local +npm run preview +``` + +`build:local` is a preview only. Do not upload its output to production. + +## Production build and verification + +```sh +npm ci +npm run build +npm run check +npm test +npm run preview +``` + +The production build fetches the exact FluxServe commit in `fluxserve-docs.json`. It does not need a sibling checkout and rejects `FLUXSERVE_SOURCE`. Generated pages, imported assets, source caches, and build outputs are ignored by Git. + +The build validates page titles, descriptions, canonical URLs, local links, heading anchors, assets, sitemap, and search output. Tests cover import failures, URL rewriting, stale-page removal, and blog publication. Blog integration tests create an isolated temporary site and verify that draft articles appear in neither routes nor search. + +Browser verification covers responsive navigation, theme selection and persistence, keyboard access, search, and code copying. GPU examples are checked against FluxServe's source definitions; website checks do not execute GPU inference. + +## Updating documentation + +Technical content belongs in **FLX-OSS/FluxServe**, not this repository. + +1. Edit the Markdown in FluxServe and preview it using `npm run dev` or `npm run build:local`. +2. Commit and publish the reviewed FluxServe documentation changes. +3. Set `revision` in `fluxserve-docs.json` to the complete 40-character published commit SHA. +4. Set `editBranch` to the branch where documentation edits belong (normally `main`). The initial website uses `codex/docs-site-source` while its documentation PR awaits review; update the pin and edit branch after that PR merges. +5. Add or adjust explicit `pages` entries when publishing new public docs. Each entry provides a source path, stable URL slug, title, and description. Update the matching sidebar or guide index. +6. Run the production checks and review the website change before merging. + +The importer rewrites links between public docs, copies referenced image/PDF assets, and points other repository-file links to the pinned GitHub revision. Missing source files, asset files, and imported-page anchors fail the build. Each imported page links to its exact source revision. + +The disposable source cache is under `.cache/fluxserve/`. The importer only resets this cache; it never resets the local FluxServe checkout. + +## Writing a blog post + +Create `src/content/blog/your-post.md`. The filename becomes `/blog/your-post/`. Use lowercase, hyphenated filenames. + +```md +--- +title: Your article title +description: A concise summary. +date: 2026-09-07 +author: Your name +draft: true +--- + +Write the article in Markdown, starting with introductory text. +Use level-two headings for sections; the layout supplies the title. +``` + +Set `draft: false` when ready to publish. Drafts are excluded from the blog index, routes, sitemap, and search in all builds. Published posts are ordered newest first. The public blog starts empty; no placeholder posts are shipped. + +## Deployment + +GitHub Pages must use **GitHub Actions** as its build source. The workflow checks pull requests without deploying and publishes successful `main` builds; it can also be started manually from Actions. It uses the built-in GitHub token, with Pages write permissions limited to the deployment job. + +The canonical origin is `https://flx-oss.github.io` with no repository-name prefix. No custom domain is configured. To roll back, revert the website commit (including the documentation pin if changed) and let the normal workflow redeploy. + +## Structure + +- `fluxserve-docs.json`: pinned source revision and public documentation manifest. +- `scripts/`: Markdown importer and built-site link/metadata validation. +- `src/pages/`: custom homepage, guide index, blog, and 404. +- `src/components/`, `src/styles/`: shared navigation and FluxServe styling. +- `src/content/blog/`: authored blog Markdown. +- `src/content/docs/`, `public/fluxserve/`: generated and untracked. + +The site is English-only and publishes one documentation revision at a time. There is no server, CMS, analytics, account system, or runtime dependency on a running FluxServe engine. diff --git a/astro.config.mjs b/astro.config.mjs new file mode 100644 index 0000000..0e9cb40 --- /dev/null +++ b/astro.config.mjs @@ -0,0 +1,36 @@ +import { defineConfig } from 'astro/config'; +import starlight from '@astrojs/starlight'; + +export default defineConfig({ + site: 'https://flx-oss.github.io', + trailingSlash: 'always', + output: 'static', + cacheDir: './.astro/cache', + integrations: [starlight({ + title: 'FluxServe', + description: 'A serving engine for diffusion language models.', + favicon: '/favicon.svg', + customCss: ['./src/styles/site.css'], + credits: false, + disable404Route: true, + components: { + Header: './src/components/Header.astro', + PageTitle: './src/components/PageTitle.astro', + Footer: './src/components/Footer.astro', + }, + sidebar: [ + { label: 'Documentation', items: [ + { label: 'Introduction', slug: 'docs' }, + { label: 'Quickstart', slug: 'docs/quickstart' }, + { label: 'Architecture', slug: 'docs/architecture' }, + { label: 'Benchmarking', slug: 'docs/benchmarking' }, + ] }, + { label: 'Deployment guides', items: [ + { label: 'Docker installation', slug: 'guides/docker' }, + { label: 'LLaDA2.0-mini · 1 GPU', slug: 'guides/llada2-mini' }, + { label: 'LLaDA2.0-flash · 4 GPUs', slug: 'guides/llada2-flash' }, + { label: 'LLaDA2.1', slug: 'guides/llada2-1' }, + ] }, + ], + })], +}); diff --git a/fluxserve-docs.json b/fluxserve-docs.json new file mode 100644 index 0000000..d7d95d9 --- /dev/null +++ b/fluxserve-docs.json @@ -0,0 +1,58 @@ +{ + "repository": "FLX-OSS/FluxServe", + "revision": "ee2eb858da592eef77575dcf47414b565d9f890c", + "pages": [ + { + "source": "docs/overview.md", + "slug": "docs", + "title": "Introduction", + "description": "Meet FluxServe, a serving engine for diffusion language models." + }, + { + "source": "docs/guides/quickstart.md", + "slug": "docs/quickstart", + "title": "Quickstart", + "description": "Launch FluxServe and send your first chat completion request." + }, + { + "source": "docs/architecture.md", + "slug": "docs/architecture", + "title": "Architecture", + "description": "How FluxServe handles requests, block scheduling, attention, and distributed execution." + }, + { + "source": "docs/guides/benchmark.md", + "slug": "docs/benchmarking", + "title": "Benchmarking", + "description": "Measure offline throughput and online serving performance." + }, + { + "source": "docs/guides/getting_started.md", + "slug": "guides/docker", + "title": "Docker installation", + "description": "Build the CUDA environment and install FluxServe on an NVIDIA GPU host." + }, + { + "source": "docs/serving/llada2-mini.md", + "slug": "guides/llada2-mini", + "title": "LLaDA2.0-mini", + "description": "Serve LLaDA2.0-mini on one NVIDIA GPU." + }, + { + "source": "docs/serving/llada2-flash.md", + "slug": "guides/llada2-flash", + "title": "LLaDA2.0-flash", + "description": "Serve LLaDA2.0-flash with tensor and expert parallelism on four GPUs." + }, + { + "source": "docs/serving/llada2.1.md", + "slug": "guides/llada2-1", + "title": "LLaDA2.1", + "description": "Configure quality and speed presets with joint threshold decoding." + } + ], + "assets": [ + "assets/logo.png" + ], + "editBranch": "codex/docs-site-source" +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e586db9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7402 @@ +{ + "name": "fluxserve-website", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "fluxserve-website", + "version": "1.0.0", + "dependencies": { + "@astrojs/markdown-remark": "7.3.0", + "@astrojs/sitemap": "3.7.4", + "@astrojs/starlight": "0.42.0", + "astro": "7.3.1", + "github-slugger": "^2.0.0", + "remark-gfm": "^4.0.1", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.5", + "unist-util-visit": "^5.0.0" + }, + "devDependencies": { + "@astrojs/check": "^0.9.4", + "cheerio": "^1.2.0", + "typescript": "^5.9.3" + }, + "engines": { + "node": ">=22.12.0", + "npm": ">=10.8.2" + } + }, + "node_modules/@astrojs/check": { + "version": "0.9.10", + "resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.9.10.tgz", + "integrity": "sha512-zgx/UQMozdjOa3bOxjgeCFdtpE3c9rRX6xHwa+2QXvy8z8Akifu2AtubHyv/zzC2znO8dl8fFWL4K+Ba9kS8HQ==", + "dev": true, + "dependencies": { + "@astrojs/language-server": "^2.16.7", + "chokidar": "^4.0.3", + "kleur": "^4.1.5", + "yargs": "^18.0.0" + }, + "bin": { + "astro-check": "bin/astro-check.js" + }, + "peerDependencies": { + "typescript": "^5.0.0 || ^6.0.0" + } + }, + "node_modules/@astrojs/compiler": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.13.1.tgz", + "integrity": "sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==", + "dev": true + }, + "node_modules/@astrojs/compiler-binding": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding/-/compiler-binding-0.4.0.tgz", + "integrity": "sha512-x2RjDUuWfwLNtc3mjAdSRInwqh/rqbLar9cm/5FOMbHvmYZB7yfKewzSclAxWjIZsypJDXv1lhaP2WG+P8TK3g==", + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@astrojs/compiler-binding-darwin-arm64": "0.4.0", + "@astrojs/compiler-binding-darwin-x64": "0.4.0", + "@astrojs/compiler-binding-linux-arm64-gnu": "0.4.0", + "@astrojs/compiler-binding-linux-arm64-musl": "0.4.0", + "@astrojs/compiler-binding-linux-x64-gnu": "0.4.0", + "@astrojs/compiler-binding-linux-x64-musl": "0.4.0", + "@astrojs/compiler-binding-wasm32-wasi": "0.4.0", + "@astrojs/compiler-binding-win32-arm64-msvc": "0.4.0", + "@astrojs/compiler-binding-win32-x64-msvc": "0.4.0" + } + }, + "node_modules/@astrojs/compiler-binding-darwin-arm64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-darwin-arm64/-/compiler-binding-darwin-arm64-0.4.0.tgz", + "integrity": "sha512-ZVUwHundaQyFNjE6uoa0usaC0WOCitDCLS/4mdb4rOiJXwVUuKJBMxI5WMzXLWmamsXtK/Z//ifLXvV5Yeh4Hw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-darwin-x64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-darwin-x64/-/compiler-binding-darwin-x64-0.4.0.tgz", + "integrity": "sha512-FI6G8AY8u6fR1SI/QRR5yGMwtvZwP34CDmZpZ5HwJGa50UM1VISTLhqkhV4a476pmgd25X1Aur2dqw6hUnrlKA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-linux-arm64-gnu": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-arm64-gnu/-/compiler-binding-linux-arm64-gnu-0.4.0.tgz", + "integrity": "sha512-lB9gLFJK7m82EnjaU8nlRBEfcwGNeHidW3sSjODTUjMNaoewVuUz9fwwdY5M4jiSXIqWLH3yl6TX8FTDKA74Sw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-linux-arm64-musl": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-arm64-musl/-/compiler-binding-linux-arm64-musl-0.4.0.tgz", + "integrity": "sha512-HPbvWqbxFxyaoQJhLxCaSjtYBx9KBo7JGVzEFZCmMl968a2PsSH0UfiODYgYPXofTOIsIH2aoCcrHXML0IA3ig==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-linux-x64-gnu": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-x64-gnu/-/compiler-binding-linux-x64-gnu-0.4.0.tgz", + "integrity": "sha512-tQKolMxoJ/+0AmLWm1PmJ/i+z3i10ZU1bNuVjEDulCf48azEMtUNjTZgHJ5MPtpYRNc7dlETr8QujUfduzoC7Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-linux-x64-musl": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-x64-musl/-/compiler-binding-linux-x64-musl-0.4.0.tgz", + "integrity": "sha512-5v5YymudsxMHp3NBLCS8BUlu5CRqeLtWD9cKS/4nIhIEHCbpz9okmVV6I0HWqmBAPhWYcDa3vw/vltYPrOQCTA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-wasm32-wasi": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-wasm32-wasi/-/compiler-binding-wasm32-wasi-0.4.0.tgz", + "integrity": "sha512-m/phuH3x3PREvv1OnkM44NoPh4MatUadix1fB1u5SvMLCyDTUZykDJbKnWf1cjnYmHdlB8HcjTjl6JrCqAIXcw==", + "cpu": [ + "wasm32" + ], + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.2.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@astrojs/compiler-binding-win32-arm64-msvc": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-win32-arm64-msvc/-/compiler-binding-win32-arm64-msvc-0.4.0.tgz", + "integrity": "sha512-B9zYf3okEY83kM8gydlpH2BHP00w4ifxPqlYlWrgTwuD6wnkrJDCwBlgy1q31cERjCJRXN1lrE2VmkLvFjv/6g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-win32-x64-msvc": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-win32-x64-msvc/-/compiler-binding-win32-x64-msvc-0.4.0.tgz", + "integrity": "sha512-zB0Nrv0dGc0zZWPGDRmmETTPhDRqyZjAjk+gWMlVrJX5U89obpB3VUUE1ZiHxOCN5LQojeLK6O8L/dnoHolvNQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-rs": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-rs/-/compiler-rs-0.4.0.tgz", + "integrity": "sha512-koVikeon1kreEy+/JzLQRy3vzHHQVOjycs4degg4vFufKApZOwMZvSSAEztYNhmcQVfNVsVZZI4cEge3cexAbQ==", + "dependencies": { + "@astrojs/compiler-binding": "0.4.0" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@astrojs/internal-helpers": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.11.0.tgz", + "integrity": "sha512-3rzxJ+xbo0+8YyqOzLziIN32wmsHdCjEVz2sGOpRxJ+Ben/KiLph4ItxBy1abEL+E8fkRzqjg0rfXmaHJGw9JA==", + "dependencies": { + "@types/hast": "^3.0.4", + "@types/mdast": "^4.0.4", + "js-yaml": "^4.3.0", + "picomatch": "^4.0.4", + "retext-smartypants": "^6.2.0", + "shiki": "^4.0.2", + "smol-toml": "^1.6.0", + "unified": "^11.0.5" + } + }, + "node_modules/@astrojs/language-server": { + "version": "2.16.16", + "resolved": "https://registry.npmjs.org/@astrojs/language-server/-/language-server-2.16.16.tgz", + "integrity": "sha512-KuS17AOOqH/M5mHXPmKvtp8L+NNteARC7Xjf395+9R9dtJOBndqdStwU4V+OKzYZpgZ+hliV13knzx/oMtFl7Q==", + "dev": true, + "dependencies": { + "@astrojs/compiler": "^2.13.1", + "@astrojs/yaml2ts": "^0.2.4", + "@jridgewell/sourcemap-codec": "^1.5.5", + "@volar/kit": "~2.4.28", + "@volar/language-core": "~2.4.28", + "@volar/language-server": "~2.4.28", + "@volar/language-service": "~2.4.28", + "muggle-string": "^0.4.1", + "tinyglobby": "^0.2.16", + "volar-service-css": "0.0.71", + "volar-service-emmet": "0.0.71", + "volar-service-html": "0.0.71", + "volar-service-prettier": "0.0.71", + "volar-service-typescript": "0.0.71", + "volar-service-typescript-twoslash-queries": "0.0.71", + "volar-service-yaml": "0.0.71", + "vscode-html-languageservice": "^5.6.2", + "vscode-uri": "^3.1.0" + }, + "bin": { + "astro-ls": "bin/nodeServer.js" + }, + "peerDependencies": { + "prettier": "^3.0.0", + "prettier-plugin-astro": ">=0.11.0" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + } + } + }, + "node_modules/@astrojs/markdown-remark": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-7.3.0.tgz", + "integrity": "sha512-mRwn2W2PKkOj8XEAiD3b9RIF4qq6FKB6U4c98GxFLkEJH7uA6ZZv8TiqVjJSPMANLb1NtwBTgkY+KO4mTXnT/Q==", + "dependencies": { + "@astrojs/internal-helpers": "0.11.0", + "@astrojs/prism": "4.0.2", + "@mdx-js/mdx": "^3.1.1", + "acorn": "^8.16.0", + "estree-util-visit": "^2.0.0", + "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.3", + "hast-util-to-html": "^9.0.5", + "hast-util-to-text": "^4.0.2", + "mdast-util-definitions": "^6.0.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.1", + "remark-gfm": "^4.0.1", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.2", + "remark-smartypants": "^3.0.2", + "source-map": "^0.7.6", + "unified": "^11.0.5", + "unist-util-remove-position": "^5.0.0", + "unist-util-visit": "^5.1.0", + "unist-util-visit-parents": "^6.0.2", + "vfile": "^6.0.3" + } + }, + "node_modules/@astrojs/markdown-satteri": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-satteri/-/markdown-satteri-0.4.0.tgz", + "integrity": "sha512-wykOOW9KsUVcZweOpY/CeXpdKcCKZy6fQbdcteWFuI75+sQCiqxYM7VKsGa5b+aGl3cYQscFY37rsbbyal5MRw==", + "dependencies": { + "@astrojs/internal-helpers": "0.11.0", + "@astrojs/prism": "4.0.2", + "github-slugger": "^2.0.0", + "satteri": "^0.10.3" + } + }, + "node_modules/@astrojs/mdx": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-8.0.0.tgz", + "integrity": "sha512-4I/z+VgUO0B9I/+yhzIEpLyBYQZNJsInmrtqClP4lqX9yvUpbuV72zfRTZ8VqJLKABETUE5CYOl+23va8nqxZg==", + "dependencies": { + "@astrojs/internal-helpers": "0.11.0", + "@astrojs/markdown-satteri": "0.4.0", + "es-module-lexer": "^2.0.0" + }, + "engines": { + "node": ">=22.12.0" + }, + "peerDependencies": { + "@astrojs/markdown-remark": "^7.3.0", + "@astrojs/markdown-satteri": "^0.4.0", + "astro": "^7.2.6" + }, + "peerDependenciesMeta": { + "@astrojs/markdown-remark": { + "optional": true + } + } + }, + "node_modules/@astrojs/prism": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-4.0.2.tgz", + "integrity": "sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA==", + "dependencies": { + "prismjs": "^1.30.0" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@astrojs/sitemap": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.7.4.tgz", + "integrity": "sha512-LbKNC24bdUWcQf/pThB6qLlSqHojxGjZDURIzFocY8rlWnAn2t74nnhnK6S5x0NHriHoAduLEpVjRykmeGiVvA==", + "dependencies": { + "sitemap": "^9.0.0", + "zod": "^4.3.6" + } + }, + "node_modules/@astrojs/starlight": { + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.42.0.tgz", + "integrity": "sha512-EVsGnyGJ6rRNwGRZFYmGABo0qTQ55F7OSmfSL0VK+5lsqD+u6GWcB8tFqXETcUvP8kyn90W+QBLSL2aer9jNJQ==", + "dependencies": { + "@astrojs/markdown-satteri": "^0.4.0", + "@astrojs/mdx": "^8.0.0", + "@astrojs/sitemap": "^3.7.3", + "@pagefind/default-ui": "^1.3.0", + "@types/hast": "^3.0.5", + "@types/js-yaml": "^4.0.9", + "@types/mdast": "^4.0.4", + "astro-expressive-code": "^0.44.0", + "bcp-47": "^2.1.0", + "hast-util-format": "^1.1.0", + "hast-util-select": "^6.0.4", + "hast-util-to-html": "^9.0.5", + "hast-util-to-string": "^3.0.1", + "hastscript": "^9.0.1", + "i18next": "^26.0.7", + "js-yaml": "^4.1.1", + "klona": "^2.0.6", + "magic-string": "^1.2.3", + "mdast-util-directive": "^3.1.0", + "mdast-util-to-markdown": "^2.1.2", + "mdast-util-to-string": "^4.0.0", + "pagefind": "^1.5.2", + "remark-directive": "^4.0.0", + "satteri": "^0.10.3", + "ultrahtml": "^1.6.0", + "unified": "^11.0.5", + "unist-util-visit": "^5.1.0", + "vfile": "^6.0.3" + }, + "peerDependencies": { + "@astrojs/markdown-remark": "^7.3.0", + "astro": "^7.2.10" + }, + "peerDependenciesMeta": { + "@astrojs/markdown-remark": { + "optional": true + } + } + }, + "node_modules/@astrojs/telemetry": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.3.tgz", + "integrity": "sha512-C1TLn5sPJr0x4vk56piHWKbnqlEB8BKyte5Y45V02U+D7BGO5eMqZDH5aPjnkXQWJggvmsTXxH03QMZ9NgWLzQ==", + "dependencies": { + "ci-info": "^4.4.0", + "dset": "^3.1.4", + "is-docker": "^4.0.0", + "package-manager-detector": "^1.6.0" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + } + }, + "node_modules/@astrojs/yaml2ts": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@astrojs/yaml2ts/-/yaml2ts-0.2.4.tgz", + "integrity": "sha512-8oddpOae35pJsXPQXhTkM0ypfKPskVsh2bCxRtbf7e+/Epw2nReakFYpLKjZMEr75CsoF203PMnCocpfz0s69A==", + "dev": true, + "dependencies": { + "yaml": "^2.8.3" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bruits/satteri-darwin-arm64": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-arm64/-/satteri-darwin-arm64-0.10.5.tgz", + "integrity": "sha512-27KTVl4TJkVahMy/ohyA7qd4938G5UNneFUz/PsScYfpIhj0IVAS23mpcJXdPF44sa6nva198lmV/cKIb2YPyA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@bruits/satteri-darwin-x64": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-x64/-/satteri-darwin-x64-0.10.5.tgz", + "integrity": "sha512-IjnLe3nKspq6qaeqGgjT7MT8VrTV74yWRlaag7ZdNsI8TDAYZ0iPxMCo+9KQZHUk5EyVB+reBI/PFWL5KuFw9Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@bruits/satteri-linux-arm64-gnu": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-gnu/-/satteri-linux-arm64-gnu-0.10.5.tgz", + "integrity": "sha512-glkYXZCJywjP13v67eAyAMSJdF+ncvEbYvgi/wOtffL9tQ27lr/zsyzUfgs+ovjJ9d8JNQKiXeiArJcX8PJL9w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@bruits/satteri-linux-arm64-musl": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-musl/-/satteri-linux-arm64-musl-0.10.5.tgz", + "integrity": "sha512-yWdgG1g17Nh2QyGVlFUxGRa3FEFwiMcpZEyMNWkbM3deC94cmVc+/i9OuyFpdKuWo3GkgoCtYVOoxk1uCnCZIA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@bruits/satteri-linux-x64-gnu": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-gnu/-/satteri-linux-x64-gnu-0.10.5.tgz", + "integrity": "sha512-FVaLoPT1fBgGl0J+AYebyyXJYBachGl8Oyyrf1lye4RTqCB4S0Gwkj1uM9RJyThUOvx5VUmAT1CnNh1SFHA+kw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@bruits/satteri-linux-x64-musl": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-musl/-/satteri-linux-x64-musl-0.10.5.tgz", + "integrity": "sha512-EHpVAx2bqW3GINHTKkljtxVfQmVDGWIuwOYOP5YghTj+0PkBa2o8oKPRtQ9Kbsr1Fye8jtUcDjhwj2jMNugZKg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@bruits/satteri-wasm32-wasi": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-wasm32-wasi/-/satteri-wasm32-wasi-0.10.5.tgz", + "integrity": "sha512-ypz8c/Zmipxp4IoeDa228Gstv6TLzVmNs3yC6wKCoNSOjx1iwpgzu87Y3hTkXFdwChVGU85qeUDuOIarGUZQLw==", + "cpu": [ + "wasm32" + ], + "optional": true, + "dependencies": { + "@emnapi/core": "1.11.1", + "@emnapi/runtime": "1.11.1", + "@napi-rs/wasm-runtime": "^1.2.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@bruits/satteri-wasm32-wasi/node_modules/@emnapi/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", + "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@bruits/satteri-wasm32-wasi/node_modules/@emnapi/runtime": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", + "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@bruits/satteri-wasm32-wasi/node_modules/@emnapi/wasi-threads": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", + "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@bruits/satteri-win32-arm64-msvc": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-arm64-msvc/-/satteri-win32-arm64-msvc-0.10.5.tgz", + "integrity": "sha512-siTV88nb0LRqNpkL2gXboqCwVdq95sLtzMHS1/3eONV2gLbB3NAK46wmSMvCO/yquBvI2lvaFIfd8P12ecsxBw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@bruits/satteri-win32-x64-msvc": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-x64-msvc/-/satteri-win32-x64-msvc-0.10.5.tgz", + "integrity": "sha512-C3IfPvfvMXmlzBxaMPKFS1XiuV9pu2mC7YqkPk7PSvTgPZ8gbdASIpHpztDLvTTQjqZ0z1Ol8tK5X+V6XXC0wQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@capsizecss/unpack": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-4.0.1.tgz", + "integrity": "sha512-CuNiSqg7+e1cO/GjffyMOm5Tt2jUF9CWHHnvQ/UkqvtkGfHdgwEC0wpmq7fkN3gxwpRnrAN0WzO3vREKmNolMQ==", + "dependencies": { + "fontkitten": "^1.0.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@clack/core": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-1.4.3.tgz", + "integrity": "sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ==", + "dependencies": { + "fast-wrap-ansi": "^0.2.0", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 20.12.0" + } + }, + "node_modules/@clack/prompts": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-1.7.0.tgz", + "integrity": "sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A==", + "dependencies": { + "@clack/core": "1.4.3", + "fast-string-width": "^3.0.2", + "fast-wrap-ansi": "^0.2.0", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 20.12.0" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-4.2.0.tgz", + "integrity": "sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@emmetio/abbreviation": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz", + "integrity": "sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==", + "dev": true, + "dependencies": { + "@emmetio/scanner": "^1.0.4" + } + }, + "node_modules/@emmetio/css-abbreviation": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@emmetio/css-abbreviation/-/css-abbreviation-2.1.8.tgz", + "integrity": "sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==", + "dev": true, + "dependencies": { + "@emmetio/scanner": "^1.0.4" + } + }, + "node_modules/@emmetio/css-parser": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@emmetio/css-parser/-/css-parser-0.4.1.tgz", + "integrity": "sha512-2bC6m0MV/voF4CTZiAbG5MWKbq5EBmDPKu9Sb7s7nVcEzNQlrZP6mFFFlIaISM8X6514H9shWMme1fCm8cWAfQ==", + "dev": true, + "dependencies": { + "@emmetio/stream-reader": "^2.2.0", + "@emmetio/stream-reader-utils": "^0.1.0" + } + }, + "node_modules/@emmetio/html-matcher": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@emmetio/html-matcher/-/html-matcher-1.3.0.tgz", + "integrity": "sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==", + "dev": true, + "dependencies": { + "@emmetio/scanner": "^1.0.0" + } + }, + "node_modules/@emmetio/scanner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@emmetio/scanner/-/scanner-1.0.4.tgz", + "integrity": "sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==", + "dev": true + }, + "node_modules/@emmetio/stream-reader": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@emmetio/stream-reader/-/stream-reader-2.2.0.tgz", + "integrity": "sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==", + "dev": true + }, + "node_modules/@emmetio/stream-reader-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@emmetio/stream-reader-utils/-/stream-reader-utils-0.1.0.tgz", + "integrity": "sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==", + "dev": true + }, + "node_modules/@emnapi/core": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.3.tgz", + "integrity": "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==", + "optional": true, + "peer": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", + "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz", + "integrity": "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz", + "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz", + "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz", + "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz", + "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz", + "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz", + "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz", + "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz", + "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz", + "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz", + "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz", + "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz", + "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz", + "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz", + "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz", + "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz", + "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz", + "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz", + "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz", + "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz", + "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz", + "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz", + "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz", + "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz", + "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz", + "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz", + "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@expressive-code/core": { + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.44.2.tgz", + "integrity": "sha512-Yw5KonQCD1HoOO2P89y4wifqS9qrJcGVY0LkVMUsVZjhi++bhz4WwQ37inenKFNOEVo50P7cjoVsCdaVnUbq8w==", + "dependencies": { + "@ctrl/tinycolor": "^4.0.4", + "hast-util-select": "^6.0.2", + "hast-util-to-html": "^9.0.1", + "hast-util-to-text": "^4.0.1", + "hastscript": "^9.0.0", + "postcss": "^8.4.38", + "postcss-nested": "^6.0.1", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.1" + } + }, + "node_modules/@expressive-code/plugin-frames": { + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.44.2.tgz", + "integrity": "sha512-gVLm6TQMNIRWIaM7o+mCtxkGNjLZY5/2faSTLoXeo9wv/Pkj/0QAtZyXPVPrRsPARqiipATNFmfvQFLJudxPHQ==", + "dependencies": { + "@expressive-code/core": "^0.44.2" + } + }, + "node_modules/@expressive-code/plugin-shiki": { + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.44.2.tgz", + "integrity": "sha512-ebWIvCDzXvjyD8rH6T6DfytYJw1GoArLR4nusIAE4VxXrCQf3d+owytiv010KU/dUg+SRLZskDn0N+HaFXeuSg==", + "dependencies": { + "@expressive-code/core": "^0.44.2", + "shiki": "^4.0.2" + } + }, + "node_modules/@expressive-code/plugin-text-markers": { + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.44.2.tgz", + "integrity": "sha512-SNI7EgUSiADqbqUzzMbj1ZeC/r2pa5eg3KyFOGAd3a7EsIA4qzjXQLp+ODWQtHVDKFCdGs4J3ovSJUqvKIK96g==", + "dependencies": { + "@expressive-code/core": "^0.44.2" + } + }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "optional": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.4.tgz", + "integrity": "sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.3.3" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.4.tgz", + "integrity": "sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.3.3" + } + }, + "node_modules/@img/sharp-freebsd-wasm32": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.4.tgz", + "integrity": "sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==", + "optional": true, + "os": [ + "freebsd" + ], + "dependencies": { + "@img/sharp-wasm32": "0.35.4" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.3.tgz", + "integrity": "sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.3.tgz", + "integrity": "sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.3.tgz", + "integrity": "sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.3.tgz", + "integrity": "sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.3.tgz", + "integrity": "sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.3.tgz", + "integrity": "sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.3.tgz", + "integrity": "sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.3.tgz", + "integrity": "sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.3.tgz", + "integrity": "sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.3.tgz", + "integrity": "sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.4.tgz", + "integrity": "sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.3.3" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.4.tgz", + "integrity": "sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.3.3" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.4.tgz", + "integrity": "sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.3.3" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.4.tgz", + "integrity": "sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.3.3" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.4.tgz", + "integrity": "sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.3.3" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.4.tgz", + "integrity": "sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.3.3" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.4.tgz", + "integrity": "sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.3.3" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.4.tgz", + "integrity": "sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.3.3" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.4.tgz", + "integrity": "sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.11.3" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-webcontainers-wasm32": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.4.tgz", + "integrity": "sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA==", + "cpu": [ + "wasm32" + ], + "optional": true, + "dependencies": { + "@img/sharp-wasm32": "0.35.4" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.4.tgz", + "integrity": "sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.4.tgz", + "integrity": "sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.4.tgz", + "integrity": "sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", + "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==" + }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", + "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "acorn": "^8.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.3.tgz", + "integrity": "sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q==", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.3" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=23.5.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", + "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" + } + }, + "node_modules/@oslojs/encoding": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", + "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==" + }, + "node_modules/@oxc-project/types": { + "version": "0.148.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.148.0.tgz", + "integrity": "sha512-Nm4s/jB+4FpFsPhWGEC4h7rzksesmtnMXomo6rCMcg/b8zLQuOziRgkCS1fxDCXOlJB/6Q8oABOZ/OP6RIPj9A==", + "funding": { + "url": "https://github.com/sponsors/oxc-project" + } + }, + "node_modules/@pagefind/darwin-arm64": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@pagefind/darwin-arm64/-/darwin-arm64-1.5.2.tgz", + "integrity": "sha512-MXpI+7HsAdPkvJ0gk9xj9g541BCqBZOBbdwj9g6lB5LCj6kSV6nqDSjzcAJwvOsfu0fjwvC8hQU+ecfhp+MpiQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@pagefind/darwin-x64": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@pagefind/darwin-x64/-/darwin-x64-1.5.2.tgz", + "integrity": "sha512-IojxFWMEJe0RQ7PQ3KXQsPIImNsbpPYpoZ+QUDrL8fAl/O27IX+LVLs74/UzEZy5uA2LD8Nz1AiwKr72vrkZQw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@pagefind/default-ui": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@pagefind/default-ui/-/default-ui-1.5.2.tgz", + "integrity": "sha512-pm1LMnQg8N2B3n2TnjKlhaFihpz6zTiA4HiGQ6/slKO/+8K9CAU5kcjdSSPgpuk1PMuuN4hxLipUIifnrkl3Sg==" + }, + "node_modules/@pagefind/freebsd-x64": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@pagefind/freebsd-x64/-/freebsd-x64-1.5.2.tgz", + "integrity": "sha512-7EVzo9+0w+2cbe671BtMj10UlNo83I+HrLVLfRxO731svHRJKUfJ/mo05gU14pe9PCfpKNQT8FS3Xc/oDN6pOA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@pagefind/linux-arm64": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@pagefind/linux-arm64/-/linux-arm64-1.5.2.tgz", + "integrity": "sha512-Ovt9+K35sqzn8H3ZMXGwls4TD/wMJuvRtShHIsmUQREmaxjrDEX7gHckRCrwYJ4XE1H1p6HkLz3wukrAnsfXQw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@pagefind/linux-x64": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@pagefind/linux-x64/-/linux-x64-1.5.2.tgz", + "integrity": "sha512-V+tFqHKXhQKq/WqPBD67AFy7scn1/aZID00ws4fSDd+1daSi5UHR9VVlRrOUYKxn3VuFQYRD7lYXdZK1WED1YA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@pagefind/windows-arm64": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@pagefind/windows-arm64/-/windows-arm64-1.5.2.tgz", + "integrity": "sha512-hN9Nh90fNW61nNRCW9ZyQrAj/mD0eRvmJ8NlTUzkbuW8kIzGJUi3cxjFkEcMZ5h/8FsKWD/VcouZl4yo1F7B6g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@pagefind/windows-x64": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@pagefind/windows-x64/-/windows-x64-1.5.2.tgz", + "integrity": "sha512-Fa2Iyw7kaDRzGMfNYNUXNW2zbL5FQVDgSOcbDHdzBrDEdpqOqg8TcZ68F22ol6NJ9IGzvUdmeyZypLW5dyhqsg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rolldown/binding-android-arm-eabi": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.7.tgz", + "integrity": "sha512-EypzgnYCwyVY4NDHKzGmNJT5b+XaQEBniHxsMdeIQLB/tcCzZnhqrzHpZFbX9iaxx+5RiB8caATBtfvZP7zVxQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.7.tgz", + "integrity": "sha512-l17HE9EweWaqJZhuUuNBN/FzM62xw+DECVnJyvMsxn8vJFAGLy5QfLDoYAcronkAN8VxKZHezDpulHDPx95vFw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.7.tgz", + "integrity": "sha512-8ED8ELFvHXc6OCETIn4gXObPiaR6bckM/ipXtbzlPVDRMBfEGjCKgO90F9YtfdpDatVx/ZQw7aZ1vUMf/+T3Mw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.7.tgz", + "integrity": "sha512-/WPripjtiAIZ2tWY7ddijORT0Ujg87wxWW/qcoFVCKAWVDPhtY0xr7Dj0M3GyNGz60jGwTElhro/mkF9dT7dDQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.7.tgz", + "integrity": "sha512-14DI4NcqpvbICxSnGLx3PmtDaWqRP/KGSGb6C+JLLVPeZRl6dKdHba3pGsqT3vpdTqhEYIPG0MMQ8c0xYqoJxA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.7.tgz", + "integrity": "sha512-bxrWIRvHWQvbJwi+VIie/kDJmQxcNE6xxWwZdqF/ExVAigtHkv54WTLQPb+QsZdnFy18fg7JPfWGL0RH6vwIlQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.7.tgz", + "integrity": "sha512-toOY2BChBZyuxU7OYX6Tn389di4IzAqPTycVcci0O7FSfBqzRB3RZn+K5Is6ANf4tmgRd/K1yZTsNTXbkXsnLg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.7.tgz", + "integrity": "sha512-lAIXTH/aiLRLxsTgQvfhjo4K1ydWIp00+V0voOr9beb/9ZmkUFrSIb03dXNFRgMNvkE6oGsF10ioQ6UsI+vS5Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.7.tgz", + "integrity": "sha512-kdnwS28Pkenp/mZMRwjXXXwxQ7pIsm+bF919LUK93BOyhcLsrVKdP2p9fxpiPNPAbNuch8ypQt0pm2P2LYCAGg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.7.tgz", + "integrity": "sha512-516OdsyLdr5E65paF3yBF55t8mfm9+gmtCsK3xI7XKXIT7EfRlHhxL8K/NR6Hu8BWSgF5+1w74lTL0+nxcc8Qw==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.7.tgz", + "integrity": "sha512-r8/z8n7GFaYRln3xmP1Cxy0HH/HLM0uBUPkEuSVEfKGDA89M0FsZRZJRSwe/tJjRx+fpH/gjorfhB8tmEbSFLA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.7.tgz", + "integrity": "sha512-pAsE8iiDxUg1xBqdhrTfg45AVDVpirjz00sblEYClGNNcMnDb+e8beQgqIAw6LvauX/APvgxUnwrgun/YYGBhw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.7.tgz", + "integrity": "sha512-lTcIYmmnQQA8Or/2DatS6oSqcdLHvendjS+zLu+FwgToynWMRSmQdpM65fTANJgIS4mjbMOo5KT2lnT9SAb96w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.7.tgz", + "integrity": "sha512-e3Gu3WxbNk/UqQhxqU7YIYO+9ZBvWNz3U+h/qRFosscMFzdRPbXYSaSWgSnklv2fz1TgzBTcti2z35c/7irsHw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.7.tgz", + "integrity": "sha512-W/jg5qoRSqjsEv0+dZi4e687mcHqmVuU0P4fK6qS/xjetW2Gmc1W8j//z5nAeNcC8Ttm0hV46IjcYeuVwYhuiw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==" + }, + "node_modules/@shikijs/core": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.4.3.tgz", + "integrity": "sha512-QCR4q2ZO/ILJEuwiBMel4wdcTDb1JGwfjKTxPDF6x8ixOaluPrVqIn06C99AcRPhmYlBR56d/Fb+GN58GzExpg==", + "dependencies": { + "@shikijs/primitive": "4.4.3", + "@shikijs/types": "4.4.3", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.5", + "hast-util-to-html": "^9.0.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.4.3.tgz", + "integrity": "sha512-FbOjFJp9VLdo1Wevs10BBtVxiTWwNLqZh5Gkhjgda/ioL15YOgeSl9n+6XMa3qRlPQzfhFNe641SrynFHYG0nQ==", + "dependencies": { + "@shikijs/types": "4.4.3", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.6" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.4.3.tgz", + "integrity": "sha512-EcOQkxdxGQrc1Row/cC2c96/v1dbZqGnEVu1qTuT/MJmp6+cXCvQussowVmCv5Tqr3KuY3c7IbM6HTW3LJ1k9w==", + "dependencies": { + "@shikijs/types": "4.4.3", + "@shikijs/vscode-textmate": "^10.0.2" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/langs": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.4.3.tgz", + "integrity": "sha512-ePic0yfAJGOF83D5wBHK/00EjK65oahBYxFk5epgq33WRv7X9UuxLEV8PtR0szC0z8dl7INIpIodB99JRFlR+A==", + "dependencies": { + "@shikijs/types": "4.4.3" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/primitive": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.4.3.tgz", + "integrity": "sha512-m0wBeLDQDeIxRdUmrCPdQqfuUamDwRL5isCfYbguKD6NiaKpVbsv+3J81DyIKgNW5h4WAIIr8T4EkgQrBBxvaQ==", + "dependencies": { + "@shikijs/types": "4.4.3", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/themes": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.4.3.tgz", + "integrity": "sha512-w8UHjeUnIR965KMWJHUPXOc2mNJUnK3vpVLYLvw5IYU2mnTTJ89E24OrJDBNiJDQ0qzb0tc4l7mrIXx5cFeIyw==", + "dependencies": { + "@shikijs/types": "4.4.3" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/types": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.4.3.tgz", + "integrity": "sha512-UEJxmRR++MAGR6hugn0vgVS2W/6lWAts84FFSrnlH9sP0LNol7E5+NQ792pH8liWUhyMyjhTgSUH3k7iD7tc5g==", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", + "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/debug": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz", + "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/js-yaml": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.14.tgz", + "integrity": "sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg==" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" + }, + "node_modules/@types/nlcst": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", + "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/node": { + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.3.tgz", + "integrity": "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==", + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/@types/sax": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", + "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.4.0.tgz", + "integrity": "sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==" + }, + "node_modules/@volar/kit": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/kit/-/kit-2.4.28.tgz", + "integrity": "sha512-cKX4vK9dtZvDRaAzeoUdaAJEew6IdxHNCRrdp5Kvcl6zZOqb6jTOfk3kXkIkG3T7oTFXguEMt5+9ptyqYR84Pg==", + "dev": true, + "dependencies": { + "@volar/language-service": "2.4.28", + "@volar/typescript": "2.4.28", + "typesafe-path": "^0.2.2", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/@volar/language-core": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.28.tgz", + "integrity": "sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==", + "dev": true, + "dependencies": { + "@volar/source-map": "2.4.28" + } + }, + "node_modules/@volar/language-server": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/language-server/-/language-server-2.4.28.tgz", + "integrity": "sha512-NqcLnE5gERKuS4PUFwlhMxf6vqYo7hXtbMFbViXcbVkbZ905AIVWhnSo0ZNBC2V127H1/2zP7RvVOVnyITFfBw==", + "dev": true, + "dependencies": { + "@volar/language-core": "2.4.28", + "@volar/language-service": "2.4.28", + "@volar/typescript": "2.4.28", + "path-browserify": "^1.0.1", + "request-light": "^0.7.0", + "vscode-languageserver": "^9.0.1", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@volar/language-service": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/language-service/-/language-service-2.4.28.tgz", + "integrity": "sha512-Rh/wYCZJrI5vCwMk9xyw/Z+MsWxlJY1rmMZPsxUoJKfzIRjS/NF1NmnuEcrMbEVGja00aVpCsInJfixQTMdvLw==", + "dev": true, + "dependencies": { + "@volar/language-core": "2.4.28", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@volar/source-map": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.28.tgz", + "integrity": "sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==", + "dev": true + }, + "node_modules/@volar/typescript": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.28.tgz", + "integrity": "sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==", + "dev": true, + "dependencies": { + "@volar/language-core": "2.4.28", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vscode/emmet-helper": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.11.0.tgz", + "integrity": "sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==", + "dev": true, + "dependencies": { + "emmet": "^2.4.3", + "jsonc-parser": "^2.3.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.15.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vscode/emmet-helper/node_modules/jsonc-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz", + "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==", + "dev": true + }, + "node_modules/@vscode/l10n": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz", + "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "dev": true, + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-i18n": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ajv-i18n/-/ajv-i18n-4.2.0.tgz", + "integrity": "sha512-v/ei2UkCEeuKNXh8RToiFsUclmU+G57LO1Oo22OagNMENIw+Yb8eMwvHu7Vn9fmkjJyv6XclhJ8TbuigSglPkg==", + "dev": true, + "peerDependencies": { + "ajv": "^8.0.0-beta.0" + } + }, + "node_modules/am-i-vibing": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/am-i-vibing/-/am-i-vibing-0.4.0.tgz", + "integrity": "sha512-MxT4XZL7pzLHpuvhDKdMaQHMGGkJDLluKBLsbstn+8wv9sWcFT6h+0ve9qkml95amVTZtZV83gQe2hY+ojgHLg==", + "dependencies": { + "process-ancestry": "^0.1.0" + }, + "bin": { + "am-i-vibing": "dist/cli.mjs" + } + }, + "node_modules/ansi-regex": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.3.0.tgz", + "integrity": "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-iterate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", + "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/astro": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/astro/-/astro-7.3.1.tgz", + "integrity": "sha512-A/bJYHtc6n0UAdROY9W948fW6lX0pnUA+JWKW+IGCXRyDIGN2MsXC0OlS8onZGJjr+sv8htemwOc9W5PBRXCkw==", + "dependencies": { + "@astrojs/compiler-rs": "^0.4.0", + "@astrojs/internal-helpers": "0.11.0", + "@astrojs/markdown-satteri": "0.4.0", + "@astrojs/telemetry": "3.3.3", + "@capsizecss/unpack": "^4.0.0", + "@clack/prompts": "^1.1.0", + "@oslojs/encoding": "^1.1.0", + "am-i-vibing": "^0.4.0", + "aria-query": "^5.3.2", + "axobject-query": "^4.1.0", + "ci-info": "^4.4.0", + "clsx": "^2.1.1", + "common-ancestor-path": "^2.0.0", + "cookie": "^2.0.1", + "devalue": "^5.8.1", + "diff": "^9.0.0", + "dset": "^3.1.4", + "es-module-lexer": "^2.0.0", + "esbuild": "^0.28.0", + "find-proc": "0.1.0", + "flattie": "^1.1.1", + "fontace": "~0.4.1", + "get-tsconfig": "5.0.0-beta.4", + "github-slugger": "^2.0.0", + "html-escaper": "3.0.3", + "http-cache-semantics": "^4.2.0", + "js-yaml": "^4.3.0", + "jsonc-parser": "^3.3.1", + "magic-string": "^1.0.0", + "magicast": "^0.5.2", + "mrmime": "^2.0.1", + "neotraverse": "^1.0.1", + "obug": "^2.1.1", + "p-limit": "^7.3.0", + "p-queue": "^9.1.0", + "package-manager-detector": "^1.6.0", + "piccolore": "^0.1.3", + "picomatch": "^4.0.4", + "semver": "^7.7.4", + "shiki": "^4.0.2", + "smol-toml": "^1.6.0", + "svgo": "^4.0.1", + "tinyclip": "^0.1.12", + "tinyexec": "^1.0.4", + "tinyglobby": "^0.2.15", + "ultrahtml": "^1.6.0", + "unifont": "~0.7.5", + "unstorage": "^1.17.5", + "vite": "^8.0.13", + "vitefu": "^1.1.2", + "xxhash-wasm": "^1.1.0", + "yargs-parser": "^22.0.0", + "zod": "^4.5.4" + }, + "bin": { + "astro": "bin/astro.mjs" + }, + "engines": { + "node": ">=22.12.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/astrodotbuild" + }, + "optionalDependencies": { + "sharp": "^0.35.4" + }, + "peerDependencies": { + "@astrojs/markdown-remark": "^7.3.0" + }, + "peerDependenciesMeta": { + "@astrojs/markdown-remark": { + "optional": true + } + } + }, + "node_modules/astro-expressive-code": { + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.44.2.tgz", + "integrity": "sha512-avop7nZcRwC7quvIxVguhwEZ9Tp6IoTzKUCLwP30Fb7+er+pWQgcysP01dcuzRIJo81kLGg30q/YAI2Yb1Sdzg==", + "dependencies": { + "rehype-expressive-code": "^0.44.2", + "url-extras": "^0.1.0" + }, + "peerDependencies": { + "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta || ^7.0.0" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/bcp-47": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-2.1.1.tgz", + "integrity": "sha512-KLw+H/gd2p4zly1X7Yh/qziuyae5/w/QFnvTng9eZL5fvszL7Whl3MBoWF8yxL7ksUjBfOD+OxkytiqbBpG+Fw==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/bcp-47-match": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", + "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/cheerio": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz", + "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==", + "dev": true, + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "encoding-sniffer": "^0.2.1", + "htmlparser2": "^10.1.0", + "parse5": "^7.3.0", + "parse5-htmlparser2-tree-adapter": "^7.1.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^7.19.0", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=20.18.1" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "dev": true, + "dependencies": { + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/common-ancestor-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-2.0.0.tgz", + "integrity": "sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng==", + "engines": { + "node": ">= 18" + } + }, + "node_modules/cookie": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-2.0.1.tgz", + "integrity": "sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w==", + "engines": { + "node": ">=22" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cookie-es": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.3.tgz", + "integrity": "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==" + }, + "node_modules/crossws": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", + "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", + "dependencies": { + "uncrypto": "^0.1.3" + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-selector-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.3.0.tgz", + "integrity": "sha512-Y2asgMGFqJKF4fq4xHDSlFYIkeVfRsm69lQC1q9kbEsH5XtnINTMrweLkjYMeaUgiXBy/uvKeO/a1JHTNnmB2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/css-tree": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", + "dependencies": { + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/defu": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz", + "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==" + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==" + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/devalue": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.9.2.tgz", + "integrity": "sha512-po4PAY5c53tw5XMocSnf8A/5OHhbbUftpr93aEN6BBoAdntUmK7vu7wOATqvt7cXO7m1Cl4gMVn6p7n6n4mj0w==" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/diff": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz", + "integrity": "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/direction": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz", + "integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==", + "bin": { + "direction": "cli.js" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dset": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", + "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/emmet": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/emmet/-/emmet-2.4.11.tgz", + "integrity": "sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==", + "dev": true, + "dependencies": { + "@emmetio/abbreviation": "^2.3.3", + "@emmetio/css-abbreviation": "^2.1.8" + } + }, + "node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true + }, + "node_modules/encoding-sniffer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", + "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", + "dev": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-module-lexer": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.2.tgz", + "integrity": "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==" + }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esbuild": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz", + "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.2", + "@esbuild/android-arm": "0.28.2", + "@esbuild/android-arm64": "0.28.2", + "@esbuild/android-x64": "0.28.2", + "@esbuild/darwin-arm64": "0.28.2", + "@esbuild/darwin-x64": "0.28.2", + "@esbuild/freebsd-arm64": "0.28.2", + "@esbuild/freebsd-x64": "0.28.2", + "@esbuild/linux-arm": "0.28.2", + "@esbuild/linux-arm64": "0.28.2", + "@esbuild/linux-ia32": "0.28.2", + "@esbuild/linux-loong64": "0.28.2", + "@esbuild/linux-mips64el": "0.28.2", + "@esbuild/linux-ppc64": "0.28.2", + "@esbuild/linux-riscv64": "0.28.2", + "@esbuild/linux-s390x": "0.28.2", + "@esbuild/linux-x64": "0.28.2", + "@esbuild/netbsd-arm64": "0.28.2", + "@esbuild/netbsd-x64": "0.28.2", + "@esbuild/openbsd-arm64": "0.28.2", + "@esbuild/openbsd-x64": "0.28.2", + "@esbuild/openharmony-arm64": "0.28.2", + "@esbuild/sunos-x64": "0.28.2", + "@esbuild/win32-arm64": "0.28.2", + "@esbuild/win32-ia32": "0.28.2", + "@esbuild/win32-x64": "0.28.2" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.1.tgz", + "integrity": "sha512-B0np3dcdxqILX5e9nEi5/Fr4K7gL4oYFVPV1zRa2e9wRCbQoZZNWOZFYyoInvXUPJXBXjss+QXlWLJChDEHDkA==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==" + }, + "node_modules/expressive-code": { + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.44.2.tgz", + "integrity": "sha512-MLNghkvhyFgVW4oCD5DxBuYnnTXIf0PygzGmfT6OZeOOYWh/D4sH1j931biElkA5RG/J9wY/iuSMGAPF5vzHOg==", + "dependencies": { + "@expressive-code/core": "^0.44.2", + "@expressive-code/plugin-frames": "^0.44.2", + "@expressive-code/plugin-shiki": "^0.44.2", + "@expressive-code/plugin-text-markers": "^0.44.2" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-string-truncated-width": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", + "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==" + }, + "node_modules/fast-string-width": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", + "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", + "dependencies": { + "fast-string-truncated-width": "^3.0.2" + } + }, + "node_modules/fast-uri": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.7.tgz", + "integrity": "sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ] + }, + "node_modules/fast-wrap-ansi": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz", + "integrity": "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==", + "dependencies": { + "fast-string-width": "^3.0.2" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/find-proc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/find-proc/-/find-proc-0.1.0.tgz", + "integrity": "sha512-OaOpEYv2PiQ7SQ5LIrl+deA1XaWcxEjnpM6VuWXTUvn+teIXxeFTLDmu18/zDQpFmHN4o3oDBX+BT0AGwEhemg==", + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/flattie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", + "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/fontace": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.4.1.tgz", + "integrity": "sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==", + "dependencies": { + "fontkitten": "^1.0.2" + } + }, + "node_modules/fontkitten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fontkitten/-/fontkitten-1.0.3.tgz", + "integrity": "sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==", + "dependencies": { + "tiny-inflate": "^1.0.3" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", + "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-tsconfig": { + "version": "5.0.0-beta.4", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-5.0.0-beta.4.tgz", + "integrity": "sha512-7nF7C9fIPFEMHgEMEfgIlO9wDdZ8CyHw27rWciFZfHvHDReIiPhsYuzPRXsfvBCqFy1l8RRyyWV7QLM+ZhUJsQ==", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "engines": { + "node": ">=20.20.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" + }, + "node_modules/h3": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.11.tgz", + "integrity": "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==", + "dependencies": { + "cookie-es": "^1.2.3", + "crossws": "^0.3.5", + "defu": "^6.1.6", + "destr": "^2.0.5", + "iron-webcrypto": "^1.2.1", + "node-mock-http": "^1.0.4", + "radix3": "^1.1.2", + "ufo": "^1.6.3", + "uncrypto": "^0.1.3" + } + }, + "node_modules/hast-util-embedded": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz", + "integrity": "sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-is-element": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-format": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hast-util-format/-/hast-util-format-1.1.0.tgz", + "integrity": "sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-embedded": "^3.0.0", + "hast-util-minify-whitespace": "^1.0.0", + "hast-util-phrasing": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "html-whitespace-sensitive-tag-names": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-has-property": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", + "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-body-ok-link": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-3.0.1.tgz", + "integrity": "sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-minify-whitespace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hast-util-minify-whitespace/-/hast-util-minify-whitespace-1.0.1.tgz", + "integrity": "sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-embedded": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-phrasing": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-3.0.1.tgz", + "integrity": "sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-embedded": "^3.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-is-body-ok-link": "^3.0.0", + "hast-util-is-element": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", + "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-select": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.4.tgz", + "integrity": "sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "bcp-47-match": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "css-selector-parser": "^3.0.0", + "devlop": "^1.0.0", + "direction": "^2.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "nth-check": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", + "integrity": "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-string": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", + "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-escaper": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", + "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/html-whitespace-sensitive-tag-names": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-whitespace-sensitive-tag-names/-/html-whitespace-sensitive-tag-names-3.0.1.tgz", + "integrity": "sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/htmlparser2": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "entities": "^7.0.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==" + }, + "node_modules/i18next": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-26.4.2.tgz", + "integrity": "sha512-RX+R0VLg13IbvRuJSxnqykUFS9vQZTl8wYpWPCIUDWVrSGjsQywB5Y+pjzrkboxGAuYfJZVH1InFTdgBdxq6ug==", + "funding": [ + { + "type": "individual", + "url": "https://www.locize.com/i18next" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + }, + { + "type": "individual", + "url": "https://www.locize.com" + } + ], + "peerDependencies": { + "typescript": "^5 || ^6 || ^7" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==" + }, + "node_modules/iron-webcrypto": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", + "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", + "funding": { + "url": "https://github.com/sponsors/brc-dd" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-docker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-4.0.0.tgz", + "integrity": "sha512-LHE+wROyG/Y/0ZnbktRCoTix2c1RhgWaZraMZ8o1Q7zCh0VSrICJQO5oqIIISrcSBtrXv0o233w1IYwsWCjTzA==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/js-yaml": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", + "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==" + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/lightningcss": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/magic-string": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.2.3.tgz", + "integrity": "sha512-Bpb0W2TbLKOZ7vJnOUnVRGq3WL2p+ISV29M6hYPL1AFCpyKZpdr5ytiXoTSSxRVhg8YW7f65+6gbG8WG6PCa/g==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magicast": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.4.tgz", + "integrity": "sha512-llBEhWm1SacoRwgHUoQJYtwp4PBLF4faQi5TCpIGyGs9n4y5+juI0tDgyKIfpqxckRHaHzouUEph3THklWh03w==", + "dependencies": { + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", + "source-map-js": "^1.2.1" + } + }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-definitions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz", + "integrity": "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-directive": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz", + "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", + "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==" + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-4.0.0.tgz", + "integrity": "sha512-/C2nqVmXXmiseSSuCdItCMho7ybwwop6RrrRPk0KbOHW21JKoCldC+8rFOaundDoRBUWBnJJcxeA/Kvi34WQXg==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.18", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neotraverse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-1.0.1.tgz", + "integrity": "sha512-WmmLty1YWwJl9yZi77v2dVIV6X2kuYV8YYBI/G3LWGKdGHmHUvL1z7FW0iDvEvGAwNEoc5x1tOOOyDnf5jJw/w==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/nlcst-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", + "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", + "dependencies": { + "@types/nlcst": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==" + }, + "node_modules/node-mock-http": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.5.tgz", + "integrity": "sha512-KQyt/wLjG3TAc7DOUhpqWzgd4ERxR80JOlTK5VE5R1S12IaPVN5qkj4klBce9HPG1Njuup4Sb5bljaT34lIyjw==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/obug": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.4.tgz", + "integrity": "sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==", + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/ofetch": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz", + "integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==", + "dependencies": { + "destr": "^2.0.5", + "node-fetch-native": "^1.6.7", + "ufo": "^1.6.1" + } + }, + "node_modules/ohash": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.12.tgz", + "integrity": "sha512-65S/5gk9YSsaRjcyf7Nfa6h/d3E8/1gslpXfI4W7Dxn/oap8IKRuNT5VXkLQ1YFKIEg4apRY4Pj6aiwFzrDdmw==" + }, + "node_modules/oniguruma-parser": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.2.tgz", + "integrity": "sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==" + }, + "node_modules/oniguruma-to-es": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.6.tgz", + "integrity": "sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==", + "dependencies": { + "oniguruma-parser": "^0.12.2", + "regex": "^6.1.0", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/p-limit": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-7.3.2.tgz", + "integrity": "sha512-Ll0w3fU24vYpXoZmjjZIee6bJQDgG0oAyo1PdmFYI8UDwJJddaHAypxIH9avUu+t+lSsAwKVsb1jDCMIIChliw==", + "dependencies": { + "yocto-queue": "^1.2.1" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-9.3.3.tgz", + "integrity": "sha512-NXAOdnEe5FsZJfT4oK84lE1Y5cFFdWlRuOo5tww8DyNMxyRXwn39fIkUtNLKppcPC+UYU/bXujNCUGDv01y7CA==", + "dependencies": { + "eventemitter3": "^5.0.4", + "p-timeout": "^7.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-7.0.1.tgz", + "integrity": "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-manager-detector": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.8.0.tgz", + "integrity": "sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==" + }, + "node_modules/pagefind": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/pagefind/-/pagefind-1.5.2.tgz", + "integrity": "sha512-XTUaK0hXMCu2jszWE584JGQT7y284TmMV9l/HX3rnG5uo3rHI/uHU56XTyyyPFjeWEBxECbAi0CaFDJOONtG0Q==", + "bin": { + "pagefind": "lib/runner/bin.cjs" + }, + "optionalDependencies": { + "@pagefind/darwin-arm64": "1.5.2", + "@pagefind/darwin-x64": "1.5.2", + "@pagefind/freebsd-x64": "1.5.2", + "@pagefind/linux-arm64": "1.5.2", + "@pagefind/linux-x64": "1.5.2", + "@pagefind/windows-arm64": "1.5.2", + "@pagefind/windows-x64": "1.5.2" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + }, + "node_modules/parse-latin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", + "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", + "dependencies": { + "@types/nlcst": "^2.0.0", + "@types/unist": "^3.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-modify-children": "^4.0.0", + "unist-util-visit-children": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "dev": true, + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "dev": true, + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/piccolore": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/piccolore/-/piccolore-0.1.3.tgz", + "integrity": "sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "node_modules/picomatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.28", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz", + "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.18", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz", + "integrity": "sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier": { + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.6.tgz", + "integrity": "sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/process-ancestry": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/process-ancestry/-/process-ancestry-0.1.0.tgz", + "integrity": "sha512-tGqJW/UnclpYASFcM6Xh8D8l/BMtaQ9+CSG0vlJSJTcdMM4lDRv4c6H0Pdcsfted+bVczdYSfk2fdukg2gQkZg==", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/property-information": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz", + "integrity": "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/radix3": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", + "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==" + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-jsx": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz", + "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==", + "dependencies": { + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", + "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==" + }, + "node_modules/rehype-expressive-code": { + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.44.2.tgz", + "integrity": "sha512-jvjQpsfWKBquDrEl5YQA3CJybRRIuDOYsui1BJTs5oKDUK8pPkJSSxY8FjxNlIFIdtgrTjC1zuahuY4Cc1j9SQ==", + "dependencies": { + "expressive-code": "^0.44.2" + } + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-stringify": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz", + "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-directive": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-4.0.0.tgz", + "integrity": "sha512-7sxn4RfF1o3izevPV1DheyGDD6X4c9hrGpfdUpm7uC++dqrnJxIZVkk7CoKqcLm0VUMAuOol7Mno3m6g8cfMuA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-directive": "^3.0.0", + "micromark-extension-directive": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz", + "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-smartypants": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.3.tgz", + "integrity": "sha512-gCaK+ndZ0hYezlqFegHFCVh2CQemsi0Npdh1qVM9bxlUFknjkbP6VmojWhddOCrbK0PbbacmYLWfTULRiT1eWA==", + "dependencies": { + "retext": "^9.0.0", + "retext-smartypants": "^6.0.0", + "unified": "^11.0.4", + "unist-util-visit": "^5.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/request-light": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.7.0.tgz", + "integrity": "sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==", + "dev": true + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/retext": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", + "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==", + "dependencies": { + "@types/nlcst": "^2.0.0", + "retext-latin": "^4.0.0", + "retext-stringify": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-latin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz", + "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==", + "dependencies": { + "@types/nlcst": "^2.0.0", + "parse-latin": "^7.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-smartypants": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz", + "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-stringify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz", + "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rolldown": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.7.tgz", + "integrity": "sha512-g0EtLvBjTUB7jhyV0S/TCup3v/XSVl45vUIGbOGU4QPiyjTenCe4mKuFvW9fEgYmS2Fo42AUssRmNuMziXdrig==", + "dependencies": { + "@oxc-project/types": "=0.148.0", + "@rolldown/pluginutils": "^1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm-eabi": "1.2.7", + "@rolldown/binding-android-arm64": "1.2.7", + "@rolldown/binding-darwin-arm64": "1.2.7", + "@rolldown/binding-darwin-x64": "1.2.7", + "@rolldown/binding-freebsd-x64": "1.2.7", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.7", + "@rolldown/binding-linux-arm64-gnu": "1.2.7", + "@rolldown/binding-linux-arm64-musl": "1.2.7", + "@rolldown/binding-linux-ppc64-gnu": "1.2.7", + "@rolldown/binding-linux-s390x-gnu": "1.2.7", + "@rolldown/binding-linux-x64-gnu": "1.2.7", + "@rolldown/binding-linux-x64-musl": "1.2.7", + "@rolldown/binding-openharmony-arm64": "1.2.7", + "@rolldown/binding-win32-arm64-msvc": "1.2.7", + "@rolldown/binding-win32-x64-msvc": "1.2.7" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/satteri": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/satteri/-/satteri-0.10.5.tgz", + "integrity": "sha512-Ao1LKpAEa9Wdg0otgbVKViZHEq9ebdXe4DMrp3s9vQAU0HNIuHnFEuMuOcm0ZIXyV0Yzxj91NvhLpvXZJO/5ZQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.5", + "@types/hast": "^3.0.5", + "@types/mdast": "^4.0.4", + "@types/unist": "^3.0.3" + }, + "optionalDependencies": { + "@bruits/satteri-darwin-arm64": "0.10.5", + "@bruits/satteri-darwin-x64": "0.10.5", + "@bruits/satteri-linux-arm64-gnu": "0.10.5", + "@bruits/satteri-linux-arm64-musl": "0.10.5", + "@bruits/satteri-linux-x64-gnu": "0.10.5", + "@bruits/satteri-linux-x64-musl": "0.10.5", + "@bruits/satteri-wasm32-wasi": "0.10.5", + "@bruits/satteri-win32-arm64-msvc": "0.10.5", + "@bruits/satteri-win32-x64-msvc": "0.10.5" + } + }, + "node_modules/sax": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz", + "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sharp": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.4.tgz", + "integrity": "sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==", + "optional": true, + "dependencies": { + "@img/colour": "^1.1.0", + "detect-libc": "^2.1.2", + "semver": "^7.8.5" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.35.4", + "@img/sharp-darwin-x64": "0.35.4", + "@img/sharp-freebsd-wasm32": "0.35.4", + "@img/sharp-libvips-darwin-arm64": "1.3.3", + "@img/sharp-libvips-darwin-x64": "1.3.3", + "@img/sharp-libvips-linux-arm": "1.3.3", + "@img/sharp-libvips-linux-arm64": "1.3.3", + "@img/sharp-libvips-linux-ppc64": "1.3.3", + "@img/sharp-libvips-linux-riscv64": "1.3.3", + "@img/sharp-libvips-linux-s390x": "1.3.3", + "@img/sharp-libvips-linux-x64": "1.3.3", + "@img/sharp-libvips-linuxmusl-arm64": "1.3.3", + "@img/sharp-libvips-linuxmusl-x64": "1.3.3", + "@img/sharp-linux-arm": "0.35.4", + "@img/sharp-linux-arm64": "0.35.4", + "@img/sharp-linux-ppc64": "0.35.4", + "@img/sharp-linux-riscv64": "0.35.4", + "@img/sharp-linux-s390x": "0.35.4", + "@img/sharp-linux-x64": "0.35.4", + "@img/sharp-linuxmusl-arm64": "0.35.4", + "@img/sharp-linuxmusl-x64": "0.35.4", + "@img/sharp-webcontainers-wasm32": "0.35.4", + "@img/sharp-win32-arm64": "0.35.4", + "@img/sharp-win32-ia32": "0.35.4", + "@img/sharp-win32-x64": "0.35.4" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/shiki": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.4.3.tgz", + "integrity": "sha512-Mb/GvXPHBAXdgGIcnfU5L3ldpn1XcxrGkPHwqgRx17/I2XRfqlFKk2vGkHWINn1kdXvzJZeuO3is6I9KLPFm0g==", + "dependencies": { + "@shikijs/core": "4.4.3", + "@shikijs/engine-javascript": "4.4.3", + "@shikijs/engine-oniguruma": "4.4.3", + "@shikijs/langs": "4.4.3", + "@shikijs/themes": "4.4.3", + "@shikijs/types": "4.4.3", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/sitemap": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-9.0.1.tgz", + "integrity": "sha512-S6hzjGJSG3d6if0YoF5kTyeRJvia6FSTBroE5fQ0bu1QNxyJqhhinfUsXi9fH3MgtXODWvwo2BDyQSnhPQ88uQ==", + "dependencies": { + "@types/node": "^24.9.2", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.4.1" + }, + "bin": { + "sitemap": "dist/esm/cli.js" + }, + "engines": { + "node": ">=20.19.5", + "npm": ">=10.8.2" + } + }, + "node_modules/smol-toml": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.8.0.tgz", + "integrity": "sha512-kCZr2V3ch9i00x8zXRhjUNVcjG9ijES5dDudkXvUVCT5QlJNQWElSJdZqyPemffHoLNUYwOcou0Fy+ojN0uHSQ==", + "engines": { + "node": ">= 18" + }, + "funding": { + "url": "https://github.com/sponsors/cyyynthia" + } + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/string-width": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.2.tgz", + "integrity": "sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==", + "dev": true, + "dependencies": { + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/style-to-js": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", + "dependencies": { + "style-to-object": "1.0.14" + } + }, + "node_modules/style-to-object": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "dependencies": { + "inline-style-parser": "0.2.7" + } + }, + "node_modules/svgo": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.1.0.tgz", + "integrity": "sha512-bkxnTg1kSU0guhIBmibA6UUhrQmPVA1XsQLN+ylCd+UWzbnLkySOcXpyk1mrl05f+pcaCx2eHb+sp6BgMZWX+Q==", + "dependencies": { + "commander": "^11.1.0", + "css-select": "^6.0.0", + "css-tree": "^3.0.1", + "css-what": "^7.0.0", + "csso": "^5.0.5", + "picocolors": "^1.1.1", + "sax": "1.6.1" + }, + "bin": { + "svgo": "bin/svgo.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-6.0.0.tgz", + "integrity": "sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^7.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "nth-check": "^2.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/css-what": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-7.0.0.tgz", + "integrity": "sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" + }, + "node_modules/tinyclip": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/tinyclip/-/tinyclip-0.1.15.tgz", + "integrity": "sha512-uo33abH+Ays0xYaDysoBt494Hb3hsEczMpcC0MwFl773pazORx4fmvKhclhR1wonUbB6vvpRsvVMwnhfqeMc+A==", + "engines": { + "node": "^16.14.0 || >= 17.3.0" + } + }, + "node_modules/tinyexec": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.1.tgz", + "integrity": "sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "optional": true + }, + "node_modules/typesafe-path": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/typesafe-path/-/typesafe-path-0.2.2.tgz", + "integrity": "sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-auto-import-cache": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/typescript-auto-import-cache/-/typescript-auto-import-cache-0.3.6.tgz", + "integrity": "sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ==", + "dev": true, + "dependencies": { + "semver": "^7.3.8" + } + }, + "node_modules/ufo": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.4.tgz", + "integrity": "sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==" + }, + "node_modules/ultrahtml": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.7.0.tgz", + "integrity": "sha512-2xRd0VHoAQE4M+vF/DvFFB7pUV0ZxTW1TLi7lHQWnF/Sb5TPeEUV/l+hxcNnGO00ZXGnR0voCMmYRKQf+rvJ2g==" + }, + "node_modules/uncrypto": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==" + }, + "node_modules/undici": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.29.1.tgz", + "integrity": "sha512-RYONW2MeafgYlkVOKYKkA/Ag7BmXqgIWCa8t1m0JcxrQg9pI9lEqRhAOruOBCbAohOa/gkCF+iPi9hrgvTzu6Q==", + "dev": true, + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==" + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unifont": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.7.5.tgz", + "integrity": "sha512-ULe/Cs+ZIsq+dcFofNkhqielCrUJnb5mr+Yc4EBM2VlL+6OZR6+cjtI2mT1bJvRBrVncqHAbLURxmPLcCXzWMg==", + "dependencies": { + "css-tree": "^3.1.0", + "ohash": "^2.0.11", + "undici": "^8.0.0" + } + }, + "node_modules/unifont/node_modules/undici": { + "version": "8.10.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-8.10.2.tgz", + "integrity": "sha512-/y4/bH9YNU5hi9NIrpOuvGXFcxrj3CMrV+/AYpowAYTpHn8gX/XPFjNy766FPoYY0miQhdW977JFWKGNhBdwyQ==", + "engines": { + "node": ">=22.19.0" + } + }, + "node_modules/unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-modify-children": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", + "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", + "dependencies": { + "@types/unist": "^3.0.0", + "array-iterate": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-children": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", + "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unstorage": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.5.tgz", + "integrity": "sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==", + "dependencies": { + "anymatch": "^3.1.3", + "chokidar": "^5.0.0", + "destr": "^2.0.5", + "h3": "^1.15.10", + "lru-cache": "^11.2.7", + "node-fetch-native": "^1.6.7", + "ofetch": "^1.5.1", + "ufo": "^1.6.3" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6 || ^7 || ^8", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", + "@vercel/kv": "^1 || ^2 || ^3", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/functions": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true + } + } + }, + "node_modules/unstorage/node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/unstorage/node_modules/readdirp": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz", + "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/url-extras": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/url-extras/-/url-extras-0.1.0.tgz", + "integrity": "sha512-8tzwTeXFPuX/5PHuCDQE5Dd9Ts4rwoq2t9aIT+HS4iAVpmj5l4Ao7Q+BuuFjvWRqrLswBhQDk8O96ZicgCqQqw==", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.2.2.tgz", + "integrity": "sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==", + "dependencies": { + "lightningcss": "^1.33.0", + "picomatch": "^4.0.5", + "postcss": "^8.5.26", + "rolldown": "~1.2.4", + "tinyglobby": "^0.2.17" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.4.0 || ^0.5.0", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.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 + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vitefu": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.3.tgz", + "integrity": "sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==", + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/volar-service-css": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-css/-/volar-service-css-0.0.71.tgz", + "integrity": "sha512-wRRFt9BpjMKCazcgOh67MSjUjiWUCAh99DyYSDIOTuxaRjEtDC7PpB0k1Y1wbJIW/pVtMUSVbpPo3UGSm0Byxw==", + "dev": true, + "dependencies": { + "vscode-css-languageservice": "^6.3.0", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-emmet": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-emmet/-/volar-service-emmet-0.0.71.tgz", + "integrity": "sha512-zqjzt6bN95e3CUstBm0PBFAJnrfz0ZAARka87fart46/gNCLLuP3Vujy8V/J8HEziTFLnfkgIASLFYPUhonJcA==", + "dev": true, + "dependencies": { + "@emmetio/css-parser": "^0.4.1", + "@emmetio/html-matcher": "^1.3.0", + "@vscode/emmet-helper": "^2.9.3", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-html": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-html/-/volar-service-html-0.0.71.tgz", + "integrity": "sha512-e8tHPhgQ7ooLfudAEIku+kgd9pWkq3SSz8RbnQDI1+Eb8wbenkLGHqoirLqz5ORLV6wIMr2Iv08RWBG5eOcgpw==", + "dev": true, + "dependencies": { + "vscode-html-languageservice": "^5.3.0", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-prettier": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-prettier/-/volar-service-prettier-0.0.71.tgz", + "integrity": "sha512-Rz7JVH3qD108UCdmIEiZvOBNljMt2nLFdbN8AXcDfn7xD9F5I2aCIsDVqBbXw21PsnxG0b7MfwtNF+zPS/NKUg==", + "dev": true, + "dependencies": { + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0", + "prettier": "^2.2 || ^3.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + }, + "prettier": { + "optional": true + } + } + }, + "node_modules/volar-service-typescript": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-typescript/-/volar-service-typescript-0.0.71.tgz", + "integrity": "sha512-yTtM/BVT6hoyEYnDtaCyAtNhdNeS/mhTTABlBOdw3NNiRBUin3IznFJpgfjer4c6RYopiPjjQjc9VFhxVl1mLw==", + "dev": true, + "dependencies": { + "path-browserify": "^1.0.1", + "semver": "^7.6.2", + "typescript-auto-import-cache": "^0.3.5", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-nls": "^5.2.0", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-typescript-twoslash-queries": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-typescript-twoslash-queries/-/volar-service-typescript-twoslash-queries-0.0.71.tgz", + "integrity": "sha512-9K2k72s4n7rV9s4bX0MyjbX9iBribvKZbBJKuEmTCZfeWJXs6Yh7bGpY4eoc7UufAjvpheBqwyZCOIPBvxCv0A==", + "dev": true, + "dependencies": { + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-yaml": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-yaml/-/volar-service-yaml-0.0.71.tgz", + "integrity": "sha512-qYGWGuVpUTnZGu5P/CR4KLK4aIR8RrcVnmfZ2eRcj9q/I8VZCoC5yy9FtEvfNvnDp4MU17yhdJcvpQPIqhJS2Q==", + "dev": true, + "dependencies": { + "vscode-uri": "^3.0.8", + "yaml-language-server": "~1.23.0" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/vscode-css-languageservice": { + "version": "6.3.10", + "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.10.tgz", + "integrity": "sha512-eq5N9Er3fC4vA9zd9EFhyBG90wtCCuXgRSpAndaOgXMh1Wgep5lBgRIeDgjZBW9pa+332yC9+49cZMW8jcL3MA==", + "dev": true, + "dependencies": { + "@vscode/l10n": "^0.0.18", + "vscode-languageserver-textdocument": "^1.0.12", + "vscode-languageserver-types": "3.17.5", + "vscode-uri": "^3.1.0" + } + }, + "node_modules/vscode-css-languageservice/node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "dev": true + }, + "node_modules/vscode-html-languageservice": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.6.2.tgz", + "integrity": "sha512-ulCrSnFnfQ16YzvwnYUgEbUEl/ZG7u2eV27YhvLObSHKkb8fw1Z9cgsnUwjTEeDIdJDoTDTDpxuhQwoenoLNMg==", + "dev": true, + "dependencies": { + "@vscode/l10n": "^0.0.18", + "vscode-languageserver-textdocument": "^1.0.12", + "vscode-languageserver-types": "^3.17.5", + "vscode-uri": "^3.1.0" + } + }, + "node_modules/vscode-json-languageservice": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.1.8.tgz", + "integrity": "sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.0.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.16.0", + "vscode-nls": "^5.0.0", + "vscode-uri": "^3.0.2" + }, + "engines": { + "npm": ">=7.0.0" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.2.tgz", + "integrity": "sha512-SbQSV9yRemARxeXw6LU5sS6Zq0e9/DgCCX5yelH263ZQWukbTk8EF8fjTrr1dziasf4GwlJbvTwFnTrnQFWZXQ==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "dev": true, + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.18.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.18.3.tgz", + "integrity": "sha512-DF49+WeV5py4zO5hhobp60jjsDSK0lAqA0OuKBLBvp423HPWQcCbhZz3JgyfIewsEz2f8U+X75xNIFHdiXZm2w==", + "dev": true, + "dependencies": { + "vscode-jsonrpc": "9.0.2", + "vscode-languageserver-types": "3.18.3" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.14.tgz", + "integrity": "sha512-EQyqJMi552E4ZTf46izQ4Fj6XquqxCySR3J5ZSD1SisMf6RfpeOWHxGBE8Gr6V0/3GHIGdAzDn8F8+1nTGCnoQ==", + "dev": true + }, + "node_modules/vscode-languageserver-types": { + "version": "3.18.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.18.3.tgz", + "integrity": "sha512-XIlzJ7Qp/jzSI1ds7/FwPAWrPeTZA7pAtlW4hdJ1J6xXWJL6dR9QYnDhJOdLzdKhUQ5Mm6mvUMw+3DcOQQasPw==", + "dev": true + }, + "node_modules/vscode-languageserver/node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver/node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "dev": true, + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver/node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "dev": true + }, + "node_modules/vscode-nls": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.2.0.tgz", + "integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==", + "dev": true + }, + "node_modules/vscode-uri": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.2.0.tgz", + "integrity": "sha512-m2gXo3bn0G1kT9InzMf07fTbqMbGtyckj3bH5ktLO+1Ssv+yiATZ4dhwaQv9UZWxJh6E9IFGnQyjgWVDWVBDrg==", + "dev": true + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/xxhash-wasm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz", + "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yaml": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", + "devOptional": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yaml-language-server": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/yaml-language-server/-/yaml-language-server-1.23.0.tgz", + "integrity": "sha512-3qVyCOexLCWw06PQa5kRPwvMWMZ/eZeCRWUvgD6a0OkqL/4iCnxy2WumbWifa937Uo5xhyWJ0uxlU39ljhNh7A==", + "dev": true, + "dependencies": { + "@vscode/l10n": "^0.0.18", + "ajv": "^8.17.1", + "ajv-draft-04": "^1.0.0", + "ajv-i18n": "^4.2.0", + "prettier": "^3.8.1", + "request-light": "^0.5.7", + "vscode-json-languageservice": "4.1.8", + "vscode-languageserver": "^9.0.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.16.0", + "vscode-uri": "^3.0.2", + "yaml": "2.8.3" + }, + "bin": { + "yaml-language-server": "bin/yaml-language-server" + } + }, + "node_modules/yaml-language-server/node_modules/request-light": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.5.8.tgz", + "integrity": "sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==", + "dev": true + }, + "node_modules/yaml-language-server/node_modules/yaml": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yargs": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.1.0.tgz", + "integrity": "sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==", + "dev": true, + "dependencies": { + "cliui": "^9.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "string-width": "^8.2.1", + "y18n": "^5.0.5", + "yargs-parser": "^22.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.5.4.tgz", + "integrity": "sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..ddb63f9 --- /dev/null +++ b/package.json @@ -0,0 +1,36 @@ +{ + "name": "fluxserve-website", + "private": true, + "type": "module", + "version": "1.0.0", + "engines": { + "node": ">=22.12.0", + "npm": ">=10.8.2" + }, + "scripts": { + "docs:import": "node scripts/import-docs.mjs", + "dev": "npm run docs:import -- --local && astro dev --host 127.0.0.1", + "build": "npm run docs:import && astro build && node scripts/check-site.mjs", + "build:local": "npm run docs:import -- --local && astro build && node scripts/check-site.mjs", + "preview": "astro preview --host 127.0.0.1", + "check": "astro check", + "test": "node --test tests/*.test.mjs" + }, + "dependencies": { + "astro": "7.3.1", + "@astrojs/starlight": "0.42.0", + "@astrojs/markdown-remark": "7.3.0", + "@astrojs/sitemap": "3.7.4", + "github-slugger": "^2.0.0", + "unified": "^11.0.5", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "remark-gfm": "^4.0.1", + "unist-util-visit": "^5.0.0" + }, + "devDependencies": { + "@astrojs/check": "^0.9.4", + "typescript": "^5.9.3", + "cheerio": "^1.2.0" + } +} diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..76a19c6 --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1 @@ + diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..6004d9d --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://flx-oss.github.io/sitemap-index.xml diff --git a/scripts/check-site.mjs b/scripts/check-site.mjs new file mode 100644 index 0000000..8736300 --- /dev/null +++ b/scripts/check-site.mjs @@ -0,0 +1,45 @@ +import { readdir, readFile, stat } from 'node:fs/promises'; +import path from 'node:path'; +import { load } from 'cheerio'; + +const root = path.resolve(process.argv[2] ?? 'dist'); +async function walk(dir) { + const files = []; + for (const entry of await readdir(dir, { withFileTypes: true })) { + const file = path.join(dir, entry.name); + files.push(...(entry.isDirectory() ? await walk(file) : [file])); + } + return files; +} +const files = await walk(root); +const html = new Map(); +for (const file of files.filter(file => file.endsWith('.html'))) { + html.set(file, load(await readFile(file, 'utf8'))); +} +const failures = []; +for (const [file, $] of html) { + const pathname = '/' + path.relative(root, file).replace(/index\.html$/, ''); + if ($('h1').length !== 1) failures.push(pathname + ': expected one h1'); + if (!$('title').text() || !$('meta[name="description"]').attr('content')) + failures.push(pathname + ': missing title or description'); + if (!$('link[rel="canonical"]').attr('href')?.startsWith('https://flx-oss.github.io/')) + failures.push(pathname + ': missing canonical URL'); + for (const element of $('a[href],img[src],script[src],link[rel="stylesheet"][href]').toArray()) { + const url = $(element).attr('href') ?? $(element).attr('src'); + if (!url || /^(https?:|mailto:|tel:|data:|\/\/)/i.test(url)) continue; + const parsed = new URL(url, 'https://flx-oss.github.io' + pathname); + let target = path.join(root, decodeURIComponent(parsed.pathname)); + try { + if ((await stat(target)).isDirectory()) target = path.join(target, 'index.html'); + await stat(target); + const anchor = decodeURIComponent(parsed.hash.slice(1)); + if (anchor && html.has(target) && !html.get(target)('[id]').toArray().some(el => html.get(target)(el).attr('id') === anchor)) + failures.push(pathname + ': broken anchor ' + url); + } catch { failures.push(pathname + ': missing target ' + url); } + } +} +for (const required of ['pagefind/pagefind.js', 'sitemap-index.xml', '404.html']) { + try { await stat(path.join(root, required)); } catch { failures.push('Missing ' + required); } +} +if (failures.length) throw new Error(failures.join('\n')); +console.log('Verified metadata, headings, assets, links, and anchors across ' + html.size + ' pages.'); diff --git a/scripts/import-docs.mjs b/scripts/import-docs.mjs new file mode 100644 index 0000000..46c6984 --- /dev/null +++ b/scripts/import-docs.mjs @@ -0,0 +1,159 @@ +import { readFile, writeFile, mkdir, rm, cp, stat } from 'node:fs/promises'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { execFileSync } from 'node:child_process'; +import { unified } from 'unified'; +import remarkParse from 'remark-parse'; +import remarkStringify from 'remark-stringify'; +import remarkGfm from 'remark-gfm'; +import { visit } from 'unist-util-visit'; +import GithubSlugger from 'github-slugger'; +import { load } from 'cheerio'; + +const processor = unified().use(remarkParse).use(remarkGfm).use(remarkStringify, { bullet: '-', fences: true }); +const textOf = (node) => node.value ?? node.children?.map(textOf).join('') ?? ''; +const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); + +export function validateManifest(manifest) { + if (!/^[\w.-]+\/[\w.-]+$/.test(manifest.repository) || !/^[a-f0-9]{40}$/.test(manifest.revision)) + throw new Error('Expected a GitHub repository and a full pinned commit SHA.'); + const sources = new Set(), slugs = new Set(); + for (const page of manifest.pages) { + if (!/^(docs|guides)(\/[a-z0-9-]+)*$/.test(page.slug) || sources.has(page.source) || slugs.has(page.slug)) + throw new Error('Invalid or duplicate page in manifest: ' + page.slug); + sources.add(page.source); slugs.add(page.slug); + } +} + +function within(rootDir, relative) { + const resolved = path.resolve(rootDir, relative); + if (!resolved.startsWith(path.resolve(rootDir) + path.sep)) + throw new Error('Source path escapes repository: ' + relative); + return resolved; +} + +export async function importDocs({ sourceDir, outputDir, publicDir, manifest, local = false }) { + validateManifest(manifest); + const sourceURL = 'https://github.com/' + manifest.repository; + const pages = new Map(manifest.pages.map(page => [page.source, page])); + const trees = new Map(), headings = new Map(), topHeadings = new Map(); + const assets = new Set(manifest.assets ?? []); + for (const page of manifest.pages) { + const tree = processor.parse(await readFile(within(sourceDir, page.source), 'utf8')); + const first = tree.children[0]; + if (first?.type === 'heading' && first.depth === 1) { + topHeadings.set(page.source, new GithubSlugger().slug(textOf(first))); + tree.children.shift(); + } + const ids = new Set(['_top']), slugger = new GithubSlugger(); + visit(tree, 'heading', node => ids.add(slugger.slug(textOf(node)))); + headings.set(page.source, ids); + trees.set(page.source, tree); + } + + async function rewrite(url, source, image = false) { + if (/^(https?:|mailto:|tel:|data:|\/\/)/i.test(url)) return url; + if (/^[a-z][a-z0-9+.-]*:/i.test(url)) throw new Error('Unsupported link in ' + source + ': ' + url); + const match = url.match(/^([^?#]*)(\?[^#]*)?(#.*)?$/); + if (!match) throw new Error('Invalid link: ' + url); + const [, pathname, query = '', hash = ''] = match; + const target = pathname + ? path.posix.normalize(pathname.startsWith('/') ? pathname.slice(1) : path.posix.join(path.posix.dirname(source), decodeURIComponent(pathname))) + : source; + const diskPath = within(sourceDir, target); + let info; + try { info = await stat(diskPath); } catch { throw new Error('Missing link target in ' + source + ': ' + url); } + if (pages.has(target) && !image) { + let anchor = decodeURIComponent(hash.slice(1)); + if (anchor === topHeadings.get(target)) anchor = '_top'; + if (anchor && !headings.get(target).has(anchor)) + throw new Error('Missing anchor in ' + source + ': ' + url); + return '/' + pages.get(target).slug + '/' + query + (anchor ? '#' + anchor : ''); + } + if (image || /\.(png|jpe?g|svg|webp|gif|avif|pdf)$/i.test(target)) { + if (!info.isFile()) throw new Error('Asset must be a file: ' + target); + assets.add(target); + return '/fluxserve/' + target.split('/').map(encodeURIComponent).join('/') + query + hash; + } + return sourceURL + '/' + (info.isDirectory() ? 'tree' : 'blob') + '/' + manifest.revision + '/' + + target.split('/').map(encodeURIComponent).join('/') + query + hash; + } + + const rendered = []; + for (const page of manifest.pages) { + const tree = trees.get(page.source); + const nodes = []; + visit(tree, node => { if (['link', 'image', 'definition', 'html'].includes(node.type)) nodes.push(node); }); + for (const node of nodes) { + if (node.type === 'html') { + const $ = load(node.value, {}, false); + for (const element of $('a[href],img[src]').toArray()) { + const attribute = element.tagName === 'img' ? 'src' : 'href'; + $(element).attr(attribute, await rewrite($(element).attr(attribute), page.source, attribute === 'src')); + } + node.value = $.html(); + } else node.url = await rewrite(node.url, page.source, node.type === 'image'); + } + const frontmatter = { + title: page.title, description: page.description, + editUrl: sourceURL + '/edit/' + encodeURIComponent(manifest.editBranch ?? 'main') + '/' + page.source, + }; + const metadata = Object.entries(frontmatter).map(([key, value]) => key + ': ' + JSON.stringify(value)).join('\n'); + const provenance = local ? 'Local documentation preview' : 'Source revision'; + rendered.push({ + file: page.slug + '/index.md', + content: '---\n' + metadata + '\n---\n\n' + processor.stringify(tree) + + '\n---\n\n' + provenance + ': [' + manifest.revision.slice(0, 7) + '](' + sourceURL + '/tree/' + manifest.revision + ').\n', + }); + } + // Validate everything before replacing the generated output. + for (const asset of assets) await stat(within(sourceDir, asset)); + await rm(outputDir, { recursive: true, force: true }); + await rm(publicDir, { recursive: true, force: true }); + for (const page of rendered) { + const dest = within(outputDir, page.file); + await mkdir(path.dirname(dest), { recursive: true }); + await writeFile(dest, page.content); + } + for (const asset of assets) { + const dest = within(publicDir, asset); + await mkdir(path.dirname(dest), { recursive: true }); + await cp(within(sourceDir, asset), dest); + } + return { pages: rendered.length, assets: assets.size }; +} + +async function main() { + const manifest = JSON.parse(await readFile(path.join(root, 'fluxserve-docs.json'), 'utf8')); + validateManifest(manifest); + const local = process.argv.includes('--local'); + if (process.env.FLUXSERVE_SOURCE && !local) + throw new Error('FLUXSERVE_SOURCE is only allowed with --local. Production requires the pinned revision.'); + let sourceDir; + if (local) { + sourceDir = path.resolve(process.env.FLUXSERVE_SOURCE ?? path.join(root, '../FluxServe')); + } else { + sourceDir = path.join(root, '.cache/fluxserve', manifest.revision); + await mkdir(sourceDir, { recursive: true }); + const git = (...args) => execFileSync('git', args, { cwd: sourceDir, stdio: 'pipe' }); + let current = ''; + try { current = git('rev-parse', 'HEAD').toString().trim(); } catch {} + if (current !== manifest.revision) { + git('init'); + git('fetch', '--depth=1', 'https://github.com/' + manifest.repository + '.git', manifest.revision); + git('checkout', '--detach', 'FETCH_HEAD'); + } + // Restore only this disposable cache, never the author's checkout. + git('reset', '--hard', manifest.revision); + git('clean', '-fd'); + } + const result = await importDocs({ + sourceDir, manifest, local, + outputDir: path.join(root, 'src/content/docs'), + publicDir: path.join(root, 'public/fluxserve'), + }); + console.log('Imported ' + result.pages + ' pages and ' + result.assets + ' assets' + (local ? ' (local preview).' : '.')); +} +if (process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url)) { + main().catch(error => { console.error(error.message); process.exitCode = 1; }); +} diff --git a/src/components/Footer.astro b/src/components/Footer.astro new file mode 100644 index 0000000..2af9013 --- /dev/null +++ b/src/components/Footer.astro @@ -0,0 +1,9 @@ +--- +import DefaultFooter from '@astrojs/starlight/components/Footer.astro'; +const { hasSidebar } = Astro.locals.starlightRoute; +--- +{hasSidebar && } + diff --git a/src/components/Header.astro b/src/components/Header.astro new file mode 100644 index 0000000..5dddb79 --- /dev/null +++ b/src/components/Header.astro @@ -0,0 +1,24 @@ +--- +import Search from '@astrojs/starlight/components/Search.astro'; +import ThemeSelect from '@astrojs/starlight/components/ThemeSelect.astro'; +const links = [ + { href: '/docs/', label: 'Docs' }, + { href: '/guides/', label: 'Deployment guides' }, + { href: '/blog/', label: 'Blog' }, +]; +--- +
+ + FluxServe + + +
+ + + + + +
+
diff --git a/src/components/PageTitle.astro b/src/components/PageTitle.astro new file mode 100644 index 0000000..48f6933 --- /dev/null +++ b/src/components/PageTitle.astro @@ -0,0 +1,4 @@ +--- +import DefaultPageTitle from '@astrojs/starlight/components/PageTitle.astro'; +--- +{Astro.url.pathname !== '/' && } diff --git a/src/content.config.ts b/src/content.config.ts new file mode 100644 index 0000000..04d040f --- /dev/null +++ b/src/content.config.ts @@ -0,0 +1,27 @@ +import { defineCollection } from 'astro:content'; +import { glob, type Loader } from 'astro/loaders'; +import { z } from 'astro/zod'; +import { docsLoader } from '@astrojs/starlight/loaders'; +import { docsSchema } from '@astrojs/starlight/schema'; + +const blogFiles = glob({ pattern: '**/*.md', base: './src/content/blog' }); +// Astro's glob loader returns early for an empty directory. Clear stale entries +// so removing the last article cannot leave it published from a previous build. +const blogLoader: Loader = { + ...blogFiles, + async load(context) { + context.store.clear(); + await blogFiles.load(context); + }, +}; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), + blog: defineCollection({ + loader: blogLoader, + schema: z.object({ + title: z.string(), description: z.string(), date: z.coerce.date(), + author: z.string(), draft: z.boolean().default(false), + }), + }), +}; diff --git a/src/content/blog/.gitkeep b/src/content/blog/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/lib/blog.mjs b/src/lib/blog.mjs new file mode 100644 index 0000000..0307e3b --- /dev/null +++ b/src/lib/blog.mjs @@ -0,0 +1,9 @@ +/** + * @template {{ id: string, data: { draft?: boolean, date: Date } }} T + * @param {T[]} posts + * @returns {T[]} + */ +export function publishedPosts(posts) { + return posts.filter(post => !post.data.draft).sort((a, b) => + b.data.date.getTime() - a.data.date.getTime() || a.id.localeCompare(b.id)); +} diff --git a/src/pages/404.astro b/src/pages/404.astro new file mode 100644 index 0000000..87eee73 --- /dev/null +++ b/src/pages/404.astro @@ -0,0 +1,6 @@ +--- +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; +--- + +
404

A block went missing.

This address doesn’t point to a page on the site.

Go to the docs →
+
diff --git a/src/pages/blog/[...slug].astro b/src/pages/blog/[...slug].astro new file mode 100644 index 0000000..0d477c5 --- /dev/null +++ b/src/pages/blog/[...slug].astro @@ -0,0 +1,16 @@ +--- +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; +import { getCollection, render, type CollectionEntry } from 'astro:content'; +import { publishedPosts } from '../../lib/blog.mjs'; +export async function getStaticPaths() { + return publishedPosts(await getCollection('blog')).map(post => ({ params: {slug: post.id}, props: {post} })); +} +interface Props { post: CollectionEntry<'blog'>; } +const { post } = Astro.props; +const { Content, headings } = await render(post); +--- + + + +

← All posts

+
diff --git a/src/pages/blog/index.astro b/src/pages/blog/index.astro new file mode 100644 index 0000000..df0c1da --- /dev/null +++ b/src/pages/blog/index.astro @@ -0,0 +1,11 @@ +--- +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; +import { getCollection } from 'astro:content'; +import { publishedPosts } from '../../lib/blog.mjs'; +const posts = publishedPosts(await getCollection('blog')); +--- + +

Engineering notes. Project updates. Ideas behind the engine.

+ {posts.length ?
{posts.map(post =>

{post.data.title} ↗

{post.data.description}

{post.data.author}
)}
: +

No posts yet.

When we have something to share, you’ll find it here.
Until then, explore how FluxServe works.

Read the architecture overview
} +
diff --git a/src/pages/guides/index.astro b/src/pages/guides/index.astro new file mode 100644 index 0000000..f860d9b --- /dev/null +++ b/src/pages/guides/index.astro @@ -0,0 +1,15 @@ +--- +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; +const guides = [ + { title: 'Set up your environment', description: 'Build the CUDA 12.9 Docker environment and install the kernel, scheduler, and runtime.', href: '/guides/docker/', tag: 'START HERE' }, + { title: 'LLaDA2.0-mini', description: 'Start with a single GPU, paged attention, and block diffusion decoding.', href: '/guides/llada2-mini/', tag: '1 GPU' }, + { title: 'LLaDA2.0-flash', description: 'Configure tensor and expert parallelism for a four-GPU H100 deployment.', href: '/guides/llada2-flash/', tag: '4 GPUs' }, + { title: 'LLaDA2.1', description: 'Choose quality or speed presets with joint threshold decoding and token editing.', href: '/guides/llada2-1/', tag: 'DECODING PRESETS' }, +]; +--- + +

From a clean environment to a running model.

Choose a recipe for your hardware and checkpoint. New to FluxServe? Start with the quickstart →

+ +
diff --git a/src/pages/index.astro b/src/pages/index.astro new file mode 100644 index 0000000..6edb06b --- /dev/null +++ b/src/pages/index.astro @@ -0,0 +1,52 @@ +--- +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; +import { Code } from '@astrojs/starlight/components'; +const command = [ + 'CUDA_VISIBLE_DEVICES=0 fluxserve serve \\', + ' --model inclusionAI/LLaDA2.0-mini \\', + ' --host 127.0.0.1 --port 8000 \\', + ' --tp-size 1 --dp-size 1 --ep-size 1 \\', + ' --attention-backend flashinfer \\', + ' --kv-cache-layout paged \\', + ' --scheduler-policy paged', +].join('\n'); +--- + +
+
+
+

OPEN SOURCE · DIFFUSION INFERENCE

+

Serving diffusion,
one block
at a time.

+

A lightweight serving engine for diffusion language models. From your first request to multi-GPU inference.

+ +

NVIDIA GPUs · CUDA · Python + C++

+
+
+
YOUR FIRST SERVERbash
+ +
Local endpoint 127.0.0.1:8000
+

Already installed? Run this in your FluxServe environment.
Set up Docker and CUDA first

+ +
+
+
+

INSIDE FLUXSERVE

Built for the way diffusion generates.

Attention, scheduling, and execution. Designed around the block.

+
+
01 / ATTENTION

Every block counts.

Block-causal attention for variable-length prefill and decoding, with paged KV caching and CUDA graph support.

Explore block attention
+
02 / SCHEDULING

Keep requests moving.

A C++ control plane and Python execution plane coordinate requests with fine-grained, block-level scheduling.

Understand the scheduler
+
03 / EXECUTION

Room for larger models.

Tensor, data, and expert parallelism bring diffusion inference to documented multi-GPU configurations.

Deploy across GPUs
+
+
+
+

FROM SOURCE TO SERVING

Your next step starts here.

+ +
+
+
diff --git a/src/styles/site.css b/src/styles/site.css new file mode 100644 index 0000000..296a554 --- /dev/null +++ b/src/styles/site.css @@ -0,0 +1,153 @@ + +:root { + --sl-font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; + --sl-font-mono: 'SFMono-Regular', Consolas, 'Liberation Mono', monospace; + --sl-color-accent-low: #3c1724; + --sl-color-accent: #ef5b79; + --sl-color-accent-high: #ffbdca; + --sl-color-black: #141416; + --sl-color-gray-6: #1d1d20; + --sl-color-gray-5: #343438; + --sl-color-gray-4: #77777f; + --sl-color-gray-3: #a4a4ac; + --sl-color-gray-2: #ceced4; + --sl-color-gray-1: #eeeeef; + --sl-color-white: #fafafa; + --sl-color-bg-nav: #141416; + --sl-color-bg-sidebar: #141416; + --sl-nav-height: 5rem; + --sl-content-width: 47rem; + --sl-sidebar-width: 17rem; + --brand: #f46d87; + --surface: #1b1b1f; + --muted: #a4a4ac; + --line: #333338; +} +:root[data-theme='light'] { + --sl-color-accent-low: #fff0f3; + --sl-color-accent: #cc2454; + --sl-color-accent-high: #9f1741; + --sl-color-black: #ffffff; + --sl-color-gray-6: #f7f7f8; + --sl-color-gray-5: #e7e7eb; + --sl-color-gray-4: #96969d; + --sl-color-gray-3: #65656e; + --sl-color-gray-2: #414149; + --sl-color-gray-1: #28282d; + --sl-color-white: #18181d; + --sl-color-bg-nav: #ffffff; + --sl-color-bg-sidebar: #fafafa; + --brand: #c72653; + --surface: #f8f8fa; + --muted: #676770; + --line: #e6e6eb; +} +html { -webkit-font-smoothing: antialiased; } +body { font-size: 1rem; } +a, button, select { -webkit-tap-highlight-color: transparent; } +a:focus-visible, button:focus-visible, select:focus-visible { outline: 2px solid var(--brand); outline-offset: 5px; } +.flux-header { display: flex; align-items: center; gap: 2.75rem; height: 100%; max-width: 94rem; margin: auto; } +.brand { display: block; flex: 0 0 auto; line-height: 0; border-radius: 4px; } +.brand img { width: 155px; height: auto; display: block; } +[data-theme='dark'] .brand { background: #fff; padding: 7px 10px; } +[data-theme='dark'] .brand img { width: 135px; } +.primary-nav { display: flex; align-items: center; gap: 1.75rem; white-space: nowrap; } +.primary-nav a { color: var(--sl-color-gray-2); font-weight: 500; text-decoration: none; font-size: .9rem; padding: .5rem 0; } +.primary-nav a:hover, .primary-nav a[aria-current] { color: var(--brand); } +.header-tools { display: flex; align-items: center; gap: 1rem; margin-left: auto; } +.header-tools site-search { min-width: 0; } +.header-tools site-search > button { width: 11rem; border-color: var(--line); background: var(--surface); border-radius: 7px; } +.github-link { color: var(--sl-color-white); display: flex; } +.flux-footer { border-top: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; padding: 2rem 0 .5rem; margin-top: 5rem; font-size: .875rem; color: var(--muted); } +.flux-footer a { color: inherit; text-decoration: none; } +.flux-footer a:hover { color: var(--brand); } +.flux-footer .footer-name { font-weight: 650; color: var(--sl-color-white); } +.footer-name span { margin: 0 .5rem; color: var(--muted); font-weight: 400; } +.flux-footer > div { display: flex; flex-wrap: wrap; gap: 1.5rem; } +html:not([data-has-sidebar]) { --sl-content-width: 72rem; } +html:not([data-has-sidebar]) .content-panel + .content-panel { border-top: 0; padding-top: 0; } +html:has(.landing) .content-panel:first-child { display: none; } +html:has(.landing) main { padding-top: 0; } +.not-content { color: var(--sl-color-white); } +.not-content p { margin: 0; } +.not-content a { text-decoration: none; } +.eyebrow { font-family: var(--sl-font-mono); font-size: .75rem; font-weight: 500; letter-spacing: .1em; color: var(--muted); } +.status-dot, .small-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--brand); } +.status-dot { margin-right: 8px; } +.hero-section { display: grid; grid-template-columns: 1.06fr 1fr; gap: 3.4rem; align-items: center; padding: 6.25rem 0 5.5rem; } +.hero-copy h1 { font-size: clamp(2.9rem, 4.65vw, 4.4rem); letter-spacing: -.057em; line-height: 1.045; font-weight: 730; margin: 1.6rem 0 1.5rem; } +.hero-copy h1 > span { background: linear-gradient(115deg,#f46e58,#da2057); background-clip: text; color: transparent; } +[data-theme='dark'] .hero-copy h1 > span { background-image: linear-gradient(115deg,#ff9379,#fc6c9a); } +.hero-description { max-width: 29rem; font-size: 1.14rem; line-height: 1.75; color: var(--muted); } +.hero-actions { display: flex; gap: .85rem; flex-wrap: wrap; margin: 1.9rem 0 1.1rem; } +.button { display: inline-flex; align-items: center; justify-content: center; gap: 1.4rem; min-height: 48px; padding: .7rem 1.15rem; border-radius: 7px; font-size: .94rem; font-weight: 600; } +.button.primary { background: #c72653; color: #fff; border: 1px solid #c72653; } +.button.primary:hover { background: #ad1e46; } +.button.secondary { border: 1px solid var(--line); color: var(--sl-color-white); } +.button.secondary:hover { background: var(--surface); } +.hero-note { font-size: .8rem; color: var(--muted); } +.hero-demo { min-width: 0; padding-top: 1rem; } +.terminal-top { display: flex; align-items: center; gap: 1rem; padding: 1rem 1.1rem; border: 1px solid var(--line); border-bottom: 0; border-radius: 10px 10px 0 0; font: .7rem var(--sl-font-mono); letter-spacing: .065em; color: var(--muted); background: var(--surface); } +.terminal-dots { display: flex; gap: 5px; } +.terminal-dots i { height: 7px; width: 7px; border: 1px solid var(--sl-color-gray-4); border-radius: 50%; } +.terminal-language { margin-left: auto; } +.hero-demo .expressive-code { --ec-brdRad: 0; font-size: .83rem; } +.hero-demo .expressive-code figure { box-shadow: none; } +.hero-demo .expressive-code .frame pre { border-radius: 0; border-color: var(--line); padding-block: 1.4rem; } +.terminal-bottom { display: flex; align-items: center; gap: .5rem; border: 1px solid var(--line); border-top: 0; padding: .8rem 1.1rem; border-radius: 0 0 10px 10px; color: var(--muted); font-size: .75rem; } +.terminal-bottom code { margin-left: auto; font: .75rem var(--sl-font-mono); color: var(--sl-color-gray-2); } +.demo-prerequisite { padding: 1rem .1rem; font-size: .8rem; line-height: 1.8; color: var(--muted); } +.demo-prerequisite a { color: var(--brand); } +.block-illustration { margin-top: .75rem; display: flex; align-items: center; justify-content: center; gap: .9rem; padding: 1.2rem 0; border-top: 1px dashed var(--line); } +.block-label { font: .6rem var(--sl-font-mono); letter-spacing: .1em; color: var(--muted); } +.token-group { display: flex; gap: 4px; } +.token-group i { width: 16px; height: 23px; border: 1px solid var(--line); border-radius: 3px; background: var(--surface); } +.token-group.active i { background: #e04765; border-color: #e04765; } +.token-group.active i:nth-child(2) { opacity: .8; }.token-group.active i:nth-child(3) { opacity: .5; }.token-group.active i:nth-child(4) { opacity: .25; } +.flow-arrow { color: var(--muted); } +.capabilities { border-top: 1px solid var(--line); padding: 3.6rem 0 4.5rem; } +.section-heading h2, .start-strip h2 { font-size: clamp(1.8rem, 3vw, 2.35rem); line-height: 1.2; font-weight: 650; letter-spacing: -.035em; margin: .8rem 0; } +.section-heading > p:last-child { color: var(--muted); } +.capability-grid { display: grid; grid-template-columns: repeat(3,1fr); margin-top: 2.5rem; border: 1px solid var(--line); border-radius: 10px; overflow: hidden; } +.capability-grid article { padding: 1.6rem 1.65rem 1.8rem; display: flex; flex-direction: column; align-items: flex-start; } +.capability-grid article + article { border-left: 1px solid var(--line); } +.feature-index { font: .7rem var(--sl-font-mono); color: var(--muted); letter-spacing: .04em; } +.feature-symbol { width: 48px; height: 48px; margin: 1.8rem 0 1.3rem; } +.attention-symbol { display: grid; grid-template-columns: repeat(4,1fr); gap: 3px; } +.attention-symbol i { border: 1px solid var(--line); border-radius: 2px; }.attention-symbol .filled { background: var(--brand); border-color: var(--brand); opacity: .8; } +.scheduler-symbol { display: flex; flex-direction: column; gap: 5px; justify-content: center; } +.scheduler-symbol i { height: 6px; border-radius: 2px; background: var(--brand); }.scheduler-symbol i:nth-child(2) { width: 70%; opacity: .6; }.scheduler-symbol i:nth-child(3) { width: 85%; opacity: .8; }.scheduler-symbol i:nth-child(4) { width: 50%; opacity: .4; } +.gpu-symbol { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; }.gpu-symbol i { border: 2px solid var(--brand); border-radius: 4px; background: var(--sl-color-accent-low); } +.capability-grid h3 { font-size: 1.25rem; letter-spacing: -.025em; font-weight: 650; margin: 0 0 .65rem; } +.capability-grid p { font-size: .92rem; color: var(--muted); line-height: 1.75; margin-bottom: 1.5rem; } +.capability-grid a { font-size: .85rem; color: var(--brand); margin-top: auto; } +.capability-grid a span { margin-left: .3rem; } +.start-strip { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; border-top: 1px solid var(--line); padding-top: 3rem; align-items: center; } +.start-strip h2 { max-width: 20rem; }.start-links { display: flex; flex-direction: column; } +.start-links a { display: flex; align-items: center; gap: 1rem; padding: 1rem 0; color: var(--sl-color-white); border-bottom: 1px solid var(--line); font-size: .95rem; } +.start-links a:hover { color: var(--brand); }.start-links span { font: .75rem var(--sl-font-mono); color: var(--muted); }.start-links b { margin-left: auto; font-weight: 400; } +.section-intro { max-width: 47rem; color: var(--muted); font-size: 1.05rem; line-height: 1.8; }.section-intro p + p { margin-top: .75rem; }.section-intro a { color: var(--brand); } +.guide-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; margin-top: 2.5rem; } +.guide-card { display: flex; flex-direction: column; align-items: flex-start; color: var(--sl-color-white); padding: 2rem; border: 1px solid var(--line); border-radius: 10px; } +.guide-card:hover { border-color: var(--brand); background: var(--surface); } +.guide-card h2 { display: flex; justify-content: space-between; gap: 1rem; width: 100%; font-size: 1.5rem; margin: 1rem 0 .5rem; letter-spacing: -.025em; }.guide-card h2 span { color: var(--muted); font-weight: 400; } +.guide-card p { font-size: .96rem; color: var(--muted); line-height: 1.7; margin-bottom: 1.5rem; }.card-link { font-size: .875rem; color: var(--brand); margin-top: auto; } +.blog-empty { text-align: center; padding: 5rem 1.5rem; margin-top: 2.5rem; background: var(--surface); border: 1px solid var(--line); border-radius: 10px; }.empty-mark { color: var(--brand); font: 2.5rem var(--sl-font-mono); }.blog-empty h2 { font-size: 1.8rem; letter-spacing: -.035em; margin: 1rem 0 .7rem; }.blog-empty p { color: var(--muted); line-height: 1.8; }.blog-empty > a { display: inline-flex; margin-top: 1.5rem; color: var(--brand); gap: 1rem; }.blog-empty > a.primary { color: #fff; } +.post-list article { padding: 2.5rem 0; border-bottom: 1px solid var(--line); }.post-list time,.post-list article > span,.post-meta { font-size: .875rem; color: var(--muted); }.post-list h2 { font-size: 1.7rem; margin: .5rem 0; }.post-list a { color: var(--sl-color-white); }.post-list p { color: var(--muted); margin-bottom: 1rem; } +@media(min-width: 80rem) { .flux-header { padding-inline: .6rem; } } +@media(max-width: 65rem) { .flux-header { gap: 1.5rem; }.primary-nav { gap: 1rem; }.header-tools { gap: .6rem; }.header-tools site-search > button { width: auto; }.hero-section { gap: 2rem; padding-block: 4rem; }.hero-copy h1 { font-size: 3.5rem; }.terminal-top { font-size: .65rem; }.block-illustration { gap: .55rem; }.capability-grid article { padding: 1.4rem; } } +@media(max-width: 49.99rem) { + :root { --sl-nav-height: 7rem; } + .flux-header { display: grid; grid-template-columns: auto 1fr; gap: .4rem 1rem; padding-block: .3rem; } + .brand img { width: 125px; }[data-theme='dark'] .brand img { width: 105px; } + .primary-nav { grid-row: 2; grid-column: 1 / -1; gap: 1.5rem; }.primary-nav a { font-size: .85rem; padding: .3rem 0; } + .header-tools { grid-row: 1; grid-column: 2; justify-self: end; gap: .6rem; }.github-link { display: none; } + .header-tools starlight-theme-select { font-size: .8rem; } + .sl-menu-button { top: 1rem !important; } + .hero-section { grid-template-columns: 1fr; padding: 3rem 0; gap: 2rem; }.hero-copy h1 { font-size: clamp(2.7rem,9vw,4.3rem); }.desktop-break { display: none; }.hero-description { max-width: 34rem; }.hero-demo { max-width: 36rem; width: 100%; padding-top: 0; } + .capability-grid { grid-template-columns: 1fr; }.capability-grid article { padding: 1.8rem; }.capability-grid article + article { border-left: 0; border-top: 1px solid var(--line); }.feature-symbol { margin-block: 1.3rem 1rem; } + .start-strip { grid-template-columns: 1fr; gap: 1rem; }.start-strip h2 { max-width: none; }.guide-grid { grid-template-columns: 1fr; } + .flux-footer { flex-direction: column; align-items: flex-start; gap: 1rem; margin-top: 3rem; }.flux-footer > div { gap: 1rem; } +} +@media(max-width: 380px) { .brand img { width: 105px; }[data-theme='dark'] .brand img { width: 85px; }.header-tools { gap: .25rem; }.primary-nav { gap: 1rem; }.block-label { font-size: .55rem; }.token-group i { width: 12px; }.hero-actions { gap: .6rem; }.button { gap: .6rem; padding-inline: .85rem; } } +@media(prefers-reduced-motion: reduce) { *,*::before,*::after { scroll-behavior: auto !important; animation: none !important; transition: none !important; } } diff --git a/tests/blog-build.test.mjs b/tests/blog-build.test.mjs new file mode 100644 index 0000000..787cabc --- /dev/null +++ b/tests/blog-build.test.mjs @@ -0,0 +1,41 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { mkdtemp, cp, symlink, writeFile, mkdir, readFile, readdir, rm } from 'node:fs/promises'; +import path from 'node:path'; +import { execFileSync } from 'node:child_process'; +import { gunzipSync } from 'node:zlib'; + +test('production fixtures exclude drafts from routes, blog index, sitemap and search', {timeout: 120000}, async t => { + await mkdir('.cache', {recursive:true}); + const dir=await mkdtemp(path.resolve('.cache/blog-test-')); + t.after(()=>rm(dir,{recursive:true,force:true})); + for(const item of ['src','public','astro.config.mjs','tsconfig.json','package.json']) + await cp(item,path.join(dir,item),{recursive:true}); + await symlink(path.resolve('node_modules'),path.join(dir,'node_modules'),'dir'); + const blog=path.join(dir,'src/content/blog'); + await mkdir(blog,{recursive:true}); + const post=(title,draft)=>'---\ntitle: '+title+'\ndescription: Fixture article\nauthor: Test author\ndate: 2026-01-01\ndraft: '+draft+'\n---\n\n## Example heading\n\n'+title+' searchable body.\n'; + await writeFile(path.join(blog,'published-fixture.md'),post('PublishedCanary',false)); + await writeFile(path.join(blog,'draft-fixture.md'),post('SecretDraftCanary',true)); + execFileSync(process.execPath,[path.resolve('node_modules/.bin/astro'),'build'],{cwd:dir,stdio:'pipe',timeout:100000}); + const dist=path.join(dir,'dist'); + assert.match(await readFile(path.join(dist,'blog/published-fixture/index.html'),'utf8'),/PublishedCanary/); + await assert.rejects(readFile(path.join(dist,'blog/draft-fixture/index.html'))); + assert.doesNotMatch(await readFile(path.join(dist,'blog/index.html'),'utf8'),/SecretDraftCanary/); + assert.doesNotMatch(await readFile(path.join(dist,'sitemap-0.xml'),'utf8'),/draft-fixture/); + const fragments=path.join(dist,'pagefind/fragment'); + let searchable=''; + for(const name of await readdir(fragments)) { + const bytes=await readFile(path.join(fragments,name)); + searchable+=gunzipSync(bytes).toString('utf8'); + } + assert.match(searchable,/PublishedCanary/); + assert.doesNotMatch(searchable,/SecretDraftCanary/); + // Rebuild with no articles and the same cache: removed content must disappear. + await rm(path.join(blog,'published-fixture.md')); + await rm(path.join(blog,'draft-fixture.md')); + execFileSync(process.execPath,[path.resolve('node_modules/.bin/astro'),'build'],{cwd:dir,stdio:'pipe',timeout:100000}); + await assert.rejects(readFile(path.join(dist,'blog/published-fixture/index.html'))); + assert.match(await readFile(path.join(dist,'blog/index.html'),'utf8'),/No posts yet/); + assert.doesNotMatch(await readFile(path.join(dist,'sitemap-0.xml'),'utf8'),/published-fixture/); +}); diff --git a/tests/blog.test.mjs b/tests/blog.test.mjs new file mode 100644 index 0000000..4d8650f --- /dev/null +++ b/tests/blog.test.mjs @@ -0,0 +1,13 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { publishedPosts } from '../src/lib/blog.mjs'; +test('blog excludes drafts, sorts dates newest first, and does not mutate its input', () => { + const posts=[ + {id:'older',data:{date:new Date('2026-01-01'),draft:false}}, + {id:'draft-secret',data:{date:new Date('2026-03-01'),draft:true}}, + {id:'newer',data:{date:new Date('2026-02-01'),draft:false}}, + ]; + assert.deepEqual(publishedPosts(posts).map(p=>p.id),['newer','older']); + assert.equal(posts[0].id,'older'); + assert.deepEqual(publishedPosts([]),[]); +}); diff --git a/tests/import-docs.test.mjs b/tests/import-docs.test.mjs new file mode 100644 index 0000000..258aabc --- /dev/null +++ b/tests/import-docs.test.mjs @@ -0,0 +1,59 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { mkdtemp, mkdir, writeFile, readFile, rm, stat } from 'node:fs/promises'; +import path from 'node:path'; +import os from 'node:os'; +import { importDocs, validateManifest } from '../scripts/import-docs.mjs'; + +async function fixture(t, markdown = '# Intro\n\n[Other](other.md#details)\n\n![Plot](../assets/plot.png)\n\n[Code](../runtime.js)\n') { + const dir = await mkdtemp(path.join(os.tmpdir(), 'flux-docs-')); + t.after(() => rm(dir, { recursive: true, force: true })); + const sourceDir = path.join(dir, 'source'); + await mkdir(path.join(sourceDir, 'docs'), { recursive: true }); + await mkdir(path.join(sourceDir, 'assets')); + await writeFile(path.join(sourceDir, 'docs/intro.md'), markdown); + await writeFile(path.join(sourceDir, 'docs/other.md'), '# Other\n\n## Details\n\nContent\n'); + await writeFile(path.join(sourceDir, 'assets/plot.png'), 'fixture'); + await writeFile(path.join(sourceDir, 'runtime.js'), '// source'); + const manifest = {repository:'FLX-OSS/FluxServe', revision:'a'.repeat(40), pages:[ + {source:'docs/intro.md',slug:'docs',title:'Intro',description:'Intro'}, + {source:'docs/other.md',slug:'docs/other',title:'Other',description:'Other'}, + ]}; + return {sourceDir,manifest,outputDir:path.join(dir,'out'),publicDir:path.join(dir,'public')}; +} +test('rewrites docs, anchors, assets and source references; removes stale output', async t => { + const opts = await fixture(t); + await importDocs(opts); + const output = await readFile(path.join(opts.outputDir,'docs/index.md'),'utf8'); + assert.match(output, /\/docs\/other\/#details/); + assert.match(output, /\/fluxserve\/assets\/plot.png/); + assert.match(output, new RegExp('blob/' + 'a'.repeat(40) + '/runtime.js')); + await stat(path.join(opts.publicDir,'assets/plot.png')); + await writeFile(path.join(opts.outputDir,'stale.md'),'old'); + await importDocs(opts); + await assert.rejects(stat(path.join(opts.outputDir,'stale.md'))); +}); +test('fails on a missing source', async t => { + const opts = await fixture(t); + opts.manifest.pages[0].source='docs/missing.md'; + await assert.rejects(importDocs(opts), /ENOENT/); +}); +test('fails on missing relative link targets', async t => { + await assert.rejects(importDocs(await fixture(t,'# Intro\n\n[Missing](missing.md)')), /Missing link target/); +}); +test('fails on missing anchors', async t => { + await assert.rejects(importDocs(await fixture(t,'# Intro\n\n[Other](other.md#absent)')), /Missing anchor/); +}); +test('rewrites reference links, HTML assets, and links to removed title headings', async t => { + const opts=await fixture(t,'# Intro\n\n[Other][ref]\n\n[ref]: other.md#other\n\nPlot'); + await importDocs(opts); + const content=await readFile(path.join(opts.outputDir,'docs/index.md'),'utf8'); + assert.match(content,/\/docs\/other\/#_top/); + assert.match(content,/src="\/fluxserve\/assets\/plot.png"/); +}); +test('rejects escaping source paths and floating revisions', async t => { + const opts=await fixture(t); + opts.manifest.pages[0].source='../outside.md'; + await assert.rejects(importDocs(opts),/escapes repository/); + assert.throws(()=>validateManifest({...opts.manifest,revision:'main'}),/pinned commit/); +}); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..8bf91d3 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "astro/tsconfigs/strict", + "include": [".astro/types.d.ts", "**/*"], + "exclude": ["dist"] +} From 65818bb59a795ef2c5d316a250df390559068c88 Mon Sep 17 00:00:00 2001 From: Zhiben Chen Date: Mon, 7 Sep 2026 18:34:49 -0400 Subject: [PATCH 2/7] Move deployment guides into Docs --- README.md | 4 ++-- astro.config.mjs | 8 ++++---- fluxserve-docs.json | 8 ++++---- scripts/import-docs.mjs | 2 +- src/components/Header.astro | 1 - src/pages/guides/index.astro | 15 --------------- src/pages/index.astro | 6 +++--- src/styles/site.css | 7 +------ 8 files changed, 15 insertions(+), 36 deletions(-) delete mode 100644 src/pages/guides/index.astro diff --git a/README.md b/README.md index ed7f604..08dde8b 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ Technical content belongs in **FLX-OSS/FluxServe**, not this repository. 2. Commit and publish the reviewed FluxServe documentation changes. 3. Set `revision` in `fluxserve-docs.json` to the complete 40-character published commit SHA. 4. Set `editBranch` to the branch where documentation edits belong (normally `main`). The initial website uses `codex/docs-site-source` while its documentation PR awaits review; update the pin and edit branch after that PR merges. -5. Add or adjust explicit `pages` entries when publishing new public docs. Each entry provides a source path, stable URL slug, title, and description. Update the matching sidebar or guide index. +5. Add or adjust explicit `pages` entries when publishing new public docs. Each entry provides a source path, stable URL slug, title, and description. Update the matching Docs sidebar. Deployment guides use `/docs/guides/` URLs alongside the other documentation. 6. Run the production checks and review the website change before merging. The importer rewrites links between public docs, copies referenced image/PDF assets, and points other repository-file links to the pinned GitHub revision. Missing source files, asset files, and imported-page anchors fail the build. Each imported page links to its exact source revision. @@ -86,7 +86,7 @@ The canonical origin is `https://flx-oss.github.io` with no repository-name pref - `fluxserve-docs.json`: pinned source revision and public documentation manifest. - `scripts/`: Markdown importer and built-site link/metadata validation. -- `src/pages/`: custom homepage, guide index, blog, and 404. +- `src/pages/`: custom homepage, blog, and 404; all documentation, including deployment guides, is imported under `/docs/`. - `src/components/`, `src/styles/`: shared navigation and FluxServe styling. - `src/content/blog/`: authored blog Markdown. - `src/content/docs/`, `public/fluxserve/`: generated and untracked. diff --git a/astro.config.mjs b/astro.config.mjs index 0e9cb40..b0674d2 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -26,10 +26,10 @@ export default defineConfig({ { label: 'Benchmarking', slug: 'docs/benchmarking' }, ] }, { label: 'Deployment guides', items: [ - { label: 'Docker installation', slug: 'guides/docker' }, - { label: 'LLaDA2.0-mini · 1 GPU', slug: 'guides/llada2-mini' }, - { label: 'LLaDA2.0-flash · 4 GPUs', slug: 'guides/llada2-flash' }, - { label: 'LLaDA2.1', slug: 'guides/llada2-1' }, + { label: 'Docker installation', slug: 'docs/guides/docker' }, + { label: 'LLaDA2.0-mini · 1 GPU', slug: 'docs/guides/llada2-mini' }, + { label: 'LLaDA2.0-flash · 4 GPUs', slug: 'docs/guides/llada2-flash' }, + { label: 'LLaDA2.1', slug: 'docs/guides/llada2-1' }, ] }, ], })], diff --git a/fluxserve-docs.json b/fluxserve-docs.json index d7d95d9..c2e1970 100644 --- a/fluxserve-docs.json +++ b/fluxserve-docs.json @@ -28,25 +28,25 @@ }, { "source": "docs/guides/getting_started.md", - "slug": "guides/docker", + "slug": "docs/guides/docker", "title": "Docker installation", "description": "Build the CUDA environment and install FluxServe on an NVIDIA GPU host." }, { "source": "docs/serving/llada2-mini.md", - "slug": "guides/llada2-mini", + "slug": "docs/guides/llada2-mini", "title": "LLaDA2.0-mini", "description": "Serve LLaDA2.0-mini on one NVIDIA GPU." }, { "source": "docs/serving/llada2-flash.md", - "slug": "guides/llada2-flash", + "slug": "docs/guides/llada2-flash", "title": "LLaDA2.0-flash", "description": "Serve LLaDA2.0-flash with tensor and expert parallelism on four GPUs." }, { "source": "docs/serving/llada2.1.md", - "slug": "guides/llada2-1", + "slug": "docs/guides/llada2-1", "title": "LLaDA2.1", "description": "Configure quality and speed presets with joint threshold decoding." } diff --git a/scripts/import-docs.mjs b/scripts/import-docs.mjs index 46c6984..73580dc 100644 --- a/scripts/import-docs.mjs +++ b/scripts/import-docs.mjs @@ -19,7 +19,7 @@ export function validateManifest(manifest) { throw new Error('Expected a GitHub repository and a full pinned commit SHA.'); const sources = new Set(), slugs = new Set(); for (const page of manifest.pages) { - if (!/^(docs|guides)(\/[a-z0-9-]+)*$/.test(page.slug) || sources.has(page.source) || slugs.has(page.slug)) + if (!/^docs(\/[a-z0-9-]+)*$/.test(page.slug) || sources.has(page.source) || slugs.has(page.slug)) throw new Error('Invalid or duplicate page in manifest: ' + page.slug); sources.add(page.source); slugs.add(page.slug); } diff --git a/src/components/Header.astro b/src/components/Header.astro index 5dddb79..2fb0846 100644 --- a/src/components/Header.astro +++ b/src/components/Header.astro @@ -3,7 +3,6 @@ import Search from '@astrojs/starlight/components/Search.astro'; import ThemeSelect from '@astrojs/starlight/components/ThemeSelect.astro'; const links = [ { href: '/docs/', label: 'Docs' }, - { href: '/guides/', label: 'Deployment guides' }, { href: '/blog/', label: 'Blog' }, ]; --- diff --git a/src/pages/guides/index.astro b/src/pages/guides/index.astro deleted file mode 100644 index f860d9b..0000000 --- a/src/pages/guides/index.astro +++ /dev/null @@ -1,15 +0,0 @@ ---- -import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; -const guides = [ - { title: 'Set up your environment', description: 'Build the CUDA 12.9 Docker environment and install the kernel, scheduler, and runtime.', href: '/guides/docker/', tag: 'START HERE' }, - { title: 'LLaDA2.0-mini', description: 'Start with a single GPU, paged attention, and block diffusion decoding.', href: '/guides/llada2-mini/', tag: '1 GPU' }, - { title: 'LLaDA2.0-flash', description: 'Configure tensor and expert parallelism for a four-GPU H100 deployment.', href: '/guides/llada2-flash/', tag: '4 GPUs' }, - { title: 'LLaDA2.1', description: 'Choose quality or speed presets with joint threshold decoding and token editing.', href: '/guides/llada2-1/', tag: 'DECODING PRESETS' }, -]; ---- - -

From a clean environment to a running model.

Choose a recipe for your hardware and checkpoint. New to FluxServe? Start with the quickstart →

- -
diff --git a/src/pages/index.astro b/src/pages/index.astro index 6edb06b..3b55163 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -28,7 +28,7 @@ const command = [
YOUR FIRST SERVERbash
Local endpoint 127.0.0.1:8000
-

Already installed? Run this in your FluxServe environment.
Set up Docker and CUDA first

+

Already installed? Run this in your FluxServe environment.
Set up Docker and CUDA first

diff --git a/src/styles/site.css b/src/styles/site.css index 296a554..83b8c74 100644 --- a/src/styles/site.css +++ b/src/styles/site.css @@ -127,11 +127,6 @@ html:has(.landing) main { padding-top: 0; } .start-links a { display: flex; align-items: center; gap: 1rem; padding: 1rem 0; color: var(--sl-color-white); border-bottom: 1px solid var(--line); font-size: .95rem; } .start-links a:hover { color: var(--brand); }.start-links span { font: .75rem var(--sl-font-mono); color: var(--muted); }.start-links b { margin-left: auto; font-weight: 400; } .section-intro { max-width: 47rem; color: var(--muted); font-size: 1.05rem; line-height: 1.8; }.section-intro p + p { margin-top: .75rem; }.section-intro a { color: var(--brand); } -.guide-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; margin-top: 2.5rem; } -.guide-card { display: flex; flex-direction: column; align-items: flex-start; color: var(--sl-color-white); padding: 2rem; border: 1px solid var(--line); border-radius: 10px; } -.guide-card:hover { border-color: var(--brand); background: var(--surface); } -.guide-card h2 { display: flex; justify-content: space-between; gap: 1rem; width: 100%; font-size: 1.5rem; margin: 1rem 0 .5rem; letter-spacing: -.025em; }.guide-card h2 span { color: var(--muted); font-weight: 400; } -.guide-card p { font-size: .96rem; color: var(--muted); line-height: 1.7; margin-bottom: 1.5rem; }.card-link { font-size: .875rem; color: var(--brand); margin-top: auto; } .blog-empty { text-align: center; padding: 5rem 1.5rem; margin-top: 2.5rem; background: var(--surface); border: 1px solid var(--line); border-radius: 10px; }.empty-mark { color: var(--brand); font: 2.5rem var(--sl-font-mono); }.blog-empty h2 { font-size: 1.8rem; letter-spacing: -.035em; margin: 1rem 0 .7rem; }.blog-empty p { color: var(--muted); line-height: 1.8; }.blog-empty > a { display: inline-flex; margin-top: 1.5rem; color: var(--brand); gap: 1rem; }.blog-empty > a.primary { color: #fff; } .post-list article { padding: 2.5rem 0; border-bottom: 1px solid var(--line); }.post-list time,.post-list article > span,.post-meta { font-size: .875rem; color: var(--muted); }.post-list h2 { font-size: 1.7rem; margin: .5rem 0; }.post-list a { color: var(--sl-color-white); }.post-list p { color: var(--muted); margin-bottom: 1rem; } @media(min-width: 80rem) { .flux-header { padding-inline: .6rem; } } @@ -146,7 +141,7 @@ html:has(.landing) main { padding-top: 0; } .sl-menu-button { top: 1rem !important; } .hero-section { grid-template-columns: 1fr; padding: 3rem 0; gap: 2rem; }.hero-copy h1 { font-size: clamp(2.7rem,9vw,4.3rem); }.desktop-break { display: none; }.hero-description { max-width: 34rem; }.hero-demo { max-width: 36rem; width: 100%; padding-top: 0; } .capability-grid { grid-template-columns: 1fr; }.capability-grid article { padding: 1.8rem; }.capability-grid article + article { border-left: 0; border-top: 1px solid var(--line); }.feature-symbol { margin-block: 1.3rem 1rem; } - .start-strip { grid-template-columns: 1fr; gap: 1rem; }.start-strip h2 { max-width: none; }.guide-grid { grid-template-columns: 1fr; } + .start-strip { grid-template-columns: 1fr; gap: 1rem; }.start-strip h2 { max-width: none; } .flux-footer { flex-direction: column; align-items: flex-start; gap: 1rem; margin-top: 3rem; }.flux-footer > div { gap: 1rem; } } @media(max-width: 380px) { .brand img { width: 105px; }[data-theme='dark'] .brand img { width: 85px; }.header-tools { gap: .25rem; }.primary-nav { gap: 1rem; }.block-label { font-size: .55rem; }.token-group i { width: 12px; }.hero-actions { gap: .6rem; }.button { gap: .6rem; padding-inline: .85rem; } } From c9e9c4ec553aa9ee636cdae5e4589258950fa572 Mon Sep 17 00:00:00 2001 From: Zhiben Chen Date: Mon, 7 Sep 2026 20:11:03 -0400 Subject: [PATCH 3/7] Publish docs by folder structure and add FluxServe icon --- README.md | 7 ++-- astro.config.mjs | 17 ++------- fluxserve-docs.json | 52 +--------------------------- public/favicon.svg | 1 - public/fluxserve-icon.png | Bin 0 -> 277424 bytes scripts/import-docs.mjs | 69 +++++++++++++++++++++---------------- src/content.config.ts | 9 +++-- src/pages/index.astro | 8 ++--- src/styles/site.css | 2 ++ tests/import-docs.test.mjs | 42 +++++++++++++++------- 10 files changed, 89 insertions(+), 118 deletions(-) delete mode 100644 public/favicon.svg create mode 100644 public/fluxserve-icon.png diff --git a/README.md b/README.md index 08dde8b..b31d302 100644 --- a/README.md +++ b/README.md @@ -50,8 +50,9 @@ Technical content belongs in **FLX-OSS/FluxServe**, not this repository. 2. Commit and publish the reviewed FluxServe documentation changes. 3. Set `revision` in `fluxserve-docs.json` to the complete 40-character published commit SHA. 4. Set `editBranch` to the branch where documentation edits belong (normally `main`). The initial website uses `codex/docs-site-source` while its documentation PR awaits review; update the pin and edit branch after that PR merges. -5. Add or adjust explicit `pages` entries when publishing new public docs. Each entry provides a source path, stable URL slug, title, and description. Update the matching Docs sidebar. Deployment guides use `/docs/guides/` URLs alongside the other documentation. -6. Run the production checks and review the website change before merging. +5. Run the production checks and review the website change before merging. + +Every Markdown file in FluxServe’s `docs/` folder is published automatically, preserving folders and filenames: `docs/serving/llada2.1.md` becomes `/docs/serving/llada2.1/`. An `index.md` becomes its folder’s entry page; `docs/index.md` is required. Titles come from the first level-one heading and descriptions from the first paragraph. The sidebar follows the folders. Keep internal planning notes outside `docs/`; there is no website page allowlist. The importer rewrites links between public docs, copies referenced image/PDF assets, and points other repository-file links to the pinned GitHub revision. Missing source files, asset files, and imported-page anchors fail the build. Each imported page links to its exact source revision. @@ -84,7 +85,7 @@ The canonical origin is `https://flx-oss.github.io` with no repository-name pref ## Structure -- `fluxserve-docs.json`: pinned source revision and public documentation manifest. +- `fluxserve-docs.json`: pinned source revision, edit branch, and shared brand assets. - `scripts/`: Markdown importer and built-site link/metadata validation. - `src/pages/`: custom homepage, blog, and 404; all documentation, including deployment guides, is imported under `/docs/`. - `src/components/`, `src/styles/`: shared navigation and FluxServe styling. diff --git a/astro.config.mjs b/astro.config.mjs index b0674d2..78bde6b 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -9,7 +9,7 @@ export default defineConfig({ integrations: [starlight({ title: 'FluxServe', description: 'A serving engine for diffusion language models.', - favicon: '/favicon.svg', + favicon: '/fluxserve-icon.png', customCss: ['./src/styles/site.css'], credits: false, disable404Route: true, @@ -18,19 +18,6 @@ export default defineConfig({ PageTitle: './src/components/PageTitle.astro', Footer: './src/components/Footer.astro', }, - sidebar: [ - { label: 'Documentation', items: [ - { label: 'Introduction', slug: 'docs' }, - { label: 'Quickstart', slug: 'docs/quickstart' }, - { label: 'Architecture', slug: 'docs/architecture' }, - { label: 'Benchmarking', slug: 'docs/benchmarking' }, - ] }, - { label: 'Deployment guides', items: [ - { label: 'Docker installation', slug: 'docs/guides/docker' }, - { label: 'LLaDA2.0-mini · 1 GPU', slug: 'docs/guides/llada2-mini' }, - { label: 'LLaDA2.0-flash · 4 GPUs', slug: 'docs/guides/llada2-flash' }, - { label: 'LLaDA2.1', slug: 'docs/guides/llada2-1' }, - ] }, - ], + sidebar: [{ autogenerate: { directory: 'docs' } }], })], }); diff --git a/fluxserve-docs.json b/fluxserve-docs.json index c2e1970..ca841b0 100644 --- a/fluxserve-docs.json +++ b/fluxserve-docs.json @@ -1,56 +1,6 @@ { "repository": "FLX-OSS/FluxServe", - "revision": "ee2eb858da592eef77575dcf47414b565d9f890c", - "pages": [ - { - "source": "docs/overview.md", - "slug": "docs", - "title": "Introduction", - "description": "Meet FluxServe, a serving engine for diffusion language models." - }, - { - "source": "docs/guides/quickstart.md", - "slug": "docs/quickstart", - "title": "Quickstart", - "description": "Launch FluxServe and send your first chat completion request." - }, - { - "source": "docs/architecture.md", - "slug": "docs/architecture", - "title": "Architecture", - "description": "How FluxServe handles requests, block scheduling, attention, and distributed execution." - }, - { - "source": "docs/guides/benchmark.md", - "slug": "docs/benchmarking", - "title": "Benchmarking", - "description": "Measure offline throughput and online serving performance." - }, - { - "source": "docs/guides/getting_started.md", - "slug": "docs/guides/docker", - "title": "Docker installation", - "description": "Build the CUDA environment and install FluxServe on an NVIDIA GPU host." - }, - { - "source": "docs/serving/llada2-mini.md", - "slug": "docs/guides/llada2-mini", - "title": "LLaDA2.0-mini", - "description": "Serve LLaDA2.0-mini on one NVIDIA GPU." - }, - { - "source": "docs/serving/llada2-flash.md", - "slug": "docs/guides/llada2-flash", - "title": "LLaDA2.0-flash", - "description": "Serve LLaDA2.0-flash with tensor and expert parallelism on four GPUs." - }, - { - "source": "docs/serving/llada2.1.md", - "slug": "docs/guides/llada2-1", - "title": "LLaDA2.1", - "description": "Configure quality and speed presets with joint threshold decoding." - } - ], + "revision": "a171bad8a5b935be4111e8b48f40607d5e18c6ee", "assets": [ "assets/logo.png" ], diff --git a/public/favicon.svg b/public/favicon.svg deleted file mode 100644 index 76a19c6..0000000 --- a/public/favicon.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/public/fluxserve-icon.png b/public/fluxserve-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..162fdc515797bbac54fd6c63fd25ed03781bed9c GIT binary patch literal 277424 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

8Udm-O{ey@q5q#+?aNCX{i*{%~z&OI!}*tr$5 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 z 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

jK zs};nQy5et|X^_U*KlTh=^~CvMJ^CJeSmAcWIn73lsz1u~LO+?)McOQ1{5TZIrr`Cr zY?BqtkwD($`Ch-|R@!i5MZB@($F$A+c(dpJQM&!*FRpIqJIx(8s^-mFH`A1H`W`ND z+xKzS1CF6R!JTd6nSwDsH690&xZ@4v6_ zgmtqkSo_ue`|d6#xPoUWfYNjA)z_w+%RDxURa}%);@!!YCC|zu`r4$=$p|&0R15g& zf4>_`G!W52=J6DGX3cMiopz2YV3Fr4R)2A`gp|an9v-&c-SH3}Q zfvP2|{$60w!&#u+f&;Y=qaWU$`%i#mS0O z;5Nrl^zJRkC&sUP!brNW8&$b46Fda4#TQJ?$~bLTv6n~JAO^ah=KR*iSGRV-QoX5$TV(t*mV_b>I(8a|MU=@3IwDja zP1a+-YaAQ!x^>H$y5q6su+yux798Wr$b}t=#9DH?Ro0tN6!n5T4T)+#pllq=UcRa~ zDZBndc|`v^vs&DIe5aXC1n6P@a$Zu9W_^AAXDJ9nYEdn<`5C;HQq)eWk)HJ`1C>(G zzg10hHKbM^WLi!+X|_y)<^h=ke;pw2jf%19NgqZ`tTQ3dJI+y*f|npKFT%$7 z%@L9m6q)0av!Pr?8%y^W;SADzs1#At;e?8x^sx6L9%l2HysZ}Yb9$%uYt)C991=k* z=>tuTNQzuc^A|bhG6s&-^+Om^c0`Y)eu0mCZ#%taBy&N zObo4YdEa}zu&^NP>+7&og#kGYq}67=%cST`B&hInn_ljoSh?o>e$QEcD#_Zs-vvxX z4YBs``g+pXX7FjeW~$Ubk!SxvCxng!D8vrw)2@^(E!(=yST~SEp;s~9V!LfcKv;P( z_nYi?9wM}sZ+!Ny@L9T1`UQo8DN5adlJ~uVF37Q(m|$^NXW0#vw5*bPU`=O$wQFd* zTTWCM=}KG}hR}#7D6GChj^9A`&yjl)tzwxnj4=z*&)bbs&dZJ0wV<9a?F?^30(a1V zMcE9GiHXV4%1Rnt@VbBTA|%Ai%ER>Y`oN)&{U#`5Gy1IM*ALKYvR*Q#h_Amn0!`$BP2z3 zDtKd%>3t*;-I3ZOgFo@)(NNSbUI}kZg7x(?t&2d@&B)Y9y(;?W+;YT#<<;HZ0sK7` zKVr8nCoTjD@_VhIo)qi8?ehx6Vy~HvnHe*X5rA=Miz(p3M(4yaWG@cF=HX0m$Jl4EA4wco%nkiEoTtl zt|J007S{5i(3-=tWMZN~kP9vKaJvO|w8m(HN;ndc$J#>Xi6uC+M3}ef-pCCJq3_>m}!rOXZ(f{g$oG&*WKY?a+(t#AW zJVCxF$n$UwNSDT(Co{l@hv_>+Yl|Q6nwk`a+(@%E1Vh@p+>4_FA&3i+w_QSh=o@8i zNX^r)<18b^XjTGrkBi;ep2SVR<64j%BMI+6)D!w9w~OyG7#i4Cv7+z9tiArhjnP8W zJh+GN0^44yP8AUwnAYhQ;{bT;2PoN!II@Vi59PlHOKTx-y!kEfBa6@vb2xrhWHr_RXcbWrV42Qm;BFP~z=%7? zx2JI?ha{?Zcqv75DDoYe#8 zO7;ML|IM~;B<3dXTeo*yajl}A-AB{6s07qg)6@3~7o;XFZ|D6f^kjzX1QLh;q|l#Z zCe#h?M5zU%O2MIq!+8Pn&?P{n7e=LC$3YdfhBUZW^`HSeYD!qISGooiQl_U_dG06U z4X9zr85s*vRZ>EautY<2lm!=`8{f(y)mri%=As;4jZbpDC_VB&3lf)biWz6-T6_rU zb~v$>tWdO*IQBtk2^ceTkpYLQqo8=*60OJP-}jUCJ3db(Y>GTQo^9Rq-nn~y3Bxm9 z@U^S0Gj_L?KpX~^Mgwi=KQu`UW7cON8rS5{qK*-q`jdH!)aVS!QmC^G8e^#7H@fizHveqS zJRFWIl)p@vSegHu3K&|<-hQdQY>G7CbUkqA{e&c1%?Tf#Vx>O zn6`t#gbDs>Mb4VFKFo-BUC_`GrIq)S;DcfCqQULN`wNsFq;GEpr1j!xk4o$u?2OD^ zLuf*wMfBxmj)I}5J#s@TcmU2U04PP&**D0XLBWjg40b^3XbbRd(kuY zxkcg2n;)XU;C`n-?YCawch^4{@mqP8eK(O%6NuAH?9pl~b>H0cfA~3}?ayiGx$OF5 z^Ah#_>CYJ0>T25`gs4BeLP%E8LC>ytsqWwfJ`w-Qo6xy8(UI}Ug|7IhcV16xuD@nJ z_(Qu-Zj1!hZzV?3O-JApWL8UmIEE&fe`1Z6rte^@&KJwqBj}ox z=v5sSyYP{UL7?S|em|F@uoCPX91g?(`o}*VDPNmkV5X!Ear z*zLX3{=NP@Es{p&KbXCfh9{!Fn}d-}bOi05CVw{!G6li{gVJ>*t+7+^qn9T`tOO`+ zGROnr9qQ^_r_R7@>iZxj9L!pZdgB`^SI8b&{5ex{c`8CTPlrs(K2!K!ZqO)2iWS zMDF#NQU>j`00XpK)~toF(IVxuE&k>G(vJYpis!ntr&;E=_I=Er$NKduBBhsve6RclDY*z1c=$pX_Wxl zMRo?A>SD*Pz_?72L93itt(LT5^?@^fcC>2f^hmH=KT1IKC21jbGns~Q>KU8$; zN#H+Pwj6dHk2xK+ef=)BW2?eVoz~_g5B}kMf*fPE)pVB}yf2OzxmZOAER1&bV4FT& zx8>P3GVj?vvd_Cuui}0tIzFUpZ}xU=mG20N{8DyW{^%OW5xK~%5vHz+*w0YIbXm?< zVaSdH8v2brsmk%rThK&n_+T9CJG}SFN6p+1!t~@M#0CI^^dQ}l0s?%$IvMlMwjyRt zwxCTnOhFku;z$rRR+2{5-}c9r8UH}*cp!M61XIElk?>T4NJ*03s2wX2cGT(vC~jS{ zx}6K5uo5+@$4L_#mL3M44`Vxy@V5_|Bwd5|Hr>K$7uMh?MrVu#Uc04_luQ2L5yVSA z#%gB7ZgatC5giNbb!%8O5_#Qx;xrtE6%n(#wvPp6k-KH9qt^YNSsfG`J@wf+EGKQ#8kdo4AvUtI&Z-;=5*m!5(d3k9G&`p)wRJ_zsZBjuO zd_13l&29}|HKP{E1pIRFk~Ea*R^X&2ZVtiV(+l3YLmEB zET>7h)Q%1;oVO{QwpvX z%PQ=!<-vvDWi)vAU5>ZipKai#-y$OkoQdwa372>XwO%x~Ay;eaXvxgS?uU^>SeCk1 zpp8=$pV4Wd&__W1Nb|DEU_$nz%RX7HLZ8eM^=TNiyOWV#G>V4A92HX_qzP8QJMp`% zT$n`K$kbyBkGlZ~0)eI5q)tS2%S0EC6)&rrodE`vQ#Q^py0$^MjrmDnjdmyIz#DGT z9YGZwLDsK?yybr=R85a}k!`X_%1oacH}J{V#db$&TC(UjM*^_ezW6_%Z1`xjrXc&<5-4+;SQQ5PZ81BFcRL%R`7vW0&XdY&=+sE%;f`Z^qUF`f z9MrJndw0rTQcDqGQ&xw$l2t)*kOPG!WR-+?z?Ls4zp36&r}Dce~& zFj#F|7S_s>UG0Mk5{8OCcvSv%XhtGMP_2~2-PN25^md7QlKQ`63ojW+E)GL%GK?E4 z&fMKdK!)3@Ed^GMB8Mdh!okCU5P@L@-+un?fR_5t3ZA{`hE5xS5$N-t^5)}9L0Iq} z6SN=HPd}%#F)jS4Y5q!MNX0y8=N(fo9A9}mQc(SZHI*kiDy7pJB%*t6IDrTLwDeo2U{QQtBh3^u5+1Bl%jw`_5q{#aQlj*NF!29G)eV!H z!G8S4P|PKh@Ah>blUW{S-!A}xh(`M^%n-F~DtiZ$K_){1wCobvw9vRH66${_&#zwIYb5c-6il4NI7G=> zVPwEJWR+CNx$R2V{e zn`sjMSz*`EfJDJY?RtVgy@}~bssN9_`zTodq}%aMLY?eR2O+sk-mRus)PT!@BV(IO z7yNA@Tv+d%0FVbAJ#1@h>l0ZgZ1q=FJuLs7OR&inZvo7wwS#;w2_|pjcWIE!p&3}w z3woLYEesjMkSVHI6zt-LRP##v_tp46Mv^LKrl>=k_6>;MD(3tabiqE)=!pJu^gWWV zigKQ$RW01vS{CD#C=No!p^@~piKVF#4nts^d?7F=-B31=#`O4e>yedT<#pM5NDCyM zRp{x@7N7Gb1oLkvLubVQ4@(tjG=lg8*}nK&Nv!C6fY>`R!iU_Tp3wd{ zuKDCalqpnNE{ag;%X}@ecOEbnVOz57=(pIk)^gNrh){Th1s128307pr8Y(R z1Va7E#9(Q@%}HR4Rv^xO6+@m!sQXQM${9@wZRc&6{7H`jv_Y%=dRLnk`jg*hmP*B6(9WXH(#R;xquVM!>$=X5^>u;h$sa~?x&?quT6O*iu8nG znxXMY$neRpr-+GS>1lmKrI&XHljQ#$gwTr4L2I$;cse~-tZ6`yN~VO#c#nFCP9GWx zWB^1b`BSv8dQo@1h5E$u9i{rW_S87PJ@)L=s!f6fkd#EI32JKT=_Je?KNar2^cOH- zT1m4C$E2q$`f);BTr_lz-)qn5c%!(n@jY^~HxVsmRbUPCf)am`U$X`lJFcO%AX8BF zP(~!WcWhiA13%;>r*y3L>oDy^a>PVgth(*`-y}xy{~QFns){TcTEU5jKlf2_$BJV^ z>kb{@gwnhf3A_jN;Rsb5u%ezhimGu0=nH-73Lm-MD|Edzw|eJK|NG(^Fo76Tl<3@> zFztb{VnoT3(Ph)k3=PQB{5!{ z;Z^X3(A7I~S@N==FgACfX0?GCdf$X-tefqXdCAs)H~}C)7m}jt4E}#S8kmI^DG+~0 zyI)wgyOS(#Npr*AT=y;mWSkgCZnVqc^C1c)kX80oxx3aDY-10FvA5(D8F}_$(bc&8 zRQCh_j6eX{kMS;eK6+kX4$@dj0G~Z?O;Go~O)ud*RV!f%Ts>^vxbIqL$JfW#N&`FY zpSoDElil=k%Ur4jux3rU|WQl&J#a|883Tix`iK7>JT}a!Yw)t48hTNGlv}rQhA7 z3x+ji(V)#!P}W=Yh#!3`y;28o1nVNc7QgiA`-(ihVzFjl>~TuEebHo;ZtI+0`sOk) zeK<0jiUAn&$n7icZW~IjyE|-2AmTe{`KvVICgs8vq7?#vRi@2}pUa|D&Y~3ot08p& zmIY0+AEI>9F&Gt*M(;k$aUZPNeT4QHC}tWv^m+Y)2>)fQaE&pG8ZDJKotCCtAv?y? zH`_hEQopmfrd(KH$XPV}%B%Ve5u&;k#bc+Cyp;K(QKjkHd{WQ(J{ErUvig$RvnuX~ zc4xYiVQzbjre}a?q=9>>8^3~1l1Sw6oMV>`JFaj9F9A&@Cb!pbRk=(xO;blLwZe)X zbrm4fX3f9;Ee`NYIpBAlskpY@;Xhi_Ci;J*<0%}3W$q?V+oQZ=t4OHopt;h>-~sI` zfC@|B5D!tKzy~Tlh5%4$>8yN*&=;c;LvKo40|Amiy5ZlH(_Y5as$w97K&c1gy$cm2 zu|Q}(f8MTe?eJGI**%?O=aEOhopy*xOjXHHo$c=GxD)L(z>z z9l-0*JBS-kgpb_i>Oe+^3fZvrJ6O^3oNOmB778tMWNfj(Q>{X<)5?qOr6kdU@ z<9W}P^iG2CrSzNn_n12~EJ(sl_MT5oCFWXXEezA5@SM#lT0hNEESeJm9UMZ-pS%nz zQ2=2~(vk$x8fAY+CRnEaFJVD~tEogT7o3}*jK^4oJy&jDCB}(QO9UaOP|`EUJ*{JBg_C_Yq7Z#D7H`42ykcK!a*tI{hr(s+e$ZO}OOSUh@cFv4 zcX(?U-(isjSr#b_#}u5>!I{Pb8astorGeF}HUxj4yQT}_O2HgXX89l{s`vm5Qi+zJ zKgjR@ij7_EiUD&~)peN|81wI%y8^mdaq4>W1`qN&DyHPm!O_^XDn}joo zR0@;FPi}3_mYAHVJdN;yQ<(x$E|5a*`e^=K5`=foao5r5esR%YXhLG;1pR68?3vX6 zB;W}#!8h`FxmKDiZgXn5YHlpOOq?2i3hNh3bY;du5N_@XoqH4RXD(|TNkV|~0!ilR zFqBk7Hc?+jAIaoMCNd$Vf@JC$N()#u`k$3F*fb6Y{D-bPu>~fu|A_L*Q(8s7D^D;28kx8gVR9dBe=9Iwc85kgccW997~h*xZq0>5e4CvA3NF-nB&!(&fV$4}6zeuyy? z)Ncf#hvKo76Pay)o_y(aXc_#!9qwMEMTNkQ(^G!8kWazW^cbYH%jyA;v)_wZ!iuJ# z*`O~H2azD9Qzb4PX#?TQQzl?YyeLyQfX;#FxTukM(=D|qt zNaFBrDn)4d7Fje#AfzB26|I-wPE5 zV&z)UC+Sp~vs&3}Ddbr_8^NNZ^1yQZ|I=r71MQ&uDI0rD)aI53M@{u1zD^Z=n*((L zw?SfDXF(W9Fg%hbi-cr!$Rzc2h!v9h4!Y`M*J;rVTX`I44wgNIuytG3h>SOy6wTFb z2s-YZVt++2m&L$0y7&53K%{5)BgyZeY=^$BTGXzM_a@&Qkkm=QdqK|h!vzs8T)6bG zH1IIw&4rO3%_NVBTRGrv)U2gKtMjbBoy_8!`O<$mrTqW&N~w{DSQtlEK0%V;+4 zaUU|gsnGyyg@y$Iad9kOYiLp9+)!p*z6$pku9a(b`!MeqKglmW!mHPxT1KLQJZ#b4 z$`q(&U@oaXp;L6@H z;-sK-y{(eetUUp*OKKjl1O+o^k{%4-CtJ$vmLwhoKY^ra8zt>I+24M7W&|a}Ibt*K z2L94dT-DY2Ho{`B6+@(uP6Lfv=Cm=<&;6>zN?L0M7piybA%PPqj0RvbCoJA zb!6xgtu3WdQBT8!DFz#WhYq1C(rra&!aSy#k|m9^H3k&iOoTT6Z9Hg#$N%P|;7;fI zE!OW8k-Nb^C(k#Fx99ggeS)v_9o(JKiw#h8m{HJ2s4RqwITw42vE+L-Dluyvt69Fq z&jZYXETN!xFNsKkm(g+1Si-4*%KD^ku32%co3bcH>AI?NII9+XQM*cLnHD)Ac(;L3y*lwfJBrW zlu8jx zh^TTwW58hAUJ&j4op9P$cChTCpW~tax5K{U8SXDI+}~$l0PVH@r}iOfB^^ zKfvGtxxI5T*M%=pvmA<#-DF7VS@9rxwQoICCR5&}GWLz{lCF;>wM zC`ACP4l`*kM}D*vHr1SpTIvk@6@TsFp9;qi7;tHr)G>R4SoxJvA!-$Ok^0cn`Bd%@ zMQE!l|7v=W7Xy~L(df##iXG8KT81-%m|W=JS3DW{dBY#u4VJp=QDT~6GV*mdeq1uy zdMjmwM+?@^aww#L#G@gsLZab~mzd&ro@{?ZaPkAzpMQ}*#%Y11x@vevBOF{B?l;^O zfpAV3qrIa{8OS#^7aU0_1w^b}$h!Oq8(bMnhrJmDrc)CKiH~j7u4nRU$fE2 zb6l06xO|t>X5yEarh-)pMRiV&1i`+hAr8^10H>-LaS@wvks7^?1t5{bL6F7e$bkhT zcun0pgfckMg_0)N;@OG)5sh}?px-1!f7^ur-`*E;9t4!D>@pRr&a{{LEJ*q{ib=g%i_6W^OmtgYDp`Vkv^0 z7aw3_20;o8g@B+T>>N_T^pu0iKu{=Ukl04eqti<|0`$Kqj25wi_q-BLgvkhZg3{{d zJAR=yVgFiPbg@fbALeU;c%fZ!JM}^uY;vtRGk>&^pq*(grB^f2-Lz-CvarEC%?8?q zj`O*%rZ;+-;G&DBtV8rZYeq5G=FOlRMW&~?D zu*USI@K?jBD!c*zk30}!N_@oyLgN@3)J+3_9GL6)+>Sn2N0e)0*KhMhFdF;_D=v+W zW4im~U`8j*2{w%;$&zHcj>?mnp}=ktbeozEhbVHWi;I0#Y>bbN2!P}i_vz{lO)4tC zy$?}kzAwVjKd-?~<1Ekb*iC|5niaEE&WN;fQv`;Bg!n$b-f(LCTT@2ev-ZExZ~D6M zXY($}J~dyKMZFbt_OA36aD!>9fP&vD1X+`o4M-sLtBlsfs;)OB5Ljpp+oB~3kJ^7N zz+Su}z}(!Hc8C~hjgp&6mk26B-I{XXIX!FDhYrwuR6o+s#uNwb5%14!QDluz_q-Jo zygD3SD*Qr@88JAj$7#@+7h{-D;xoo#fh{NAU=~ddFgC59Um?Bz*WZOx=HGQRE(PV} zz%FRZm)#vx!o?RMQXCc*ejaP8o(Kje5!6ITEoxg{8ig`TgSBi5E0ID^xbBOYrvWFJ zgK*s{Z?(}Yfx7Q$sV5s6nu<9^getz;De@*@aVFs`^WC4?b1OG5cR$U$kREuXK-VG~ zV-GYS->goN52Lu%mhlA10p%tmL&2tnPg$Dn8g8tb9K8g6JU+3m;hI28kKq#O-vG}U z@#PsJ^(3v`ejzPuji_vh9g#A=AIahG$W~-5hH2%ZvxV9TwxT@HSPbNgaZsn9E?u1m zc8eqY$`5psum}fPA&q%j`E^uSCwP)5m2~_#DJ4jB?eu<-Pw`bAO7^|Kb=C2YhKBZr z*4Cc*X)7yDU2N&dJLL@-5_gmPnBS(GG!0irjwxC_bLPj1Oy_99s_X-w@S9ex-YkE% zeSP^ayZOHp8d;V86+Sd3++C3?(4xK~hlDWP7U*DzRqkQ$EHIh--A|jVLp#?v;9mP0 zSw0tlN$#w`4=c)dzBb4|f<)J$1hiT^%W#iGiA4Xsq^|>DHHsJ;yZsqK_SXKR;^PMt z!uzM;_igtg^gB;iS1tX!yHfb*cWSr@^y1Rdu7F&)gN==igJFq)gh@iaf$9F)D9+g~ zL)=Qa;qgKiNrDpI{bHt=BF*Z6qP)F#Qy*URTlSxRDIq52IPmoy3_7r)idce;6tv_f zs~Y3PRvd8TL;OTr4Nbl2kut#P;Ex<5$7C8Xg-95yO?fPRo=hWEP z(%&J3V&02yVD@!7efXj6zk{NFvYd(#kBLOfa;9DrQs=QzINhu^~6hwlhpq#f;iZt zpaoa^utVxt9|8Ht5OJZatO-z9Rz~9*JkJ8tkBZ$8#Cp*DvGTCKI)%TY%q4lszekf} z2oiVzFi_yi%-#i6SE{{^miVDWPQAJsxZ;SCotL-!rMC8b>vepuW7YCQ-fiWn@;A3K z;Ux#|(_@T##xYw)o%QdjPe$Z}=aG`S-{g)$^dDszR$a~-Sl*q+P!wf7s3?E{;6GJXN%!v72 zsF_$U%0OOE)Q&q2wGYnEbdv9IZ}U>=H=zRW2|OuY;0w)%_eGW z@1}Va6M?=@A&8TPw$;GLqawg7c6l2+==278aGEVvN`fFk`uOS|+UPs!^L`laXW}{Hu`QPPt~|cZzezc$@y0!H{scD8=DvArotHIc2(iq7EO zE-g=MYkhln*hDRw?)s0!mN>K;hnl$PqUS#v!yyuK*3bjCRZY-usBt=>&8IJ|mOD)2BJbi=l*u&9j=8A?I(>OUzHf`CD~5(rl!bNIe(!X?YV+S&tL-HH5=ZAi66Z0Nmv5uJ3)RAs(ilW=CyrvkXc`|)u32(kI_!oFe|uhB z>m2#sk$dI$yyv~{t-t7ZE-Y-BpMBnsXGdIbOP-WmK^H1hAu1U|BBNJHR#nA-9$rz2 zV-*?dLjOsvh>q;8P_1-ZB2}eSEetbEWmpS@)}A=@Hke=7XlrbFuXWL|t$iWqf<#&5 zA)kG%y%i%7kwLlod40|HtYvKse=Ar2yDKzR(OyD7;5|y$6iYD{$UzYbGC_#~Q-m(j z#Ks}dssrVpgAiI=SbJ$8Qu5Tr*>Z=tBdQ3l!l?aPVOI9QCegYu1i2AY&CalRIeVea zbOTU`e8H@VCS@r}N>S)$BqNn^vuu||EfBge+JEboy3HQ3>D2RSo<4O)$NyNel=IF) z7hbrAHmBoLmZw}vgP#CnBa=s2T!AQzL`YI_O-g_%|=*m#o-zrWqX@#vL8^ z^ldulB0=Jj*)p*}iXn%FmatdP+3|LkpZ6;i7%R)*QpELq5VvXuIJ|7_Vy#SlWSY1R ziE}99;;@-Dc{Ogf!k-#cXW4M5-!wtrqq>5$alEWbMFl=#0JnL&gZnCy+cBR>>vC6SoCDS+7!(7zEs^U0C zY;hn3;6=5}RsH>XTA2=c!GoWw*E!@f@}9hssu);}5Lw+6Yf?9Eq!g1p5Ez~2MNrLC zsXo6+GNP61n<(ObYd1r+I1d4z@xbRGGvH}+(8K!SmIP>pAg)PKyf5H1VYcF${g`^FYABs+p%Q@NG&%kLiIOesYe zl8iYv=DzWY3>$_h5LBsQL(nZd2JJ5Eg(j)Oa3bo!jQ0a>{Bn{>sZ00undnZ3MsS*Uv+$aON9o%!%Q8cC399WHzTL+Wg+Z78 zXI^jK5Mf&Q)qFNXJ>AdbNmkXFKr>d*!a*cp)-*CQX93t5HfkCyGQA-JQ))(>N6gW0 z{jylj5sLWIQnJ6?!3L`Q;6hl1315WhEDN=&&`&`x@?stbE471-j|UBXadGcx^!4wE zJm9Fx@oB{pJDYg?iK_=8j%}k1gb7y~u&qpcX6{ujp`K zwfV=HcN?T+ituxv84%yiLtLkDU{H@a)pC*bm|Bb$Dj006mJ$o~nAm?1)^I*lm$hsY z<5q~h+X@!#-6`7!L+#3eoSiZhBq%wh38XawWG+k}K5|TlxHm}YeU!Q9r|JalhNrKy z8>-K2dA+6CHnYwNg`t5}{hF>msJ}dwC}QcPz1yjArP{RK4-K1MEcM0wN9%(>O>4sg zOvdIud)53nFGo@J#gqyyte2o1?{oVTsUV7!YNM~ie5St|vrv}UPC-2PGxifhsd;HJ z?qZe8uGD>^P3teUi!SD(S>Jdl0*p=*h5WTD1$I`NrLQ59?y4k6yNTKkpQzFuB=4{Z zns9cTrACOcO^H0l-ds1c0_thLD8`u@Bc|WCu$zY3|4?sn>ZzT(%!(ao#`20;!-Rf2 zsq~9NqatC$joDRD3XYAg`Gmr;QDwxE1WIL7WY~j%Iv;MS?eqp*6=aR+v^-2AoTcDw zkvQ4&2pH%00XE|DJmO!9VayVe<`f<*P~o=3j|iX}RYdVur=60g_Y+Mol|T^^Rv{q{Q|;)0rsl6L9e-B%KUh_Jt#EHs_vts;F7r20K4-?<9FH9|re*H_gUv zR=n_>$U;+n0ZFKxR=i*!dJ;bow=Okv>>PgkpmI#e?WQ839X}w%fZ-nsW_Z79`nYT4 z6>ezza0g-Wl{e`hCu~ln_WvrqxgUo7OZ|3 zhuNEhQiGo0Y|nmIucQ77GL)2G1GZ9b7icc9Jyo~p!w+_jcZh1Ob6gyIB(s~gNI7AV z>u&P;(*9nd1E#7) z7}_7xFDC^ly-@LsVJb))oe3!r7gcczT-3a$CI)lyHVWg_nJ}*tjtzHOhkt5$z~qz$ zs3L=YYDl)QBjF$|LTF61T)O6z>@_ml(==qDn+TEkhcz687|daVY650H0&Vw*;UPWsIrrjj3V zJ=0<$0|{KU{~b!&;K=Huo8)w|Pn{a5$^t#4I~l?UYd z>qWKmsHY*Bm09UfydioyZ7fN~sx6;!Cc?9$whjz5h~O zgJ!0Ka}wspS95wruQ)IeO|e2FmEk?{M%oA4n<64E7G-RjkK;=E$a6-Zem(NCioz(& zq&#h+3SB;Kv1pP&=r7Rx=MjJ*(=&h#L|5JnUAB=(4S;IaiOR*Wd>*Wis~3C? zwil$}mxYvNX|!x-h=s!BU>@zypkE(D+SQFx2gGJr+rfL>Sxf+xxD41P9Sn1U)R{dT zsL1gDoWlr6bVN&1=gS&N%RR+Oyc@S14w<4Tq!sVW9|j$*TQqnSTTK+2D!~D-x=Zd> z&T%SAxt}oK-riL4*q{;+P}NiRwqDA1Mk34Y{^fH2Gz;xG&?Ak9>u@5n&mNNdQMy_# z?Qw~dAlLga&=Puq^n{!Dy@Vn0;p6V7V%$@1@(tjT(LRWclQ+VgPU~8V+Wog`YBL*C zj8pxq_t+2>g>#18)&Ji~3kSej)Z1xf2%*p7vh!uf^dU=BWgH4i$w|_>sTAT<`k`IZ z+6e;J`E`M;C@! zv?#=$yg|>xM8qe;l|l}~#;RSGj=QlDGwScG^kM__ryp^DWPByPUCW&&JTINXT~PDI z%{K&QmzO3QNu za0Et=L5?{o%~S~Yx29hTHm!RYI4}*Hm)VL*QVlvsM5#4T1L}kl|1w4clls2C8C_I| zXmKidZUd6}nWbpIB5z|iz8UPou>Q-0u9$S``yfME7}#IO&Ok_k1}AOG77C7ZE?b64 zGCJC;64a{s4z<$MNIJzHR6sZ}RMt?y3vXz1vhc+Vm&{BHM5s;DLqJJ|CD6ptcs1hE zLtGNtz$iF1IF%Oo0n?DOMum+pOsbW0+iwmRrr_5^&{x{nAk$s8YxGJ_{6rh-4f;@! zo8-7kwX<`D0^Q5`dy$=lQd9&+R1CtdW9I+))72}7A>kIm+0>0R4JyQtOldiwl<&@o zvFH~&tTnuPyIE3E4{gh;sFob?leO{jabDD=ezg^2Nmrrr%;p#9=0!69WBV0?zGYFd zs+xdA>mzK;Oc%qOJ4I@*z8a55ARuy|GJ4Ssqt(TcRO(8{<}UKWD3l^Y*<@KZsdpvV z#{A=)Bt0jcepQF8UrHl=CpYr{^%!ysJ+LdtS?ttf<2KASb7T+kE+Ijx1eWHa&Zc-b z^#k$L4#&lL<{g2+m}cF^T$$)NHAZs;a|GLmECR|3-5He1ZYimluxe7@#8}KSgpe-; zP)#_)z3^xX8`BFw4MeAMraoW&!n1`)) z+(MIq_>2hH@W_-^4#s}WyKz&O1t-bHabE-5_vQ!?+1SRUJ``KD@Om3dCD8abQC+Fw zFjl;3bf;Xm8@a@Vs)F(bHw`GqXU*vVawt(>^)#(Rxjs<9)r|1bakl+B2C5a2%N5QB z%{1Kl6hL&WA7vYN>&{nNL3c#%Z{>=dG>$@X#}?E+|#Z>-%h|JCt}J*);t zlarv0)%wXw1{MexqE-t03=ai>e$tpj(l@zz0lUDlya+@{Mws`6AdIAPpm+%7=h;&$ zLMr`_dwN;G%F*%h44wRt#t^}ij37nDza|0xr(QX&Gy9eMn(X=bQZhA8d7bwkmJeYZ z9@=*-*QEAHehBIy839q7bp{3wJevpf``4`p=H4MDputMa1+s=T%q`FbOK}e}yd@yt zHKqB8S*nxjBEgLW75fD( zxN#Q0!4YE)PO~PdnaVcS*8uAJw5h1E$-@ISn#F!A!>24?)b;^fGrYe7U3vQ`!{?;2 z$=S$%G+t_rn9qk<5bKoH!25m~1nkK|#Wg|c=7c(F^y&V=3ESXLVN{H2sx~@b6KOT^ zu{6yQyRieEwVU~J3=yf?Vb`i$N}GRvo^P*Mkh7?9ozdHCdrG?bJtN?;_L+SksaA;t zG;Zqqm-xW`+dRsyYr{5d@G|;PqPd5z8Sf(++`xNm^ojF8cY2kKmi|dMv z?zpnvc7K0=ef-|xU6anzY(&J&-_JrSjI^UPtBC4s*wR zrIYqzs!q?dJR!mSmD=}@r!ZcxjJ}bOEI&Q@lkS}R#6iDeRqTap0*SsFfoZmyI6N3~ zBQbHo)_T998Nh$cotpOT|zd2A1<>&zmfUo-3*T-Rko)7J>^M38+2do)-{Y3CxKX2&1__MUu)a$tJm2-KV!LxqcI}JX>CG zd#$D*gt5d6<8`LLW->ZDY9I6s?kel+^$ipOd&KueOre=IinZH0&Kp+kMY4dChvUJ~ z2 ztFFiNz*I+VJrw9Y?(TKFvGsi0d4Fiv{`Q@rL8V|9Nc=s*Kj*nga+B}vy~!Wv8(KNLkwJ*k1@QWTH4!kc%U|!XzF&;^WhwkyRe^;S zjkVY2(auKni$!SWhGD>GgZG-aM>{wVM{Bx<@6TudEGa+H+z&Z+MGkfkGLx0;#;Y(m zEhcPy%v+`&tG0d1#CigK3$?uLb_Z?w${jv2qFcd88|1`*#|ZqCEjj9AY*4uLS(L3q z97u%PYT=4?3H+4VFUV+tk7`J{p;{#HjMy|uY#WiwvOD_$Z}xU9#sBw6Nn6CD+3$VV zx*nIi!@-EXl%4>0_RRPG?RvQ^+SLrL&@=WB@Q?U`-rZl$Dnqwaw&_Iz%3< z@3+8bOKrrV$Z51em1Mndv1K6r8Q&cFHX(}+*g?ZB0fpTQ`eIPm;l`Q{G{6rA4ipOTW1+4E#O z_UhF3`U_|4FY>GNelM4H&(95z?u)giw$K$t5v310n&*D{+_@Ixc)Kft-D5~J$@tHpOQ`H$_&o4m?v^~+|+5kdS1^@mkD>ZtsDElKTy zWhvH~3bf`tncwX?B5&W5#w-^dPwbgDWQ>}ykFLG1W3q_JP==PQvziFMGjeQ=lzhzk zHuk<}!|%2wSgFcnGI9I*fwGUd2)j6E; ztv|pbnh^8W3YbH?Yro{c4aUsks^Dar9dm3tiy z`jv?%@yOQlzpb-pE0o<5LZhTVe&YWScME-OVo4~m({DF4!9$AY>GPl3Ead^@o^cn} zmOfUTV4_}^Kw?J8So7LiH=Zn`%BtYSOv^cSWIROOwB5+qbmV~W^J{wy+F|8Zh9Gkt zoWTK9HVg*Ra4m$T9WY`!X_IKffbbQ%7Oq4yX^azuPfkA3ag&*@w&qtF43S_sjuxH7 zqB~FiL}zh#$m!|N+E1=-woMtVn=Ka?j)Dd(&m*;uA!LHzSDv>{pCG=(P*d%-{6|&l zQ^`}wXfnu5bSpoc>xFk9IU-YfZU#1l_}J?KEu9UkkWld3HVdAUq9`Zk*zE3U0ORBK zOQ>{%eeuy6xGgR?_!8+yRil51^`(uX)LrN3KBn@z<4n5fRn{@lg;lY!hw^WPZ>Xy# zvxkMwIv~+asYHLqZ+&lFZDkT=CYP$VK_kaIv;hNkclqBeS5Jyfe+cz(9y4E;*X8B; zuMf}9uV=VD26T#K_geB~j$bVQMH13~7&@TCY(vMcBRehjdT6?+qRLN2xx+^hQ@!Cm^z)kehtU%wp~w9@w8J1BRO`|& zTK`~FBt>2`#k(!KmbN4#XhPT z{P`s8Kteox`}+>=Nb&aKm9Ou!B&!%SN&MXZ?`8{3&k=in)j^V=ASdmRJe3af3>N+aAVDULC;x+YV;pBtO<^Lg|!>9B4Q}^7hpQ~;~a7|C+ zRW!B;%!)qK!~U<&9~ZORB>Sb~udjOoW^NpR4nvvH)B3+n2-UqJ46I4W{(}D|{}A4| z=jy<3p6Q2zG$gd$Ttecs#y0T74th6fb%SDLmZz$`0YV@?r3ojhD)I_^I-RPC%uVsO zb^%0|x46F0h+Y(xj{TPcy{cSZOmIP4P%wpk8m20;30))yc@gBXNEOpfT23ean{QEp zA0EPBebj^n)*u^vHq-8RdGbFhh;YOt#3W3%A#s}h9EqrzIo}38>px+oJm59)$75i8 z^;vpj>F_*}I~ek8#*;}L`<(puJN!Pk@j`K@v#&GX`}#}F(NTg3pZBHT=xCcAPo_(@ zT|r9{*|y~ywYfX3_M~_^7|uZk*aRizP3hiy-}7m*KR=-q0Kez5@v4cSS_{D)g(NwZ zir!*_3p$$8Hr3P5{x&TCzI=!E=_+AV1O?fQt80_G| z&UWVePtNrltNjtoTE&$`(R5Ft*8;JOzygb3RO92dF_TPPM^o;(ig#;eDM)2Pxp=%b zg#-I+bNC;lFYsrSIWCw&bNH_pt8L#1_?k(_bSo=#d`al_@%jB_=W4#5`)@R{4)ZT? zUGsi!w`8rW^Z(s{P<#fRLQd3lFjs_IZeIFsSDG!AP9oNY2u+^Z_-20L~5{abvlBbC&h#`>(d=e&x|#zb%}M&TPqO zu!Z+FiIg`uNw27OOdbDMo{NOK`2bK8;MKMR)WnYEXSbF&TV*c0;nhuXwx8ZLk`e%w z4zby>)o8bNeX4)u*cJ3DK?!hV8sLaA`vv>dKrWt*$Gzq%u=*#wj@SZeJX>+g)~=2r z^VZL0s({}MtGz964W83py{>!qF{uCh!36((u=Dfs9*efN$ob*H!3`lvwOi6)vjgK@o6O*psGH|XTyo+F9#>4XQ}Yy&8%4M18gv9wZ~#51++AJTx7os2tu*G0wE{UZMfk2!BTs|Cy)UW4R`Xj?L5IM*d5h z8My}i|5x32zBRG6Uk6co2Z2Zxl_DSnq(cCyqDWDs_a+dEK%|8(p&n2{4N@(LbP%OO z0->lRLmMuzBYq)u1f! zw!Vmva=~G5GUuoql7y8G=3-={ccZhb($duX?dd-wt1Ec58}p?CEp!CdLcH?MYmJ7gNUn zn8z++q5u3}RKH_?>lSTnr)~ye`PM+7h0U;(g5G5%)Ng#wH5?I zPeV^9WvJxrk41ytPz`F*Ct`C=mIrnmKW4vfKaUA;x7KlNLw`X9X)||OvGQls8)2lA zyYFWF)UXqE5uy&M7 zL;cR+>-4ZzA%E&GB{vsWYB!M__|*O{^a=jILS_yJri>5&AP-6C!v0XBaznheOPsEQ zY&G`kfJ{;S!MLr$FCl*F#+m7rGCLRWJ9-DbdB=^G4bM@j%)j3@@6f29-t0?Xm>#0t zxl|P;mG#ut;YE#d&SgxYjD&*jSzqQIInvaspN%#7mS@7olgiIv^sPF#_g!XN4pNHOHXJM;x#e$?hCb?Gd#g}c%VY=`Byn2IpHh{4fTt8Jrun?Mf@>y zorrp4_Kj!)$5pReXPPH~h=SA~JXekYtjJZ-ak2rPv72$ekX+*V9e8x5i-Ee(^%%QGWTXT}6@v z5HYU)C9!rSXv2+JS})Hsx`(I@-q>Z^nGS+0b&JkfZ`X$&m{Km_{}|rvZg!7Zy;SU0 zOo3^ClzwiI=Cg9Ba=T_(LphZkpU2Ywd02zgYI3nWPo%WNTMY;0=VHQ~9z%v)r9`z^+1#gbCwJ}^VnP(|y2y9|7i=T^18vz- zo^fm$36!6%t#5viq>&0OIfMoFI3O%z^X%Q57Vrs|=if&q(H3yWT9oF*HDuoc#A)P; zQn-zJ;D@)AaB^*pZ^dcts2TV5r>j2G5+g#ioq5P!PnQ|JDWR$VDU?%cqG6#H$f{l3?l+PHwkMeQMbW;h-m!!WC)b_0g>e?P+Q5dzsar8Sy10!$1!8p={7gT}eiW zfNziGZ*moNkR(2x--BuWS0+`-I2IJcCD}$v|qK#ou2>(m< zv)!$^SpZlkB6MyvG&9W{{RW=A?CWA1@<~zcQQE*W?FEz_%b0%6rT6jQe=Cj6u*{U? zc=~AF4|rW6a6{UJwgO*zwF>v9G>Lv z{e0qvAX|N)Vp{HbcBY*4)E?^tAC=^&Zi&qe>dWrK#kpXMzlAaUzfNZo@D2*!jF>6a zi_qJxK8iP${HUlKMH&o~YrH9_&{==m#b=#A&6J<{gS+M}RgFnIbUT0x+h;em8+zlM zJ4V^BuC>WmgYZ^PPf>93NGB-!gbmf zR=j)l=+o2<*5MYS!ll6_Fh`@kc)vzBO=SCo8^%K1< zoDboVwCAixSS(xn;}Gw$&X$v(ZFfu{r_C*Getc;E}3Y@hKq zW!cu2qcACAdZ&I&0Q#iZ&KhR1FzQ#ef{+(x6}~#6A_#6$)@7;;yyg2VY#skcMK(a;4LNAB-`Q0-7;N)Cfx{w!7(pb_zI?}hkOSGISIIr>qBZXMq zf-P9n_p9v{%vhQ0oj>sb6-70GV-GfD2$d3Dph9}!|6c&9m%#VqE!Z1(&r;#%0tGz6 zA8gWQ+zou}BLMLey>s5sm`rjkwu?7plGvlAcjibu_=RHPs}7(IzgkQ9rIud?Ot1*el_8a;n&Toqx2bAPhr6wjdr-S?Vxk`Y*&>N zX92Ssd+A~-kb>DZ$9_{Nc~*wAQ&WBSi(jS8N8o1Rld{F^fU9!15R!T78bZG^vTsOw zP)KPp9Kv6|K6HxTu#jhbq$Q_y^U5d6=hG!o(Zmv+{Vh@Pd2Asa&O-i^Kl^VebqjEd z!va{*)s4Q)eNrgN^K2QjY!fb-vtR9Fc#~P89(FFUH|TCN6Dnm(OzxH}R_^CO7h7OD z_b=k|W>#jujT+u_Z-25ebwQr68(FV*#`vGl7A1!Jk|{VZQ`WTLp%f?S@0Is1%lhNW zs_uoKf6ekL`)XimwdJnyKi)Mp-oj32&oOB7_!<;6zCJ8fJQ8PQQ#;3VH8zkd9u*YB zz-9maxaqn^=5_qg>fxb8kAqvclDiT;`8fYu8RmjED!Jo`Bk8sfmXHlBk2ppG6pcbW z2!=A31ilFw$8yX=4+u)#!nDoivNTH}-uai6UKZ8n6c^P+h`5FR52 zbw;md!zqpoGLvt&sbd{4@t*-d1E6LI{gx+xQ-zceoYlGS%D? zGd&hzzK7G)*0RV78fx|EIG$dt%xkrFIksf=p})h*{U1NJR=Q@g~H1K~)bh z{Yhw;Ac#Ok;A{k&GX``U9RS(wo*>nAY|awt#iv6ExYYsEJ{}_$k%h2Kp2F;^DHmDt zj0W_7FuPd^|J?7T&Nv^-T}C@5Y~xOrktpf+SyZe*7cT^LjNE0=)48Qjwq?#EVTt8Pc17EXG7KxIYkBByKuPoPVt z7=DGNVyROl=l?#Sv#ZhHFZ&=LPtrU1DM7hAi;SBn1$U$cfD($g1Vao8df{9d3ioGr zCBr-TDvbS=qgrzk&l%N>IRvubdyfAThXB!k^4*;Hav)N>nJ@WAW0uMcnntd&TF6Hp4I@T`Cd+U( zJcAR@uV41wG(WlVMvo6L%UK~Q4%Rm0ASSlTp@-@xh_w7Ddh3(^#Z-c!iIf@Y-o{Kz zd)s8(_80lYL-Ob-?dV|pUTkC3y+)Ms*c^2J>xmEn-bvpI&!{g$G2~cm62j!-qUin6 z3FHbRs#1@A^uzJU3TQYjZKVifWNpT*k)BL4rl5Ei!n;WJLYM z9QcI2xn-;i zzM!%zuu#@9VbW2dmMLt?845j^WYKL;6vcxcpJ$r1KDVKQcND z5Y_yCZuzwZ{8$=#ZEg#HU{xw|xE`IG;tn$?I2fPD`=*qAwrR^eh|sx@^L$OWDk}S8Obs4nPynUk!M=*?;|T z>+Jz^nZCcl0})n0g}{hm@LhL|u6ww}iCWJr13bXjTR3tOGLHT{m8rE|h*gF`+MTFW z^%A;h|8$QIRb0LIe)G;#f8{?AXFPnT>a3&8TC4Sgs z$yMhS$aJ-vz?S6!C)K%D!H>j3w^*{~FL zzys!pt|=@jEr#tZV`B~aC+gA{-02l$_vZf#RyKD`07_t3hQ>;SZe%NoE;?$1!A|?G`O%S_m z{+E+w{r&x$T&^$zN;?v1?pBnOZ>z8K8@lIfw>mm4kLn{G^T)e3$9uP5cX-y<8_t+c zY|WH*PXo%^7L+ueb(zdm5R&}D=oYrL%JrS`{5SQUaSd)mLkQnfnmK$j==Z35%DAsh z3LC>FA!OYJJoIKd$wm&NX|gT%PHK%W;MMkgWR%lA2XX%@_k`t?6i%zP9J0yMJDB=8 z^L8eH!m&t*An&CSC0w^g-0FCVP9k0Oo3m1UextagWOQuLi;@>P zkBkBrDXxraN$1bU`Y-ND_gPF$%TGww?IHD$3xe8dhJv%#h7+y!dv~pMEFV95@84Cd z^Ps##Qtj}x!3KYyE9{qEJJSfJ+CHY-RjUICeM;to-#laM4>G8Zy}fRf$!eqfTN;M9 z3#%wHp<-fsDjo^l9i{FH&*N&a(>LSs$Jr z9X%(dq~%>_rG{s?`uYhRXN71{)Hqap#Z8neVGQ?Aw3DQ1grxU}aCg@fli1fsOlnHq zQ(_pKmnOX!634igjjK@y_d>=UHCQD`Qi1LDD?oII>@23}zRfQJUm=PLhHBE;_(A-2!v=qCiZND z-nRmsZgmjZA~HLn+x z+w@kJ_k0@qB3r|B+kB8+lmEFO?>7^Hyd-q(aG$406cX`(8nk(Ub!JXar2JZ3^mo_O zat!%Lp8n33|59ZQwwnwsOkuYBgwHdZ__7}Ic-;~mL6J zl9747goM)r3(xvjYB{*PoSIZ}>L4=faU8(5xJzyyFnem(`wO-b6D68QZx_3`^e=fMrw}t;Q->NldwxR_ zv_t)eaR551UO{iaB{m#~H2g(qN@lFU@VN_Vl+r+(0*9h3Hs z!vpO7{WZpO@P3&7gicbPSWrZWm node.value ?? node.children?.map(textOf).join('') ?? ''; const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); -export function validateManifest(manifest) { - if (!/^[\w.-]+\/[\w.-]+$/.test(manifest.repository) || !/^[a-f0-9]{40}$/.test(manifest.revision)) +export function validateSource(config) { + if (!/^[\w.-]+\/[\w.-]+$/.test(config.repository) || !/^[a-f0-9]{40}$/.test(config.revision)) throw new Error('Expected a GitHub repository and a full pinned commit SHA.'); - const sources = new Set(), slugs = new Set(); - for (const page of manifest.pages) { - if (!/^docs(\/[a-z0-9-]+)*$/.test(page.slug) || sources.has(page.source) || slugs.has(page.slug)) - throw new Error('Invalid or duplicate page in manifest: ' + page.slug); - sources.add(page.source); slugs.add(page.slug); - } } function within(rootDir, relative) { @@ -32,14 +26,27 @@ function within(rootDir, relative) { return resolved; } -export async function importDocs({ sourceDir, outputDir, publicDir, manifest, local = false }) { - validateManifest(manifest); - const sourceURL = 'https://github.com/' + manifest.repository; - const pages = new Map(manifest.pages.map(page => [page.source, page])); +export async function importDocs({ sourceDir, outputDir, publicDir, config, local = false }) { + validateSource(config); + const sourceURL = 'https://github.com/' + config.repository; + const entries = await readdir(path.join(sourceDir, 'docs'), { recursive: true, withFileTypes: true }); + const sources = entries.filter(entry => entry.isFile() && entry.name.endsWith('.md')) + .map(entry => path.relative(sourceDir, path.join(entry.parentPath, entry.name)).split(path.sep).join('/')).sort(); + if (!sources.includes('docs/index.md')) + throw new Error('Missing docs/index.md. Publish the docs cleanup and update the source revision before a production build.'); + const pages = new Map(), slugs = new Set(); const trees = new Map(), headings = new Map(), topHeadings = new Map(); - const assets = new Set(manifest.assets ?? []); - for (const page of manifest.pages) { - const tree = processor.parse(await readFile(within(sourceDir, page.source), 'utf8')); + const assets = new Set(config.assets ?? []); + for (const source of sources) { + const tree = processor.parse(await readFile(within(sourceDir, source), 'utf8')); + const titleHeading = tree.children.find(node => node.type === 'heading' && node.depth === 1); + const title = titleHeading ? textOf(titleHeading) : path.posix.basename(source, '.md').replace(/[-_]/g, ' '); + const description = textOf(tree.children.find(node => node.type === 'paragraph') ?? {}).replace(/\s+/g, ' ').slice(0, 180) || title; + const slug = source.slice(0, -3).replace(/\/index$/, ''); + if (slugs.has(slug)) throw new Error('Duplicate documentation route: ' + slug); + slugs.add(slug); + const page = { source, slug, title, description }; + pages.set(source, page); const first = tree.children[0]; if (first?.type === 'heading' && first.depth === 1) { topHeadings.set(page.source, new GithubSlugger().slug(textOf(first))); @@ -57,30 +64,32 @@ export async function importDocs({ sourceDir, outputDir, publicDir, manifest, lo const match = url.match(/^([^?#]*)(\?[^#]*)?(#.*)?$/); if (!match) throw new Error('Invalid link: ' + url); const [, pathname, query = '', hash = ''] = match; - const target = pathname + let target = pathname ? path.posix.normalize(pathname.startsWith('/') ? pathname.slice(1) : path.posix.join(path.posix.dirname(source), decodeURIComponent(pathname))) : source; const diskPath = within(sourceDir, target); let info; try { info = await stat(diskPath); } catch { throw new Error('Missing link target in ' + source + ': ' + url); } + if (info.isDirectory() && pages.has(path.posix.join(target, 'index.md'))) + target = path.posix.join(target, 'index.md'); if (pages.has(target) && !image) { let anchor = decodeURIComponent(hash.slice(1)); if (anchor === topHeadings.get(target)) anchor = '_top'; if (anchor && !headings.get(target).has(anchor)) throw new Error('Missing anchor in ' + source + ': ' + url); - return '/' + pages.get(target).slug + '/' + query + (anchor ? '#' + anchor : ''); + return '/' + pages.get(target).slug.split('/').map(encodeURIComponent).join('/') + '/' + query + (anchor ? '#' + anchor : ''); } if (image || /\.(png|jpe?g|svg|webp|gif|avif|pdf)$/i.test(target)) { if (!info.isFile()) throw new Error('Asset must be a file: ' + target); assets.add(target); return '/fluxserve/' + target.split('/').map(encodeURIComponent).join('/') + query + hash; } - return sourceURL + '/' + (info.isDirectory() ? 'tree' : 'blob') + '/' + manifest.revision + '/' + + return sourceURL + '/' + (info.isDirectory() ? 'tree' : 'blob') + '/' + config.revision + '/' + target.split('/').map(encodeURIComponent).join('/') + query + hash; } const rendered = []; - for (const page of manifest.pages) { + for (const page of pages.values()) { const tree = trees.get(page.source); const nodes = []; visit(tree, node => { if (['link', 'image', 'definition', 'html'].includes(node.type)) nodes.push(node); }); @@ -96,14 +105,14 @@ export async function importDocs({ sourceDir, outputDir, publicDir, manifest, lo } const frontmatter = { title: page.title, description: page.description, - editUrl: sourceURL + '/edit/' + encodeURIComponent(manifest.editBranch ?? 'main') + '/' + page.source, + editUrl: sourceURL + '/edit/' + encodeURIComponent(config.editBranch ?? 'main') + '/' + page.source, }; const metadata = Object.entries(frontmatter).map(([key, value]) => key + ': ' + JSON.stringify(value)).join('\n'); const provenance = local ? 'Local documentation preview' : 'Source revision'; rendered.push({ - file: page.slug + '/index.md', + file: page.source, content: '---\n' + metadata + '\n---\n\n' + processor.stringify(tree) + - '\n---\n\n' + provenance + ': [' + manifest.revision.slice(0, 7) + '](' + sourceURL + '/tree/' + manifest.revision + ').\n', + '\n---\n\n' + provenance + ': [' + config.revision.slice(0, 7) + '](' + sourceURL + '/tree/' + config.revision + ').\n', }); } // Validate everything before replacing the generated output. @@ -124,8 +133,8 @@ export async function importDocs({ sourceDir, outputDir, publicDir, manifest, lo } async function main() { - const manifest = JSON.parse(await readFile(path.join(root, 'fluxserve-docs.json'), 'utf8')); - validateManifest(manifest); + const config = JSON.parse(await readFile(path.join(root, 'fluxserve-docs.json'), 'utf8')); + validateSource(config); const local = process.argv.includes('--local'); if (process.env.FLUXSERVE_SOURCE && !local) throw new Error('FLUXSERVE_SOURCE is only allowed with --local. Production requires the pinned revision.'); @@ -133,22 +142,22 @@ async function main() { if (local) { sourceDir = path.resolve(process.env.FLUXSERVE_SOURCE ?? path.join(root, '../FluxServe')); } else { - sourceDir = path.join(root, '.cache/fluxserve', manifest.revision); + sourceDir = path.join(root, '.cache/fluxserve', config.revision); await mkdir(sourceDir, { recursive: true }); const git = (...args) => execFileSync('git', args, { cwd: sourceDir, stdio: 'pipe' }); let current = ''; try { current = git('rev-parse', 'HEAD').toString().trim(); } catch {} - if (current !== manifest.revision) { + if (current !== config.revision) { git('init'); - git('fetch', '--depth=1', 'https://github.com/' + manifest.repository + '.git', manifest.revision); + git('fetch', '--depth=1', 'https://github.com/' + config.repository + '.git', config.revision); git('checkout', '--detach', 'FETCH_HEAD'); } // Restore only this disposable cache, never the author's checkout. - git('reset', '--hard', manifest.revision); + git('reset', '--hard', config.revision); git('clean', '-fd'); } const result = await importDocs({ - sourceDir, manifest, local, + sourceDir, config, local, outputDir: path.join(root, 'src/content/docs'), publicDir: path.join(root, 'public/fluxserve'), }); diff --git a/src/content.config.ts b/src/content.config.ts index 04d040f..6da4c54 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -1,7 +1,6 @@ import { defineCollection } from 'astro:content'; import { glob, type Loader } from 'astro/loaders'; import { z } from 'astro/zod'; -import { docsLoader } from '@astrojs/starlight/loaders'; import { docsSchema } from '@astrojs/starlight/schema'; const blogFiles = glob({ pattern: '**/*.md', base: './src/content/blog' }); @@ -16,7 +15,13 @@ const blogLoader: Loader = { }; export const collections = { - docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), + docs: defineCollection({ + loader: glob({ + pattern: '**/*.md', base: './src/content/docs', + generateId: ({ entry }) => entry.replace(/\.md$/, '').replace(/\/index$/, ''), + }), + schema: docsSchema(), + }), blog: defineCollection({ loader: blogLoader, schema: z.object({ diff --git a/src/pages/index.astro b/src/pages/index.astro index 3b55163..7134186 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -19,7 +19,7 @@ const command = [

Serving diffusion,
one block
at a time.

A lightweight serving engine for diffusion language models. From your first request to multi-GPU inference.

NVIDIA GPUs · CUDA · Python + C++

@@ -28,7 +28,7 @@ const command = [
YOUR FIRST SERVERbash
Local endpoint 127.0.0.1:8000
-

Already installed? Run this in your FluxServe environment.
Set up Docker and CUDA first

+

Already installed? Run this in your FluxServe environment.
Set up Docker and CUDA first

diff --git a/src/styles/site.css b/src/styles/site.css index 83b8c74..8605600 100644 --- a/src/styles/site.css +++ b/src/styles/site.css @@ -146,3 +146,5 @@ html:has(.landing) main { padding-top: 0; } } @media(max-width: 380px) { .brand img { width: 105px; }[data-theme='dark'] .brand img { width: 85px; }.header-tools { gap: .25rem; }.primary-nav { gap: 1rem; }.block-label { font-size: .55rem; }.token-group i { width: 12px; }.hero-actions { gap: .6rem; }.button { gap: .6rem; padding-inline: .85rem; } } @media(prefers-reduced-motion: reduce) { *,*::before,*::after { scroll-behavior: auto !important; animation: none !important; transition: none !important; } } + +.sidebar-content summary .large { text-transform: capitalize; } diff --git a/tests/import-docs.test.mjs b/tests/import-docs.test.mjs index 258aabc..ed2ac10 100644 --- a/tests/import-docs.test.mjs +++ b/tests/import-docs.test.mjs @@ -3,7 +3,7 @@ import assert from 'node:assert/strict'; import { mkdtemp, mkdir, writeFile, readFile, rm, stat } from 'node:fs/promises'; import path from 'node:path'; import os from 'node:os'; -import { importDocs, validateManifest } from '../scripts/import-docs.mjs'; +import { importDocs, validateSource } from '../scripts/import-docs.mjs'; async function fixture(t, markdown = '# Intro\n\n[Other](other.md#details)\n\n![Plot](../assets/plot.png)\n\n[Code](../runtime.js)\n') { const dir = await mkdtemp(path.join(os.tmpdir(), 'flux-docs-')); @@ -11,15 +11,12 @@ async function fixture(t, markdown = '# Intro\n\n[Other](other.md#details)\n\n![ const sourceDir = path.join(dir, 'source'); await mkdir(path.join(sourceDir, 'docs'), { recursive: true }); await mkdir(path.join(sourceDir, 'assets')); - await writeFile(path.join(sourceDir, 'docs/intro.md'), markdown); + await writeFile(path.join(sourceDir, 'docs/index.md'), markdown); await writeFile(path.join(sourceDir, 'docs/other.md'), '# Other\n\n## Details\n\nContent\n'); await writeFile(path.join(sourceDir, 'assets/plot.png'), 'fixture'); await writeFile(path.join(sourceDir, 'runtime.js'), '// source'); - const manifest = {repository:'FLX-OSS/FluxServe', revision:'a'.repeat(40), pages:[ - {source:'docs/intro.md',slug:'docs',title:'Intro',description:'Intro'}, - {source:'docs/other.md',slug:'docs/other',title:'Other',description:'Other'}, - ]}; - return {sourceDir,manifest,outputDir:path.join(dir,'out'),publicDir:path.join(dir,'public')}; + const config = {repository:'FLX-OSS/FluxServe', revision:'a'.repeat(40)}; + return {sourceDir,config,outputDir:path.join(dir,'out'),publicDir:path.join(dir,'public')}; } test('rewrites docs, anchors, assets and source references; removes stale output', async t => { const opts = await fixture(t); @@ -35,8 +32,8 @@ test('rewrites docs, anchors, assets and source references; removes stale output }); test('fails on a missing source', async t => { const opts = await fixture(t); - opts.manifest.pages[0].source='docs/missing.md'; - await assert.rejects(importDocs(opts), /ENOENT/); + await rm(path.join(opts.sourceDir, 'docs/index.md')); + await assert.rejects(importDocs(opts), /Missing docs\/index.md/); }); test('fails on missing relative link targets', async t => { await assert.rejects(importDocs(await fixture(t,'# Intro\n\n[Missing](missing.md)')), /Missing link target/); @@ -52,8 +49,29 @@ test('rewrites reference links, HTML assets, and links to removed title headings assert.match(content,/src="\/fluxserve\/assets\/plot.png"/); }); test('rejects escaping source paths and floating revisions', async t => { - const opts=await fixture(t); - opts.manifest.pages[0].source='../outside.md'; + const opts=await fixture(t, '# Intro\n\n[Escape](../../outside.md)'); await assert.rejects(importDocs(opts),/escapes repository/); - assert.throws(()=>validateManifest({...opts.manifest,revision:'main'}),/pinned commit/); + assert.throws(()=>validateSource({...opts.config,revision:'main'}),/pinned commit/); +}); + +test('discovers nested pages, preserves filenames, and resolves folder indexes', async t => { + const opts = await fixture(t, '# Intro\n\n[Serving](serving/)\n\n[Model](serving/custom_model.v2.md)'); + await mkdir(path.join(opts.sourceDir, 'docs/serving')); + await writeFile(path.join(opts.sourceDir, 'docs/serving/index.md'), '# Serving\n\nServe models.'); + await writeFile(path.join(opts.sourceDir, 'docs/serving/custom_model.v2.md'), '# Custom Model\n\nModel instructions.'); + assert.equal((await importDocs(opts)).pages, 4); + const root = await readFile(path.join(opts.outputDir, 'docs/index.md'), 'utf8'); + assert.match(root, /\/docs\/serving\//); + assert.match(root, /\/docs\/serving\/custom_model\.v2\//); + assert.match(await readFile(path.join(opts.outputDir, 'docs/serving/custom_model.v2.md'), 'utf8'), /title: "Custom Model"/); + await writeFile(path.join(opts.sourceDir, 'docs/index.md'), '# Intro'); + await rm(path.join(opts.sourceDir, 'docs/serving/custom_model.v2.md')); + await importDocs(opts); + await assert.rejects(stat(path.join(opts.outputDir, 'docs/serving/custom_model.v2.md'))); +}); +test('rejects colliding page and folder routes', async t => { + const opts = await fixture(t); + await mkdir(path.join(opts.sourceDir, 'docs/other')); + await writeFile(path.join(opts.sourceDir, 'docs/other/index.md'), '# Duplicate'); + await assert.rejects(importDocs(opts), /Duplicate documentation route/); }); From 1a00191296275adeb0644bde83887200975f9154 Mon Sep 17 00:00:00 2001 From: Zhiben Chen Date: Mon, 7 Sep 2026 20:25:40 -0400 Subject: [PATCH 4/7] Replace theme selector with custom toggle --- src/components/Footer.astro | 4 ---- src/components/Header.astro | 4 ++-- src/components/ThemeToggle.astro | 35 ++++++++++++++++++++++++++++++++ src/styles/site.css | 13 +++++------- 4 files changed, 42 insertions(+), 14 deletions(-) create mode 100644 src/components/ThemeToggle.astro diff --git a/src/components/Footer.astro b/src/components/Footer.astro index 2af9013..f48110c 100644 --- a/src/components/Footer.astro +++ b/src/components/Footer.astro @@ -3,7 +3,3 @@ import DefaultFooter from '@astrojs/starlight/components/Footer.astro'; const { hasSidebar } = Astro.locals.starlightRoute; --- {hasSidebar && } - diff --git a/src/components/Header.astro b/src/components/Header.astro index 2fb0846..4845226 100644 --- a/src/components/Header.astro +++ b/src/components/Header.astro @@ -1,6 +1,6 @@ --- import Search from '@astrojs/starlight/components/Search.astro'; -import ThemeSelect from '@astrojs/starlight/components/ThemeSelect.astro'; +import ThemeToggle from './ThemeToggle.astro'; const links = [ { href: '/docs/', label: 'Docs' }, { href: '/blog/', label: 'Blog' }, @@ -15,7 +15,7 @@ const links = [
- + diff --git a/src/components/ThemeToggle.astro b/src/components/ThemeToggle.astro new file mode 100644 index 0000000..63d4b98 --- /dev/null +++ b/src/components/ThemeToggle.astro @@ -0,0 +1,35 @@ +--- +import { Icon } from '@astrojs/starlight/components'; +--- + + diff --git a/src/styles/site.css b/src/styles/site.css index 8605600..1d8391b 100644 --- a/src/styles/site.css +++ b/src/styles/site.css @@ -58,12 +58,6 @@ a:focus-visible, button:focus-visible, select:focus-visible { outline: 2px solid .header-tools site-search { min-width: 0; } .header-tools site-search > button { width: 11rem; border-color: var(--line); background: var(--surface); border-radius: 7px; } .github-link { color: var(--sl-color-white); display: flex; } -.flux-footer { border-top: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; padding: 2rem 0 .5rem; margin-top: 5rem; font-size: .875rem; color: var(--muted); } -.flux-footer a { color: inherit; text-decoration: none; } -.flux-footer a:hover { color: var(--brand); } -.flux-footer .footer-name { font-weight: 650; color: var(--sl-color-white); } -.footer-name span { margin: 0 .5rem; color: var(--muted); font-weight: 400; } -.flux-footer > div { display: flex; flex-wrap: wrap; gap: 1.5rem; } html:not([data-has-sidebar]) { --sl-content-width: 72rem; } html:not([data-has-sidebar]) .content-panel + .content-panel { border-top: 0; padding-top: 0; } html:has(.landing) .content-panel:first-child { display: none; } @@ -137,14 +131,17 @@ html:has(.landing) main { padding-top: 0; } .brand img { width: 125px; }[data-theme='dark'] .brand img { width: 105px; } .primary-nav { grid-row: 2; grid-column: 1 / -1; gap: 1.5rem; }.primary-nav a { font-size: .85rem; padding: .3rem 0; } .header-tools { grid-row: 1; grid-column: 2; justify-self: end; gap: .6rem; }.github-link { display: none; } - .header-tools starlight-theme-select { font-size: .8rem; } .sl-menu-button { top: 1rem !important; } .hero-section { grid-template-columns: 1fr; padding: 3rem 0; gap: 2rem; }.hero-copy h1 { font-size: clamp(2.7rem,9vw,4.3rem); }.desktop-break { display: none; }.hero-description { max-width: 34rem; }.hero-demo { max-width: 36rem; width: 100%; padding-top: 0; } .capability-grid { grid-template-columns: 1fr; }.capability-grid article { padding: 1.8rem; }.capability-grid article + article { border-left: 0; border-top: 1px solid var(--line); }.feature-symbol { margin-block: 1.3rem 1rem; } .start-strip { grid-template-columns: 1fr; gap: 1rem; }.start-strip h2 { max-width: none; } - .flux-footer { flex-direction: column; align-items: flex-start; gap: 1rem; margin-top: 3rem; }.flux-footer > div { gap: 1rem; } } @media(max-width: 380px) { .brand img { width: 105px; }[data-theme='dark'] .brand img { width: 85px; }.header-tools { gap: .25rem; }.primary-nav { gap: 1rem; }.block-label { font-size: .55rem; }.token-group i { width: 12px; }.hero-actions { gap: .6rem; }.button { gap: .6rem; padding-inline: .85rem; } } @media(prefers-reduced-motion: reduce) { *,*::before,*::after { scroll-behavior: auto !important; animation: none !important; transition: none !important; } } .sidebar-content summary .large { text-transform: capitalize; } + +.theme-toggle { display: grid; place-items: center; flex-shrink: 0; width: 2.5rem; height: 2.5rem; padding: 0; border: 0; border-radius: .5rem; background: transparent; color: var(--sl-color-gray-2); cursor: pointer; } +.theme-toggle:hover { background: var(--surface); color: var(--sl-color-white); } +.theme-toggle:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; } +.theme-toggle span:not([hidden]) { display: flex; font-size: 1.125rem; } From 7591980885552c908070e548c91ddc05fcdb7bef Mon Sep 17 00:00:00 2001 From: Zhiben Chen Date: Mon, 7 Sep 2026 20:35:51 -0400 Subject: [PATCH 5/7] Add animated benchmark charts and homepage installation commands --- src/components/BenchmarkChart.astro | 76 +++++++++++++++++++++++++++++ src/pages/index.astro | 25 ++-------- src/styles/site.css | 31 +++--------- 3 files changed, 88 insertions(+), 44 deletions(-) create mode 100644 src/components/BenchmarkChart.astro diff --git a/src/components/BenchmarkChart.astro b/src/components/BenchmarkChart.astro new file mode 100644 index 0000000..1311a0d --- /dev/null +++ b/src/components/BenchmarkChart.astro @@ -0,0 +1,76 @@ +--- +import source from '../../fluxserve-docs.json'; +// Approximate readings from assets/figures/result.png, not raw benchmark measurements. +const rates = [2, 4, 8, 12, 16]; +const charts = [ + { title: 'Mini · GSM8K', config: 'TP1 / EP1', max: 1000, flux: [675, 893, 897, 897, 903], sglang: [716, 836, 859, 860, 862] }, + { title: 'Flash · GSM8K', config: 'TP4 / EP4', max: 600, flux: [513, 508, 520, 517, 523], sglang: [511, 509, 514, 514, 509] }, + { title: 'Mini · BigCodeBench', config: 'TP1 / EP1', max: 1400, flux: [766, 1252, 1255, 1263, 1264], sglang: [830, 998, 1003, 997, 1005] }, + { title: 'Flash · BigCodeBench', config: 'TP4 / EP4', max: 800, flux: [709, 718, 720, 714, 720], sglang: [629, 632, 629, 633, 632] }, +]; +--- +
+

LLADA2.0 · BENCHMARKS

+

Decode throughput

+

Tokens / second · higher is better

+
+ Requests / s + {rates.map((rate, index) => )} +
+
FluxServeSGLang
+
+ {charts.map(chart =>
+

{chart.title}{chart.config}

+ {(['flux', 'sglang'] as const).map(engine =>
+
+ ≈{chart[engine][4].toLocaleString('en-US')} +
)} + +
)} +
+

Approximate values read from the published figure · {source.revision.slice(0, 7)}. Project-reported results; configuration details are incomplete. Benchmark context ↗

+
+ + diff --git a/src/pages/index.astro b/src/pages/index.astro index 7134186..929a4d5 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -1,15 +1,8 @@ --- import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; import { Code } from '@astrojs/starlight/components'; -const command = [ - 'CUDA_VISIBLE_DEVICES=0 fluxserve serve \\', - ' --model inclusionAI/LLaDA2.0-mini \\', - ' --host 127.0.0.1 --port 8000 \\', - ' --tp-size 1 --dp-size 1 --ep-size 1 \\', - ' --attention-backend flashinfer \\', - ' --kv-cache-layout paged \\', - ' --scheduler-policy paged', -].join('\n'); +import BenchmarkChart from '../components/BenchmarkChart.astro'; +const install = 'git clone https://github.com/FLX-OSS/FluxServe\ncd FluxServe\nexport PIP_BREAK_SYSTEM_PACKAGES=1\npip install -e flux-kernel/python/ --no-build-isolation\npip install -e flux-scheduler\npip install -e .'; ---
@@ -22,19 +15,9 @@ const command = [ Get started View on GitHub
-

NVIDIA GPUs · CUDA · Python + C++

-
-
-
YOUR FIRST SERVERbash
- -
Local endpoint 127.0.0.1:8000
-

Already installed? Run this in your FluxServe environment.
Set up Docker and CUDA first

- +

Install from source inside the FluxServe CUDA container ↗

+

INSIDE FLUXSERVE

Built for the way diffusion generates.

Attention, scheduling, and execution. Designed around the block.

diff --git a/src/styles/site.css b/src/styles/site.css index 1d8391b..65e32cc 100644 --- a/src/styles/site.css +++ b/src/styles/site.css @@ -69,6 +69,7 @@ html:has(.landing) main { padding-top: 0; } .status-dot, .small-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--brand); } .status-dot { margin-right: 8px; } .hero-section { display: grid; grid-template-columns: 1.06fr 1fr; gap: 3.4rem; align-items: center; padding: 6.25rem 0 5.5rem; } +.hero-copy { min-width: 0; } .hero-copy h1 { font-size: clamp(2.9rem, 4.65vw, 4.4rem); letter-spacing: -.057em; line-height: 1.045; font-weight: 730; margin: 1.6rem 0 1.5rem; } .hero-copy h1 > span { background: linear-gradient(115deg,#f46e58,#da2057); background-clip: text; color: transparent; } [data-theme='dark'] .hero-copy h1 > span { background-image: linear-gradient(115deg,#ff9379,#fc6c9a); } @@ -79,26 +80,10 @@ html:has(.landing) main { padding-top: 0; } .button.primary:hover { background: #ad1e46; } .button.secondary { border: 1px solid var(--line); color: var(--sl-color-white); } .button.secondary:hover { background: var(--surface); } -.hero-note { font-size: .8rem; color: var(--muted); } -.hero-demo { min-width: 0; padding-top: 1rem; } -.terminal-top { display: flex; align-items: center; gap: 1rem; padding: 1rem 1.1rem; border: 1px solid var(--line); border-bottom: 0; border-radius: 10px 10px 0 0; font: .7rem var(--sl-font-mono); letter-spacing: .065em; color: var(--muted); background: var(--surface); } -.terminal-dots { display: flex; gap: 5px; } -.terminal-dots i { height: 7px; width: 7px; border: 1px solid var(--sl-color-gray-4); border-radius: 50%; } -.terminal-language { margin-left: auto; } -.hero-demo .expressive-code { --ec-brdRad: 0; font-size: .83rem; } -.hero-demo .expressive-code figure { box-shadow: none; } -.hero-demo .expressive-code .frame pre { border-radius: 0; border-color: var(--line); padding-block: 1.4rem; } -.terminal-bottom { display: flex; align-items: center; gap: .5rem; border: 1px solid var(--line); border-top: 0; padding: .8rem 1.1rem; border-radius: 0 0 10px 10px; color: var(--muted); font-size: .75rem; } -.terminal-bottom code { margin-left: auto; font: .75rem var(--sl-font-mono); color: var(--sl-color-gray-2); } -.demo-prerequisite { padding: 1rem .1rem; font-size: .8rem; line-height: 1.8; color: var(--muted); } -.demo-prerequisite a { color: var(--brand); } -.block-illustration { margin-top: .75rem; display: flex; align-items: center; justify-content: center; gap: .9rem; padding: 1.2rem 0; border-top: 1px dashed var(--line); } -.block-label { font: .6rem var(--sl-font-mono); letter-spacing: .1em; color: var(--muted); } -.token-group { display: flex; gap: 4px; } -.token-group i { width: 16px; height: 23px; border: 1px solid var(--line); border-radius: 3px; background: var(--surface); } -.token-group.active i { background: #e04765; border-color: #e04765; } -.token-group.active i:nth-child(2) { opacity: .8; }.token-group.active i:nth-child(3) { opacity: .5; }.token-group.active i:nth-child(4) { opacity: .25; } -.flow-arrow { color: var(--muted); } +.hero-install { margin-top: 1.6rem; min-width: 0; } +.hero-install > p { font-size: .75rem; color: var(--muted); margin-bottom: .65rem; } +.hero-install a { color: var(--brand); } +.hero-install .expressive-code { font-size: .7rem; } .capabilities { border-top: 1px solid var(--line); padding: 3.6rem 0 4.5rem; } .section-heading h2, .start-strip h2 { font-size: clamp(1.8rem, 3vw, 2.35rem); line-height: 1.2; font-weight: 650; letter-spacing: -.035em; margin: .8rem 0; } .section-heading > p:last-child { color: var(--muted); } @@ -124,7 +109,7 @@ html:has(.landing) main { padding-top: 0; } .blog-empty { text-align: center; padding: 5rem 1.5rem; margin-top: 2.5rem; background: var(--surface); border: 1px solid var(--line); border-radius: 10px; }.empty-mark { color: var(--brand); font: 2.5rem var(--sl-font-mono); }.blog-empty h2 { font-size: 1.8rem; letter-spacing: -.035em; margin: 1rem 0 .7rem; }.blog-empty p { color: var(--muted); line-height: 1.8; }.blog-empty > a { display: inline-flex; margin-top: 1.5rem; color: var(--brand); gap: 1rem; }.blog-empty > a.primary { color: #fff; } .post-list article { padding: 2.5rem 0; border-bottom: 1px solid var(--line); }.post-list time,.post-list article > span,.post-meta { font-size: .875rem; color: var(--muted); }.post-list h2 { font-size: 1.7rem; margin: .5rem 0; }.post-list a { color: var(--sl-color-white); }.post-list p { color: var(--muted); margin-bottom: 1rem; } @media(min-width: 80rem) { .flux-header { padding-inline: .6rem; } } -@media(max-width: 65rem) { .flux-header { gap: 1.5rem; }.primary-nav { gap: 1rem; }.header-tools { gap: .6rem; }.header-tools site-search > button { width: auto; }.hero-section { gap: 2rem; padding-block: 4rem; }.hero-copy h1 { font-size: 3.5rem; }.terminal-top { font-size: .65rem; }.block-illustration { gap: .55rem; }.capability-grid article { padding: 1.4rem; } } +@media(max-width: 65rem) { .flux-header { gap: 1.5rem; }.primary-nav { gap: 1rem; }.header-tools { gap: .6rem; }.header-tools site-search > button { width: auto; }.hero-section { gap: 2rem; padding-block: 4rem; }.hero-copy h1 { font-size: 3.5rem; }.capability-grid article { padding: 1.4rem; } } @media(max-width: 49.99rem) { :root { --sl-nav-height: 7rem; } .flux-header { display: grid; grid-template-columns: auto 1fr; gap: .4rem 1rem; padding-block: .3rem; } @@ -132,11 +117,11 @@ html:has(.landing) main { padding-top: 0; } .primary-nav { grid-row: 2; grid-column: 1 / -1; gap: 1.5rem; }.primary-nav a { font-size: .85rem; padding: .3rem 0; } .header-tools { grid-row: 1; grid-column: 2; justify-self: end; gap: .6rem; }.github-link { display: none; } .sl-menu-button { top: 1rem !important; } - .hero-section { grid-template-columns: 1fr; padding: 3rem 0; gap: 2rem; }.hero-copy h1 { font-size: clamp(2.7rem,9vw,4.3rem); }.desktop-break { display: none; }.hero-description { max-width: 34rem; }.hero-demo { max-width: 36rem; width: 100%; padding-top: 0; } + .hero-section { grid-template-columns: 1fr; padding: 3rem 0; gap: 2rem; }.hero-copy h1 { font-size: clamp(2.7rem,9vw,4.3rem); }.desktop-break { display: none; }.hero-description { max-width: 34rem; } .capability-grid { grid-template-columns: 1fr; }.capability-grid article { padding: 1.8rem; }.capability-grid article + article { border-left: 0; border-top: 1px solid var(--line); }.feature-symbol { margin-block: 1.3rem 1rem; } .start-strip { grid-template-columns: 1fr; gap: 1rem; }.start-strip h2 { max-width: none; } } -@media(max-width: 380px) { .brand img { width: 105px; }[data-theme='dark'] .brand img { width: 85px; }.header-tools { gap: .25rem; }.primary-nav { gap: 1rem; }.block-label { font-size: .55rem; }.token-group i { width: 12px; }.hero-actions { gap: .6rem; }.button { gap: .6rem; padding-inline: .85rem; } } +@media(max-width: 380px) { .brand img { width: 105px; }[data-theme='dark'] .brand img { width: 85px; }.header-tools { gap: .25rem; }.primary-nav { gap: 1rem; }.hero-actions { gap: .6rem; }.button { gap: .6rem; padding-inline: .85rem; } } @media(prefers-reduced-motion: reduce) { *,*::before,*::after { scroll-behavior: auto !important; animation: none !important; transition: none !important; } } .sidebar-content summary .large { text-transform: capitalize; } From c75910b0dce13663f606ede66a5300e5e77f134b Mon Sep 17 00:00:00 2001 From: Zhiben Chen Date: Mon, 7 Sep 2026 21:02:43 -0400 Subject: [PATCH 6/7] Redesign benchmark chart with accessible interactive tabs --- src/components/BenchmarkChart.astro | 136 +++++++++++++++------------- 1 file changed, 74 insertions(+), 62 deletions(-) diff --git a/src/components/BenchmarkChart.astro b/src/components/BenchmarkChart.astro index 1311a0d..b0cb51c 100644 --- a/src/components/BenchmarkChart.astro +++ b/src/components/BenchmarkChart.astro @@ -1,76 +1,88 @@ --- -import source from '../../fluxserve-docs.json'; -// Approximate readings from assets/figures/result.png, not raw benchmark measurements. +// Approximate points read from the original published figure. Keep its axes and series. const rates = [2, 4, 8, 12, 16]; const charts = [ - { title: 'Mini · GSM8K', config: 'TP1 / EP1', max: 1000, flux: [675, 893, 897, 897, 903], sglang: [716, 836, 859, 860, 862] }, - { title: 'Flash · GSM8K', config: 'TP4 / EP4', max: 600, flux: [513, 508, 520, 517, 523], sglang: [511, 509, 514, 514, 509] }, - { title: 'Mini · BigCodeBench', config: 'TP1 / EP1', max: 1400, flux: [766, 1252, 1255, 1263, 1264], sglang: [830, 998, 1003, 997, 1005] }, - { title: 'Flash · BigCodeBench', config: 'TP4 / EP4', max: 800, flux: [709, 718, 720, 714, 720], sglang: [629, 632, 629, 633, 632] }, + { model: 'Mini', dataset: 'GSM8K', config: 'TP=1 · EP=1', min: 640, max: 935, ticks: [650, 700, 750, 800, 850, 900], flux: [675, 893, 897, 897, 903], sglang: [716, 836, 859, 860, 862] }, + { model: 'Flash', dataset: 'GSM8K', config: 'TP=4 · EP=4', min: 482, max: 548, ticks: [490, 500, 510, 520, 530, 540], flux: [513, 508, 520, 517, 523], sglang: [511, 509, 514, 514, 509] }, + { model: 'Mini', dataset: 'BigCodeBench', config: 'TP=1 · EP=1', min: 690, max: 1340, ticks: [700, 800, 900, 1000, 1100, 1200, 1300], flux: [766, 1252, 1255, 1263, 1264], sglang: [830, 998, 1003, 997, 1005] }, + { model: 'Flash', dataset: 'BigCodeBench', config: 'TP=4 · EP=4', min: 604, max: 746, ticks: [620, 640, 660, 680, 700, 720, 740], flux: [709, 718, 720, 714, 720], sglang: [629, 632, 629, 633, 632] }, ]; +const x = (rate: number) => 60 + (rate - 1) / 16 * 420; --- -
-

LLADA2.0 · BENCHMARKS

-

Decode throughput

-

Tokens / second · higher is better

-
- Requests / s - {rates.map((rate, index) => )} +
+
+ {charts.map((chart, i) => )}
-
FluxServeSGLang
-
- {charts.map(chart =>
-

{chart.title}{chart.config}

- {(['flux', 'sglang'] as const).map(engine =>
-
- ≈{chart[engine][4].toLocaleString('en-US')} -
)} - -
)} -
-

Approximate values read from the published figure · {source.revision.slice(0, 7)}. Project-reported results; configuration details are incomplete. Benchmark context ↗

+ {charts.map((chart, i) => { + const y = (value: number) => 290 - (value - chart.min) / (chart.max - chart.min) * 255; + return ; + })} +
From 15c34e284e148271192642c966b0cc4065959d6c Mon Sep 17 00:00:00 2001 From: Zhiben Chen Date: Tue, 8 Sep 2026 20:12:55 -0400 Subject: [PATCH 7/7] Fetch FluxServe documentation from the latest main commit --- README.md | 18 +++++++++--------- fluxserve-docs.json | 4 +--- scripts/import-docs.mjs | 39 ++++++++++++++++++++------------------ tests/import-docs.test.mjs | 25 +++++++++++++++++++++--- 4 files changed, 53 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index b31d302..6eb59c3 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ npm test npm run preview ``` -The production build fetches the exact FluxServe commit in `fluxserve-docs.json`. It does not need a sibling checkout and rejects `FLUXSERVE_SOURCE`. Generated pages, imported assets, source caches, and build outputs are ignored by Git. +Every production build fetches the latest FluxServe `main`. The resolved commit is used for source attribution and repository-file links; no revision pin needs updating. It does not need a sibling checkout and rejects `FLUXSERVE_SOURCE`. Generated pages, imported assets, source caches, and build outputs are ignored by Git. The build validates page titles, descriptions, canonical URLs, local links, heading anchors, assets, sitemap, and search output. Tests cover import failures, URL rewriting, stale-page removal, and blog publication. Blog integration tests create an isolated temporary site and verify that draft articles appear in neither routes nor search. @@ -47,16 +47,16 @@ Browser verification covers responsive navigation, theme selection and persisten Technical content belongs in **FLX-OSS/FluxServe**, not this repository. 1. Edit the Markdown in FluxServe and preview it using `npm run dev` or `npm run build:local`. -2. Commit and publish the reviewed FluxServe documentation changes. -3. Set `revision` in `fluxserve-docs.json` to the complete 40-character published commit SHA. -4. Set `editBranch` to the branch where documentation edits belong (normally `main`). The initial website uses `codex/docs-site-source` while its documentation PR awaits review; update the pin and edit branch after that PR merges. -5. Run the production checks and review the website change before merging. +2. Merge the documentation changes into FluxServe `main`. +3. Run the website’s **Build and deploy website** workflow manually, or let the next website `main` push rebuild it. + +FluxServe merges do not currently trigger a website build automatically. The deployed site remains a static snapshot until the next successful build. The initial docs cleanup must be merged into FluxServe `main` before production builds can succeed. Every Markdown file in FluxServe’s `docs/` folder is published automatically, preserving folders and filenames: `docs/serving/llada2.1.md` becomes `/docs/serving/llada2.1/`. An `index.md` becomes its folder’s entry page; `docs/index.md` is required. Titles come from the first level-one heading and descriptions from the first paragraph. The sidebar follows the folders. Keep internal planning notes outside `docs/`; there is no website page allowlist. -The importer rewrites links between public docs, copies referenced image/PDF assets, and points other repository-file links to the pinned GitHub revision. Missing source files, asset files, and imported-page anchors fail the build. Each imported page links to its exact source revision. +The importer rewrites links between public docs, copies referenced image/PDF assets, and points other repository-file links to the commit resolved for that build. Missing source files, asset files, and imported-page anchors fail the build. Each imported page links to its exact source revision. -The disposable source cache is under `.cache/fluxserve/`. The importer only resets this cache; it never resets the local FluxServe checkout. +The disposable source cache is under `.cache/fluxserve/main`. The importer only resets this cache; it never resets the local FluxServe checkout. ## Writing a blog post @@ -81,11 +81,11 @@ Set `draft: false` when ready to publish. Drafts are excluded from the blog inde GitHub Pages must use **GitHub Actions** as its build source. The workflow checks pull requests without deploying and publishes successful `main` builds; it can also be started manually from Actions. It uses the built-in GitHub token, with Pages write permissions limited to the deployment job. -The canonical origin is `https://flx-oss.github.io` with no repository-name prefix. No custom domain is configured. To roll back, revert the website commit (including the documentation pin if changed) and let the normal workflow redeploy. +The canonical origin is `https://flx-oss.github.io` with no repository-name prefix. No custom domain is configured. To roll back documentation, revert the relevant change in FluxServe main and rebuild the website. Website code can be rolled back by reverting its commit. ## Structure -- `fluxserve-docs.json`: pinned source revision, edit branch, and shared brand assets. +- `fluxserve-docs.json`: source repository and shared brand assets. - `scripts/`: Markdown importer and built-site link/metadata validation. - `src/pages/`: custom homepage, blog, and 404; all documentation, including deployment guides, is imported under `/docs/`. - `src/components/`, `src/styles/`: shared navigation and FluxServe styling. diff --git a/fluxserve-docs.json b/fluxserve-docs.json index ca841b0..55f92a3 100644 --- a/fluxserve-docs.json +++ b/fluxserve-docs.json @@ -1,8 +1,6 @@ { "repository": "FLX-OSS/FluxServe", - "revision": "a171bad8a5b935be4111e8b48f40607d5e18c6ee", "assets": [ "assets/logo.png" - ], - "editBranch": "codex/docs-site-source" + ] } diff --git a/scripts/import-docs.mjs b/scripts/import-docs.mjs index 19061db..64daad8 100644 --- a/scripts/import-docs.mjs +++ b/scripts/import-docs.mjs @@ -15,8 +15,8 @@ const textOf = (node) => node.value ?? node.children?.map(textOf).join('') ?? '' const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); export function validateSource(config) { - if (!/^[\w.-]+\/[\w.-]+$/.test(config.repository) || !/^[a-f0-9]{40}$/.test(config.revision)) - throw new Error('Expected a GitHub repository and a full pinned commit SHA.'); + if (!/^[\w][\w.-]*\/[\w][\w.-]*$/.test(config.repository)) + throw new Error('Expected a GitHub repository.'); } function within(rootDir, relative) { @@ -28,12 +28,13 @@ function within(rootDir, relative) { export async function importDocs({ sourceDir, outputDir, publicDir, config, local = false }) { validateSource(config); + if (!/^[a-f0-9]{40}$/.test(config.revision)) throw new Error('Expected a resolved commit SHA.'); const sourceURL = 'https://github.com/' + config.repository; const entries = await readdir(path.join(sourceDir, 'docs'), { recursive: true, withFileTypes: true }); const sources = entries.filter(entry => entry.isFile() && entry.name.endsWith('.md')) .map(entry => path.relative(sourceDir, path.join(entry.parentPath, entry.name)).split(path.sep).join('/')).sort(); if (!sources.includes('docs/index.md')) - throw new Error('Missing docs/index.md. Publish the docs cleanup and update the source revision before a production build.'); + throw new Error('Missing docs/index.md. Merge the docs cleanup into FluxServe main before a production build.'); const pages = new Map(), slugs = new Set(); const trees = new Map(), headings = new Map(), topHeadings = new Map(); const assets = new Set(config.assets ?? []); @@ -105,7 +106,7 @@ export async function importDocs({ sourceDir, outputDir, publicDir, config, loca } const frontmatter = { title: page.title, description: page.description, - editUrl: sourceURL + '/edit/' + encodeURIComponent(config.editBranch ?? 'main') + '/' + page.source, + editUrl: sourceURL + '/edit/' + 'main' + '/' + page.source, }; const metadata = Object.entries(frontmatter).map(([key, value]) => key + ': ' + JSON.stringify(value)).join('\n'); const provenance = local ? 'Local documentation preview' : 'Source revision'; @@ -132,30 +133,32 @@ export async function importDocs({ sourceDir, outputDir, publicDir, config, loca return { pages: rendered.length, assets: assets.size }; } +export async function fetchMain(sourceDir, repositoryURL) { + await mkdir(sourceDir, { recursive: true }); + const git = (...args) => execFileSync('git', args, { cwd: sourceDir, stdio: 'pipe' }).toString().trim(); + git('init'); + // Fetch every time; a failed fetch must never silently reuse stale documentation. + git('fetch', '--depth=1', repositoryURL, 'refs/heads/main'); + git('checkout', '--detach', '--force', 'FETCH_HEAD'); + git('clean', '-fd'); + return git('rev-parse', 'HEAD'); +} + async function main() { const config = JSON.parse(await readFile(path.join(root, 'fluxserve-docs.json'), 'utf8')); validateSource(config); const local = process.argv.includes('--local'); if (process.env.FLUXSERVE_SOURCE && !local) - throw new Error('FLUXSERVE_SOURCE is only allowed with --local. Production requires the pinned revision.'); + throw new Error('FLUXSERVE_SOURCE is only allowed with --local. Production fetches FluxServe main.'); let sourceDir; if (local) { sourceDir = path.resolve(process.env.FLUXSERVE_SOURCE ?? path.join(root, '../FluxServe')); + config.revision = execFileSync('git', ['rev-parse', 'HEAD'], { cwd: sourceDir, encoding: 'utf8' }).trim(); } else { - sourceDir = path.join(root, '.cache/fluxserve', config.revision); - await mkdir(sourceDir, { recursive: true }); - const git = (...args) => execFileSync('git', args, { cwd: sourceDir, stdio: 'pipe' }); - let current = ''; - try { current = git('rev-parse', 'HEAD').toString().trim(); } catch {} - if (current !== config.revision) { - git('init'); - git('fetch', '--depth=1', 'https://github.com/' + config.repository + '.git', config.revision); - git('checkout', '--detach', 'FETCH_HEAD'); - } - // Restore only this disposable cache, never the author's checkout. - git('reset', '--hard', config.revision); - git('clean', '-fd'); + sourceDir = path.join(root, '.cache/fluxserve/main'); + config.revision = await fetchMain(sourceDir, 'https://github.com/' + config.repository + '.git'); } + const result = await importDocs({ sourceDir, config, local, outputDir: path.join(root, 'src/content/docs'), diff --git a/tests/import-docs.test.mjs b/tests/import-docs.test.mjs index ed2ac10..b45cd76 100644 --- a/tests/import-docs.test.mjs +++ b/tests/import-docs.test.mjs @@ -1,9 +1,10 @@ import test from 'node:test'; +import { execFileSync } from 'node:child_process'; import assert from 'node:assert/strict'; import { mkdtemp, mkdir, writeFile, readFile, rm, stat } from 'node:fs/promises'; import path from 'node:path'; import os from 'node:os'; -import { importDocs, validateSource } from '../scripts/import-docs.mjs'; +import { importDocs, validateSource, fetchMain } from '../scripts/import-docs.mjs'; async function fixture(t, markdown = '# Intro\n\n[Other](other.md#details)\n\n![Plot](../assets/plot.png)\n\n[Code](../runtime.js)\n') { const dir = await mkdtemp(path.join(os.tmpdir(), 'flux-docs-')); @@ -48,10 +49,10 @@ test('rewrites reference links, HTML assets, and links to removed title headings assert.match(content,/\/docs\/other\/#_top/); assert.match(content,/src="\/fluxserve\/assets\/plot.png"/); }); -test('rejects escaping source paths and floating revisions', async t => { +test('rejects escaping source paths and invalid repository names', async t => { const opts=await fixture(t, '# Intro\n\n[Escape](../../outside.md)'); await assert.rejects(importDocs(opts),/escapes repository/); - assert.throws(()=>validateSource({...opts.config,revision:'main'}),/pinned commit/); + assert.throws(()=>validateSource({...opts.config,repository:'../outside'}),/GitHub repository/); }); test('discovers nested pages, preserves filenames, and resolves folder indexes', async t => { @@ -75,3 +76,21 @@ test('rejects colliding page and folder routes', async t => { await writeFile(path.join(opts.sourceDir, 'docs/other/index.md'), '# Duplicate'); await assert.rejects(importDocs(opts), /Duplicate documentation route/); }); + +test('fetches new main commits even with an existing cache and fails when unavailable', async t => { + const opts = await fixture(t); + const git = (...args) => execFileSync('git', args, { cwd: opts.sourceDir, stdio: 'pipe' }).toString().trim(); + git('init', '-b', 'main'); + git('add', '.'); + git('-c', 'user.name=Fixture', '-c', 'user.email=fixture@example.com', 'commit', '-m', 'Initial'); + const cache = path.join(opts.outputDir, 'cache'); + const first = await fetchMain(cache, opts.sourceDir); + await writeFile(path.join(opts.sourceDir, 'docs/index.md'), '# Updated'); + git('add', '.'); + git('-c', 'user.name=Fixture', '-c', 'user.email=fixture@example.com', 'commit', '-m', 'Update'); + const second = await fetchMain(cache, opts.sourceDir); + assert.notEqual(second, first); + assert.equal(second, git('rev-parse', 'HEAD')); + assert.equal(await readFile(path.join(cache, 'docs/index.md'), 'utf8'), '# Updated'); + await assert.rejects(fetchMain(cache, path.join(opts.sourceDir, 'missing-repository'))); +});